From 1283f98d11ef76fb48bb330e36c7a7b422bac78a Mon Sep 17 00:00:00 2001 From: archos Date: Mon, 19 May 2025 21:21:14 +0200 Subject: [PATCH] =?UTF-8?q?P=C5=99id=C3=A1n=20fork=20webov=C3=A9ho=20klint?= =?UTF-8?q?a=20Hydrogen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Minimální Matrix chatovací klient Matrix, zaměřený na výkon, offline funkčnost a širokou podporu prohlížeče. Na tom se stále pracuje a ještě není připraveno na hlavní vysílací čas. Hlášení o chybách jsou vítána, ale nezadávejte prosím žádné požadavky na funkce ani jiné chybějící věci, abyste byli na stejné úrovni jako Element Web. --- hydrogen/assets/Inter-Black.067c82f7.woff | Bin 0 -> 139648 bytes hydrogen/assets/Inter-Black.7f1f5616.woff2 | Bin 0 -> 104656 bytes .../assets/Inter-BlackItalic.72d5983b.woff2 | Bin 0 -> 109900 bytes .../assets/Inter-BlackItalic.c628a2cf.woff | Bin 0 -> 145816 bytes hydrogen/assets/Inter-Bold.20d46cff.woff | Bin 0 -> 143464 bytes hydrogen/assets/Inter-Bold.6f5e9a23.woff2 | Bin 0 -> 107144 bytes .../assets/Inter-BoldItalic.31a185fa.woff | Bin 0 -> 149360 bytes .../assets/Inter-BoldItalic.e09dcbe1.woff2 | Bin 0 -> 112276 bytes .../assets/Inter-ExtraBold.0ef4267e.woff2 | Bin 0 -> 107304 bytes hydrogen/assets/Inter-ExtraBold.45bae435.woff | Bin 0 -> 143256 bytes .../Inter-ExtraBoldItalic.30a1af87.woff | Bin 0 -> 149116 bytes .../Inter-ExtraBoldItalic.d1e1f6a0.woff2 | Bin 0 -> 112656 bytes .../assets/Inter-ExtraLight.d7be68a4.woff | Bin 0 -> 141344 bytes .../assets/Inter-ExtraLight.da47c335.woff2 | Bin 0 -> 105444 bytes .../Inter-ExtraLightItalic.762fa4d2.woff | Bin 0 -> 148416 bytes .../Inter-ExtraLightItalic.b3f94cfe.woff2 | Bin 0 -> 111804 bytes hydrogen/assets/Inter-Italic.7b187d57.woff | Bin 0 -> 143476 bytes hydrogen/assets/Inter-Italic.bab4e808.woff2 | Bin 0 -> 108172 bytes hydrogen/assets/Inter-Light.0f7dfe72.woff2 | Bin 0 -> 105556 bytes hydrogen/assets/Inter-Light.38326098.woff | Bin 0 -> 141264 bytes .../assets/Inter-LightItalic.125c7e6a.woff2 | Bin 0 -> 112040 bytes .../assets/Inter-LightItalic.ec6c76a8.woff | Bin 0 -> 148408 bytes hydrogen/assets/Inter-Medium.0fc5d904.woff | Bin 0 -> 142780 bytes hydrogen/assets/Inter-Medium.5d308f3d.woff2 | Bin 0 -> 106484 bytes .../assets/Inter-MediumItalic.1458af9d.woff | Bin 0 -> 149344 bytes .../assets/Inter-MediumItalic.76551c20.woff2 | Bin 0 -> 112640 bytes hydrogen/assets/Inter-Regular.5b3a854b.woff | Bin 0 -> 134996 bytes hydrogen/assets/Inter-Regular.89d406b0.woff2 | Bin 0 -> 100368 bytes hydrogen/assets/Inter-SemiBold.04cd699f.woff | Bin 0 -> 143148 bytes hydrogen/assets/Inter-SemiBold.c7c3befe.woff2 | Bin 0 -> 106916 bytes .../assets/Inter-SemiBoldItalic.420db54a.woff | Bin 0 -> 149356 bytes .../Inter-SemiBoldItalic.d376ade4.woff2 | Bin 0 -> 112768 bytes hydrogen/assets/Inter-Thin.5565b01e.woff | Bin 0 -> 137068 bytes hydrogen/assets/Inter-Thin.5d8e2ac4.woff2 | Bin 0 -> 101004 bytes .../assets/Inter-ThinItalic.6b3ded18.woff2 | Bin 0 -> 107584 bytes .../assets/Inter-ThinItalic.c413497b.woff | Bin 0 -> 144528 bytes .../assets/cam-muted-1894081672.22150c2b.svg | 1 + .../assets/cam-muted-2247331037.b0b2cf01.svg | 1 + .../assets/cam-muted-3489740486.a882d986.svg | 1 + .../assets/cam-muted-711199923.069dcf2b.svg | 1 + hydrogen/assets/cam-muted.9f690631.svg | 1 + .../cam-unmuted-2215154474.a82b7bf1.svg | 1 + .../cam-unmuted-2274150835.69bcdbc4.svg | 1 + hydrogen/assets/cam-unmuted.67e18332.svg | 1 + .../chevron-down-1956489915.3389f17f.svg | 36 ++++ .../chevron-down-3300400168.d1a083a1.svg | 36 ++++ hydrogen/assets/chevron-down.9a7440b9.svg | 1 + .../chevron-left-2611498805.b5555a61.svg | 10 + .../chevron-left-3506338632.4e437777.svg | 10 + hydrogen/assets/chevron-left.b8b2c5fc.svg | 1 + .../chevron-right-2390431650.ec9bf561.svg | 3 + .../chevron-right-847198822.23380c56.svg | 3 + hydrogen/assets/chevron-right.885731d1.svg | 1 + .../chevron-small-4098047679.489e66cc.svg | 3 + .../chevron-small-781914114.936b4943.svg | 3 + hydrogen/assets/chevron-small.dfd7e618.svg | 1 + .../chevron-thin-left-3078630092.d0d143e3.svg | 3 + .../chevron-thin-left-3831175135.13f60c05.svg | 3 + .../assets/chevron-thin-left.d111869b.svg | 1 + hydrogen/assets/clear-2203718389.37dd36a5.svg | 4 + hydrogen/assets/clear-2743697487.2f1a17f1.svg | 4 + hydrogen/assets/clear-4137897294.7b90e8df.svg | 4 + hydrogen/assets/clear-426756705.361f7a30.svg | 4 + hydrogen/assets/clear.0d180c33.svg | 1 + .../disable-grid-3304422220.8a79cfcb.svg | 3 + .../disable-grid-4240599831.c8dc25a1.svg | 3 + hydrogen/assets/disable-grid.371ceaaa.svg | 1 + .../assets/dismiss-2476348673.d0f98560.svg | 4 + .../assets/download-sandbox.48a866e9.html | 46 +++++ .../e2ee-disabled-1470792300.6863c16d.svg | 5 + hydrogen/assets/e2ee-disabled.8507165d.svg | 1 + .../e2ee-normal-1448349558.af8f5484.svg | 3 + .../e2ee-normal-2713987956.215b3ddf.svg | 3 + .../e2ee-normal-3127337641.2624a9c9.svg | 3 + .../e2ee-normal-3652557173.2a97dccf.svg | 3 + .../e2ee-normal-3923817510.8737e7ee.svg | 3 + hydrogen/assets/e2ee-normal.bef76bd4.svg | 1 + .../element-logo-1551909733.1d59f06a.svg | 6 + .../element-logo-703176763.fc54fc8d.svg | 6 + hydrogen/assets/element-logo.86bc8565.svg | 1 + .../enable-grid-2071838379.ab4f40c5.svg | 3 + .../enable-grid-2288309723.f83895c8.svg | 3 + hydrogen/assets/enable-grid.eef43c65.svg | 1 + .../encryption-status-2100926911.a90232b4.svg | 3 + .../encryption-status-3449529405.c200a9bb.svg | 3 + .../encryption-status-475927392.2fedc0bd.svg | 3 + .../encryption-status-689620003.8086e625.svg | 3 + .../assets/encryption-status.8054183e.svg | 1 + .../assets/hangup-1798659826.d0cb8438.svg | 3 + hydrogen/assets/hangup-581771896.279a6adf.svg | 3 + hydrogen/assets/hangup.8b163c30.svg | 1 + hydrogen/assets/icon-maskable.965d12c4.png | Bin 0 -> 16599 bytes hydrogen/assets/icon.8024c299.png | Bin 0 -> 15862 bytes hydrogen/assets/index.e65aa065.js | 31 +++ hydrogen/assets/index.e65aa065.js.map | 1 + hydrogen/assets/main.bdb9a925.js | 177 +++++++++++++++++ hydrogen/assets/manifest.1f23c85b.json | 1 + .../assets/mic-muted-2617055184.e8d1962f.svg | 19 ++ .../assets/mic-muted-2638557456.4d8c99b4.svg | 19 ++ .../assets/mic-muted-3642419863.228ee86f.svg | 19 ++ .../assets/mic-muted-4213153786.513608a5.svg | 19 ++ hydrogen/assets/mic-muted.56aa03b9.svg | 1 + .../assets/mic-unmuted-211198830.1fde69c5.svg | 16 ++ .../mic-unmuted-3178778883.b8f57412.svg | 16 ++ hydrogen/assets/mic-unmuted.c180f63a.svg | 1 + hydrogen/assets/olm.3fc8dbfe.wasm | Bin 0 -> 153573 bytes hydrogen/assets/olm.cf9a793b.js | 162 ++++++++++++++++ hydrogen/assets/olm_legacy.bc22f405.js | 179 ++++++++++++++++++ .../assets/paperclip-2441131778.1f5e29f3.svg | 3 + .../assets/paperclip-3961996319.da562307.svg | 3 + hydrogen/assets/paperclip.ec29fd9d.svg | 1 + hydrogen/assets/plus-3937109722.5c243914.svg | 3 + hydrogen/assets/plus-4190356069.084c5e3d.svg | 3 + hydrogen/assets/plus.49560f96.svg | 1 + .../room-members-1680968332.b4f57622.svg | 7 + .../room-members-2999414798.6534e8ec.svg | 7 + .../room-members-3084360280.6f64aaef.svg | 7 + .../room-members-3297708388.1a158fe2.svg | 7 + .../room-members-3847743605.9fcf4567.svg | 7 + .../room-members-871477030.90b799fe.svg | 7 + hydrogen/assets/room-members.35ed0bf9.svg | 1 + hydrogen/assets/search-261439583.1bffaca1.svg | 3 + .../assets/search-3263540198.1511780c.svg | 3 + hydrogen/assets/search.21e0fd39.svg | 1 + hydrogen/assets/send-1171052351.caa5c494.svg | 3 + hydrogen/assets/send-3413346515.b0fb8626.svg | 3 + hydrogen/assets/send.7a090949.svg | 1 + .../assets/settings-2175246113.00804666.svg | 3 + .../assets/settings-878939771.57cf3680.svg | 3 + hydrogen/assets/settings.45b8e09f.svg | 1 + .../assets/theme-element-dark.a6fddb2f.css | 1 + .../assets/theme-element-light.78427b5a.css | 1 + .../assets/theme-element-runtime.054f90d4.css | 1 + hydrogen/assets/theme-element.json | 1 + ...verification-error-3007923930.91f5da98.svg | 3 + .../assets/verification-error.80ad562b.svg | 1 + .../assets/verified-1676512664.5538d685.svg | 3 + .../assets/verified-3138359829.814d0123.svg | 3 + hydrogen/assets/verified.b90752ec.svg | 1 + .../vertical-ellipsis-3416547705.f619a721.svg | 3 + .../vertical-ellipsis-487061581.e7709afd.svg | 3 + .../assets/vertical-ellipsis.70ab5d25.svg | 1 + .../assets/video-call-2591082837.8f09bafc.svg | 4 + .../assets/video-call-3307702325.5e74dd9a.svg | 4 + hydrogen/assets/video-call.d3cb081e.svg | 1 + hydrogen/config.sample.json | 16 ++ hydrogen/icon.png | Bin 0 -> 15862 bytes hydrogen/index.html | 24 +++ hydrogen/sw.js | 2 + hydrogen/sw.js.map | 1 + 150 files changed, 1072 insertions(+) create mode 100644 hydrogen/assets/Inter-Black.067c82f7.woff create mode 100644 hydrogen/assets/Inter-Black.7f1f5616.woff2 create mode 100644 hydrogen/assets/Inter-BlackItalic.72d5983b.woff2 create mode 100644 hydrogen/assets/Inter-BlackItalic.c628a2cf.woff create mode 100644 hydrogen/assets/Inter-Bold.20d46cff.woff create mode 100644 hydrogen/assets/Inter-Bold.6f5e9a23.woff2 create mode 100644 hydrogen/assets/Inter-BoldItalic.31a185fa.woff create mode 100644 hydrogen/assets/Inter-BoldItalic.e09dcbe1.woff2 create mode 100644 hydrogen/assets/Inter-ExtraBold.0ef4267e.woff2 create mode 100644 hydrogen/assets/Inter-ExtraBold.45bae435.woff create mode 100644 hydrogen/assets/Inter-ExtraBoldItalic.30a1af87.woff create mode 100644 hydrogen/assets/Inter-ExtraBoldItalic.d1e1f6a0.woff2 create mode 100644 hydrogen/assets/Inter-ExtraLight.d7be68a4.woff create mode 100644 hydrogen/assets/Inter-ExtraLight.da47c335.woff2 create mode 100644 hydrogen/assets/Inter-ExtraLightItalic.762fa4d2.woff create mode 100644 hydrogen/assets/Inter-ExtraLightItalic.b3f94cfe.woff2 create mode 100644 hydrogen/assets/Inter-Italic.7b187d57.woff create mode 100644 hydrogen/assets/Inter-Italic.bab4e808.woff2 create mode 100644 hydrogen/assets/Inter-Light.0f7dfe72.woff2 create mode 100644 hydrogen/assets/Inter-Light.38326098.woff create mode 100644 hydrogen/assets/Inter-LightItalic.125c7e6a.woff2 create mode 100644 hydrogen/assets/Inter-LightItalic.ec6c76a8.woff create mode 100644 hydrogen/assets/Inter-Medium.0fc5d904.woff create mode 100644 hydrogen/assets/Inter-Medium.5d308f3d.woff2 create mode 100644 hydrogen/assets/Inter-MediumItalic.1458af9d.woff create mode 100644 hydrogen/assets/Inter-MediumItalic.76551c20.woff2 create mode 100644 hydrogen/assets/Inter-Regular.5b3a854b.woff create mode 100644 hydrogen/assets/Inter-Regular.89d406b0.woff2 create mode 100644 hydrogen/assets/Inter-SemiBold.04cd699f.woff create mode 100644 hydrogen/assets/Inter-SemiBold.c7c3befe.woff2 create mode 100644 hydrogen/assets/Inter-SemiBoldItalic.420db54a.woff create mode 100644 hydrogen/assets/Inter-SemiBoldItalic.d376ade4.woff2 create mode 100644 hydrogen/assets/Inter-Thin.5565b01e.woff create mode 100644 hydrogen/assets/Inter-Thin.5d8e2ac4.woff2 create mode 100644 hydrogen/assets/Inter-ThinItalic.6b3ded18.woff2 create mode 100644 hydrogen/assets/Inter-ThinItalic.c413497b.woff create mode 100644 hydrogen/assets/cam-muted-1894081672.22150c2b.svg create mode 100644 hydrogen/assets/cam-muted-2247331037.b0b2cf01.svg create mode 100644 hydrogen/assets/cam-muted-3489740486.a882d986.svg create mode 100644 hydrogen/assets/cam-muted-711199923.069dcf2b.svg create mode 100644 hydrogen/assets/cam-muted.9f690631.svg create mode 100644 hydrogen/assets/cam-unmuted-2215154474.a82b7bf1.svg create mode 100644 hydrogen/assets/cam-unmuted-2274150835.69bcdbc4.svg create mode 100644 hydrogen/assets/cam-unmuted.67e18332.svg create mode 100644 hydrogen/assets/chevron-down-1956489915.3389f17f.svg create mode 100644 hydrogen/assets/chevron-down-3300400168.d1a083a1.svg create mode 100644 hydrogen/assets/chevron-down.9a7440b9.svg create mode 100644 hydrogen/assets/chevron-left-2611498805.b5555a61.svg create mode 100644 hydrogen/assets/chevron-left-3506338632.4e437777.svg create mode 100644 hydrogen/assets/chevron-left.b8b2c5fc.svg create mode 100644 hydrogen/assets/chevron-right-2390431650.ec9bf561.svg create mode 100644 hydrogen/assets/chevron-right-847198822.23380c56.svg create mode 100644 hydrogen/assets/chevron-right.885731d1.svg create mode 100644 hydrogen/assets/chevron-small-4098047679.489e66cc.svg create mode 100644 hydrogen/assets/chevron-small-781914114.936b4943.svg create mode 100644 hydrogen/assets/chevron-small.dfd7e618.svg create mode 100644 hydrogen/assets/chevron-thin-left-3078630092.d0d143e3.svg create mode 100644 hydrogen/assets/chevron-thin-left-3831175135.13f60c05.svg create mode 100644 hydrogen/assets/chevron-thin-left.d111869b.svg create mode 100644 hydrogen/assets/clear-2203718389.37dd36a5.svg create mode 100644 hydrogen/assets/clear-2743697487.2f1a17f1.svg create mode 100644 hydrogen/assets/clear-4137897294.7b90e8df.svg create mode 100644 hydrogen/assets/clear-426756705.361f7a30.svg create mode 100644 hydrogen/assets/clear.0d180c33.svg create mode 100644 hydrogen/assets/disable-grid-3304422220.8a79cfcb.svg create mode 100644 hydrogen/assets/disable-grid-4240599831.c8dc25a1.svg create mode 100644 hydrogen/assets/disable-grid.371ceaaa.svg create mode 100644 hydrogen/assets/dismiss-2476348673.d0f98560.svg create mode 100644 hydrogen/assets/download-sandbox.48a866e9.html create mode 100644 hydrogen/assets/e2ee-disabled-1470792300.6863c16d.svg create mode 100644 hydrogen/assets/e2ee-disabled.8507165d.svg create mode 100644 hydrogen/assets/e2ee-normal-1448349558.af8f5484.svg create mode 100644 hydrogen/assets/e2ee-normal-2713987956.215b3ddf.svg create mode 100644 hydrogen/assets/e2ee-normal-3127337641.2624a9c9.svg create mode 100644 hydrogen/assets/e2ee-normal-3652557173.2a97dccf.svg create mode 100644 hydrogen/assets/e2ee-normal-3923817510.8737e7ee.svg create mode 100644 hydrogen/assets/e2ee-normal.bef76bd4.svg create mode 100644 hydrogen/assets/element-logo-1551909733.1d59f06a.svg create mode 100644 hydrogen/assets/element-logo-703176763.fc54fc8d.svg create mode 100644 hydrogen/assets/element-logo.86bc8565.svg create mode 100644 hydrogen/assets/enable-grid-2071838379.ab4f40c5.svg create mode 100644 hydrogen/assets/enable-grid-2288309723.f83895c8.svg create mode 100644 hydrogen/assets/enable-grid.eef43c65.svg create mode 100644 hydrogen/assets/encryption-status-2100926911.a90232b4.svg create mode 100644 hydrogen/assets/encryption-status-3449529405.c200a9bb.svg create mode 100644 hydrogen/assets/encryption-status-475927392.2fedc0bd.svg create mode 100644 hydrogen/assets/encryption-status-689620003.8086e625.svg create mode 100644 hydrogen/assets/encryption-status.8054183e.svg create mode 100644 hydrogen/assets/hangup-1798659826.d0cb8438.svg create mode 100644 hydrogen/assets/hangup-581771896.279a6adf.svg create mode 100644 hydrogen/assets/hangup.8b163c30.svg create mode 100644 hydrogen/assets/icon-maskable.965d12c4.png create mode 100644 hydrogen/assets/icon.8024c299.png create mode 100644 hydrogen/assets/index.e65aa065.js create mode 100644 hydrogen/assets/index.e65aa065.js.map create mode 100644 hydrogen/assets/main.bdb9a925.js create mode 100644 hydrogen/assets/manifest.1f23c85b.json create mode 100644 hydrogen/assets/mic-muted-2617055184.e8d1962f.svg create mode 100644 hydrogen/assets/mic-muted-2638557456.4d8c99b4.svg create mode 100644 hydrogen/assets/mic-muted-3642419863.228ee86f.svg create mode 100644 hydrogen/assets/mic-muted-4213153786.513608a5.svg create mode 100644 hydrogen/assets/mic-muted.56aa03b9.svg create mode 100644 hydrogen/assets/mic-unmuted-211198830.1fde69c5.svg create mode 100644 hydrogen/assets/mic-unmuted-3178778883.b8f57412.svg create mode 100644 hydrogen/assets/mic-unmuted.c180f63a.svg create mode 100644 hydrogen/assets/olm.3fc8dbfe.wasm create mode 100644 hydrogen/assets/olm.cf9a793b.js create mode 100644 hydrogen/assets/olm_legacy.bc22f405.js create mode 100644 hydrogen/assets/paperclip-2441131778.1f5e29f3.svg create mode 100644 hydrogen/assets/paperclip-3961996319.da562307.svg create mode 100644 hydrogen/assets/paperclip.ec29fd9d.svg create mode 100644 hydrogen/assets/plus-3937109722.5c243914.svg create mode 100644 hydrogen/assets/plus-4190356069.084c5e3d.svg create mode 100644 hydrogen/assets/plus.49560f96.svg create mode 100644 hydrogen/assets/room-members-1680968332.b4f57622.svg create mode 100644 hydrogen/assets/room-members-2999414798.6534e8ec.svg create mode 100644 hydrogen/assets/room-members-3084360280.6f64aaef.svg create mode 100644 hydrogen/assets/room-members-3297708388.1a158fe2.svg create mode 100644 hydrogen/assets/room-members-3847743605.9fcf4567.svg create mode 100644 hydrogen/assets/room-members-871477030.90b799fe.svg create mode 100644 hydrogen/assets/room-members.35ed0bf9.svg create mode 100644 hydrogen/assets/search-261439583.1bffaca1.svg create mode 100644 hydrogen/assets/search-3263540198.1511780c.svg create mode 100644 hydrogen/assets/search.21e0fd39.svg create mode 100644 hydrogen/assets/send-1171052351.caa5c494.svg create mode 100644 hydrogen/assets/send-3413346515.b0fb8626.svg create mode 100644 hydrogen/assets/send.7a090949.svg create mode 100644 hydrogen/assets/settings-2175246113.00804666.svg create mode 100644 hydrogen/assets/settings-878939771.57cf3680.svg create mode 100644 hydrogen/assets/settings.45b8e09f.svg create mode 100644 hydrogen/assets/theme-element-dark.a6fddb2f.css create mode 100644 hydrogen/assets/theme-element-light.78427b5a.css create mode 100644 hydrogen/assets/theme-element-runtime.054f90d4.css create mode 100644 hydrogen/assets/theme-element.json create mode 100644 hydrogen/assets/verification-error-3007923930.91f5da98.svg create mode 100644 hydrogen/assets/verification-error.80ad562b.svg create mode 100644 hydrogen/assets/verified-1676512664.5538d685.svg create mode 100644 hydrogen/assets/verified-3138359829.814d0123.svg create mode 100644 hydrogen/assets/verified.b90752ec.svg create mode 100644 hydrogen/assets/vertical-ellipsis-3416547705.f619a721.svg create mode 100644 hydrogen/assets/vertical-ellipsis-487061581.e7709afd.svg create mode 100644 hydrogen/assets/vertical-ellipsis.70ab5d25.svg create mode 100644 hydrogen/assets/video-call-2591082837.8f09bafc.svg create mode 100644 hydrogen/assets/video-call-3307702325.5e74dd9a.svg create mode 100644 hydrogen/assets/video-call.d3cb081e.svg create mode 100644 hydrogen/config.sample.json create mode 100644 hydrogen/icon.png create mode 100644 hydrogen/index.html create mode 100644 hydrogen/sw.js create mode 100644 hydrogen/sw.js.map diff --git a/hydrogen/assets/Inter-Black.067c82f7.woff b/hydrogen/assets/Inter-Black.067c82f7.woff new file mode 100644 index 0000000000000000000000000000000000000000..07800f4b740e2ca06b2a6ab7675b2e0247dea233 GIT binary patch literal 139648 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%0A7&22S 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

9W(%yTJ$G`2bPBjgcX5#2AVrgMu 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 literal 0 HcmV?d00001 diff --git a/hydrogen/assets/Inter-Black.7f1f5616.woff2 b/hydrogen/assets/Inter-Black.7f1f5616.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..9a615e6e83e4e9665f29fa870633420c825a4459 GIT binary patch literal 104656 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

Ou)W>#0|Sl0@D+%a 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 xB-yYJk4XXbx1FXHWt$c*zPPGo)? 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

jDt_Q# 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�mg)VBJ8c;yP>e>U-<J$CeT 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

@_?Iq*2-hEXNBA`j#ksOmH-Cc9=m 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]LfKN>=*h)Lt{ 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 E0i+tRr~m)} literal 0 HcmV?d00001 diff --git a/hydrogen/assets/Inter-BoldItalic.31a185fa.woff b/hydrogen/assets/Inter-BoldItalic.31a185fa.woff new file mode 100644 index 0000000000000000000000000000000000000000..2de403edd1010284e57ac2bfe6aa1fbdd105f6dd GIT binary patch literal 149360 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

1tCzW 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 )9ASmwA7aksE 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 literal 0 HcmV?d00001 diff --git a/hydrogen/assets/Inter-ExtraBold.0ef4267e.woff2 b/hydrogen/assets/Inter-ExtraBold.0ef4267e.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..5a08b364d58e20c639e67842e14e3f5f25e96e11 GIT binary patch literal 107304 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
m$%G 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 Lig|_n9@hT@nT2#0 literal 0 HcmV?d00001 diff --git a/hydrogen/assets/Inter-ExtraBoldItalic.d1e1f6a0.woff2 b/hydrogen/assets/Inter-ExtraBoldItalic.d1e1f6a0.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..97bda24620320c8de8c477bdf1fa9bfec10964b0 GIT binary patch literal 112656 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�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

7h&aZCw&ch6?+nX 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≠%DPG5_#$}V~Xk!^hy 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 Qqvfw$l5!v;E-tSB1C~L4TmS$7 literal 0 HcmV?d00001 diff --git a/hydrogen/assets/Inter-ExtraLight.da47c335.woff2 b/hydrogen/assets/Inter-ExtraLight.da47c335.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..442e2255fb9437c88f0c14af25bacd369bc07949 GIT binary patch literal 105444 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 z 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

    AgLRJjTz(Kda(Os0=8Sl^y8*!}lHN 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
    BG1BMm;7kTaw2Bzh?{}Q(Izl1$62m^){4;&`G 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

    )Rtkd4h-?W^PY_|2Cglu31zC|(I%iT1c z9XFV?3e7t4$^@TzIO;gE*eJDRwPenk6v&eQ1l1n@s+8z%uUa@>pwo5gw(7RgC65+1vTydlvc=ZK3*OhZFB4h^Yt02m`uG;{ zcNVLyNV<~p%*3R>A-c-0)^}E1NW&)b;>4>Wnk3+wR5N!;Bkr>iV@mcWxGmu1H+;Vj zSkrC-$sJf~M_JCic*^mNngavBzKTJPcL_a8resX5~SS_`2b9DFcYt(y*w=iig5mZ)XT^dbkn+Y5EQnUQNuUfcY zx?8uHsw&KUx4+rFN&cq2exYWkc%DHDnTJ=*B21fAp_Ih+t67mpCc}6mtBSYMO6T4$ z$BN^_++(I8f1Ry~Q~}r0x73oN$Alw7yySJQlbc@7lT&8nNeCIer*4HzWQV-C)rnI-!--I1QfXOld8q!_~d1DFMAylPPSepA3FEZ zMAIuao`gu8c;A++*z*r3wJUee+Kv7FbHhJgfP-Q3QrcvKC{-dK=hb*osNkTPRYMD? z<+-G&vD_LVv#vFSxze~jwdC%cdH<`PAV-?E)fprezh-%vNkdu(m`7qbim@QSKugW6 zlTmCd%{;-G1;W%I9&rfO{VM0LYdVJX)5&0R3DYz2#{apaY=$+GpP^l-P^yLW)5Xe; z{QXPZOXqBd9_*$br0e$j@+c=K$u=Q)|RwJP2Bz|M-38aXY9)BLu|Clbj=e`qa@X{Q)I^ z-p2ePQv5W}@-IN>l5{xHc~e*EWT-FTF)NBD-`YraCiDu=a9JGIl({QEAJEihCtBs< zoBT*pTaAo(#VRX}f;l9VZ4$xM7fLE6b&Jg!FSApJzVs&<%=%?Qtko0bOzEUD-&w0C z$-QSAgesnMGmg+C<)`o-{5ZtDy&OyiGHQTJ>zG!Ytdk>Q1e6K!>yQ~LxF#=R6EvsAuC;VMV@>|{NIyHZqRz0n z3bK#{HS;=}n&q|`+9F1V?!3;!N{jNki6L)Y_?X={IO{%9>>f;BQ%r8k$rycr$i%~) ztbY(89fQKh9nC}37M5e$zBmVgIlA&6Fw8yXN5k&=cxy=u%DXn*yEom1FAmD}Ejsn$ zLrp}C4hjlEtdC^hYIyikUFSE^q2M@VC-#6p?l<9d)aJui18G78DMNM&RTIn8 z9v&cC$j(7ZA`fguExws>e;@llTz_RWhX~Ff9iHh8AqJ6o`YISLX{fncC6{f98A2Iy z(PR*O!Xd$IiRPAjpJSC{%`B8|b`OJZiT^eB)f)$d0mNUv5VNQe6gif}Ss{{GtgOb;xU3!U ziBH$oSif7=i0V5gb+|*6f?L+-^S9E7BeD_RZ*i$@H3FlY^+X2wOC5zk- z>1k+FQ|0f{lcha^tld3=)-s1pRD?bPDgEWQhw_FOc6_^=7CbPAl6h8^$M7MMJN;oz z^tIdyUYpf&tdr$r7caA&J^H65Gn@h>H^jI7JqRy49K&*xaU9PJFl3acT@&0YArIVBX<%peNyQ78RsAH9TRpnrme5%?N51pDxsx{Yi*z-;8pQ9CG zNt@cH&GIkGjSQQ|*vU9fMP5*uLMb>b+Hr==`b)-SIJ>>-Im zjrFX|FUYEH>5k?fVhz(L6No5n(L6>qeAEkw7XxywXbAm28_(!!-)jyT`sK-4 ziw(f&1Yi^uCK~w}J}M>LdkR@^kn^zSk(a%nQkiNiD|1bTl!S-Y@`T}vjyZ7;=%Go~ z`=_+c>0|U-1wmJy$Cs9nFWaAbE!7>*$hAm*EB<1A*e$iH;fq!T{v0HbPOr1dBj>Y9 zRxuB3qDCM`e3RoKYZRP--xemkK#%<+%?&`aJ zBU?L@!%K}3jo{&I#szx^j(DYpRu;wLQixM|pf#1!@!=hBE`de{9c@|P>1FLb4?G36 zQV^_E;=-iczCWM8@6YDPwB;5!p>#n@GL8DYH3!b-~Z5}EK|cS z@HlqCmO}QOY`Rl;W-ca6$E4kOhLqTFWM+K`6{J_szHuAIkw2P7fTF zD@W%3Nli`GmFX}f8jrAXdH04()*KUlDDN$XAATU*k~=W2T&`ckZzIxBry%?yPF%RM zD)d%6o%J!2oW$vHV!9-5j5`=9-j4_j%T2dxR1-?(^#}-CXXA?)|7_kWHmc12hK1n` zUU{~2iL2P+$4VIz9{P69ud>0sCc(S4mUtd3(%M<;UwMLMNSK9ki)eZGE(lUX=LwlA zGbJ_OSMo-;-5Gr-9O0O8Tm0 z=q(39q4BtvO~_60Y%;g(YDXF1{;HyW>x{!;0bS{Gh0?4Nqv12@?CP5AV8=DmuB6jJ zE5Hw{h4#q+SAIfv=w$9KK{vmRsa5k*w}gFfw?uR*u&?`Zgm17mpPJsCK0uNKgE^*^ zu?6G!jULv?o4;=+2{0c{bzAh1slQvi9y_xd{dw{FP9f~M-ye>zuk*|@B7U*?McKmh z&GfJy-uUzygLReUNANX<)XX#184R)+OO{k98QiIrZbxt5!SOrDhE>cssykCET_*LO z)IXYM*p6>;!xY15kF97pJbLMdC8vcWX-j+cIy2NUCA*TlP*@kaUZ_qv}b=*R#(3C?0UGY~l&9yHG(| zzc8Bn=_`4Kw9a5Q&pS5HrpWmtcF8rV@wbtoxWeG#CWZ|KYqdP(6oYuD{IB^wheIVY z&Wb)*PKrKDe|#TGZF@t{gr>0kQ-`KBS2HdfO_%g%P9oCRGE_a)s@D7TDBtqabxS?$ z)rLMu%aY;64-uyy-xEsr=}AiEsRihOg^N3F66&L~L)W?{?wy3xJaI@rdNkc7uT@X{ zB;lr_T3ovn^i&bI!I@Uc+NT(orW-LFz5mmwnz(b_&fPG0%aVQXmvyoyVt;&F&AW3~ ze&Ma1OwKNOa7NwyenDn0?fB}@8hqp|I8v7 zzG`ge>PY9^UPtAu2!A_ji#GCv=eBzUi?q$C+ywT{1YS< z{m%CPKBw7W0lmT_lo>%|wS;b{y!(&22ixm=FR!Ejd*_emku3iN>r;hWr;eT-n8kNK z*wYQ3nX#9Zq4F;N8z*G{tL4W!>dW6RvkIR3nAkQ;0K`bvH7IPYPj*RX2FLqsQq~`3 zc}FEWweT;P=XSj|P~~+@R0|WEiFCr{k-%z}c;P0219|`Yuh~Dv%Rj)8Rk!X>D3$bU z+%4Ij)MHyS`?D$SXG$|q9A_RI&OB|G@f&6eqO@8?Ll**|CGUq6)2Exa4P z%YShUi`K}rQB+#=aowLapY<(M&6%K*^DXE0US3B!;BBo3tiusS;T@_u`vBJr-TG+O z+{)wR#a?c-`3oK^g1|qN3m>q?qeSEve?_z`OG!k2wYP#UWZk7y&0_#2)$Nr8gfe74 zPQjVMN6{^0(R%DgLfy`jB|i;y@95*esod8oeT7|Ko0M{k&Msam+smX+ z3|d)b)V9*UcysPo)BU^2%(e$S$>n@_NH~8uE?tw`A-QlCP2U3hqGR@caJy`v1n~OpA8VZFP8q?`UKye{u)(%Yi@>|l4xLv(7#p;!=G~2`| zIPX`z{0!JK9+Mh;EXAk=$zIJIlWmf2P=TkoO9D~$}`Hom{-0@YkPl;CgpQLr= zzLF^|x%3h>ZADFC-q>F}IWQr03tX=#EW8t0We7VmN zn8ubWRD@*VI?1snYn?E9pKxxwTe^55)mD>%i7`&ILe2aa-}*JK`WTm$=eu}r$+QbNp? zGS7YRzhLBZ$OzT(%9T8MLmRY8$&9BHV%G$sT{Em>B81!JI(36ehM!n6ktw(6@@Z?@ z5HWm4h=r#8zqYPC9?Gu$TgE;Zgh3cqVnV{CjO}-;p7(j)=lA~QbDKGH-{-oobDi(^`d;T8i5#MXicxi0#b?3l zvuJhIPAXrml5AitR=QsuC2x4SVLG9ze^bzXn0doKM|$b`mmGD+Q-Up`woe8J>d#!G zjt4qi$?EYiD2>(X%0T%iJso%-mmt9Bj)p zUwsYWu4i8_4>Xt-9%96vCBORG7}#oj=o~&|DzdI3-O(wOC>9)g$1~nDyR^Fo?V0LX zP&!zX|T5 zCsh$}gvtms431DnsE!DPsr19upnd`cV1=aPNomjtuyB&1VTLFFi;GD*;0^G#qohqE zgUO7I22s;Vd_chVWkR%U=}OP*O~ibV?%n#`pPdb&XGb>Y(k5e~^d}{h2)oB7?xqG@ zlO1+NXq>^H0G(zxo0_UI4>U&d23oMdK^U7aFW>D6XcJrQhIVaHECr|*uVyPU;(Ntw4gE%VEB zNX9cWhG+Syzpm}e6i>4#R*1VHUbd#$uRJG)e*VZY{C31x7Q$am!*7?>#9ZCVww97+ ze?6_58MtmFhJ3YtHIxN9*(j1 zQ*z_iuCt_9vIC)lEx>asw~5N>UHLqVFC)+8rX(K4&xtG6zZugu6)fb-wg5gAP;$6J zM#oLG-Lnp2pq@;amm*oo51hkX*ie&csjD=gPK)sxZT3m=N;N|)eD4)YRfn`W%P_?7 zJSL$|XC117s8+Lyn+JMkzV)DDMzI0)F2Ys*%tGhW!#@*`+Xg!J242-vi_VRBQ&_&f zhJX8&67UFnH^$^V{%H3(D?v3!Z(AQN?UE`kg~}K6^1E- zplmiA`CQ9@ie=A_uT-D#g8TP;`gzbNT`V)S0{2JFXRJom{Km4Z)5)$aa;ni4qhk)i zeD{|_O2!RP-WSvetnm#Ej{$iIMt7}=pajX_x!4Pv8 zJO@;83#nLmW`nt8&08Atdjpyrd=$aWzwo z-R0(q07BEX?%^Xv)xFZ*!Cy0%kNQ7$2oCEFUC1zyH+g;@*HWM8CO@JfX0$Y*K)R{6 zMfZx^^#_A=V0itMZG64f(FOE?0If*iJFsUbz+lRWK5^Z&=OJYWbXt3P%}U zZM_FRFGE(eJ(k0b9twx9WuRX_r(%@yKO!P1QQ%^oGyFQkPun^~=;BR0mdQ z40+7yoY!vg2s9y-zEg1KylW>FeKIQ-|9raoQL&*sVt$_&W<4rcuh=4)nQyjz!lv^< zP<3uomqqR*#oMBy%E!(!+5V;g`Pqbh@sbUwUelCPA60SQ-uO~OYwgz|M|SMRV^d!u zzF<0e1w%s9Z@n#)!PJ7i$ae+?DWfKc}%qF2U!LbF4Z#2Bn&QnY>|1^MWT#47{HP zp30>JGdG$qXePcdQD#z^B3|UcOFq+IHZAo9yV{2Z<&}R3m&8iU%P4!Cugp=gjGvUP zQh6>HXY-7^_kPL=HY4AsFy_u(M%J%0i6w{JlJ(x!)L$vGew>)Q$HB^W2FG7Oea@(< zAoO16Syn%tmeivBhts#rFH1{d?R#;zu>{#1NB?0mmLQ!o>NhNaB`D^M`VV8Vp^nl) zMBGg*;b@MA|L{1LAeA%Ni+hA6uygy-9@1i~!nn`~;AsSl7*4_2N^p1@6+c?Fe!75s zhEt6Gw1{078hSrkN{0&#o1ea4ySy{9L;m_iF#{YtNS6;Z@Z!_!^`i~_-2k}$?oSH_ zn&Mq(gz-pHyi2AFoQ)4l#nV(6<7v8UGk2@Jk4rNKbQfzSW+XWk-?fST5X|vJM<;Ku9ThP}ezD}VKu#8Dw35`N=9mxLB;t>t zaM}km3)Q`?FKC-rqu$#j5(Mze}jc z64EU{QYBR{e#pLKK0oU?)^}U^im2sd{B!Pnlmf=7XMucvvJ({f`2N)+6%5pIW5ImO z)n?OkMP%jmeae!2R?X{k16+6`BPzRK)g~wE<@ygN zzmkr0E`Dgkyj)1{HK;jUyas;yg*#e!=p?N7>97-&d}15m)IH&?4%7)Xo7l?irEJGu zd~m|^h?^RtzG%N^lO35g0xK$us#<*aR?%GEka(zU4A>DWCk922T*Ue&$4=|D2v5F5 z={&vGI({oK-2=Oe^P<-g-XuBfNzAq=f?EdKO9`&fST@4eeU*?VQb2;oJB{ui{=wlJ$$je%sdJ#&xcs!5Ob-;tm z|D6Ls&HYvUiSPW_W}1|yG=8RwG~n=0g5I>QVFo0hoNMaxQ}oGAEY}YIcC9&jI%p}x zVI8ibV>bYvtl;0fXlW)$?mrph6?44zhGcPd7-NXDb>5qoqWOwaGjPiie*FXv%!;bxHQHp350w`ARw85*=YPS0=uc-C>;uk#dn011 z@9tj2UK(b2g-o$|iy$$&*K|Qco^y)3cdjUV=gVw_JUV(M7;*TC`VzyHV7s7x`*3(% zGoHUXbMQ{nCEN2oK37wh->Y3d?8rJF(>NhHslh`;CzvsyQuwR#@6L$54Hpv`pLfxw z&bJ#;$J)g;mRyqRE4mDX0ue0bnQUJRQnbTE7kp){b0!-o{YAGK(4E|~EtYY|EZG@8 z%JUk1k>^buaWVVuo??2(cdZJKzzx==RO5+|QtqpKDj~Uj%Qd#C2TD~8^yqH}953Qb z_lhA(9WIAk&2A#U{B&COt@(+kZx%#RzOpt5r#Iow)z#89Jt9|<^2}fOob@~8+O@z~ zjU9fx0>cw}PpZRznoDkr-_x7O_e*#ZPY3r51yTSLCG<@tOb7buZ)MCrDk4vWK%DSE zejjgj_cT!54fMKdLT+Od&$^X{dUWyTJL5`08C!1$j8EnlJtE*gQSfSe z3IZo>qU<9mXdfv&+t_;|85@ z%Vw58IH>us*Le*OuhWyYy_Jrm=1q0D4y*OWcX)*o%R@u1 zlypf&?PW)0mJd&;|D4X{&y*E(`etyZ5XNqnZu9-KkJ4Kgo)4Gh)MZ9a2?xK{oDzI% z2B}5}HsM4qrX*~ATs8OT3O4BvJxb%ZA$_;6?2WiUon~fGvRW$Ywq8nSwkRmm)XYDt zC0e?)tbgUsUda^_>2X$LbIGQ5+ge!kmHUi0AJX%@*>##_ZL$0Cq*r~9u{gPII^Iv- zS!6r-Rc}hgr@9U+n{9$*MJ4CDeYqyerOLoT#LNjYVL{Jcs@lW!-ZM=?t={fIw*J(0 z*DhW%<$KHiIuX2x#^X|OD9HE=Gj^L|4#7LTp@MxVs8Q` zhrRoqKxWXX0sZZr?Wq=LZbXNfqxSShH-4VXE1VUM5#uubE8G0nmphm-9Ux%;QQ-f! z7f&<(sS|)~Is7M&Wr75Y>%Ir`&OtCx9wB*PlSA1XF9YNG0?-_bzXsYL$+0=X>izPz zNZnMsQSwQ|cGo!sxH~?O?1pl?bH1D@wn-uDve+QO>>(;S#Zr3dZQN?w;tzH5BUpu$ z2uv2)?`#g0SX72ekvgjAgb`ku$%P~?kJ+t5ytnZ2sPYoE02v-Z3lB)QdPFVkLR_w% zVI(oOO2~j~aIO&)Y^Ef%w9V44Zpk8#j_GUP zkjp3h&W}me{GB-UQZc6WzVNT!fTdx5mjAH<3duqNjuz<;qfQxzy?s5=)8*y6o8p{i z^^tl}xyyGpx^{EreF+n-gb)c6H4O)c)bpAbRIrg?+;o>oeP z37m)1p|Y(*`{HBwnOk9`!k1QUHCV>9QM~S}o(-X&-|$wW{uA8{O|DrX&ueQQI8vnN zS3=%uY`wqTEV4XO5?Wn$u`-K1=J)9REc>l5SMI-ovb6|ZK$p`Gk}ex>beNf~KELtU z4;3x`UGxlxRYEaUt!J3l@J_kq>DS5v5=?{+@ql=~#nS~Z#RK9vybq~%vv|ix>|Ew1 z%jc$p_yy>#*+TU=<3=bPcqbR=Rf= zLiKQRg)+$t=f#R{e&g=*R7(?aW~7IFpWm!Yjyk-k?GYaV{8CM!G08wn^n1KWBat8T zOAIG|EaW>#gfd3Po+wFP7tUPrh11N21C8Nyw#8MM7ciV`#HR(Z7nD&5UG zS%aFhOp2UAY_p4%UHaNW-w%{}*?7K>5;Lqj-m^YqXa3}&0k=A+mD!P#*az12e{zAn z(}C-0_a|3%L7hv`n{uVQQG~OY^`FnGV7enSO8Oa)K>>71-j=|1u9QncD^Le`Ods-k zj3SzLhcbJFa{cvD6fC&s_mC|3_fY*)k8vxQ_dnU`KS6uz7z?SDW1<{!a~}eHn0Ti7p$c zH_z5Y30rRFG_6hzc%9n8xtQ+47~S1Px79owvk~^Bos%H)*r>(h|rxfC&b}@PhJ;o$DAVdBNNn-*VK4P4?S{$YG7@ixcD}`Y>8!Jb8 zg}hEJb605-hLC@vc=JxVBQLs@SJhLnD378QH^3sLNA>(&~=J~G!w?S#g&M)!m zAGnKAOPb=B#5MB9`r-NWaoW)Uw(oS76)$E+kgPe@=RSQ~BLfZ<4=iZvpuy;kJhcbS zp1pupbf$}j8*LveVQK^14Cq~1>kWDoQUKh}jDX4+j}$KO$FVGb%g8&U2zV^uD<(}U z6q>G|914VRmbFu>nM144Pm!>pR@C@M8srd!( zqIE=f!fW}7W8qHF7u*5y8Yz3}+_E935}<=Bsc%C79t0k~m{ZX?URRNLRTQj0B0&NC zNq+FNiv^f*s_?zLBA=Z=>+5m>{Gw|Xh#&Bi+#WN~hj3Tv011)42klB} zKY|6CIQI=m2FFEGD6MS5VD8MkGjx&1HHhE2Q>dQNp$5}4J9pUjvspiG>_jgrf3{+d z?Mo2_YSCcs%|#AXnf&?iBR8Ua1FkD zE&jRqCdId(b9(jL%)$zKhv%n%VF`Pa%n^Om$h+E1o9kh09Z<|EU8c1(86_GCxc+e| z5|bfhW%(~bh@bKoAcE`;>?&cafK)Tro;_5UXMQ&u?uh8>iJG133-er9$%VZKdzdVYQdf+o51%r7~C#kDnlnQsvd z5HqvleAwCjwH@yG0Dh*G;M+AG6D$&E+uVfK;7WBN$9FCtul=fJ+-11WXl!x>M4zy6 zxwi+f0g?d$QHs+AJUnYqODenVQC4191Iitoq%Fdqh9cSAT zu59h3W@ZdQy`mC`PnRV`{ArTRdIZn`PqJA$hsF*@79%nN^$f`pGYLczJyD}*9)9__ zlhAnOl+CLA04C1wn9Q?aM@afkU$f3Bo3A$Gpr9I1SyUS)s;?#)iP>88YTbyLUBQHb zg%@QsH!9l#|L4gh zPUW_qT74#YG&5&v2|F;#DFUyWcM%mm0APV;$n+>%nY1xa(dvxp<3WryrkE`DYeeTd zXj*{(D@I|+R-&7d{*QJQD6AN=_NSOCWfiTh&Bz0ZS)($Ed<-ed%h>T+H0Syr0x4eY zF^24RP3okS{F)KcB9yxg+ZTb#JZU5*RK(c;<#7?X|E_rFR;wUP8^kmAmy(zksvX1J z4ckd|Ujz`HEhpz(hlV~|!qh?-69uWHzW~gO-t#aI=57q_kP=8DGkLNkEh?gw*QAFo zD>lF|`K)4wlfkh{&T9hmC=erT2UufFg>hzdfad4;_ZX$R!b>Eg7vlk^!bI)k4|liI zxs$r7$l0wEUf@?GOOn;1@*Ay8f`MAF!Ddbb$YmQu|vZA07)ekFno?toVjH5hw zOz54H68rAxIfIPSdv{I)owBwyIl27AMO;-zzDHjwsdHV>9un_XP517CeQ%sc99#2! z5x2zjM=+tf3U*+EZo=^4pWjHnKT(6W26a~nYa4$?r>a*SqfbqQ9O^oBO9RTz+9z!9 zT>7mU{Bc%dUR^1!xq=IdW`V*d4shzdGx1*msA>>-5?a#CY_yll|4Hs08`ZVAw`lB#D8TO5jS220tU>b?Ge_Shdle@6nx6hXcOBfY`KHBp%Rt7w#Gd=8(45 zizWCwBGTFh<&<6doIzHC18f3xYMxx!OTuX$AL2!pqok8k&KkUv#2B+Rv9xsNU-hJU zZb@EWH4zq)SEh1NfSeAaF|aq|ao77k22UX#o?81SM?S5|k`zeyLYpDvAl%$6fNa+z zq`L5>653!}jtNx?ASQEtJy0X8=H3Rl_jGZhQ3SfY3GPHqpJSl0n%2Nw3KK12)A^F+Q z=!e3hNSdFRpyqbU=U?V7LH}gVXcU3H2L+LQ!BOx`tnh-!Gi%-(T1hnaUT{b3(W*gY zie~1tAcB*@;V@zqoOFxvjXZOQa*AvPd#=nBoK68Spbm{U$>bSJQTdN}@nv4P5BR`9 zw@Q0^H#TG}A2SKdiJRQ_H^sR9K#+XN+Dx;Gi?uuYsz>8!%Y$+S(li!TT#=0+FQa5y zsJKWalX#3hEl*dtzL0#pG=N*IyE1qnD_D5aj=4;_0M`)9f73`-Z~K3n0sMjub-H^!pIsf3BhwANR1O(c|QOHBLvRK}(8AZ4l; zg$9*aJAYloyOFs7_OVeqKui?3VfjtMBtn3E0kQ|84dq{p%G{>k&tVM}`o6B;wSh>u zx6^JEL09zd9lblwFtWMj0wH!(k!2@grkr~xq$E$DV#*T3D1}R#Wg;#Kd<$c5hpb&{ zeNxh#`9t@e)uM6c5?`kkCOz=mtwi;DN04(QRZ*%c&Se42}* z*Y!gIf`R}fg5t@QAOi4#(2h)Hj&^3Frd0Z}W|j5JK_-*QgS(pgf2Ln&{aplPEn3K^ z2?p|pkPUbeL|kA`k^%ex7LV~lD=wl_&R*6ZQ*K*127n{{W*H BCN}^8 literal 0 HcmV?d00001 diff --git a/hydrogen/assets/Inter-Italic.bab4e808.woff2 b/hydrogen/assets/Inter-Italic.bab4e808.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..8559dfde38986e6959897151f8b6f01127f2d0a4 GIT binary patch literal 108172 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

    4Fxkmtsld%at4~Z zRApyx+1){HXZIYp-(Hs$JSH%-%K`J00m@E5y`9+EFn+6m|6@i6u^fkg5ODk|w<%%R zO91NR5;olOM>BJ?C|tLy1-nGX4%#RbwNPsb%(O%H3|-BqGudnBsNRc5$~^H`umY4_ z&SOq*YKf)EW5F?-&mQKcC?Fzlx~dh)fp>Hdt4{2zb_jy z{oYQ*#V5W<3V8>|^<`Qm`ih+2zb|%_>}yM+ImFN$eRG`L z(hvmMjNA_c9J>pX$uZnd~9uHD@T?zdYq1_YO^IpIAWI z5*jN4N^aRt{Jdi#oza9)S41#3`0~N9q=1w$xw6Hfq)ogYEMaJIh@D(KiWKN)iIm4{ zp5we}$X;E{C708m&*@Y%$zM+5OZhQZn>iUAd(~@B0L9f@A#2F?#ftd`)xGb|%Nj4` zie{Qy3-IK?K_^t^#mRw6$N%0|x*Q$uC(4L7a2`JMu20R>BQr;L3xoll;d%KoezVWD z8Z!Qd34eURK_jqOf8Jn2b$)p^iWbB>)!Xc$Y}h+gVR4_-dhXaqQ_<_?pX@l3eVhG} zM@U5q>mt-@?*gZN(A9w^OAvAz2gGR`yS)+|*WYYIwDuFO)Wqr(srsa51}*?Lb!)Q5 zs5Jc*pR#{(lYem__=bXmt=BPclxq#M(`?y2JjYG5hkp$Z-Q<%rCKu6f711ObO0U1! zDzcO8ZBJ@;h^0#z@hjEoo%0(r_w&X%sNkK*G2lpQA+J4 z`lWG@%U?tv9KgyMums5vAM(yK}o%R3t;DE?->o=@BNS#rf&Y3coIl-bsamvs%> z1((%`&anip^i8YV==eWLB#ljE^No#^Yc5qQKSCtx>!{6()%SGe#%6dlOcOB+>F5OX zg#I%1R2zM&2A_7oI~ghdHOl3(^|X&oqZ+)MvJIG}3%XlrPZCzU1NeZ84vGoD3D#ft zg$_Q6^~WkVW^7MS8?6P-GXY58@&feF{F$a%j2EwaxCF^4!afBs!ebLFscDBZJf7V+AeUP} z%el9$y-F0_6DOUo_QjjW6)FxrIYfc%^D=4m)?Z4K;bxT!6yFSSFsRwq4b;sM z*#*;#+bp-Kw+0@Zu?}mwUokp>cXLq}qyAx;DzglvhS-oI(RLJ)Hv<-PfP|VZun4v_ zSMK4(1-}MM+W^1GeInA_GuvMlJ$SlO@d1X;M}db1&j7{yJGyzXkM~j)u-ZnP>cyNy z93BjfUM9V|k?fAzxLx|Hn5TGSwtD|_*P&d6D|W|}b-`cpQ(<@mNEqJcJL0z+n^QcT zaV(ryGvswPGV`5>88N=6vAH3)w*3WRcUq``)KP?++@Q{auVR^N_393*zg)U|YPi0} ziOoC~R{iXCPGj%V(A=0yZkxTPqp&*#aQ!K>g<<&9m|Aw$YE=*68ZH4`q!@3RwOqt( z;n4Kzf<5{?je~l(7kaMz!wU;4sLUKT}$GcV9?Q-MqZj)a$I0i{n;6t));4Y%{g=sP({^tUF^KN{a1&^g=eAw6E2X+U0x69jBF6Xz}l zPsDccnCxM@FQRSxqS{vW7PBQt~QAp;i;F z_G1lK_CE;s2Ce&8sri1^pSZ&(X&hJCV%@O)MNYT~w+BYkrHq6XQPrSpha7$QL6|p@ zla=fO6>>7xwW@%f;YN*voi$y& zN4%c_%t)q9rDY1B(=L>_a2~J8RI5qQ*P{Zu5|HMPRd|gnGH7Nt)8G!Ztee?fV9<(t zt>BR6mkpzAusn@b11f{3rHLd?-w`!3%#E{5m~$eHJ$?kXdX$CiLKs{{zf`eRzkDG4 z(@VfkTD7G|=p&mLF2s`N_R$@=rUYKgimk#|ahRto*JHDhevF!XEmhP)IODNER|$Xl=Qxzvsqp zH{dp6W_VP?R?o{i#W4DUWlVd*rR@C+r>+URwepvBDjI-$HnmUD6qk;2Dq3=i{U*=oqgB4+3J43doqG zjM~f4^#|ols1LJfY~fb7(76y2UHPCQ7~AVt9M!O7lb^bJdEs&cKk;Hx9VsdZSC)*i z_!vNP$hP({4R;SPNyOFB$`cB!r$IX!q{iE6iLQR~q6&(*xJ!H|?5C{a`k(#XNZ9b4 z@XS19QG2Y=!}-C10>kT2yKR|Cn8?1Mf=vKYDmCf8uL7rhW%VYl$eeIE6?k&5q^J)j zgmoV|Uz0)iiOW4HjXMM6wuM%?XtB~XOtVSrCcEF|C_}=n9m|mSIMvcNowBIT)Ce;` zD^KRDqztN*HEc=8_uPr~-x(Ue8*qINGnU;3$o=!C5 z_?$!mKEQt5ena`O}~ z$VDoJudTp~GcmRN=~G4Jr_ZHR6W|FZ{^MqjPX#=WNQkHNb2@-S9l}_C0lmv{eSjGaUi?#=6@#PA7gnVRj*5jEl*u^5HLH9oN~`qb|jznG;)!2 zAf1zUJnVT#$^5j53;)IRaVo93(iHF(>uf?$$@Ca>gmGr!yT#dg_N!wibvggie)LR-AUp2vx$fKq~nq8 zyw{QA89I?P-dF@qY8=*fcP;QYz#cbRe89L|bzGqrGu%2Yb$*QACqm5 zT#~wA5FAG{L5G%mCk)0^ws;q_6<^LOmlhdB_P`$cEH6`NFTp(qzms?yTX7lF2l_QODH^Y`zBKnEKI8qA6F51J6G{XSi0XW-HJtmu(`@btQ2UcV- ztH+yZ0Yht_M_`Lk@?}R^4a@;xd;&HM9dLkoYRWK;PVqjeNUnmj6Bi_-!DMYVorQy? zn&r)`zRAnkOcqvDCCl22dVN7!jKPhuLBkuZF@pT`Si_so#|&=JV$H)C-xxqXk70ad zT+YWZ-Xo^ia|k~IZWw@oIlwSin#$q5Ldj%I2BfJ{4K%1u?UrL8JF6mKB6+As1}uJn z&=Sh7ZTRy2m(Q6_1mcsivC|Lg z629F`aQgmzlG#VVS-J&gNHPE`K-9neKHB~N>JmwhM@K>bv7~^_636d9h|Z4|YMDLy z+tO@F%uK1g3|fsbp_`=4Y593MuPOBeQ~fghKtF*pVf)BtS1+-t)l$Ta%~%P`%PmR? z4CTZc1wa(IuAKW#dFSi(jfCg6WBAW>=-Nd?&Gq%e%|&|0$3vdjj$x|5vgoi})zmIx zlF2*{fKv`Z5I})J#>c%wS`rvw6I-B}`z;@T;78*RO8Mu9qsBSS|3GhXcn@qCaQv7T zZemOObTyM(h9x7giky5OGb!75G4N?L*94H{E1wtoBI;R@~S^76RVgKLY2>*Ze@ z?5R_%qt_`M+&wdWm~rr6&-^MZfyMz-eHn4nILx0$Lv2qjVv{U2iOkAQem{ujyd_5^ zL|fiRKqR-J?Znc;(8As%YDVIZe`bH6?k3|ZHKV@860ODsb8b4_J#A`@ zZ5V-kuK%s8PG>h=t-j5M|5K69C)A#Xo3!fwLgO9l`le)Y37u|Q0Eg_4^B=)eyw*80 zIzZJy_L_#U-k_qBzg*Pq%c?p9DvqRvTFVO9$&S{Pq06Yg!d&aQ|KUT=1JCQPj`Gp@ z)Ru2t>wfS7-gV#iUVTNRvy?{2v^GadqHuJzAM-zsh$`EIDBV6XC9UAAPCbxKTfYf_ zfC<1Xt|PgC&71=D!PgWR>VT|z;twUoTG}y35TO2mIpT+JeR8bYv1HZ1Gl0X4O_i#M z2I)9>NuC2!EAKPGY@d#K%cpB4Dr_7LXFrb^%W&yRYZFhNx7CG#e$INhcmf!V+UwQm ztFjjilZk*9bujRM+M%d)CGr8>nu>@gkk><*008YV%(7DZ-5iGXqOKTfx4j29HByaj zdw@iJaE=ARDphZ<01c9scTM`W7!ETQOV*IP%gD!K7|CmOcWiNZ$j)uMgq`oW&Bz-$ z^rE}kzOjAH9N@be6F$oa-@)&LbN|-vc-=f;%dkDU6l;a-Zi7*Pp{-8g?phTMWcKTw z|C)>WS@~&2)-T_$>QvS!gFc_crp?>dVxHH+T_oGD?>lvH^h10@JqKRP|L;7@J&=0$ zsi6I^z07=~1xqJo9FG1KU+>vJ(0Nb~2cqRTitMJ{w8j1(?~g;7LJI$?<9L=E8vN&K z@9PX6S}VrLbauM<3)h7)V!x7~L}I>mr4x3~MPXh=y~RJRepaV^FR{UH*!n@j-u{z? zh0pcagI*8a0nRLD6-33?J`)xetI0CCyLu(|ZEL}+NOMQ35UC z9k)MmM08`1d#u8l%iJD6{z*q#gPy5`LK4Ri^N6F|Sfl@!Kc6u#+KIAHz4?Ikb6Kdy z@^0Lkk&A|I-U8QM9m}z5>A}!b|0dgecw5ptI8&sy) zd2a$i6c};Si>C8uyq!T-?5@2Uuo7qC*ZVHm<@x$w`S;8sj3oDA4L{xV-3nV*HM1OsOJC;gZizSL zd5hV8(3z~w(e&K1G@*wvpE=%#Ll3F7Q5*XE*r9|n%6%5Rpd_G)41necC99Dib!p-s0h9>1fDxN#83Sk2mEAF);Cn?-We6H z%-55x$)itV)*;ykztZTF2p56je|CBfstZ>7t7WIp1hQm=MG>-4G+q zo_V^cizOme7;Asf^C~r^E7kr0D+Kd%S|ew&Ir_8hzrjiQLw3Uz(+G%zpX9Z*j^bpp zTf}Ef5Zq(j?%9kmufk!1M&V)Kc{fv?`7_WZvw{?{Aq)%VGGSE*)8*dxd188 zvhZhpMO(*TQtIEo0aqW_&1sV>5)x)trpG7GFG)(9EE#0(*q^-j!t+}HmS?c8ERU+a zhTZ!omj~9L0FO0HP@Qo0MhXU;c-Bf|PacEd4nhksLIqrFLp9Tc4gcFG?(<)_oYOP? zkyC|5)>U$9g{~gFnpseuuS<~CE|Dd=gX4Mxowfz2 zO)Q;~@n3LQl!Cx)$QpwvV+5)G&eS2_((ui?h`=)#qybU$x1t+*WyuP+Pmy=MxIL01*-X zQdtXNJxd#jv>h*k>HbAD+K zPJA2Mc15-d98%uqUHt$nQkH7ncw$J1QE*YNZ(u;ax5#R3M+EQ4(N~zB#wc>&DioMoP+rkUEJZD)<&oHlsQB_`!7mJ$-w4k@r{Tlccq+tB zA%3!rAXMYJ#D3I$QN_}lNmVN1MWVaJ;{1-PI-CMsioWuH;tl&nPWRyBXiD*;u>8RA z{A1`o;#0BTGjx83s)FP+(!oLMy{F@)cibOx@hLHT_p?*O`EV@NK_cVj(fX&2^+Ctp zM0Hl^%oxdXZ?5{P(deuoKbe14PYbNW7KUT9LMpZWo0UTEC_$Xqfvwef6KYODZ@C~doYXF zd*{?sm0ZA>iwQDQa91K0-E9c(}i^p6%T-R~dI=S!!Tretx)gQ9HIN5w3X61ou$kNFOj> z0Rlq-6ksm9E8m*sGu{(d(5}CeYhdR+bCQd%?|66;Aei+#;|;Y9MYlD`+DGO^K6-^g zv5Et#;QQUv11^KqDkt>7T>f`8L)1&FA^Tw}$=+)S!eiRlgL>j{<+GV7VKs%3D4s6P zSoWkyx8&i>tepOgJ>GP5a6BXfFWcCH}6fo0clZJnL^%j2*FK>s` zKPMVkrvVA$fUus3Vx86PW0L_jeruFnuk(;OBM}5?< zx59ir)tox9*-!XhwPik8KX=eZc|>0S4P~5fRd!91*@$52qh5$D{yhuAg%2R&u5>nu1QhtcNZn9H{j~OcWhz4tRPC7`n$#^h>65GCS<6oCMYbxC@$k|Csfu5jd z@>N8(w3)CJ)mIF2ku1q8h%%&Xng0*+XJsz~CAD#U$(tV+g7Kqe%&rF%Vq^d=WFq2r zW6h5+0OrF6aX@sk7LOMFeS1i3532`U#-Bl5`2PH~^nM&3e#3ikjhmt)?q=V+`#TYE z!Ly3>qj>_Gs01Q$W8%iy0r%pBV2zn++DacxUR26zf~p zrH4`JZ;`E~oZ@5l6vWBmE>5ZKi>jOjSRB*vtQHQA)XbiQY84B+EzXsn*8m9|_%l+( zD@=QN44KMkzR!DozNuCO=5SFQ?<=tTRf@?6Ui=?~MwxHy4Lw;|_rrMLQFpS=DF(!{ zZuT??Yn3vjM|P0u)0=42RBHMhq)9!C91{BcOL_o1Un!G75s1p4`4Qal{NO;b)7!Tt z4vK?)g};*976g(h;t`V_#9`3f_x}t{Xd&{RZd_}<+$Z0UyZ17@`;l6IRRnT@mTvth zHN4SZcp95vZYh}T)Tq(jCA4tvO8=aND5Jtw1cOVGQgiTj4Ea{jKlSvTC&WP7#z22{ z?mw`IhOA7oVvTRF&3=N%c2g9F0EW&fkBdmnLJ2&t)084L0y{3}8>VJ!%~iISORNhU z?r4lh2R1gbWtN2<{%RIvC*4yv<<38VUw7(qE+ad|tO>B!#K5$j~mz4XFuwv2{-MO(e~yuy};k(m9!=Khf?7~p=DFvy2` zSqZ?b`y=b+P80vDv25ICPQb^1P782PrCIIFW?FGgQ3Tf_Rwnlsou7=00(xo@9{{Hvm8{qu`QoG*-sqjrl1*Nd0q2Zw}yDht`OCc=I zZ3tw7Yba!4Osyit3sEKe6Pxhu%%rDg1R)I?W?yer9rNTn zas+Q}Bj;BV7d-+hu~44a(E4(4KPPyw4$WDSp^K&uB5eVncAKRqKrgu!9NZ+f7?@3- zf8Dx@tgg}5jvz-`sqp^t3CWVQ{S_4yNgSQHwYdGYy@NCs7r}R0@_fUCAanDepFDyE zx}w*0-o(9j_I0;!bHxg{G>%<4yNc0x$9XERT$ z!@Fkbnia)IM0D?mS$L(;;~x13=6WiUParxa6S09&*O&oS&aHY40#_UK7`((^?b8zV zwYr!=C(5v2%aJ?M3_VLJueOtNPwKNm3X8M+2$%?*Y^PqaX4yhwtewn9uEsVm&t*TF z=Y=+(MjnV4jzDHksAycijr=z@)kZ(ea?(RTGCoewNa*;NO8=_G)U7f+bF0Vw#NqRO z$FDLp?bp3pr>Av3vqX>0<_>y5Y-AF0sJo0KPB=uIg<#I3Y)LF^FMlU}V{Jn@N|5q*02#@hpDPe?>ndr~ z=i9~V?O+>6k2403KSRRUm-3g?m#|Bl4ZLqUH))%CeAr@jKbK?Ich#PtGl!1J z=JTD-gkPb2u3&WmUX1eUwhSsrRds5%O9`*=$FU-RFaGYgy~4E-@#d?58^_?Fy5{hZ z2m439*Ex-R60`UqR#ba{#9XsLII5b9jghU0>Nf}CAW(x-eY-ft3tN?X(j%oBHA^Jg zJPqM-E9?IrIsEpOa5lK_8O8iGmk`y_q0nw>2<7%0Kk;NX`{F0;s$*|zU^65oEXvN_ zEh@FIL%h@*ilzO$LoDOPr3o%LL$J()!C_AQ`e8-shSmd-MKd2FGC2V`mC3om0RpjA zIxQT`Q8_olH@5}ua}EutsSz+Z%4S}TfY?--9~%dXqLXlw2a#wCUBV4>evPo!aOVw_ z*P}f?4SuEGZe!~q)2ff)zj}AJ7iAK|6qdcpUN6g&PdbT%r*?07eEy#JBEnjDiJlpk zUldo!h6+18E&L|>e`@p?xLy??uSH(-RCYNNTt*o0!d6a_GtW56wSEoZ9no-+NBRsl z(J+HLkTRTU5}9||uE){=WfN3vXAsm)}WAL^v%FNB*>Kui2? z*Q8a@dSMB1XF4?C>y@0afyf6W6d;)ByI0?FK5=+W&q+<`F0e-ytC8#_8I|c-T@`mx zX%A)d3os}3otbPM9Gv{{=-{BVa0q5wc0XjBt!TFXPmt^D#P0=0ZDe)J%i4toypV;{ zjEoZ~^Y1O1-Rh!K0fmX5-15%%%QHh8AM4!e$p>mS+<*7x%@1w5E;ckP?E@e%^d+Gd z_YY}dSy<7Q{oh}zwjhcLv#j<4&-SI!bo89efoH)iG_)8gSM&XIVdHsYT^XN`<#0wb z4(a%9ZS|)Od76Kv<1{>l`?zbG9n)mQ?h!B^s#bVkNc*jVE?l%cfv_2H8XKFivoSPQ ztXb;Lw0tN&S9}?CLBf!z_UXfaG|riYX?*zPs&=k#n`^YZjB8^19rr|8IoBxY3;+bo z1E$OKO0RoOAD+b(d{|JLRG z%7AT5iFV~!(k^Rj8~Ra5@8s>QgmwWf)tg7S=O}u1$ocu>% z0)}`^WB5wTtHi4-RJ&+64Y|f1Bx)ii=vhKS(Bp}ysMz`BfLEN+TuH$Xo`-<+DI0rk zP2~I7sq@aD!<1lXWRT!qNZ1}N+eer?`*0HrbVEwvC%(k$s(lH?pBvzQ6Kj?Vx3^GJ z&cnTs&RQ_Z=q4`g+ki7qGP@QZl_V`aN-pE>LC?T zlhJ`s;uFX@83|W%;D4M^TnSJ22A_d0NY<;k`62(QOgkr64DVIRvW-s}tYck6;Kb|= z#}fv+%=gyIecF)9g!5#ov>{Ur?^wgi|3$Uxy?s41Jnwo#l5e1&jCwR3Ch{gDsd4Am zd0W|)3M;s3Dv5lmg#%Qji2Bb>q$%xka;sKU2Ja4zQd3T7@azdww3}pjx9qOOnB49W zik;9gs(4lT!ItK-g9j?9R0&e4Dy1&LXYYAPM%Z8omVJtor(>LJ9({CFzoOf=$E_NLKKJ1J@rxX$vxQv_ z5z3x2_xR&1jB+2xUNDY`nd)`V03u4@%gK1>aQn!r2ceCnPdxIi9rMisQx{+4#&(G#qNo55)dcaXlQ3oYj^N5$A1xm!_(y*n2eMcM0J?9FZHvb;}B zImLwE`AP5da+6;r-}ceJPdSofon0S z0bFklD5iBim}ypJTT5=%L5d{dxhd&BEjs^d>-&$=F7}l@=A#osEx@RRxUCW^zhxXEd=^h>8P7 zdeG3z!eITpG4t5Mbh-G~!Fu+3&S%MrDxVE}TUd#se1CUA|3>$F-=4T7$nrVa z#qF1yRJ#MmeI>cb@knBE>0fW_riFg~`ggo7>2xmsac+t4FB6sU1I7`f5$(W;xY66J zEArV<+pKh}G9xF7joxM{%f8Y1oK7&nC@5|#PXtkYZZV)|7ac;~{Cv~%aeG(qNVR7<4D(5p^&!b;UC zSsJBIj#hoDr?cv`939L}F{&4;iNt~dmq9}rn;`s_K}ry=xX?nR5cWrOBbE$cunsZ? zpl2>o^&Vr4j8#vD*qg%|TnC--L%_d}AFOsFh8=nyyiX(yRXVxjp;f!8-~;a?vB-b(2&*Ot%ymXfTIOT>^bivNZ4CLheT8TWm$%eM21awv=iJ~h;qtx zvPT8YSD}}(@C-dUF&Oz-HY#@#qkIcIsZk_kZx(8jHn zQ!5+_^Ch=AOIM{B4$PWz@1FA~&a7H+xDj$PJsf&c%X4(f19xs<9edI!$IF928~PL! zDqoH&g$@`2-+|dmV0@&|kb@s{rI7qLkOQ#dVoxXOL4K|vLTL$!SW-eDm6W=jSR)z$ zAx%35MCS+RMJLZ-%2tUFKB$7EwH!Ewt8)VK+qX9cz zD~p&|J&p=g$qrX1l(0&jZ?<$#z?Y2I2#}Qkh#5}DQyfJpoy=CXC3BzQDT;ywK zLV*rNzX6*A6TJ^}DS-{sqg+O#kXhQxajWc$ZD!L$3k&Svt!8bX4*D*8y|T%l+oT(d;sE`*0WPXa!0^-O(l5Y>T=48}_2FtkHin$Y>`B*mnn&bz?>9f)iCkxXZ7p#1d>{x*N;plm{Kr-?i z?G_8HZ(niGQ&x%!MYZ|V8K_E#$|}|BOrlF+g$WNyrOECWKHZ!>ecsLRjIq0Z3mj>X zc_SqJ@KMAklh69u%MV31MIL1=+o{_<3Wd#CG7?z(Cm_NN#OQwV5k;djlKmsG+0~6G zuNx(zmOOX(+=)zAP`4A^5+D%@Jj1bxZIFpV;aIGK1TDB9@OwwPh17b%i71)nDm#-M zz`z@QOm_GqR=)f&=;gUNs)i)mS7wuvkd7?#F)^Sriu{799-dMK{eJ?s$a$}D%rCJmTDI;RT`me z_?l+ApM#jh&j_iUs#QMW*Lb;UJd*q{t3ds;m1edF4l-Q~LHasM;>F5LdkIdML!I<+A_7NQ$7Jt~tM<6=`A zf#L%uCHkyi_I6e%DOIW{RVpbXpkuPoTB6@v%^`2uWgp(u(^t7r(&LjK>k(O=1et(g zUfWUb9U)-lT4-3gBgniUpa35Gj(PsL8WGGOL{Dq^5{EDk4l`OLmbl!O+>BhNr5k77 zRq2B!oVChcj<>HSiA$yn2_=Er%nB|Ihw6fHytl0c`t@8pO6umz zlewtln+clOW{`t%9Qs=CQ}bg`xx+VnzWV<)_gB15D0-J(UG#n{v10I7r@y|e#*GPBZoz0;&L)ZE7#zper;lzaDm_DXsCEUZ_R!XYR?@6~ zQl#ZPO&~k0@8WLJWrT^97t%XaJ29$dz+fB$Z@t~?W2$nSpNC8-2B-S%)?IN{{aC*r zsL{NMVBnzj6vYou$zAfk1B^=DZdPO6rq3W!1%S8rI-sg;fLHZ8uzN%M^p&~U7CT-< z#1cX56%p3j*#RKZ+fO#Tj=KB5F5X0wd8EZ`DlUOIsUWl_BG2>sww4NLIh@`77J=u+ z9*QrXVM1#lpc3{b#(y*`op_*v6-Q8f`P|C=%jcL-gD0qjeaQ(Q&WR`Otw!NOmF`}> z`@4IDpbyNp@0vJb`h7*zOEwYDb*j8Yl($VI4hwa4@k1Y&t=|JSDWo{SF1d>!rvppQ z&&9M7WA;gjg(d)|P|W*nOh#1i^4>4xD}2=jhF_pe4E+K-lA@kwOCbKp)KSl<_ri|y@_2|!9iiycyCRXIE zL`UT;fjo749;LX2^?5fI6Z714x|`_EmY<3ZqpJB=d?vxRRaa!6gTv?WB8KM=XaDRHaqK}=;i z4Nu1BdPF9MM34)dD+;hKq*OdEIp4iFo6Fkv%!Mt9NMPme+sN@~pZED#pLgRiadBfY zEMoKhOpZmzhR2p{5GzYJVq)BQh zuDKJa+Fq>@v#RZ0llmwbboW$ zX64t;uW*7jP%db6(z`7YY+KJ=u4wMajTtT?>9!UDISL3bzy;w+SUp6R_y)U4K!gK? z=)ghlr#fsrS~|--<~m;76WYD}?%H)n$`ZyKOhwRo%wa@N;SU?5o!Di0QJ3Ft1YK=8hO$%kIrv00}$D zP&Aj`a_G7bqoYtg#wZE^QY6sPn-Ve(_l z^o^88J3?bqlo0y^v8VzkznJn)%Y=kw%h>W;ggmUPD0>ipImH8$()i*=-jnQ_hi$Y6D`U8v^`%n}R`}wj8n>kj*mQ>Uw;-o=~&a$(N7cXBYR7 z&|1#3i&C~+bS1~mIz^0mQetKX9_B>^cN9I2>&6Cqz$L>xYt7NE@B+u) zz^f~pPp{gw6l^^ODK^bD?@_<`0>`evOB*Wzmz@{|eoNjX(6I(cTw(5KKzM%6g-vU@ zyMXZA%`F5J2P>xTJL5_moyxCZO6;7$q|dn2q7>$v1Qh=*{*zMlw+NOCj%}-Qu)k9t z9euCN&hb`tG%756i8+$95E`1ZFv84Uf`nY|{S8FHMnoU-ecSo=pfzYKI+(J7uo``T zv|~(^?_2<<+MOB+h(G~(mkO)94Du74qGhfHt2Pu z1j%lu{N>vIf!jz%KyP|o2qaUWtOPgwh6=i^^us?eHuG~DxAV4Hvei(PDy+a3IIvL1 zR8+w1o=dE;&*c-%+q0rJ*(r8N8s{u#b078h?99|b8xMOMb`h6fPk=-q^>PI5+q2ym z|M%PL+Bc}&c{mPqT(x?N{$`Rx#$i3suw%0~qyF(^Q<`a}AXvMQOKRLw$`#06o0kIi z%WgHGVzb3_WG}QrRA9jj+g z`UW6jU_snu$Ru{eOefIy49G*}f!~ID{!;#;-QZF#_ak|Ofk@-Yi3mgGNT;C*PE4HvtE=y7&s=_2eLw71-jTkH ztO7c|f%QG&(qmmv#|-9H+}5RicU#QD+31u(5+fS*hBwhA{*l^_lk=-`t5(QO$Fm_* z4wC~&Y@Nr*tr@}{sI#4EL`;16A-lKf!I{Ij~Ed0z#P}k&P?r=}s*b z6|SLO7ndMCMXpE4L#ftbCw5SL~%TMIaj->a_PUq%LO=qNU zjN~Rt3}!aJ)*==gtUR_;fT*a7pJboD5gwO{TGLz}P;D7Cbi6}z9MaOEbID{n7lWj; z*pD@*twrUS_8gSsD-$XU1VifgI(hiDMgud$0|_lj4X8aS_Do)SCiX-lPgY2~NvR79 zj;?!-zZsx+$1%6yR$|%_Bavd^C{wHg3=sVg&Gr#-*Ug4NP&v3BwD@|#w$K#vpQ;=((;ejC@5l*0P-JUz{hOp5- zbuQV!5m13`?Q!0?6s#Ku=+3m=#`4sy?QHFk_u4uDD#x5tEJ6c!p@P%<@+piC1Il3= zu;lK)=)o1}5uG@n{a)@ddFz3t){sXml18VL;9DD#6Uzd|D+2cVJ%~OpZwDm0oiMlQ zy%z_3fPzbBqDg#!B+;I*VVEf%jwX8dtJ zJVkXrf7{+JV>!{pdcgu}Pq2o*!hFdyO>WD;Ad{Rn(?9|8q~wO!Fu?s&i@6bHclz!a zWZl<KVzgQ9)Gs+@6 z0$NL`?^`B)o61Bf$}V1Hv^wVNm`V9|*~4iOM!6>$X;CsiA-al+zHc=c2jpmDlOOe@ zJfFv#I@6@OfIEw0CVW#(KvDiCzPVPcyaEVYN!mx$hceyx5a7(|khGof@R04PkgWTR z`(v`z)v{!AwHyoN0_445zNSjSa#)s|NM=2gzRf<{nHC@NL3NWiIRW+Q2GGeMdDCRY zjNM(TH{JkDOZdghO3O<5Q)Q&2Cq$YB-zXjp0H{{jjR9htUKn=D>V?{=^N=_7u_$=? z4;b2fEY;xltnO~2!S@o*fD%4N;#=Ubi7ee`WDeMlyY$};THC4hkxSKw2~6CtLM%T4 z&Na^2Rd&HA27VPZI&mz}VWqej`3ZB)G7P)`3SEhy0jPP&34^`KgF-mq7u_1CLh1wVtsvbja(`>%N(xLPih zgL|W5CNalnP#=I>O55iSA3z*;KT}2O!&hEWPFp5mQie)l!T!RcLVBuJR6#vjFsFlx znUr!fG4WsuN-DV<&Z>Wy0<4uSjF_VmduXBLa6n$)}9?h%UH8|K>gT9OPF^+_;GxXpEdQz|q!MT(E%PnI zftt^fSL~7xl@#rdDIA?#v&l2|oDW6zqELavrF%woa`<>Ib;u|dfSk(<)C4H>*x}1n zK&71Xim7Gqy$mLK6DhIaENYZ+?yz`Huv26rD?o1w{a6mbT)AE@jYC=x}Ma7C9Z%-9I78O(C^c3pEs7PIe&buw0$U2I4 zB!@(3Qz((zTU$solbsC>MWfGk_)tgzj6L_ysN0L#$N=|k;vS(4m$fidS10@luNV2i z9pG&?DkQ^K0ue&D`v$m2q9N}ykcA5I38fOM;Y2y5PDf}_ojPQyDBKztK3fJar%&jn ztPNS8;rfwVqv>d3veGzx=TYpVotaL2xcyuP_5uJe|JGo&X3do_@WLUtZ93&Zn{30@ zA9l3_>r#}#$k=A0&`noS_wd-TKX48JHAm{Dnz0gW(2D^iphFWE=zKlBAp;7m4!oIk zhyi5#BL{SkTo;qK~#o^YUJx=rvwoL99>Imi>L2<&W47GVb= znc5CJAc)_APgX1fDhL4=YqIg%@hQN8hp?TH0@|A&g6{oDW0SWZ**sDl zMFsf2nz=o%($<>X)SB4jG(?;bU-z77+m37l{Kbcto{$topnfSN_ zGq*I&?E1vM!|3A~o!t4ofi9oe)6(@?QO=sZg#?&z*iVbzUx zh*XzX6hw*PJZ!q|(`p!^EAlq8LVHL$odJ2AsP0bP^j~ci$su#^FsQ3UYyW@cFyi2SYhm5^K(o}ZJGyTe4i5mBBq5$0uQ1>zUYLJ_ z=je;~Y(D@g37H5$sXqej{*$hN7_=#{sT=tl_>Ng4LspughJHX7i#r8-TXfzf@5X&> zw3X`U4_~n{a|T4hS@Xx39964cA20-o9fwB@g7Q;u6OfC(GkTHwLFcJ~cA<;0ylFjO z{HNV|op8yaM&AQrYHY2v*=cv=0i$9t=72WKA>fz=;l6Q?fv)<6aJ`&{ zBg=sBpQJO^f3E)@&G7yH^W=#qIab&b&zQZ+rBXGsG_m@s^N3+RT)6h_NS4(HyInvf z&Loge-90JMJ1NtA_UP9r?wbUbfxgWxnCMvDSR=!66q{kh+x)5(^nufW=otY-&nBfa z66tQ0%u+rAh@K$=)&DuJ6`gd6EIgf_|J?2TeckM?(dA3$1x{>4ZR8| zSiR=0xqdpj-=Mnn#COp8GOm-kt`}aEmX$$>k|4x$E%|57l{OGo5>8~8^r7jat$dgB z=Edi)_)m$SV&g0G z0`pL1sX^#Xw0@uQz1;F$Yf>R)rk4{xz+RO5g}s{w(ommpxVckVi9E83b4zd z#I~*2xc&O5C|o#d3NWWEQVT&2vJ9muQN*?FL`MZyV;|qSBAPH}Wu&I3PTxAsE|K#X zd{LAakmI79@Fh_`u_aMpA3ldh4S4=@l$ocI+QW?HE{f7A!jPht5dU0@5N^4mHElCA z`eo8`YQ(F}&>ZI(wFtwc!(|BAXZ%@Wt*%Xk|4lCyUomJ8t&Ls1vD9-H_dDXTNuVjj zL}o*05nskw=okVAJIl+v0Kpsq#9{F9127oVETi&KDS*PTCZmC`0TR^9%Nw2|W`*x< zYV?(3?upLht&jChIIRiAvr)?}p1ed}{uu@{ZXj}aZWT-vJ>)7ACAe`<6=E$~cz}1$ zO;={gFBjfn7n0QC{P%smSXs|u)`$O}OUWUC(1U@i!~(+=5X=$GIaV~)WA zt4s1*^Vnf*B~s!EaXIC=pe4kVjF6GU%e+=xoB1__P_)>95bAOLSMm0!f%cr)Ad6VR zF;cm^{>5YaGSkJgmCy4k+a^-^L#(O$A&t$bmY56cB4l~|M|dOOQmUj0h@_XjStavyTu`JDAn#4Tem{E6O^~a6@e-{uJ%aoA zBS(@a&O18X4jo2t4M~gwb{$e6Wrg9LK)d*uasg-nelqn2%~yS)Jnu5Q%=IZi`dv+u z6E69XFV#K87e#;<#KuKA;!C0)lS?At>j|0Aq|6}n19tpHVVjNJ_p(pnsp)~Tmk=|Y zL=3%ZB!~ zN1JV4HDWd&tX-KW#rF8ygk|1yN@1;xf2k>xAr<0%pBf!Q-7*wWVF!L4D2lsqnO9cW z;@I2PhrM}Gu8Fnb_JRC9jI2+=CA83zrJ>eJky1~b`RSAHv;~>BKf>}=N_bOrOgx<| zgFN;_BYX=zePSLzZHySU0!|&&1tu!SPI!)gt2MWdrw(;`>}YC=Ep7Z+d)}KIF5(bt zc+wI&s_CD~8l#4Fde6zRqZuyPpdP!Gy4ahCd_aHm(ePN>t*;q3D=a>>r56*Io4L|@ zIO1`u9MSlx1I>wgeK+Ty9sOThCSbDj7A#~F5bd?;wX?|CyJVpsx1qzKPYDof~UrdLO;(vQE$F; zIa%*O^F$q6T=ouIUJqx%^f0xsHN)a_%AMjXuj@1OxYOT)%!wiwtL}?TOHfdP%_|%t zLfjDSoo4y_p7ISgJUmygdSA#r3xqEP|Md*SDAh>(^jV59GS^>-9ydz0jBP0Wt*bd!0BcMMHQ z$~F`YA0cYm0m0-|*{o8F`_@GiA+KBJs(kyq1=$N-Tu{=1P=e9835PH+0a|f79ea6% ztc<1m2!~Y4`*QvT`nV<+=v$mOr`$pBd$=a_cP|Pnn$If&2n-dteE^|91Z-zVp1r!} zdgos8u+&ht)eWWfOlR5A$uOp+gWZq#L*>2}k@7pY_r2sy8oQ8N;v^;BU41bBCUmWT zYasev(<8grOd8yU?i$T9t+IuhVt4_g%tv-J?*^igt!n^Cz}RPAou@sTYWlDCu5V7$ z?jN>Q_P;Z`Ili^U7yiNYXr8wD5QzF2f>Ey;igG$iZ=rI|G434dDaj`>#zk5fqO6+g zs0rzTjN1?hk$jdAcO>0$qa*hx#KrKhxx{!2CU6j%zK$eUEN}s{j zq2n;+ld2E!G9a#F(N^7jQ#tR}>T6e#MH4O_lG;>$2X@FYj+U-C$_1@GzP zw%%z*LnPREQPGNIm1hLSba~Ak=0Ef6O6GvZ-0!mq&5W4=Xo1s4B>m%# zwbx4}(Z{*^8}e>Mu?~bg5YcQ%(|tH))StOwo>QBSPiu-lR5Z0uNbKhv=|h@sw$T7< z>oA@FQsKPTym=v=Z>YVJHQSi3o5`(~Z`{IT`->wFC)5|GN7cSIue#Ky_d|4UaZzgd zyY^R^l~?oPb5J#j7J8Fvi(=HrP5IbGUT)zXxfpvVptzo$k!t%==tHs{vXh$d!pa*X zqjz!FXM7%H>rA#wd-Oqwe1pFUo0!m(sq1(3l-H%S*d$uvO@YU7MTl}kps6r9wm0>Z z*XkMHm5hX>Ml6OOtV?y#7d>`;3q$T#(tMy@49_%?cfu_Cj(>?!_8~jjy>Tk0bzWK$E{tAw~Wdy{VTB6YradZ+r|!Thd95FQ(WLiXy?& zr|36k9&p@By`7i@x>rj&UqsrhxyKk)U8~Ydw>hPk)Z#jeXx$ezwlH-uioRN=*8t*& zMoetQe#cEFpCf-cf0p?$^K8TQGQDV^8(3R}i)taXW>=%6lQu@_*Q)fYJR`l=UPQwC zREMgoE*DAeZu%xhsyF#%L~(|q>2fB~q+nSrhGZ|V@cE;hg4xjXYSQ(KnO8wv@%W|i z`;RM{SsG(Z_s(&?eQ@cQX)tC3P`WKB6D^e4{mpjudE++Q-|cBBQ7w_WuApda27od0;fb#&N$A5XgK*o~fFLM27`-MvJ%0oAE96Tk^ z;3tv4858ljQ@$?o&*KN7o8L9I9`JIvQtMJ&3U6tjOAObs+75c0bd^0Jvo<-jfCwv( zPo0bo=X@Q`Jn5`zj&Z-3VzRrOWP8f_`sq!yyuh2ew8Q;o3Is&VZ5J;9w|_sqs3>qX zRk*>wbJdai%!%vKpf_`g%OgGPSxtI%R%#3(2W$-&D~VzgThHGJ{vWu?GsV^pn!f>w zo~L??O{CBqdVQmH-qY0jqjz7_aH*+1$1Y0xF#(ykgplXE^Xbkf(AqC=pk1Qu|>{sD2v{kp?H;4V+?y?M_)uZYQMkvwji!ku6- z`P0BzO7o$72Js^kvxg_h_Ym*sUY9cXF>Tx#?s_?x|Lj)E&)t#P&JVwB`MbYm1C0av z;^px~N4jCSt!sg1j6+?E1MF7nCYp=*IboDd&Q__5#}#7Ocj{AA7R)z=Gc5;#TQ`a- z=|B2(8+5vUwZl^!yL4)YdI%*5T+iDO!>!pYV=WZ(eL}k2x<8bSDUYsh!90}zX0A6P zl&>#`D=H@2ChH8|e);?JPZ{4$a)29|4~#<7NRxXQf`{jj`|nHkbO!pZZq6AFP*l1m zXZG#i0cJRI$Dm|1?#Q=JJd85cC~B32eD{o|68tA~We6^qJeFUnMpgU8^?CJ=HOJEd z#sRk+lP{w_1191m5_{ksyX;Wj(l3eR3)XFwt*O-(7&5A8GkNI!1{_m07nSLqe|a)> z66TV_fl>i~*C9g{&nsTlAQK0jE>s@O>QS9~`t0!Lo5KST#s>`KLj|ScJpmc1K$I(@ z(yo1Y7++g)FdKHAbK(3Fdg%OfQb6WN+eK|LIsWFQs~=%ziBtNR*u}+>w%-e#1MZ~A z^+2EvwRir0fH&3(16m_|kfc@RJ;Iv#qpVN#hBGTLhH{_Ji{|5++y_Hw9VR)jvOY{h z$r1!$?F4$C=JzpF`G%W&L4nEm66#sW3TaZMWhf&_sG=EZ=$K1+`q+J_XQ%v64!Ws{ z#8Gy<=;mnf>6Ww0Id#eXNUGc536W2hW>W?dSdQty-X>;q1HQ_UV z{c*737bBanT{kskF*gp8tIJS#HY+~&P`(Fodbz9q*iZKK#QEnHC=t-i^t{jd?&yn) zD+Sf3aXH>O?bTpqX60e>eV#MT zCNGTB%7Q-}?bbNciFQKKUYyhM`fOEsYC@Xr%&oWjA>PiF`nPPcjN|l?y?{3YK~Zqs zM5}3>ae4H zGR8`AH{f{-Uh0i(XPNzzFRB4v&?O%YWs(hNcnN>c(X4vdUQzbM?vLQ&cLT4{CJ%pK zABF7H%x@CugJfdlEHVoYxo`?8=L0rO3t*Ui<%l_KZyL$<4FM8XCu_IQ$udT2AL*DL z6Fn}TbHb2Q!85hDGjXSw3!0&lFJwp3ZrnOMlW8MAIF0-&%>2aN%;3ijj+Gbn;%;%3 zp2gbm_7F;P7U=sk89a$4>;Lm~<;AoNY>f1bY_zqE7@Q2LeeGreSGx(tj6&QcdIdH- zJw(OJf&Fa^-Yw~0P@MNdW+d&#mflRJjqKnI@po?Kg1uVcd~H!jiv|QULgkV_x1N}7 zZdW;L4m<<@{LW=saE#Xq%8mpqJv)CsOWz^fna)AFNp!JB$GOIc@#(j#Y~?&=Y^iVwR4s3>ZyvpbxUAhOkfN=B?RCE(N1MA%sJ)Cx)`nGqf-)##CM!uYy(cE zX~f>#IMMfPdw!+G#6qA<%UHlaE3o|D3EcHXwK&ZPU4CvVm^W~cII^-2JRiwFCSJi% zGvA^i>1kvxx1KOq7Pn$bursgCz zmL|WPlyp>YIC!}%+Q-2)mXcK3R}P#=UalT%X>SCN$mtWPI*yDCE{fogU>9?hQaL#H z90W%tv<53r5AeVG_Vt=%=g-<1vk=~U>|j(FT;mg!nNT1&2U?I}0*wAZwrh|7F+OI_ zkhMy*N~XzK8~+(zt_jF8B$9Y_^fXVoYTlWYSRC78za5-KR|>20kE5PMa=Ss7e%VS<+3%~#lE@zU`w?TEzzcwaB608f(BkV5Yv z}KTWVWHuMlZ&JCsn7_JD) z32y%dB&-u;>IsRm=vF{~uES7g(9oM`6CD|&httxrlibT1v&V}ET=%CutO{6H+oOwa zAq8bK-g~!w5dF+g8{V@oqOu?ZUz+EJYw@_I%6{^H>+qoF=bvXDVe9?R9loE=P#dqP z@4@dh9C})kz{)~K28ZRv;$)1r$>O+d-fWyWu(RfO5l>tvd5K>9-ZpO(rK0IJZpm*R zA5a^2`jA<&2ig!0y}n2!t}_QlT_diI4Gg=6UmG48zaOzS0ZJM7clVpS&R^#>o}K44 z-V)_DpDW2tfBWUImHL<3x7k%zM|Nx0voa}>UGU%oRpR3R9kSX?Mf4hn8>az01E_fK zto)b6t^yK&{CYrFq(9EK?VQR5qno9Ev@E-xTS}l<0ytdaj9QHNgdPX)K$?nmoGo5HulgrCS3G@q=**apc_ZlUa3KEd|G?=N)i${>svj( zA-=T9{$Yfr_X+0JpvO_1!p=Ik*sHPqoyZ|ozx-p0}0$Am2Swg(w4wa^d8t zZ-B!$i`uUN&uNthhZNc>?!EkGh$D$94U4aDv%NWVkl=cKJpl7(u%qU4?s@-vAc!_N z`_4GsW>nvrfRNLQ#E%NAf;TQug(w-7AwCXW-UuhW*W0z->%@W#=He4NNE~M zB#jaGHCK~zZR%@C-RRon@>fqkGZ$OSPquNmUh(tx@OShI1ox}(RUmnFhNxJ4XqJ$? z%vZ}99W66Q$jAW@V}H175?dEu>J`qo{JF6}Q1^;LkjmN1e9+8O?l`@4GbT|K{yLUc zgq^1EAa z+Mj7;5tnak$TNK-s=nF8+{Avena!0;XIiOa7Z#0n+a70@h8APnxo+lcI=aE$}o!J*UuZY|mkmoTtN#feZ$qq1`bN5ejl>paZ6%z)U!1 zLa_4XuodlF1C~Rip!&CYqD8M6lR|ZVe+@Gzm3At&OXW{qQowfI9QRbxC^h!ql5ZKy4^9;(?dnIV41on6sW*CD?5V*v?Dj?;m7N;l*2$&a@cngTA`jv}VC;i`&y+$Gmdy#b0*l zFaKLtGP!>`;DrADms{fb<5x_`A3q4V;^1Gtu|vEiJzfiK7)Mg{WUbJ7D zW>{>N-yY#scx3Ro7@m#%9eY*p=XND9+D0hXEBK41Ah*ZsqnbSx;bM;h(lVZuI^a@@QBNV{+*<_?VQ@8GE0k$> zv7kms8gjDsH(BtUtjm}!n7IfDH7X!#FAHC4QME3ntOkR}wLkZRie9)(XrHpRKrLX) zzA7j8OdTmJb_5Z6o(~^~C&24LD$(E8;c}Jui zV{8;$V-zJGYDUj$)~=AdlHlW#Scoml!rNusW)Ye;<+$MBa;VYEm0)Ax;rv<$edzL# zPlO!S%b8$j>ShC4!ba4n-{MK$_a1i^&Aop}gEhu(dq}ugc(kSkOCK<`P9T3Ki}J)2!NjQvM}ac<(a z;BB&d3)nBtD2c#U8=ErEq?4{^(FXJCXyogVHXE0rF*f3+i%A9Sv}JjqOnq*R7&7Za ztf(&-E04k|hg}HgfQ(4wtUpPrYfad3#?9*JwdjX8Dx+SHz74lvBziT5uxu%oi~e7e zCfe*Q5p7A`?D%rnU8E5ITb*h(T*bo8X$y}3;+DOg6rwvxnG`8Q5twOQvOAYW$zlN=bYQ1C)PQFse$)9YN#wOGpZ7z_`fs8Eb zq6xq~uAiuxm~5Y%teKny5E|s#%(OauzVkS0W2PU~}Y5hhtKVUZfsWPkbq%3wOiw<|teNB1%Ig!2tG3`xa z{s8saA`$d`EGc81!BN%G>-Dg>7cy2K9910J(YUxMc{`ndeCLmKU|6x%3%PXme#4L_|_2k2VnS zsu~b+fOAf#HDFom)86+KbB`@vpP|peoZ|oB!|-{mL`^$0c6K!Vj1qO(2b3U3r%gq39n*c0=R5_F_K+d#)N6abuAN zlKv>Cr%9cYWxQqb0ZTk)4PLJ}j$cv_){kTph_SN@3bF=-_79>Z zCdkSz2xCQ}bz_6#dvajCoeEAFH2a#{Bn;+NcM=BUMRI1OwNgrX^-mccKW$`ss>4Kl z1542Bz49(AT;4Z~>}H4aO#iw3!b#$_+G~BdbujHdwO&ZHthMZe9kUL(VQ5?ks1QcH zFBXp#AGpMxUCNryR{=v{WZPam#_-;NxW{O!KVLX&Dd8eJIEIIAn!dt0pd7&IYKyy* zpRc)_tFKd(lbf%rg|DwuWOgRr*FNT?jEv_=Gjc5+Opl%S$9IeHI>Eq1>xO0q1$#y~ zF;ZG7__AgSNS2T-n*W@@s`1LJmN zV8tFfZo;D!29pKJU>B0><5rd2@6%T0~XQOzdp9jt~DOU$tN_fogC(zHqO|3NOoBeuRE+Pbwoww_)rrICwE=pg2DG{afmpjOwx;;u3Q zd)!)P90K?dR4#?U2?31#0gmwS?$o?%=-qphFC0Se?K0ToSeSf+T_~!x1N4ix*WJ8QQpVu;m<-3a{AM`l zBiCZ;?{9mBM;>v|tyqx$j6K5H)_lz7k61u$X>P}Bz!EU?HvPpyn(huvCo2;A)zk8L z35}L{m$2gYw6OMv^#j?S@ol-yxx7yECoqWUS}`O17JHPpr{$O}OchhYigRu3TD0-@ zx(6X{72f-Ok`84%z2djjI@+2MtYe)lRbc&%%fxt^XZ11I;o$*NK*PTID^^W(iLDNCnnL- zWwEr_urwM}6(0roxmfY=FD3tLPWhb8KodUNjv{}2HlGfJf+IW?Yu+E(+kx5F)e`zS z{Y={zutpyJO~>u}b><74&N#|NUr+el_nCQzJ~Ya7g$XP!kKRgU?fG2x`Kda+<2q^- z1uP%v_ek~5y2QWOMp03v9o`A-(1);$)#m=PNRMxt4ulWK4ryc(*6 zLUXvdf0GsbJfn7ym@Q}vib$x>r=?Wo1I36PYPwJ)Rm67HW49zVC@t+qxlxl}_e4jf zT0`Ix&|2MiidyNgY07GAGUSQebAbFB$+}w98d|f5;iq4|yU;_+KiE&rIjYud%s!T2 zdatQ6tDa!!%?vi$O}bKMd`yMY5CbfCDW(&BuKL9i#uoWdKVvts#ns|h{vyP;W+FMb zTR-W`G7I8pUbje&0AbMVZr>#8A(*1WJ9Oht^<4f%x{rDP^eSF*_QIGty4_#yYpn#U zkh(3bb!X~K>h^@~p8Yks5h>UCVzvnDad~_>$k^s}7va>}%G>?555DPEY^ z$&n6D*-X*5?9Ld9S4_;*R)*LIv~!4yG&xZBHCG1|)yy*l0*xztldEI-O_xR+_{J`d z6?k%z_99ID>*^;HLptiGi4Eqtgpg+QEEHS{Gs-T`jZ7IAh)LPct8K)W4CWT)MMWH{ z5s2kPVaS{kP?S60%XeHnzgV{HYGP21sZwHQ4#I^ET>Bow<-$K;sMwKxGdlmOOpRnM z@p9RX@9~*+x`QXi66R>n{x3_qCz1rxqGF(`It-JR{#jIv+;1uP3>2MDY$;2r z1C2wAWy>BG8tJrhO336vxJ2n;MgE+ekh>`{H#-qul6>ZVhEpk#ubGqoh(5yE*?83Y z_h<|9YtF{FwP?ewwMY2)RoMD4h1=?n`Gy@iw9#6$h$^QQPq67NeL~_pGX{eNUH4_Z zk^zj&Ul(*w;tl&J3JgpGYKbAU1;gAc(v}IV(08h<3ZSm`Hz1V_dDq?qDw9|tOMFc- zf~N8P4)9byIQTru4(oj7!}P0h+W?TtnoG#AWhHLM=~Y4}cq;qPbl0Bn$~>j@sS8k- z2H9z5Z+OhvY*?IdUocokQwI@LgE!q5O^=x$cV94CM9{$HLm|dTaITi`S{Lcso3bMU z05LNj+7Tab3wNz4bU7`6%a%^uuXcbd-fI8b4&d}ME~polAg;fr*SR)w&Drp7^@|6b zY}na!;VL0w&AIkaO$_j6zX*pE^wORx!E2rUbo(9qW9*g$L}&8aZIdpPClY*U#|7LJ z@bhd#J>YO`*|XE+wk9LG(+=J~T81d&_?p7@n-3uI^d`$4x{bopk9DL0a@5AUZr8=a z`r3)9cVttnXV;_$c(uP;Y<9gmWTSrxcqj;}SV}T7{X=3rY?VJ`JuPM%NPdCx|N1o5 zi^3M;cSK5!xxYP?#`fPr^grirChV}3$O}I&grpMr!Zn^0hL{AjnFRqn;*{uZ;KjD! z^R0JUiWOo{q=ew)ZtILnH(ZEzDsSHqIJdAXc6UQeL`2H|g+G$G(?a~Kz{0{^cxC`* z{5M3@6+;^f!V9t@AFdqIqVTh7BHe? z*4aAqkRXuH$Ta(E9eQ)9I->%ZXg3Tc69xK6*Wd(1&6BT}WJ_2JXq=oNE&>ieD|)+Q zK^XW?E$^RQc`110O$g77eSK(FZKQe%_}2S1NCz~_j0!Xz25Yji)hk7;1aw+qM|eCO z(xkJ5BzZAUZCYA#W|&8MK}@lKiN3BM2CpmZ)%2$6Xq>1y^~A#^ zbwT5rQH9lTK$!CCCC%igc1`D#x=4&-0iX6m4Ip$iOb&fWh)G(#FC;@jco&{gN~KE? z$&zm4Oi^mbREwgWz$)eQNvuh_)`xMrFu7w^E?`KTKC84sG-4NlArWwyl1(2$n2OO1 zt(!oX2ziVW%KVQGd?}>^6&(bYgfBoUc;UKFtTI|H&XNiKCL|ZVQdMCk?DO&`#W(ke zSg*u&8WBw|p3kyVZT0=L{2q_-gs{_h&)XZ51$P%Lxl*``K7^&=b9Zo=Ck$X%X2Q+# zl`oBy#-7Ze^&0xo*p>B--dYVS)RP$As@}$170MhxP@Oz~z8%$)Y%_HL3Y+h|+i>Fo zA8wcvg3WB1NxP8Od@GJKeR3fKx+s?SH!tIGP$6eqSpe~B zFn6i1O??=$&qll`I}kjh_*s41&K$XS_E0F9MdRSf9QHLbwo%U0Ts*MZec)MXDm{ZPrEuS-N zv=k731r-hMRva1~*iNW+)g3G~ZS_~Wng?jy20GL-AEN94$*bGK(#SgW*7sA|KnG_hcRvF@$3og#o^5krkHVDc zq>NjiJV zztS?0s5kE;&vffG?VfY2&8D`(IM>j2vs~|hi5lLj8nUkya-LOqohBS|C}ZLph7FTw z_qUTP7BS?H?hus~RC(Yo`1*z?WiF)&X@_e6OQ?b452U?myPIE^)!TEaAY@IKqAoQZ1~Gwo(=JOQ;s@fW@}ANhWf(Wd&7Y9_W0 z*2gl#lyXqkc`y;ciYUi-qZ^`q=r|&qAn(#WpQ~?AnAn63z_U2o6))x*FQOb4&fQ3m z>>PSfUDDc!jLARcQzotwG&PLfEFk=&lb+^;`xT>_Y!K+4qrne z_z~LHvh%BL)#Q&(8aYNn8nz?_I}B3*mmBwO(d+74ZqYj$8D(6g9DegkN)@n!jW$Fw znR`=s4JlVLuLpRu%Fm+#ar?rUWy$wkZTpY&-|zf~<6HkIvjLcMQ)Q-8knq=AUk-HH z0>HP(vFFxk(=C2AkNCsReo}h`s11w-5BZEXeZjeSN*j(traBEuwXu=kpD|H)(ZVr0 zJ~`9R;xl)tCZ~rSnahAhw%j(g7y8j`3JM>A{+U~6(1PA$M&_w>Gmv5X{*3UlHuS6b zLyZO?W+z${=1O9K%KwZxJWg8^P4SC(jdq#b(FaEg@Pm!c)RHMCjD`>)jb2o%3I;0D zdQ9hLSg#KmWU)%1a*8Ac;E3EYW#3+|e6{|vn7Yu`qV|qvmWuUC^iPN_t-5}9HV-9i6Cm1q zvqlP_xi*b{!Q@@2n(J#dici@vn_Tw_nQAtNpv=CF(l5HpbQwb9)K%=L0B^IkcB>k( zNbFQM0?rSn|6U6b{H|R-dh}YKGuL-QPsvZ;Il$5X<7T6N85a`zq=@<-0tR%wA-@UG z$42m~C0>&%^aV~1QT6MB9GlhdpWIcV&m9cNT956KIQZrRhrqe{K$7J5&~zYIX!cBy z_pX8jT`n=<0qMiBUuQphY&7TAXK^*p4~QoY2y=_sFPEO8>nChz(v8#LG%k=? z@k8e13p?|Qp}0u1%(!3k=5a6LcWPKv%X&KBF%5D{)XK^iHs*U=|Gej{I-lxbp89#~ zf011Gm_MuM8KkbG`A0#HUPCp4UEl{QhK9!`cxGhe(4Y zhfLfKg$*84t=BVq{80s+N7?TkD|=kRTDhtWT#S0U%?#lG8WpA=5a`_*S7ZuNs5}Ic z#wyG#3nVB*Cb^jNayp^_MV8IP^0U!6ei?L(jX5`q5sR1R*W>wFa3W9n7XQ(ff=J__ zkQDBdLgljZQPjgQ#2j2I6HsuBZ~wmfHN%6aHEUY}68AKWc^4^kC~%V+khdP+{B(0_ zir-S(Z=wzdthKgV+%_!*4-S@Od-NoKtym!C6NN4lask!RHVF99M3=4!t1jPEEjph} zCJzchXLB_hf{K)nmm$#aS$OmhB1ek)vtbyDO(qn8<-q)`?jHloObn2UD%?Q2%u6;) z5Rtj7#b%eJctOh%6z;3j2bO1>j44-G*_BuD3TC)*NzUqae_>n-7g#Y;Cws>o-(7m$ zY;OsC?Hd{u>T4cM1JQ#Q>Tf~)#z}@tz;EW6qXJhFI2V2;!>fGj8Ro< zTofJJHmqce!!q)LG3TQfeQ)|`0-`#SsBxja zZXqkvY7}KJqH2W4HibdwApM5NBmSt0qm9UcI`&?DUVsVyIBHXHtVR%Iww!l3>=r;B z^~VV^J-3$+9V;wCX(L_zC{qEna-0m0gHm|{cXV|(f<#d`g(Nz&0wZ-|VlqX`#lhR{ zZ;SE>@vQL6f7bQ9u|UrfH58!{r2<~20XUohs=ch`0tnDNw2361t?%kss83w6lvQdp z(#pznA@xhC61Xv+ARUhW+7e5sU=ck9eo62TGsXUOr-6S~ik)gDB;R#Aj zwzw^sEO84Rr}4<7XA}`4Rpi4k^+U-)qG(Ja*|`Ak|4`tJc1|G%KqAxF*j;04#V=K6 zB2oD*ZYHAwBDU`1Y?emULn2)Rs3U%W<4uqd2vCYJxvYM-IDXO($xjde!$c+pD+DweAw-MzBY$~iIupNNA>n25@7chAgB??MG$ij%;^bO8Hcx}0{Z zx}$Bjns&fKTBcG-%hXl#%ma7b<Xx5Pe(r*{s!0`j z+wq;i?-AqF&A#xPpsl>{^r-eH@cn#ge$K zrE$$Y#UbA|c@KGU5c23I@{A?|_8%6oyiM6|kkv2|F1xlt%1YySBSb4ZJJx#QozyY8 za~9do3P1c+RSc%Ok_iK3sH*^REg}F$>3?k(+^16pVhW7+Lv2~cJ8Ls2r>v~^w=<^L zqlMY*xZ9kV{uh6~$1Psg7j}fwxb6YFV?El|6`3ew=(bMgGahTOk_O!3>qqd4+6RWB zRpoDauJl@egff_0rD^KzBAS@i9L>bCTi2-Raucr4dxX*)tNgh6&Y7O?l8>*ULODMut@Tf+plEcw)7u9SEV#=5d zpmIzWgN9AsJuO;yJwhR&`3J~d(%&yFIxUZL(FkuV8y)>Q)TyeD)*D7b3v5=3Y;Ju$ z<;^t~a|WMUq4A?N3(H_pNV%d_LTxBnWy1;znpZ+?l|^zV>YSR!e;t#$-bWw?I6`{6 z2LKwxEBl9R=>=?tk_F2bP9+Sdp0N4Dm?6iEu(`G2N&YCtI`M^YW+)wPj~ve}rwoBR zDg1VCoZ4Bc&JWQ9FJ8K#Ha96-nDGO>K{KSCUN&MJkN? z4M$v13?dp@J-=22fT7IK75%U}eV3o>qP9I8_;uis{mL+YuHxVyXRm`=7pv=n_BAoIfJq|oNpm~pN&aLRi##%x9c zX6#Jeyp?@?E4aY;Rv>Wut=n%Q{Zm7oUi5$Ww$RnXB6;vMMacW~TcW)k9HI1k0i)Li z?1e{VJG|n6d*x8~A6}rJWk??eV-W9%IpF_R#56`PIZw}l_$;C~@fT5NCgQsoO7|S< zcs0BBu2V{`LzHoFx7hQB3?y6l)^>*%(jvyYx{7Ua&&d z6d`}Cwoo^t;=vw`-fBKH21frIswbn_K3GHd3K8E#DJl)P8EA($QPaFR9dYl#a)DGv z0#A!po<}GowEA(3kY;~xGyyhjZ(rZ4#Qa z@Ly-c+(_{65=)ke9#(x=0{b!QmDNfAGdoTsM?eE(hN*5+My#PxLyJ zc#N&y0GnIWPm4B#p^z|lkD&g0LxslW#k{SGnwez_-sYro!H$Y2wbJ0|aulnq*3tq8 zW`EB@QjTq_uU%Uf5Q z+v?(JuC^dpv>NxOS5f}ire*5iB?NugvA0DHKP-K5s(5p;3&UTgVC}TByZ*u2^StNY zQ0sYXJ*-vtXAf!!L7PCT@Eu)l-cH_&{S6KxG@rC30|WcG>LJ5;pY&Yq>G!~oL@Gr;4+FiDx?CH`O-wL@sw<0y7A2EWTmc?*E2j(hjem$pu4J3?3wzn0HAVA znFEYEFKk8x4J%pFcN7v1H_m%(c19XbWU_)o2;sEBUeA(W*+^0$vIu7gmU-;H8+a%? zZxvS=z)x$ZHBccb&XO9_ie%uJ1+U`Nh8+hfmNUI=>%fzuRfJ0kNC-hohjNm8AK^R3 zv(Gu|j+ilZx-SrY_07lr_yp>4y$}9u7j8z|tV=plUH!g!;8?jZ*(Ze{EaUpB440`(1wx-MYE1 zJ-Z)zZOfO#xgXPTGj?q~!?NX?KC%7Pc5tfIJjP?WNE)(DWwZEW&ClT@b%J~wUPx4- zZCxVBqJ|YIE&Gi9djc4>ShH^>;pmlKLq&-0 z%?07{yB3Vm6MQ5DogT0>2-xq7P~U|fe|3N92fEW(IcQF>RAJO+U06%*`mXn3uDZPn z5*qIkzm{)u3LUe})Nyfbhw#B;a|{i+wJ62Buhm?^8)G)ZqZvB}U9A17)4y(|lmm;u zb9;ZR6K+je3XuER25?K~|?b|B0mr`EM z11!+J%+#oFg(+j*n(?E8PZ>2__4<@PwEcgxA2M#q-e%oKZ1xcya&8KPkMKVqT>iby z>WeL@M)2OajcG6*GeJ`CIj5}37>K4ID!B9KJvi{&Sk#&?eWISB>8oC3Cgl2%SW+>` zj4vR)KEc50+KvW63N|RQB$q1D4Js~GPOKE}!x#iMjGGW$iOqz)?v9*@S!Gu-Gi&I2 zx>_~7{wGHH?@M8i|7UdS{(qCHAusr?c-K(pAB$;c?_st$u0->)FEe|&C)mpkN#xMz zng2YPdaM-hgLuh*=K{d)c6(3RGn%*e=$?yQRNg`Ns0!VK&~*o>djuhPiSxb>u5Rfr_K zQ6boi<=b`2LYcZyC-iv~c6Adjic{JP54#A7M{!M!uDI(92MMn%><|e4=>9<%jZX#v zpL+iw+-%Ny6KQUawEZSh>?YEmn@IYY{67RDN~+QPTief!xtsx6TaOHqiJ_-2y6vT7 zD2NxfFoxggA8+wMNt;~RDM}))R#3f1WX~iAxJP=n+N#XnWKh7);XsFS(&*n>$qS@! zkG+%iJ20cHALHka+KG{U@!mN9s2T4!H;1X7%5rbj@nJLEXn{sF-Bp%6bM~`wCUhZO z&<#0pdCx}Dliu{EH{JBhA5Eu$$SRz@(LP~)LVLeMfL9ydCqNqKIEc^lge6+@j!<4M z9IQ=Ae~mdRqym-h%~*Y3`n9+;rqU%d*y+TpC?6AnCtIzuytLsxXxVR%6hlJ7fbHLh zW_Gtz2s|-mKfgEj9}XtAf7A{lBD}L%N^CZj%~5GzNQyZhYgEG@4q(Ys0!*eDE_uwW zWyHeNtnH{x#o8&8QN7oJ@bQ?d>k+Vn*GbENZMc(CJ^x=;t(^>{>tGO0pJHZWE~EC8QzZ0iaGDB03NQaw?Z^-W1SLd3ET>)~bLM3lpQA!}V9A*GWx`1IuO4+nOr zC7CU$Z`AuCZqtD;hQGG8%sK5#HBCCwKC@#K`PzBjv?H@Ke?VMI19eSrrWE(!S>`$9 z<~Y^uL!0`cSWW!uVM7d{l-g$;!sMRYKjM_ixDj>7SKVFId&(iAbN@8JE!i^y`%}+lpY82Q#<@n~E(IHi48q1C z*E95TQy&VlfkxO2k@kMk6=q33N)x4mw%q2NSg3ya{-_JkJ*0-b^}zw}v{t+>?E7_Z>K@N>c}`mpWJ#>tI!*gVhrqjHBK) zLUV%JtAo`l9gGu%^8`cX5)zo8Kd8@9z@>X5_<*ofp>9$u| zhl08+7Q$LXR~0|7xKby`L3t5g)S}lK22d~py&=FDV6X?H&>IGfLtnwU_wHjrDV(}- zEUjUjO(5`|Uif2f-F5*Bjz^qVumxKf_6t97^Ln1H>C=NxyqA7t`oR5Coid}PBdtY0 zS~jpqS_MM^(F%Q@#yd7*Oy=d*BG)X(1;qz79qBiRDnmzKjJENri1*qX5Jp}Cx`1ae zn@Oy7d0NDyyWbB8c8N1ci@)09$y!!9Afy0+{N?rp6+3KFidkDe6IK zB@Sx`Pv|@iVCoK2@9pJ+o)|%l5GSJwG{jfZ>DPa971j%)>z}UuP$PGgQe6c3cQB!p z`*L&3XkPL#4YQ!b{0kz6Yyr4EY-Q?q=C=2C{FF=_(ZSL1t1AULy35H0wqL@P=C~71 zmeb`mmgvs-!(sg*j^9nwZnd(ED*fh|fCo@#E@^QRf0{1@_5&1;$XnMb@r zGrEChC|BpZCR10sQ_)z^ZO75D#3m{-NG77(x?kO?wu47nD^i{XcSJ&{n$ zzA)E)_Jxb^u}Gh};Wbe{%Z^1yf;>j5YP=5b+E>vnwmVw~!X#Hs$w~L;P z`u>%X7Vm@o%Sk`bWS6b$URB|Ny&nV59W(oPoAwqu;g2y-Tr&y7BIQ z^S!ueR^8AzPW!Hv(5266bQrLo$_zs(|1NKU2aHm`Y(hghABcsF#TC1gaj$KAr|NPx zlI%NMVA$?+mCusH_V;{}JLhXPd11=PnO*#;6BE+6HKA(zrm^hx_v&hfPC;y3{{NTD zkhI&Ud~z-I-h5@PJqd(xv^Oaw;t>X^r~Ug;z~QO$%S1e#{VDjlqZ}pqSNOu7`D{v| z*<$2KT%gVBGXARsJp8`k=+)Wy-}MttNF+(RjLc*)$l3=%zX()xA^+S4%8MC@WL(}m zkG|W2TYWUsTUN2Qr@13|z|ooP^pvQ=+olN^IUCO-Q@vn@dPUWH-SF|A5n$nDwE{vG z&1H_98=XAYIdeq2eBypv;cl4QteCnQox7$HgnSUAZ{=Syne(P!{K3*QA8q(yDXn&RN}5&h3b|`eBgnlT|87RSIR#J|$9;GL-M@ zZOkJLrJhepq$Fi1^Xk4(_I^u=l%ymjDM?96Qj(ICqzvVak<{x>DU=hb_ckR`l9H69 zBqb?HNlH?Zl9Z$*B`HZsN>Y-Nl%ymjDZ9$sW70&{!E+7lT?`OLccZ|(-6xFH`9JX5 z;SJ1Kkh3{BQl>|g+F(k>W&%d+E-njP3^jpg9LnwD)#I)EUB{WujLFWTrZfEqe^_0$ z)F#;=AYQ%0pj<2T45e5l8$7y73 z6V^x@d`*CH{_YWw{&6Xbb7tKo07<(CNp@MKw6!FQfid&NIn@fMZa8HPhX*ftMB(Sj zM2yba;#~AFG4s!q2_?nx1D;;-y!fg)dx&Y(r?_CT(733R_rnb&B|2kTIyklIK@Ei< zkqgGtbB=UyOxDE6Xi*SwdYCW@Pcw$wcfYWds^?c)Xxjd#_cDOIYKW4P9>7PT z;(I?LI3^OwedvoX-YGWB)Wul~?SyJQT0+S?zfbMdZ1w;A;v5Ja7#IA4(yh@F)oLT; ze0^zR>EdSFlAXY~T^2bI?qPTQW%l&!=FR! z-~5iEn;D?lS1b~EWI##pn#X1Ym7)<@v@^iYp_qxbjs&kKFW0ML0r7XQG(kH_--08t zo?n&phkTD*X%IqayC3Ye9Q>FzBi1?s?5$ATW=YN z=ft+{>LmrTs2iv<^`%S~ws+rT$z~)GkYv7G0%yE}T|e)Lx)InX2QlOI?qqS*F>8Im zG2ktdI^96MJe!~pfVTs|Nqg(dDbkqwQ4E~QMWOYhSdeVrr}JfErw*9?folnv8kkiu zHT(uNI+^>?Yy@Q-t6rI7{V+LhW~t3_g49qE3dm^WPkv@h+VmK5u;%P6sr8)G`=6e| zJ0GWnpN6c0tj}RLrZno>U0IwZe^>-lu|si48UpzgR@!|b;Ro{p_CB&09%^74*SLl9 z_oLn2-&ptQVyHOY+^nOH$V0|e_!zkL3KusuFxU}#kiVPI9TsE1NOIichY`?`CU|*n>pclm0wgL z&2ZI~|CC_FDDRsz#UCHgE?UPLBeW0W0(ozgFRbq;?=5IE*2KDrmK8;lPUbVEcEH&~ z7QXK=Wpu<@W3&ADbLx^sYxD5c#ATerKn1?ySu<`>mS^B{bXNls{SCcn;CMU;Y)Ao1 z4UwFC5*SRJ)3GU352d_klduuoiZ%17u9)n^l@rp^@XE3dsL)l4E$xU)R~weBmmgey zvxJi9eaS{2-xni+l{ZG`k!GUiZC&xf3a6D`a{Iv5<>5gDf;zfy|raO=_P>r z&+JDZacra7#1AY5^{$ephpR4%F^2LFxkp>fKLDu@ET!HrT$eXCe-6$suUuL?N=Tsh zrJuT&%VqZ%x|ym?q~Bmu^6FB=Yks$wqW}~`-j}hlPc3k}ok0Ps=JR`aTxBCtBq@9r zQSDvX8-C@t#UUqgaTJx3AZS|fvSN-g-2hs#d_XVtw_4LhL@P}3-9$O}4-+XHY1 zWLaPvQy>j0K11k3ii`E!Gu=Cu2#M=Q*~T& zST6o0*5ek2+ajn?NyVwGuMx14!U6xl7R3``%4jnR3Z+k(k{=B{kT2n)`cz-rNhY-2z_J zxyqBXz&oVx&Ruyrz(#LK;d~7D85w}{O{35>zn4PYB2>xE%j~#3!kpWSiFNlM=jL>3 z-eAC<;u9yx$TZt-NFnDhp)gq!`|!iRQ}fqV#?mk1Bi(EB4_atK&dqk@nr{8KE&bcZ zXgPj|*u>5h=#ZquS{D-paR>hO;@9xhvjay%!OzBDB_9UAE5k-9ja2nYq?^ZK(tKC3uzD+PJuk;1lgiSL1&B&yYn@}(ozrHSKgW`A0c@Ta&1p*h+wcn}?I4VLlW3Eu( zcOx66j6rch_@HI0#D~CH+96=yYO#4S(Ml3agayi~@RKMl0#_cTEvR;ce)SxDPAJ|;Dla4ST0Qc)$4*G$fJ7h z={aN=D!PW1qrkhD)tO{DV9t382=Y8s$Qa!}vzbi*DsCqRV{CQxTP!qO#t3!i_-B7N zE1~gS*|Da2E5Aw+7VOMd4Hw8jM<-)tt~%_RpGH;X#Rcm}6U$yjhcEQ0)d@`ExSItE zN6_6#9HvxDFfu@8%v!v-adMED@Vg!s#d&Hw9u1Tjp!1mbHKKGhRVoldSzo^BAUH&y zPiypJZ!~rmWY_W8F7%1T#oBS#zG-BlfZDNSClvA+`ms5B6bCKrl%{9KF$hf6`*+X# za?U_qgXc)5G<94s*W1q6GpY2k+QJ_mp!OD-AAv3)wfHca-xI&}nW?(*!{nlvF_@ePy;GeO9+e;mG6V zh;$<)D4>^G0;`I%@k8sf<+l5p7YeMBnIPO1Ds9pweY!yMi#~$dXL59lcd{-Y^txnE zsM^IbtKHs*JXDW+e-}=NA|~=6(eD3j$BHU7p)(thF-e*(11+3DM_5vK zGJGK~BWkBnD>a^CC$#3j4kluoq}^Fk%^%nV3}gnD&fx*=M=`TkahyuBU<)Wh-N_bU z3~Fn=v%Le^a*n7kNr&wKxXz3To##rWC#Ok)%z3BSImk+aQo;a0pdKKMdq|KotVi{r zu`-I#Bo<0$!N;c(EgsdUyl^D%l!xYB`y&T_qN7uO#qS(iZi95#LcRWAZjRWBn@+0pBwG5VMMg-{8I=`%L#dJM(X@2bJ0ndO#)gn2xA{ zz^9m`N)ocG$jma%AqCM}s7~oRp4Jai_vAH+-2P?0=8ch>V=C$+)D(K+iRp+*sKy&( z@cnE6We&dYEg8ls8F6n+T|=*aKBFAxw9PRs984;tklFcP=7XmoR&>ZHRw{35tT;SY zm9h-|ADb5LHIbuFz#89K&DgHIe$YbN&gl6xAbmR zAg}={3O6G{$wR8`(N(7w9Ra_YgxWP3Wh>iz_@HVmeyk&FbR=RN&Jv&y0vaut5;dBM zhzl$kswS9Zsb{eD;p1Z!^fru{=Dxr0*BGcx8W)7_I!kgL~Gnj$tlB znU_W8=$tFeZb=hZm-B^*vK9Thi~O}4e!=1*o-a)jH7hBYOXiC1RBemTQ*#awb;fO6 zgXUfQ6oFNlSw-XkYs(73U!$5}TuHc$PNeWNxC`wMv9wIY^!SE?-1yAsA!uu zQdM6stvY^=HA88HO>F^jyvRIiK1v@lU{zLqGG6BQeWvJ;IvI(q3XrB}nMiUs0D7U` zcpOrieYNX#3khIRtT*^?WbOd=>WG5&j7N{N-QjK7%O8eYCBL)~B!Ot+b3lQ9wD4g0 z{dRyAHPZ!_=gMET4r&b* zO>-^CF=X`vl2TK7*wTa8_aQ#zc40k*8IrrT$Ss*JX-)$s`Jf@{Z-Ak97ellX%|n=Wf{ASU`->yWn3PE{sDvPXIvZMBm*GHC z|NXVkVnr>H5W$oPi7zi69M*X@tpl^0lZp0jV+#?!^dc{<)1wdrqKRKm%1K5FM_(m% zCVD_FBtopkEw0q194)0ktix0bNy0Sq9dTc79*j{(-|c$*37kX5}WwG2$mh*n4H#q9kOJq;a`yTrR$2dX0LN(w&N( zbh(6wsd7#af;9G$0kXv4ykh#iTOkxgI!rK{f|1vw!pUqfV#Q%Z=y+!JEiUYxMU=@% zek9KkOX<(>eHqWXb}|4O32Cku3`HG?HU*>H4{;ivg~{bom^tmjPu&k<4qd1fR(S->So-z2OWvjfhn-GwLBrN?`u>!cnP$(;0b;DmPlB!ZvzRg2Ca z99O1gH(0tw*p2mR8a=}%L*}pdM3@}_)%7KQD+goq>&hyck_rg=-vvwycBwyRf-ORU zre`b_8jI#{x+gwF=Ytl4U>7`5k}|Py)IIKSJmKXj5c^H7c{3$wqkA5f`RW~uVIo%i zYA;~2pZy+O_*6($GWGrZ>cJMdGTZJUqxq6`KBBp`M2`n&(j$sz$bLS&O-CL)H&~}G z?wVPQU-jq5tLQP-{#5#y&lD|j8}LP6(&Gnvz^;|bA695u3sgJelzWvk0qwtrB*Lk# zdXR!U>s7A!h!|W9U2mB~X27;yYGBD~GS*oh-Avq6WBWX-MKWDlyOnam)t`ls(o_@ShSmZ)BhE1+EEXMc8CsA4c z;YU`2ica78qwOD)rMe!s?64|Q42kbEQcnHc9a1lU8uU+b^$kruU|C}-Y>gpc%BH(y z-FWfIKqYOpXRT73r*1GhO*E=Rms?NiTYL0b(M_yfXK;$n1aqO)H#6-k+q~SPch%p`QZEsw z=FEi%k|xY1OPZHm)Cw3F4VI)RF{>oiv>QJ?%V2_d(zd%6RH0-WNI^o1&K`*zN30ue z0qGAo2v3Y28mpagn4t%kYNrZB5ZX!ebg);7&#!o^!&70=ROmGd;@Jt$Kh2?X8I#?j z;tY6tYsf#!(=X~UMcqD6Y)&3!HOimGGH^V*S6qqssnA;(fTOuWTE1kXE^n7lX8?he zcf*;Keyf23PhY;L{E3Kcm+KsOq2mf^^+}||-Nv9X-LEw)+LyReDF0SrR-)}=Wt(Cdfc4;+ zNcqDsr!+zIjt^PGR4HM?+@xss2#o(lsSTsdKuf|*74zPTufjFTsVUBYwt1wocMK>H zI5eae?yA-y+Q-B4;I+pplU{Fb)})UNX$SJ6kVS)nRUbQ8KJ_L0=A?WP%_C9qtXrH1n~jiC+UhJYpBEn0hCLbeV9@H{<)GYg+;w2 z*XR*1*A<|ad0j~?E$7W6XKP}K&zxGpSB^gvURYGQ!{Kolgv~7{dYgQvzT>1Wwikby zolF7LoIPmr(`SE2(+_k%A!83L9UwU)_fkJv=p!O3i##AQzK}M)ud`wAcTuaq7cTdP z@apIaMJ^GAFqRh&!gH8 zGGSaku)$p0^;Pi!GU{hiLCx>^=I99aRmLOI&J`vV!O??r%Jy^!A>P9TlrXW0*yN;g z5(SX)iDCd2@$LB|zOe{2QvNsjf!Yul{K)eCt3QQ<-=e=}!sQ{2Xl9w3?iylc&gi$6 zU1S5{WNJdeP~!XhNGqrnZ2*%Oj?}+d^jEC5xkLs~-+J+i*uX4Ky$Qs!n@E5g6-64) z74%743T(xaaMD`1e(#A?m9ez0G> z=Ey9;tVTQojOGEq^sSma7vt-aPIklYfq!K$ZVVEb5wXkZ zAm7@nl%pnb=QZkRVbyLsM1?v9Sla9h!XVXmPMGHq~*)Afio6k?2emrq&r4 zZG`w!gsAsrR9!18-k5X#kMdJd@_jLk44#?^WLn&2npblS9(-5!Ae9E`K>04q(PIXA zI>#F$*ASk*Fx9!bl;juiw&Er@7Qc($;EpbIhB3MdAn95^N+U+TopHjFcq))C0P)P_gpNup*gdhAHqnHLFjx+X~Ev}e@eM62sIP+ zPQ}vM8*-y=FD@?XR6H=cyIoev{ANLNeUXtrd(hJ#U50U~qKu$NxC)KOjH|n!hr5f; zsq0{ENMg@7x3&`I$;p~@Thrw{!R|Ch{QNj$84SL5A|z^LJDPW=ok~zqta7XLX?I)C z1b5(l#bBnsu(`Vq5R;J3a8>gLRVm$}y9Q&=^4jgZ9h13>-yWp722Tou zc?#hr^MUC0ytAQa$l_0m`Q^UvQMmPL_BP1$2ZYC5nUbo2y|NK@HV_-j*Y2N8 z*vPmXryDvBdZ?6wZfx5$N^g5FGkF zF&a{2w0CqGzxcMIq*>16U%jHw{WELSmGW_EZM;4j@JBkoEpOQmG;&YSF7#Rs;Zg4#m%p}arO?msfzwi=Sf7BwhEkkxf7QRI zuv%nwTn16I!Mu!k+ACv61nK;4FkbK~8jl8MV_hP)^~GmTgbk+qvv;--h=VuQ{{7{7qdJ+ORz5%XFx9`D z!fJ8i&z?ns=MJBxhZgS|8r0CFa~8fKT_jsi>rq+=<2@8W2&{+;+vM2~@74qp#jFz1 zTZ>$hp6f!?7BOX9O_`_=9)4aOt8h_diFvG4br)w9(h|o?^+cT0)}0VO2X5t(0A*xA z4k?unf^^hVVb$rqmd=Oy$B24n`QuiO$!mKagRvW`3M5Ig)}ubpLm0H2@J}}rbd#Hk z5+iHXtGFX*Ea%S)k&?5-`k5*7v-->ga~+i52Co~u-v?bt_NdPc+;SZ+EV*}lJg#gW zD_&~HDw#1MCQ*De^mZ<$$z8Rc>g+v;KUpa_bdS8cfi~kNcl&U%RxPdFo_yW!;4Hwr zP(PtpD=5_}Z2ayJP=BOE;B37h>K6{=omIy+m8#@IvhL;)?@T29sE~_~pZ=;nEZ@^% zP%)NdWB4k&%!hN9*SEb18>7+)@=(r{bTq2ZB6Sy|Bo)G$DZqdJYSmw}l}|tj;V@>b zOgTj?(zvO5a_lM&fr$Jpu9R9DRS_Wk-ed)&DZVjVbWS=&9t!MEWrZ(uZ;nL&9BdfV z-i@#wn15ngO1QS0pU@Y339DtbfbFWN*cx*iMt0V#8)R0SKX{HNQKBp=P+0IjkDOxB z`{lK?Iw;e1sNv#cz57b9rw133u-!UgMn%jl{U-zaZl_=2?WYSZua;AS1{l{O;m|R& zpR%N8La>(*3rF1WQ%UWC&5TVq2S+K}uvvZx(E|IpJ)df}!Kd|PHk6YnVoH60tT1-urrHc^F7I z@uui`mKWSmORiDCX;hR}^O0D-jvoKqB4%qPamAG0{ON=GaQDs|^5A*Ukl>V$Z+;SH z3Jh$LknXWL1|G5F6@(k~T14&YEp}9FO`f2SxOApc2>`_3FITHdAb7J{8-9&wQwwMq zA2m2Z8*VeHnrAPcM+@_d8g$=Im>@DMaMzp=ob$gwjdJ4so>nLjXW$PWXMz})pJ9wX zViyOG=-q7lb4E&Faz?pSRZ6lG50K1$U@S^UW(YOrP$6JwM;rbYT=AfuTmC8Ub)t)J zubVUZlu|pf&CP)vrk|^T{xSWa$Dq)48_KKQpW05_j43M&YpJwt{T;7<5heo%LFNeV z1EC(2^cD-xV6(^|M~P)WFyRDq%;uJia6F+SjUX&Wh%SRP2mx(4CS!#@X*)^i=6mYX zoLf0~tHKQLQP0Oa3DvbgDI_b{0ZZ5VNZg$+ldA0qhNJaiYRn+DcsGx&B_Vp9LSXgd?ya(kGx|!Mh5B#8$_iD0E+W2S)Aa7;n>HV{*uz;d-Te0Q2MRiRc%!U#cf|c`p&xez{8HQXn zPDLj?_R`*>l?5gwWruddHM%W?^P3yck!9XT0#L^1Y^T-+zN7s4xHOyWz1*=F`SXGvmEXg{b$-HoO+iDpsAAXo@uW9B+9?A!}G( z`n^m^gZmB|+%6YsvqhzpGSN8Dv?2QqSu$DLK2@*y-K|< zif-AG6|tltPZ6ycwQ7hdVO74@>Uxcs%`^K#ABdl|Nq$AU!@T5dR`i3N3k`9Z?ON;1 zuO)g;Ip1_34j~5?iD>&@afFWIGB6T7E2YmyL6;np_4ADnaGmle$c|swWu^g+EHQ}_ zSm2zpja%q1d(Qz4sV3$4@^Ks{m~kY$G?wt0zFU82JENf-3PgN_CrV>j&($RDks~nE z0tJoHU)Xu)1hpP2qi=oBBanziPj)^wCd_a1!_qPz8>#1=vhW9&0$}#L#*|L8P$wXr zLh3vllc#Qg8)bNN7NLQTL{@4zN?E2vX>_8J+y~_B)jUz@PE}>*6|J4K0D6mKS%nGj zVZ1P3gII$4YiL=Nqu!Cr6By6g`fi1A`jm4#%iA<5R0XOgw64*62Z4?x#wMxPp}wGj z#TS@0@9}v^TM$RNa3@K?s~8kO>RuCzl@A~_5S;GY2$jd-lG@HW>P_icskIw^N@&nd zrIt$soq(iCDlO7{R3D=1A1;efo;gO9oEj;d zOJ6eD3>EqCa`~`h@3SamvG@_UQ>opG(4?k5=_pmQN=NCxfrB1{8X(H3IpHY~tr1Ws z`r&>l&}Z6rusebueGs#30W=e*EE0h0HedTy@Qofj5O2;E;b=pdt{tg``Fsx)oagekeH5NdrXzjw zOOb`vQuy{w%DCqPEHg@#SeLJiri3X4XCI5@O!9M8L}MB zPrlT*%A!tPU-YSe_{yvwaXw)~D*bXmR-KW|suH!4ISGUkt9uFGdpfE)Fk`jzl+e0yJTEPH-K~L8&P_+3_RY(!p}73)MzN0mh?{&8kXlAiEKrZ zzUg$X&U!m~|LQC>wTX&C=`ox8VXA3kt-elfrc)Yg{scw90abBs+3@nx%h<`){!wN0 zYA|~vgQ{a@6iI7Xs{ukWBEpkmF@oR7sY8A{C~6T|EFjciY7{^+BNcz9e0dSHB4H{> zCKS`4^D4s74w{ALwPw8hA*=d9Y`NQ+E|;8g30a*ejk~(qkMmR*;mkbL`mrWCCE3a> z+Dec{|>ihiXWa>rX?KJ0;0>2A%5Sx0yv@R=BaSgmZ|V7n-%BS z^>`&QE)80PWzvEjzd4^5rrd_>?XN8XEZ0@;V=T#WA0U3=7{w(KLZc5!5GH9MP-t;e ze!Z3k;TU0#rfQGZpOYFABN~OdT^tasc-ZeJ>~KCQ0cv>f#wdPC9O53nce*|ncc-?H z^nlX_214vC+<-jpX6vZ};+EY|OD>-<( zM0mQ7c);^0*-=+mT*d8#G@Z${Z z(x0jf7;amF-RLig3e4ysd%$NnpU&Hi2Xijs{LZZs$j1oOME3A!(~N?-S-(YYJR2Z( z&Yqe&W|$;VQrX<6XsUmyo8s&E^d5vj&auX*6cwIhsdhZ=ww9sf2(taMvT_#Oo#!pH zDr=qrvpA-p(@B8K3Ww31R<82aXnq{5#J#`;yv=6`IVOlvzsYqD`nvg<`A&OX@AXE$ zCqQ9!Jzt|{mF66RICt>q>IDGSyIpH{10E(mLSAZif}RFOM8Qhi{kx{5r2r|aclR2I zAWTy-clH>HBw}LcR^zIf9xi+Up;W3$u52EoQpScZeX;7-*Sd)<1`tF5VJsOFNJKxP zL@1HHu#vKpw3QZjVVp!hV=5I($k-laAVIAVMFM3aMWaah9A+fCtVgp+ zr^yy1{l7%vIlj2s>3?xwoE(|B%S~Ve00R{KO~(cpCXkW#OHD(4X@QlA1sE2dLFt%I zuhYQ7?Nid}OCLMMSgNnr&vS0;T@{)NfqO5;c(|-AibKu$)=`XMC-i)!f&w znZ>_F0BX~9VY6%H-t?vcyl@2f?}Zmb!U!1L0mpWN4*O40^orLhlEsW}W!j}n6)YM! zI(tn40r+*nkU;(^5h^qXA{d}=x(lXk|`sc z{3WVsdf&0Jvgib4cvGfeu(J8qUy{EeWrfPt^9`y@EjIrpmoVinz7|R^yySBY+_C*{ zW&grU``nQT;(wUeFt!d8^;y69IsQM;=&`({kfxcd#BUy@Qp}1bZ5&!-#2LsyQ!snT zfZ{8qE07<_5*H@jMtJM(r8o*$kBgOZXotJIjY<`irnnanH|?I^_eY}bc=wh6J0M|kF#ifmq=*jTZO2D23! zTJ27^@0ON-xi(^9XmRo{##$L%nArFZo;A?`|FEE_fQS%TJ~1IF0SOTqesBQ)9yqeU ziR2%;?_NI1{finpT>Do4{*N2Pe^UHEu?CVqVyS0lWc81Pu#YAEZ+iJFZw$GR)DN21 zb7uY#`l7m@JNxxN3~Bkk_oevX=!fAu5&V;`37+HM$v%|?)Ahy=Z~1f8C_<9VD>qG> zRg_C`^teQCfR^qdT7wf@?TQE@Z-^|kI^G%^? zUpbJa4KFlkL_`RbRvJxX5vn$uabiYx|IT(pf3s9!Wj-eAfAYAn*H1yhy_P|zIoIz{ zD>K8fS(_dGhgrT&OU(1XTZ*J$7w4;um8`9Ht65G{B&LK)n%mm)avU(FL8`afr+E ze;5=nKHmKwY!LiU-nPA3UEyToVE+jf@tp*B;i&)O@!J=_@5Etzh_d$mliq*J2V<~q z%I280?#v9%lN&2@e=BUA^Z&hEvf!WoYonZi{RRgVeAD>~|5a*E9*cw{(+u|dOyn9} zTc=@EjfI!vCU*c>1wGguXOJTk3vbgUF?;xf)s~2Z?dfx3i(hQ28C+K7;1=1zF8?k8 zvNTjcR3}`YHZ!3Ms(jL}NBd?c!5Dk2xgB(H&aHdG6{ae?I+`|F0l5?&BgUV^KwddC z;LJJZ#PDAepAU*?{hCE!Tv{TA{RGE+iH4#6?e`-`3s%a^*cY^yraq5riueVjhfA+$ zUR!T%mhoX0NS#5yf6B+>r*9M9d~6Ux2UtP9bZZaOYyxcnj=rE7&=C10rq@ZUYf+Hk zCa~QSI7ZQ^4UTGoiQdLz3S83nx)C;_%a-H6v@Je&vA%$75S8L7X9Rvv?uD?k4+L_M zq4N_}RuWDKohN}9hw6F)52Ckoz;h;ebWF~sZwO#$Kra|eJccteRos3!3p75C!&|Sl zEy@QKnfK?CGuU1#qqmpW)BQYK@00008p7V<~KDKKB^=~4t_RhU!Z6=0`2GeFE zL(v)K;@WVB+KC#iWh4F%kREELds@?iz@6Bhus&%miu5A0^dd~}Suf}E#EP!(;oe*> zp$X>{eyyja{bqR*Xh@)cI!cCaXZ`f?siu}g!xD(g^G>(-WBpD`306A%`9)>>NMOm^ z0z--MepcsZF*&1##zV~v{iITYW0>jtoo}|-u)eGv5h*pT+F)|3v*WQ4Ayr;yuE@*< zYTmY@;LWbV=<>F5Qa}~Y2Vg3u zq*02NOw!5UsB>J3{3q5;20qIysspG9V?7@Pesrq4A44lcF9nUIv}W)o6*${t@bhW{ zN6bdiyx_SQVH+xI5|=bLHHW!i2}QnC$g-AyG5|8*+`92JCPqfamdx?9)y=Q>g|yHW7MYK7=j_9%5aPkI({EhbL&oN264M>IlD>5jv=TIy)_xs=G+;=W#DpWs@zI z7eG8l%8!)7_rnMmV_Y^VNB~0ZrCktRv7W zuSI+1BgBzAOQWisll|GLa>%YKlAtLcf46((DcRVranNK0pmH^P+P7N5B8Updx4qO^ zkM5A6$9gbg8c=%97w%eUMm_(aN3FZ!(&@omVlBt$C`UA1KUO^2!BaIY^~vv!qV)sk zIb(-+mMH-XsO8D_%y++3bYFLiJ&a6F#1IEIFvP+1Um$ptQwf(umIk9pO$B|EEEZAq zDu*cBM@ zb6R2vK*sal|LN-=QI7&_jG#sN(WNNABtg`gng{~knWP_VarPiF@-G3dU~P`cA> zS5)uhL}Mw{#4|@zdz2RO?2imKQS0L1-fadtN1Jb_NiUV_{so+gjlud5IQ?OOGc0cF zBbqE@$~30DLB+afzENRfJuIWSPe2k+>uU{Z1**B-*r_?Ex{gJdNvRYUrmw)*(o(V; z-Ll^S=$^^1L8cmSPGh{MS+Pr%Ig}oe9&x5QucuNyogg6fAd-!a|dr|C_5Gb)q+7>GLXxAKDAb>(M za!g+xL{$MFI>5WZm~M>85Pu<$XXL4N@xr|xY+e$q?zbRL!$m>l*niBGO9^$wHWiM- z3!ito^xiEdV4#g7Vc_t54UD=8V5l_Z%h4h8tX$CSoxo*l6$U#~XkxT35|xITUlEk&&TipmLH4M%Mrr$0fFr%gNuHiex(vTYMT{gWkO~6i zxCSmlV$qa^&3vIGb!r*@&-QIJOf{#s-u{yiF(7?_a1%Cme7p$4cuZfr6d*t(nd?BW zbL7%zfeRcGFE?zRj#hej(nuW64ri#%jQHfP{tybYG?6?xpQ2EkB zN>!u8W*j@dUz&N-k7J{N>V|mP>s;#VmYa3)a-O5nei0E9y=;3OS$3Nfy}doX6C*o2 zf~nt+N8oRzupd$*6%a_tMbd6&>JD8Pb1n9X_VPA(X&Pm}{Rt2!rL*)scPC)n-f!Uc ziXwWc2J@nRJ`Z~d&JbNEZAOc@{7yzOv+8A{$(|dHVwR9eUn5a7IQtDv(Wudw^=FL; zli)&&55zm-M}`#i3YR_9$dvj{)`t0}Q4K%U3(F-GVK@nXz(!I9)PSapR)VGqpS4Mh zBT-;r;MJF1^OT@9hbBsPPmpTe)xtdqJlNfIjgu1jZn!^o1~+s z$wL}XuRE^NS+6zRItKm)-;%&WO_C7bunav@Qc@BgRqG#>6D0*XIXOx)QwpAXu4QKpwxuKGLr)g!OMgs;~VOyS%MU&FR%6S-Wqa4*cyZb;^tQW6~4S`1P*O^4DUbEfNcvxq=FIy#^hvU2h<@Yk{S z1uod^^j+29fY&MP{PR`H6s%#p?>8GEgglb4Jl24->|%96RI>@_HAOewLzk@|!@6X4 zZSCm}a#ZrCEoQ!^`k0_`RW=KICBC<;y9V6gBTuJXO&` zTkkdz4w`K2km@;N;3MOXCt zP!S9py4*<8lT^CK)K{*x z!klap4F?-tJ#LkcVEabrF{Udt#|SfGdej|&E$lfBSR8zk&}PhK(y!Ec zn|JRH=A$dpZk3nMOX##I8{e?z(gn z@p1-TkVEELWdu34q(SAA;MUR>+=f71+H*iDm6Ww|KFUF(@9`WDqgOuG+(U;lgTb{$ zGJ4JY5^e<4X-MHKRH&n8zf3VYe)Ae{C(EiB+&f(wjyB6x@+&?Lh8Il5ihCAkNavZQ zeCdGO?b(VKl!Sm8;;E?-kj+zdUC9l$vNmnGAl`~8^0)#W$;5yJOoCrF4(DRS=CjuL z#(0{sp5NZGzwe0+RRbRVrj@e%_383yIo}xNoil82c+FMVo4Et(dX?oY96Up`>}U@| z6q@}AZ>|<63V0mW&Q}ctRIxlSE@t5oSD{@8nro?ag<7ReeebSj4I$hkKGKiiRllW& z%OWjPj~c{$43FJ+J_htVyT{SD;YR|9Arx2Zo*`N^+?#}jps=n%8*Hj}jITk9?~ywf z6H`;M#GJ48P33ea3|1c+k@|8qjZ^()#OT+RRHuvhq7Q2J*RRV7@5TV#cncBkEIhJQ zZG1e9U+^FvwPG-p3da7$O1;Fv%s=&^+Vr(9&M(=VtPO7=&sq9}NRtqcKkbw{Jt#(j%j`PGXYl^ra#O z&ekK8?|SZ%XFSW@t3cdd2M)kFG~v^doznTLzM5zP7m=qGHjtOW^>e9pfOr&{h$0`2 ziS`$|rJ4xHGscNT6k7?AP^&6xzER5MnWZYr;D=?IgBKfw0hZbK}BEnRreM&4i}4EN+4s{TH_+4!pTC-%9a>GVR(1*)817QZljB7O4 zWkWDE#W~25)i1zB4U5Xge}6pcTc&8SR8(Hn)uD3fLMBsbG&SiNS+HXL2D&GofpJmV z12F>#wxDC4dxkaT!ZE|*LnL8>hsOYAAkDG#s-v#4;%ok~@oM->cMWh2#4%#F4*(7W zz_&uiTLGm9=ABNihtAQeCl}Biz*iZ7%@BYORtO~aSwkJ|;Fz%!`gqk>5cnPdpd7&V z58jS1Qne76gt3lp$V=LALoT>zM1j~qJj#LSpaBFf^)+0w+`>v6?`SpyZUtgM5)uRB z5?!eJn!>U?y0~#faRIrym};G$KbA@Mcy-g^)KbK|M0gQ_A}3fS-7!CUJDQB+0+zND zjvb^!aHT0>Q2-PGdaOK37%uD50T8PKlv2?VJ6u$bi%>7R3{?u)f+@}uj`&?sGqQmq zhZ1rCP1~|aPSz;(RN*F7%P|av=bSr9>%2F^j@_acqi>hI(9rq4mkJQAYk%)J<^pG! zqY?g1_h^=O3bWvJoQrtZO6-7v&sQ5BsYs5~*j(dcA$Y|!WVJE!Ve*COoOQYVb6XVf z2{7nq+Cx_Q#*DnWu}Xtt>6!wiS!_X9KZ|P6T7t_*jpNVz^4}G|>S0C@cgY&*S23() zFIMJ8&-hCk;&qJUxu4GucVdQ;ih2P&!aS}y$$QNS>8}?j-#0l!0!GAYRXX{xPvG0Q z6kv_TeXY0NSOUFz^Hr2+Cbs&Jm3Pjo-!IzL81uvsj{wFUBsRzx0OPT0OwxUJ@fU7s zPXSB)IpAYmMAY$obC4Xn74l4~K^)*#OjaBgcgeIzl*Qc#QQ56A?YxZAXlQKlWGBxL znveLon8Hde$;eVWo{F!MG|IJ-iVt(OlQ^s0G&{4!4-Sy8Qqb^z>6N9prnf(r+vkqI z{CW}Ky25y_ckdnVa;Ns2DhRv_^2ys=In~R~%#OV>E#S$csytHlF{I1eM00LEF8O_T z)}67Z372eVN~}E11?tl3P~H`x8&HUA&sJvhf6BTFx2U?Wi!?X_L${QafDAEoN=rzG zlypi+hXR5$Bb`Gd3=Kn<(%n6DmxM^?H@@%hi|6_NfP0^N_C9Crz0O+q*_UaVN<4rv z+X0JwX?wb~AtJtz0yPe0xXwqu6vg3S*&n?eyItT;-P7O>oa% zd#~+iVwnS9cF2P$vBQ~1yd;4_|o;~m|2ZtTvf`|1ZvT@DH)bQ znFmerv=R-zS3z96CXXP3p(-uTIv(|B#$8_NE+sm!y-Kf>iHGKFGf)UMaL-u{ zdgz1(e+T`&CB3N`^oVH8UBNRPYsJE9t7rSNMFMba-+w3B9u~w;d@)-rl(JC~!TdhS z=omV#KU008Jub>*f7xCBX}-#}PF^tL>S>{Tq{X!jhs%In{N^6P`++W3^CzQj7{0?` zY^*TTl24_~MtZ|C;$k^eZpm3{@(Ec`VI?y66`J&PRx1^d^4u9Lv|HJ3=#(%rC;uLBq2VTr^>#Ui+k*)+I) z&5#{d8fIy$X^P2KxMLv)-d*aUH0#;;+4J5H&zD7l+^l8?ZkgnL7GlP3Rn}n*fw#mO z6QJ^7MHS$eye<47D4qc$&_4-)uqAUK?oT(BQhQ&I&h1cY#YFf!W|Z`~wZ4nWZ%hyN zU>LsIEA#bYFFaZt`jS@)CJ>j}VNe^QNSU8cef|X9Ekh&>zph-`cO%oRO+Wbz1>s(a z(#MJ!Fa)v{c9BFK@(aZ$PGiAQeo1bFhDy1?-!2eX6`kkI;gKT|;zNkJXtIC_Pqvw4 zNT_N;VJ~wpRh%+Q!AR5?8(H$j+SMgmG>a&Y3c*|l>C zLN%@!4*)~_q%qP40$AJIuV9l)6pqrT#&XGiMR)fuw7rWX2Ipq0E=dM;ZT>uk$5@{v z296^>r=PQm-x`Yj3M}%l-DuOTxWFt+Dbg8j*`T-Z^IS~l z^AM8`U5??k^VNm6NAiz1$#6e!CxzuLTOJc9GS?k?Oc=A7E!xFOxF%_{7vta;^cSKT z5m&WGBy|z9AAZe54DW2QZzL=$MNXhe%!tmYmDMMlZuKW12VHJHK#n!v>_xALPomrR z3|pr;(ETAu06l0*YjRzgFK}*9VHA$4Il=nb)h{FU)8*QPs)X$5 zy`C3U)dqtqeaKscbLLNWT&TkMvVYc3<}KRU47a{8CdaI|adnD-r_Xa{@-zgh=ghC~ zg?mQZeujJ@@=eL?6Qn#29#`4Jq@Y_}<-eCx@vL&V=>$Qb_b-K?-I1(ZOPv`RMv;7P z+=rYtU=5ig%ty{W_E@*g&LCJJ0%ipqG|;CoH*R`MV9J4OQ2;H<6DGVwG=g_TPx&M? zK&t_HB!!^6EjWgHLlBY%ZC#Prb)ifJ1~QMo$SEjKx?|J|ZW1R*#x$djfpdG*40oPr z5gJmn=gE7yf0qxWR^LSDJsFe>lQEy_UvXMzKn0@j+k_0@##!m9qU18Y?&1{2Tnd>v zYvN(zfbLi~hV^jw^gq?Wx6ri_A{~S}?{-)fW;}0j*kof#nMNkT|k;bil7egOjb?k7pvmIALXbw{Q z4w31QYwYC(OGq_m4_P!~6aM046{I3yB$0_wFNf@U%5Qg*7Q}8^t2<>!XE$~vnHXk~ zf^L8Ccg<@dTZVjC+da-75mP(+l*3iuJArlfK*C3N4-2Rf0nMOgN$q%A|U*?F8 zIe?o}NlEueg-K1VO#z3#4i;zq3^?ig%N#Md&Ph6SmccOQltPhCLDRD!zEX`uP?lCv zm~pMRxI*uo=weJ zYqM=;S;W^uI@YnqB3eUJmCn?wUlUAua}vA&BY}`9{Mn@CWEpv?gfAo-@ez9BKJv;m ziih|Wiw&Z{Dej}&eusR6PZa}C_!&G2N1iW~C`_b5nJAM*Q?&b2#1R2oJ`FH^m6ron zQ+1Sb*~~|435Uh2xI`e?D^mQcDqlEW8O0{tbhWs=*UhC$AN(#j(F1(#ei(oOWKM9Q zudU*$AT=%GN&wGnO`{<>Z%@-@349jZKjpH%V|;(rp-A+X2qRwwvuG*G*f9t{)Ne|w zD^a+N0|>7RTyX~mPsiv23V)vGDKXHE`B@C3-)@v^jhjXWl+lN0)8(F{jH~I;GD~>W zk%@bq?e57&(8l=B)A?-~d)zMeHbOpTo#rbo+N-+#p1+{OQWn(0 zzsS98=Dk^gzw7*yesuTS)@|_Hup^VyhH54@@adl1ZqnQ-oWmr>k@+7zzo+RFQ*9E? zzbogez@zI3=2^D>p~g2-kW3l)J4|Tij~%rXp>*1w^+n|mZH=);y!S}&hSLS>GInK)_@~$B={S1J~n2!nW zqt*%PwEl+1$E`ox_H#`o;Wr`2f-g2AlgY6Uf7tp)oW2Bre%~S7LN)ti_8~HNspBnb_em@MPZTLgKHkVrdDv9$Q0qx|>g5=Zn*ZISexjroha<5PJNgA*eLGicD1d zRpJC z3Pi;DtB(Cx#F^|3B8bXPX_!W#AFkv59i^+f^;v3cBaPvR5up<*+O)ryr5xinias)? z5I@A(9O9Hnlpv265{(_<3>}8^uLjEIn>3Er$kkQg#0kIimBDGphVm0y@e!a)3Gk`# z_9oB|EGIXf4~36m6mcvtyM#OptwoP=EP75Q4rTOCR$OF@{&{zZxN$*wK`!-I6RxMu zqk;36z`eOZy7?8-G1lYkRo3!8*0wBna@~hEsf91BMRG~9baw&tUXb!7mxhBVng+V& z4EBypUZlg_j}je%jlA0F3DH96kySAM3tbVaHH@>$4|I`vat9*^4#T;1tJnSi{Qj-FmZM>vG2(P)tFs^bTcTk4!? zYww=l1cm5`j4i6NqFcN~ba2CaVM0^1?X|hlvKjY(zyygp=zmWq*XGMf+Zt4IKSuxc zCzBVnqU#LPQ5!4@`^!MaCwwkCGmwTOX?Qn^d@u5_t_ht zro-&s8)$n#B;EZIayX=K50@FIf2~V$k^U{PW00L^8S47H&&SvK_r|h}N?STFoZ{i< zVE1l=yPS!W74A|sS9Q`bN0N=H%ljLv8piXwQ8bKyLveOc3Yjk4sMZCSo_;b8>P>Bd zApdaRA@a1Vnvs6)t;0}iZt>F4Bdfq$VxK}xJOsxlQ@5H{24OJjL+}pYY@ncyw#yr_ zm~p(>^mOG!gk7TR;}ucmS@u27Q)&^=)1;avgI-lykttim!Q^k4dC65DltAFqx~<)U z(-cU!8K5+2^S6o%R#W<^j}fnlt9go4= z4cdE?mEMys1*4+nI@?}mR-Ja*)|<}!HwQN03hK_$mW1$m^PP4#p*1$l3f|(L zAv;&)T%()5+?r^r=8y0EX0+v9nTLEn7B_w5M*%XIiAgT#l|`ubEcJVl$q|dg<;Ztv z^0yT%t#xy3%P1TbFM7>?sD?T|(UT-F-~97(*jxRshx%R~ zigxIOwR}z*c!y&L{2>Ia@w2OfY1S-!BBT>x7^fOH8l|O+Qu=;rs!zK2qva|z+ki4R zHZxjEZ%mTe>0y&R=@e@!6w{i4+EA3$8kHh=DwSl|FX@HO+_!QTx;IT2t2g4G(D%lzp9Jx9jYq8U_YA?jZ37E8 zA#MIeYX+9Z&fh=iEEq}q%-@8fY_ejB*xFnP`q}3$Q1=to$@pte z#qkcO6n<3qhZ>nJEi8UP?5&2KSQ(d%lLcDqLsgbbNs$gq#9=1Z7ERFyo|p6!;rn14 zAN%wNl-XUyjY+v?obVV5f5tSG%P9jvkJ9H(T)JPJu9&d@Eg5xAazw+dOOtj$OGAZ% zVc%Mr&C{8Hf3PfnqNl0F;D4Ip(|r^MW#eP;1iqHB*x7W`Nk(07JcSVeun3F_diEK6 z%(ZYygnUtG6ORO+@|{SMr-g@ciKda*VP5Wy{epxa*bkI#zX}A3s1s5QY5S=EEbEMt ziL{k`5`6=FB4&W{@9v2HL}&1XCDQIdEj#Mef06KETWw|9qvh!h(b1r=F-A8*oa0D{ zLwMaKA%=^Vk@gB1=8=TL{5OeKzjywR6Q4VtZH^gB)#4B`Y4jmVT(9lq9J9FOFV>nb zg105z=eJ3zA1Z^=l8rHbN={r6NMJI_R9$2nZW^EX^q zq@%Cxkh>ft8H{838&&}@EfPe!GX-wPd$2kqOICbA>2F_PVXTr`vuBu5%Fa`kZa7iWMDZ5Q4G6wFW-;tya*>MED6hS4xX49eJ8_ zd<_7Zt5idwN|_fgiU&4}>2=Y*eYYRn+*dTiRNm?rav%8S3Uf3T>Uk-oKMk&+{A0(e znU2_=1|{zKq_toiwOG3T$!=1vt8-iyEyW-&!D>&RorP7y&+TtBgE9XXC4~OQ&rpH? z=81HC9y*#VEnC}JLg>?HlI8W6*GFQQ%3Tt;Ae=18JZ$;xB?Hb@kCaYUjl#I_HIZh3 z5h3GtyAb@n>BYzqKijixqSn(4;Win`GJAr*bvmC1tQ)Mr?sysj{14|lRYK`0l%{aF z67}klEqu$H&p#0Yo{6q!L|NR$Ayl?0ZTZVc0u^8W!$Y_#2>v@kTO?2ZX~YcA&))=n MzWwv~9I5*K7i|Ik>Hq)$ literal 0 HcmV?d00001 diff --git a/hydrogen/assets/Inter-Light.38326098.woff b/hydrogen/assets/Inter-Light.38326098.woff new file mode 100644 index 0000000000000000000000000000000000000000..108c112035640e854288c85eebda951e693baa10 GIT binary patch literal 141264 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

    $0!Y{n0}kL?Pb!ijs#^?rh}Q4B!F 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 z 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%0DZZ@ltNThmi(tDr4;Zx_1v&1!vM=61zAv{lO ziQ4;GhFy739b)m^dTMs+! zUjBz6H7NUT5C@d30Ak^+S-I+}RWJ2^vz?nh1pK^OAgbR^gLwvYzmiT#6v}C%Q~bye9P5dhFKAb`dii6nU| fLuZ7B`28us>@W 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 literal 0 HcmV?d00001 diff --git a/hydrogen/assets/Inter-Medium.0fc5d904.woff b/hydrogen/assets/Inter-Medium.0fc5d904.woff new file mode 100644 index 0000000000000000000000000000000000000000..8c36a6345e381a5d8119c989f7a2ae99798aa904 GIT binary patch literal 142780 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%0DhlJaxPs+B&XI|){;7T>XuHS2u z;IhSMw6|91_>X`1b^n(+eYg2MDC=dZj{>?6#nF`RrM~;xDAI*5erPYNxBJW};ze)Q z;3s@GU&t=}Ti547AZrO7ZB*8;UJ_x?n9#AqHPCNRE$9T43t9yU9(A*=kE(B}1J&O^ zA)ue2VvzYwYv-WBWuK$n03Ta_#vpdqveJnOms@}PpjMVN%`I;p`X*k+_!=W}zevmS z+9}O-X+O^9&329wp|H^<~$g-yB}*SWr^PJb7q^^=B>DN=v;)Kg)Ov&rqztqS z#Egs)!IXV)H+AD5mInYSLq(i|-%FJ?=%Avsfjk2sQ}csK0sE!%xgziPR!X%_?rtSch z!L4Mg0X&*zn2Ko*QfO-Nq@HZK+)dPz~+6HOb8C(u*rYgK7^Eh)FDm(@AhFqHUTxIkA zT!t>}R`ar4y63!e3#439=X_oZAGy>>xLfBbxXeg+k>@p9^+~vt=3!e^Uz`$agXNmIDvml6 z#azm7Vi!NI|YN(>H~yStAo9aY?M`f8ZUvZZCMJW0+f_)m~)q-t;~ z*gi;RP9hmF)LFOxNNI2RN9&8- zudr$D7R$GgXWNkLM7uhYeR>$#?cnNX)`MlLp*PEPsp!XI?2xvRaTD3)xe2(d`o^*~ z-g#B^3>q$2A_ z7HSLAJmoy&{4b~D_AA3)PE(@yT0-MryD9jjSfuKuT>48k+1vS0qZnzyc;@x~F^>aDbNJ92X?ql0Tk>}A znvc#%112{+e4OL^UC|#ApTmPF#S+PuHrvt9m7W;*-N;s|ZgT=%&6f3U>jRGt{oMNR z7Ozcxi~5!}vFrMebOB#4%`S892A?2@0c!nxn@X1%cYj#ik^9FssV+;5tTXPCcuG7= z#GbQWncmdi(1Xhh>KSYk|u} zM{NJ>9$H@nUX9;M-o}H?`EusG3rM!d?tPwnUjyF?fx}ySmsfW$QRlC&!BxOJG2%P5 z)#+D>;8L;aqD!@Zc8|z6!tXc*FcDNYZ4HOJLdBqWy`hQkOeJ7uvlIPH?AGjQH3&MY z7bGke>>>8 zKHu5@V~Upl{2&6BZ^;1ztewh^Ck|z}l6~M4D1qF$DbBR%Ba4z;!}!Z)WoD@b-)$+@ z$fgxL1acFcEx3hN@a)lA9>Dp3c{*f(-!Ge_Aa{SUy^W!EE%jit@eY|_nle;kYQxlde0v5>U|EGiyX>U6!I`SPfaWKVn0$iN8#NCyi<%?8;rDsdHp&_* zdm7Cu(C_k#GM(|DI9(begnHTAfHuLEV|&yVEl}>ho~%=f|Mx}O7i7aIfN2}+ajLz@ zEDz|hytf2Z{!W%Cl{A)@Qsk41vOn@_IFuC1HY*1LDs0K+r3QuaQk8)Ytp}uxk{@7Q z6ln2RW0iT@cycQ3i8xI_9oChl=i^h-YiS1I-sG*s=km5}t1)Lu_I53>AXe*O$=+0w zSXDY8zF^o{7DV~#qO^6qH|Y;;9(sY)rU-y_B@`muQU`w6*OS3dE=XXd?!_^Y?hxw9 zKC=cOu24cWTUtRj`%B_kX(pi!Vb!K4rSY&0Nw`}Cfn_Er(-}4+($fyc ze8{jn4%$zS5)t?O&_f8KrdcW74!5@`6s2YzVxZX#^0J06JyJN3VEbuvCIG?Jv;);y ztClW}KS#)>B}V*8_Kz{8yTR<25ajSrYm;$HQ4QIoEr98l>LK^Xzpz@8B};CI5e*M+ z#xG8ipOGX>%fbtkd}KhnG9I~yAalY6D#(^Kj-yGMrTqi({YC4=e=JnigMP|cfXH19 zfz_;aqv2!v7P z)Pz|84Q|qjBKvQ%!NrL5_TOo#O^{TiHQ`m1dq{J`%UN^N0fF2E3L@MB$8h#YsgL%G zv#4NgYE;mCIZ=s&d}N75`BRC5LS)%a`BNDtH5EvH_7ey|O$COQ!pS(-jja z9G2zCC&_W85z7L}Mc`jj_YraM?Mm{ERfPviQ>@ z>hUzBQxa`}s-NV=l%Dlj+@I``3YG~}6rMUfQ$AA+M5qWcQz&|O`zj&=(?p{VON+U3 z^PmpgN$Q5K61;w7iD8)wtiG9*$`oyV>U!1UmF$KZ)kNBqTA%BgxiM;! zYhrY92|q84&r8-Jqec>1JC^Z8M2fR;eg&;c?v{3_*QfW-bOHRlmDsur1|xc(%V6>16*F5zG=QpN^+ zgslfh;3&)Br#M8i;^o3A(JzOy;^v}FhT9H%a&CZetx3z67$7kXSc0f^6F;Pv5JV!{ zt#3FvWBs)|W^KJr@5Nbse6h1j-ufLL&xWji&SFg9cdIRHXuBccfxrQ6g!QRRd^ zSpZxB8EgUQMH16J1nT-;M#}^wB?%m~;0z_DhzTRbef%&cuUb5&z$T}LfcqY=vRhmg zo;m2i83y8#oZMl~8H5Ow;JO!1VL(Gcie2)y^!^I=xW=?xDE*Q>O#T_vto{jYNwR4p zQdaU&pi^pK37>qGv|B2Qgj>o*+$JqS#3qFZLO&A@`bEn7h6JAx34MG-h71WeEO>lG z>aC)f?JNEjd&`4Xtm@;OjOf(+WO?(Hk}Nb;CT zE&7-Ukc5g%TteVyYd}eo?K{{x^q4Hvi0U-^-)R-12}}65Q@Ew;)vf+25SDyb$9AWt z11E!!qGddh5?I=>c9R(sf6-u*CCJr&CM;5hNx#1<54Vmjjgh|*$4+C2q@`#lR8h3$ z&yAlaPtj9_hX&9 z=zW4V|D#Y1fjuiH4`|&Qt=Nwql5|*MPM4cREv8uNT?$M8B?OP!Aqfww7B)g50z@f! zT0)<*1-7&fl8Q?^Ny;QogJ)4VVKj`LVtm(mEc#D2GNH}(0wr5J=tzsD!AQ6vSLz=X zrDTw3OEQW%Zvkyc+PMEb%NE8bqjc%m*bJrY-@gw|KDE=5qR+9F&6NG55ILO#Wz#SC@l7xJ0!|_L~4=;}t3}FQfDbu^5b-b6Si}>cPnz)Yn(_=IaR!)q*It1b}s{lS=Ct_@f#q z^axCp1`z=yD_Ri$7CR7X6J{?%PmD2lPmZ$+0J+-d?WYtpE!V77AU__)`S^P8C;h@CbHxR!or&9cFN^ch^)&nYNa$irbG1&~UU(uDy zKfxH6J9nLiJMt_DD!5_=L2ao5=iwO3x}^xkY|{D=_Dfwb`)92aKuNo`Ac6Pr0mzSR z-8>K~&r{IYU&Mf@Xw0j;;@D@|YFZ$T0 z--=$w+lJ7eHQ38u^%m!hUxwJy0!1ESt#Libz|P4eM)zrG`BBM$G&9(9sUVRyHU;X{Bxk!eF$FrnhY3yq`Gf#~y`~4E zt_g;)moTyC_dP-oQV{^u3KRgG_((1G$Z{&d%y}*V@q{Lz4@8hH?ul0*&&VJcvyTtp ztci!^^w_q93qKX@coHD^=sip8UQ-2+|cLD5DAP$qvBsW0*CvAqsW*D>z|)K#nhE z32g(#$o=(GPe$J@gtsKViNt%m?^6%}6x-L1Goad!<`tQ2nxh2R#fXmJZJ z#ogVCLkk3VcMa|y{N(-qamF~~T<7Y^UNYxgbMIA^>jdzL>C4|>Br{c#MvSKb%J6Va z$kD%@>?JUgPKfmcGcp{28R@Rxsj2T$rUlHn1C_NTb4mx=6}1!YgNkU9NHOUa!-^PY z2{1!Jw9XoL z++XZ-x{AQ;fw%kPGUS`YxpwE}6Y4NEpx~4GE*oFU1j2yYt|cG#0UppKH!wD4gov+e zf`(bjg2mv|J~IKH2v%_J`;36RPZ(n|PPx3F5S9P^V8;9*2V!bqKfnbFJ4?Vp8pac# zh}(dQHEbUYl%HywQ2s>9DML8bGg$_e0rERzRjOOC8OZLF%oJ=07(^PeHwe6SpAeBD z&f$FPKKT>+J^zNKIaJ^SF^ZkiKc5ENmS&(C8dZ+k07UjRZ-eGRumuLxMthM?k5lm% zDBdt_c-s;LRH6Cx+1xp&GI&agJa>5_IY1GfBHjT5{29P&TOzrNWBJ}LIF%lK zQeVdFtH9uQQ1pb!Z?;5?T~zrV?_7c!seKXlf(_EvFe5Dx_uKJF255Y)3X2CkLsBS= z)&Hr0-nJ0zD{J*n>dGj7ZHx`(ml6D0`RUD3kow=BG$`aj>fH*tIJUInl&kECcz@on z22~QY%QVHQgxiNw3i*Lg=~K{F<#*{?4T1Q_xf>jzw37g{g0tLyfO8&`5|gY(ymxRGZ6<}dT0FYAtO)7yNVKY;w@NDR+ACR8BBXJkp*{k8l+WMNUR|GLRrGh$+f{<|_AW6W@&`u0bZAM7IDxH;o?KT4_&4JifhzA(Q+D zaG8s6AXY-h5*(sLENd2*sA!h(f)AF}LIA6@ijl<>(2`|?-tr*;82D%oB7n5QY3H z9||X;eMaC=J!ETme-H!I)H2P7DEY}mCa^}r5g-8vpp3#GLY1e1uT*k^$2>m&2jDq8 znJxkGIZ%iET7yS2ZwJsQ&lY=+TB%gVWDu_E)WB0}0wm;Nm?$gw2?v9Ta^(q!fpZ_U z(JBGfBnFYH;tc|&n?OpQo5|J!g`ArKKB=PwvT%V9(>M&8`4bA}AMDJu5+)eUm-7AM z(xP6}ijbBPX9yZdQ=@?{TH2FD<|4TqfJ%A8IMVPxjEz`!vK9pJ-uttGGIbK@r9}=0 zg?%}c06RI+IMPTr#zyiJ84Ho6q#3FP@>EiwyVm0*mHBR-IDk^hD=szkmeCdGMAm|6 zDP@MHfjadb=%*DriC|8Yg9Myd6-k_V3nEE%-FMV_&7&KjkXMZV z85B+Hf4)EF6(K4H~ zA~;qoPN0{zjCI>rjW5_|pQ@c)q#v9RE|AD|0mSEDDY1bh0B9ftE4XX}2$(1Tg?eS|eseLHq!NCrixIyM2RrM-XMH;Qr6}-Tik{ z9Ft&rjtR8_!`yU$L7t&flR{H`1H2&F2ih}PfloiI60HKJ-mS{FQnscSaI}Vkyg*z4 zQ4sY3*1m82^ghB=`9vVS<%Dd3UVbPbNiilC5KhIQiy*GRNcb~DNB$Z)b!H!+l{BGk zK9y4p&{Y_ZMU@?oFAK<`OCS>0C}aKkOI7G+oDTmrUh4a6p3=j8LY}yNT`m3z8}q5$ z$pY&Jauepm;`+z z=5y!>{k5sq@}#0UV}10_h=RhT-~cDtKQ-D`is8Tp+g^U@W~J zyBO73`1Qj>bO6%67uvgAYG$D@--53nAHoAArMT+ln(HID`wK74My$zAAwI8hJL4q&1Q$BFSko6DhmyMZK`<@k9-JH;x# zr7Tsq2BelcpyFjnPUb+8tZ0HD<%!IxMuX^ek0()sBnEz5_2lM9tUbbsi;tLl=@SPZ zvG;f~5OloBeO`#{0NvjZ!gMC4@htWb7uk9kqIG z!n0`g-if2{Ij+4E$4-%>f7cBxnyXxPw+pTV!ULYkH!cO!1nYoKnj67~zO;5;~N9KkP63Hh>X&r9?d7QN;p-_t)mJfwt zmC;4ChSX|m_Kg4G`*ticb$cQ*ggBw>h$1>eJT;9!7-_#&r1&Ci+4$%dlYxxRND~y$ zI|Y|+y@ekW)tiR6%Ws~seE-@9yeL(1J>Wk@T~+OKLEq(f#Xlp$1!nbYcjv$fBWMU* zV7^hjiaiS5Wtc}9Rs6%3mi_dx;mzXNM1Z-U6uR`cV_P6@o&H1~G$a=?P$d&7i+WrK z1UUChYC%JC3Ue`T-#4(gK!C!`G2&>IQh&G&aLcy6DGUOiB!Dh;dlN+FcR7{0NVg0P zbfCV@V7FgY3*11#I+V%Nk5aw!a9$df`Gyivwst$GXK+nkG1ez6n*I@wQvMbn&PA{G zN$O%IYCj@8vWUbTvw`qb`+OtSnFO&jrPmBWjGkwc`sU&w0Z*<8VW^MHUi=+drs5ht zNJ1aX`Qc2sHMSxrQb|vdIN^?~HK^TkU+YWAGlH?Yy+mt3d-1;VZS5T@tZ zL}QJ5FNf58!X3$~)EXU#&J%l54N8=oKFA6}_k7JU93;EOGa^DwlCA!$i~Gv(Gf>7a z&z(hw%11R9jW!NZxtA-3>{2l|`AHJa?(-*mp~*Re1JvP+OrpeUDrMAU>SbK; zBcyecNQ*ue;}dV$0V?pMOmNXehDp8~Re$lgwuzVC=Q1bGV;JBHO{Q(a;866Xf!{Kf zpJaumNR`K%qE#yR0vbf_A(LcKVp$s*E?hm#6SaTe8nCbXJ+VPT_xKaIP%at8cu7J^ z`Iqk?zWb{QZYY;@e>d{6{yyTDunq!aEVi0gX}!2t9AmW?IuPbP_5`>F^^x&s#?#?rFXXTz# zKCm8G#o$NW8vW$MeEQxay6s(-1EZfPT&-W-ce`}Y6CGHO-10-pI-~L9Qr@Cgyo>Y0 z6IXKM{TcQYxX*owozpa!EJGdlYDAwO>-Vm4!^~95kKvWiAo8gmD1JE(M_%h(@hsf; zhVUeGkR49&L#$MJ@r0KtVpP2Rn1N9R(^yGdAHWOWHR1i$f9I~kxvxR+~ZI1gXbd6HKcFZ;##Je`Q*&kn9v;c(CZS?>F_w9 z*)sgSL~*r1ih%$hlu9JV&ohRQVQM^D0H2a8GWBxGHZe1836^`_QppEepewo*$_n-?hFW`nE1h+=F-Q zH&JMAnm;_?E0@xPhHDBZ!DymXtz>_`GAT55a~wD9+g;k^jx!5ION0_H5KpF@E70pu z`>^5V*S6)noBHY?HQk-EP&~nY9;g)i?its&XDs9eYqnM;hd)Q)mY9~yJ#PII)C_s! zmAov>msU`3CV>Kx)(tBSKOziyJqP^Ov6IA(*1tn(=4c9$_JzKo;?3>#D+*$Lj>?<= z{K$~!w^BMP*C^5BEsbqq%4X*T1;=j?439s{$rZ@!^mc!igPitt+aI5HpPrt6K7MmM z_F}nvYC=Taes=d*y?({fcE{^7o+0eAtD2cAO{?TwCyyFw-b;tc>W@Ze81#1u@?c60 z(1Xq|uTTr8%91!8c)rS0SVzScr4Vrs4M5%wNUlNV-Wq)qS?d=MjOOw__YRmw}Qi>w9RDV>|$WAn80YAm?SkN*RsNSx+B?uR7+;kbpx)e^Z-;e9I*F{K5?QPbD zQ|o4BDGR@hrpOmPtmy*B0G=E3qZf#ZI!`ow&|@9%)`<0hJ|k3qpUN}|w%3&dUQa+6 zuNRd=6c^xI)qq$Q>U_u5eFBrjN+6^^h0tinGAKjMNjA9aJWeQVv(s;Lu$jB3(Qh-~ z(JDl;pt-6gB1Rx6e+XIfiddp=B531&KJe*C?bI90Kq?ca2(HbVAP!@wla<>BWuR+d zhOpfqZ2{5$WL3RsZ)MQLA1Z;5P~*)=R_+O2ncbgD*MipRVT8dbh!@biM2vSxaB-vka2& zL(`M2vNkP#q-!)A^jSBfK=g&!w!PQ1htoppc{nnUI(S*DI#b$4M)%9kXg=0IM$Enr zZw-g0R;Cn@Ex(V9HYjKiTif_a@T8Lxsokm;H3f;(VvQ3Sdpi^Q#pP`LRR8zqdjm!=#DC zgc|VzA40ZScblVA)IYXkdIFU_?&x8xM0M*Q$=$!+E6XT}h6Fv!g7WcXdN!$bJQCS-u9WOd6C?B z=s!r$Xk((3M?G$P$I6pjIKENls*nvExnOrI*g_0`iTo^MC1kzo3u?4sjO^mnr_mjL zb)OKw&HZuHufqGM(kU9>=XsmlHf~b&h3uAZ5*(?r*I9dvfrx6G(d}f}yhY_5RX1`w zFQK4JN*|w&4ho7Baj`J^lUF@4scH@WY*qH@xzWC1?w@mh&Q~>OA588-@$(gM7ugev zHT7dJ?T4;&*aXMU6E;*8h~S5UcqLS@<)b5p*q6Tfilz2-J-IU>fX8(R3*;(E0&|&PGN|%NTh@@POeN(UmFcpvEoBg3NpgJO6*N4u-Ktz^s&kK zB*@-YoJK!PK8(&b?xyUS_tprDs$`4%e8k)mxTY%xNHeR0C(uIbC>p2YUIaBtH5k@n zh zfnm91@$fb|)zMgx z`=dsCxzLhMA1h^HR597bdds=ylq+55UsbFu<<{NHSYGFj6nZe9%DN2XQ5mIq%lhT8 z#Dm_T^iY8HZ~0RvqK3%W$Bgfw*a%ZT)x8E~?^5Gm2CTmL#sPcQtx3912xvjWj1sfX z=jK0iFI65fzi|07{FxvUj?Y3uTw7jBVpk9 zjK>bGr|F~j%0v6*4k8=Ixhi(z9;5q{Diq#qHf|eqtUhb6YJ)?0KS53XV$=9br`E z`!g)kw@n)`{(VPG^H6bkae*sMaj9Ml`mfz9;7Q40bdA-0d_dD$6UncmnY4>3GyZ#< zue3a_O8X;HMn<^g#`zs-4FM?T!>Kll(|#6t!QxXw__Uk<5p|Df)J5~~yJmFET+|f^ z`NeGgz>H)a!@=}RTt_*5^KYh<@*b#)@OQuC6F!6G?YL&%7noihEJ)ao*Oag4c{7Pa zF_nD;bN!WKZ}&rJzrE&TdLwT;I<~+C2w;frIVq7o{z{*;LMiBlGAiet;pnv4RoFnt zdRu<$D4i;$*QP8lqOseX`*dpa%22zOiNYBE*7xFjTW`}+hD5)Zg=`Vo;}5zP3ZwF^ z$(l6`Y@G{|(~5v$ZXFaIvFPQfX0iSL-Ms9wEt-$37>cY^Z}Wu{qU}EXI99*rdfoaV zZ*y`8NR%qkKqkD{B(Fd`G24FzCzf;hD$qatf(x>0pQ*Rjto!y)i zv?&w{9rSC--Y#dG6{Qc&B%FWxb&wh#b@VDTU(uM=lLS(KWzwiO5$x~SEJxBHr7H`u zi3_^guJG!8+5Poy1u`(Nl3%sM6!X-mRxe~a2;KESfnl9{wa1pEb7(fPY)y#uCid8^ zbIK}^xQ^;nk;5(I+BfVd^JUFtmhdlhauKKdnX{!jewjm^9_d>aQU0^fv0zI<+|16c zUhKhTqi1*{a{S1XV=873|Mi2fP-8Rvm10iM&?$ql-SJk56w)!E{D_`vXq<2Sc`xkCu~)ex`#sJN^R6sYHC#%3El!At`U;2ixRJ?WE@AG%4mk-2fs`{cN6)0`iN07#f`c1P?^nQ84R}n4h-L{%(``jI9;E=LHBq$f0W zSQd*r0R=rpAaz(Ci#r7!-QgQ2HD1+FKgpV0628j1kvhA#e@nYkGbS6 z9PA*Nu+A$iS6M&QzN0%0i+A~Oa2a9Zf(1j&ESZ_&J|;s%sq=*b3SYLrLgmiE$k?1U z8W4voZ8bBK&RU|CEbfpMtw6HJK`hfINsS?Av?&} zwfp&7xG=FuNeY_WHhD@Y;Cy}P{a{UkEIT*}nu$duY^At497W{0<-^gyN(J`&XkdTo zHm0(p8{b-~So9O3+w@*%yZ^(om}i8p2TyYXjA`_8LYsN`+>E}n38F-(fn(2Nri=G# zi-1me#6dVWF1J%KfY3;fsJb*G zfkwa6mx<2nqhK{Ff272!HoQ4AnLL>2vQ*|#slN5P90>hmBELXrvHMjMcyJ0(pS7a% z?F%b!&CpofF`bL@`zH-Zk!`U<@iR>CzD&|3;xy+Z;SN7(~2Kyww!E$Y-ZbreHL6@~W-* zZ)d$5m$29c8>&(WFHgB45%BIEwi!+eZ}fB+dZXtetW;J)_91%(v zE(I}@QvB(t=38ny3DZ)16;)6g&#GS!rQV^O+YdS_`(6h&*MQCYA<5Uvcmd`EXM5$$ zX5|ZFsAaoA@XlSK7SnC&QLfxRG`C-?nI>a4d@Lm8JE6>cgjnn@a!aD~)w$ERRX$0R zkTQS4&H40;;vXBB32+KWYT;(voy8-BWb(KDz1~(&v>0* zG$}i9ec0?v+hTaT%5(!?G>RAwPR69U7^?^Sl#3EXTUQKO^~fOGWfBl?&kU+b5w6-U z)Ce-mv5{JO2-=f*-}2@NkS>%mHi&R{@z!=+)P0kIq^zqK?f&Ys^cE)nIF~Mrm=D^=-zbt4Wa8q4#%Wn{L70jqU7=Rg9E^Hr-aJKR1dVceI`oPdu`Iu8 z-@V2wbYhq6q<<#w>+I?na4xvGp!2&A_n_+%Yg<{Y-=HHBnO5VB^t&*#&MbwTO;*bm zNyI7h&WreGRN3WY$|+=svfuwUFXpeg=Q2M+9NMa3Yt|z4co*1GD&JiCkz~CoN$)jQ zZ+YucuFSH~+Ar2aqP*2ZU^uj(bmHr!t0r`~ao71=iZEuA>Gy8FRT^tn!E-+!Q600A z2lrO1VA@^?gi)lT9ra~>-1-^)^Aey&z?#>?&?eww_;~ye3^5VM*4C<8+dD%yVgbqW zf+fFaE#D3&QFH0T`#tA#9YXA1atSXJAb8_9v{fjMiRhQ{&H~9y3iFD6f|xaDG79hH zWfxc#RgtD{ikRS=O%)qm;Pd~}p$aK?ZY>gw3(W^m9RicV?^11l@-9X-3oVE@z?W(9 zCur`j%v?v?QZ=Ty)zPy5h@z;N&|%2%vY1mWi=(qU?_TF>ZerK`SADfWQTj^tbeIdg zSf%BYP9iT{L>>Y@&$!CDwA_>IxXr2B8xY2X5b#ozdJtUm^cb=UrJKTnGosASNs^+A zWkSJ_=ie_rOxR9AT&Ui*BQPjEt7W0Re&Scx@+hsQ2E_Z_g^Uq3p03ZoD{Bm$4&^wF zvx3Sp?uVMdySu~`!G7DOLWje|Ul53L0trpecL-stf9znZ5riAfcH}};I5=xDD#OCV z3p|{GcR!>`5L zMnFT}x4xZEBRzbgYNEGZe7KCS-}HaGwXSD|dwgXaUc~TSBAbx=;eM>l6VQcbV`kO& zdD}KYwK2cZ3^gX}{jVm;AQW4&EV~ zY@)C6yf50H~-_QjA@%nko>O^q*ZW@Y2jN4N{NSJ z)mzIXl;+~e{HyJ-GnNki9>p?`01JVp$sohBC;Zo;7vW2m z2~EhEje>Kdj>s?8Op;Tw6nwudve#$}4A!!(N1dl|oy92MyomJ=*X3m}9>O!mBzb1+ z_Hu%<4QB<;dwQ$ZG)NO%h@$U;fMJ=4?aF(EUw7SGenS*leQ{kk8(1^{qeGv2TnMWx zwy<;9jRY?8lk=IT6S`ni(H1+}rnA*zj=I#OW0$!b))HTy;Qe86NibQW(uOrF;Z!8w zWad%Sm{Ah-u%>eWMP@#51Q+K8X%PeArSCij`AqRRk14z!LiWIB<^L=pGqzfq>Wqf?Fz|?Cx(jYc(F^bb{#+; zM~($OKc5IT{(7$uOns#|5G)PhvXpsKp}Wnb)3@$)yxdenf)+vSV)Qh2+D%$o`n8@7 zpHl|21e2I&_Qp}by@uT3*k{4uPZ%oR*EosFQ-6&w10Ts#9waoP`X&TSi| z*Ujz&&hOKv74y%p?nXjAzw$2q$m0zQ>bOD~{kv&&ZBA+@#x|)S`Vd* zgF%mot@Bpxpk}A^1@KRF0IE^|Hh(6w4Enp@TD&{IuZ~<~+vB}kJuk*|21C5r+NM?I z`8p;i{QYZ|*JVeS`M(D|q=hTFc&9_ZZB(S3>b%$VB)4joBb9|ZxABN+fAql)Prq)+ z+wk9Jt^|^ zeb4x*V)0bfh+6OdnLJv?@R>NbHY`#zQ-#szyD!!2$8r6mryJCXNaFi)0td{$ zme9h_wzfjk=U>QF4si#$nU5fDSXj}~3?83*GI7tgq}rnRBD1on28zqT>4L^+#7AE` zR^4D18>0x8W}FU3jrb1t5z~%$-5ZAQ3n+`VU))?Xr1$k= z*w~sjDz!NkGdc8`5=r|wera+ZZ?E~q@lv|}CTMwCTGa9nLgi;$gl+J_A$|T>7rf6( zuu}axWo~Zw-<5|8IkJg*Pha?b1C1`Wn`J_Xt)KpD!x`X<>Ya#eddh)t(>JQkr)i)x zwz92hou>#;q|Nud{HZ&g{olp;iKt9*j`fx^$c$FUs@qaOjJ3_w&Ut2*zRo1-Ol+1OiQ+~?_G#e3DE zx3`&4zp!JS zZ;eEfPVb5S;5Qz%o~9FIcSX|z zImseoNljnn2F=}554AaqBm^hXqW|eVwo@DG=~2WTx~>t3L|LaOR@xmuH^Jn_5>6{4 zRa`cxND(+fHix+N))v@xl*Z9W`gokX1jl_;rQ%3@|4e~q?~#bG8L3UPx~$ zh)v*oM}=mkIkze5F`p|taT&ev;pkTP2@}m&7kGeX?e%e8)?o_yHJ##q^Qhbv=CgV( zsCiB~Z?cT^+HI+F=>C%4`h`f6(=+RQ9QH%tYf|l*Z>+562F=7Y#u=Q;;d~2e`s^q$ ze}N@j>OslxOWz<68KWbHmN)8H8KKyN%qu2a_?mUwt}7-5UXPn`Vv87V0}7XT2y)_H zc%D<+jCB=~Wk)fj?@n<2M<`VoM$X?5b`>1_)zx-Vhn!gj=&TrJi5JRR+>^nz#x#3{ z^|i+q7YNPTcgndX>W)h5xwaj+(uCr6dT@o{owRj<}lz z{V)?Q%4at%AHC_N(7REFkY>($PL$?vlx2PN1yX)(9>U(j=)#C;#Qd_JOMeB?JW{ZC zrzlJVl0WgxVs}t^!?;G+`jtyry0<`2BRaA<<|5SPrm7OiqgsbU>yO!Q+85t3D{Wc} zIrHZ<8sTxpt5|DV#PcP$5|um-eDPH$xzdi}UAGx@Or{Q>to{`Xk%KVeEwR64Ak^D< z7_`jA9jOWa@rgQlu^R+r&;GaPXvnsbT<}x>a;Tl&Goe&_WUiOMK($|k%{6h^I;6PF zgISMRLo7)2dq|UoQ2Dfx8nj^Rm-Q3LOAMarSdr(a3;Gj~4i18~8g*GcK>un>^a(J{5AQQ>oE6;F5+0J16~pKRh2%sQmT|d__11e z_3=m;n%SsT5S79VojATAo+vLkqg{nQtkuD1-%6}pD)$G3zV+<^WPYC14B+)4TFI9>Ac9QIw z56d^4-z5b{Fabfg z8gBl~Ms??UV00=;WadOr<#oEmt{%t~Y}Fw~CU`5~#{a#yG6mvBmXF|K3S#i~*~wn}MC0`}ectub z>GIMtdOJkkvqrK9k^z6~gm#>^?y`@l=?|}I>#G@-4>6KiJMBvjl~E3c*2guW3>n;t zMCg5JE>Qah<1QFMc2YWMtD>F!4wg8R040rPJuTA1%&Cd*ewgAM8YL?SLUu;lip2TZ zCD`un`fC5WaH9OL$qxRPn6>)~Ssp>CDZI>*7=r6}&1mpyR(R&2wMkv9BAc4^!LYAA z1?hygjxwqy0=mgAxO3|Ml<&H3%dV5)TRY+{Daj!OVjN6MD>iDl3*;yRhNxhmG-#bhP>-%-gL&0{tBWYcWZ@a7zH1&G8&Q4;e z4U)ZtzQg{!e>_krk6P<$)fuMwxkumFFUF6!}G>@G;X9(fJjbY&G0SD|n{rD+%0O;PvU&IqUL-rIWwMFnvp9(~TLWX#j8+ zG_!uL1*R^U3jbyEKJ}7jvDAap^C+YQ6s>|E2jlXkXSwF*iFC-FI$#@BfXu?^bj5yc zkn8@(7t_8&E!&zWqO$GVlk|OgRhw@qi399Q4*qCwyN3XIeYJF6xc<`fB}{hNW|^J< z!UXe86-V{V^Wv+uLt?g^N(opoBn#i+DeGQ0uN*;+=kqgCbi22NMFt|3e)=qE$ zIoz&59K9`Rto79nRYR&p?%oGF@r@mm97>7EcSbj4Mv04v;1gl*dVPeH8|uE%@!u;y zdKyji+{RP+9nj17;sgy&^!M5bt!>|S!S`Mkjw>c$Cx&dTdDzT_XZ##DykOXPNX~8B zR<8O@CMKLS-{@&J2k{_eH(-_G{Yg}hSd}T-p&vA;{u`!f>UDQ10lU=ZwE26od|Pye zknE7GVerQYx6robvxP@lM5rUBizBN>hzqcNvjtgB9cus#2sf+O*ZHtE!?Y6mesnr= zj5J}S-t(i0*BeQbHmsG~@r9+*X3WGM>`0=sy2|?twiI>s1wx|EwqD%*OD6p9Sn}YK zjMQKWJyKjNf3)?^fXA6?bZx)UPeW;i!!Q?~r8-`V=FgD)Nf%x*?SH8pZ87u_!=x4$ z;z_Uyd$pnePZ&+AnHO(O>pl^+f|W}^4<+7^JfHVFzZ9VxWK%q4AQNeM*`lFpmQJQf zhra4fS`}*29)?v&ivfS;Cu5GJH8s%mxzSEj9oeh&{*KtrvNr4g+Cu#gOie8N+=B9j zI^B>IID$)3$3Xf2MG<@-4YA}%vhas`7!hk`=aiF<5m*wA*xz?*LgFG6a|0E8|EQ>2 zJb||Ne(wm%!oMOt?Eej-REwvAk|$IDXCPy~pZ;j|_hGHk{dvs;xjf7vG2wqbi(lqP z_a{GxUI}pGX|h2NtQ~ADWmUmE+9nZR?{;h>+?Pb2-!vChLSnF0SLX^nG@F0gKAoP| z7~^Z0OwsCVd&wpWPyi5D7iGS5Nb+=1ZK-TYc2T&txI9u4GbXnB%>?c=|~nn{omI^CMZ%ZOt<1 zQN91-dxNG0O5EMq7Al&$V}f_$zJTC=Ec+%(4_u)#B1 zZwKqCmAma!ivFR4EmEy$&Jqkm%siHlT;vLwlqVb3N8eP}CyBlsevaO12t~3a?u(%~ z+)kZ6EU`K{pmceC$YvmC5&d?ezF~P(Ew-8b2Fc~quMcXum#LE(GuK6m$9?h5`i0oW-EzFTdWF#MS7 z%MM;3KxJCH+<<%H3x}w&-Apu$5wlk5k zb2Vs>Mt3Pi#IQ_KUcjfH!MBBU{lLkCOh$i)IJ z>Qsd)Eq|KKICID}YF>z^ziRA^%%zLduWfOqhJaLGuXl%vB9p2sLl}cyO5d2$RcQvg zsgZxidQ>6pBkX9fpG|c#R;PML?f4`r=wX&Lu>V(te;G*6r2TrB@rRcO{x;*qZ~aHg z0q%_1IJ2BvJ)O)v0iS^XBSA%6T8_dZdQU>l4!z?$-S~wB+O2QN@I1-jW&@A4|IkKC z6in{vuX6}qc0P>XDM4!wxgB)=swG1w|Z#*jKLlosG^W#Bwx^ zN)U9qZ?#MpkC}FY+P=TKDSi-0NY-xaBy8y?F-{bZ+{#=GJ#R|==8n}{ykgjVy-9A5 zx=Zw&hP6g5DWmT_%53OR|MS?YqMytOwbia9K*++O6L9U_62D9K+l$14%;Q3H{6b<& zUH|TuNTgYW{zm~hik>0#whuw~E}kjZrB5+Tv>GFe%I{kslP@MI=ZW4Sl1jpjUw-0? zgXU#0^3oqX3S9O5RPCfMkIMHOgc6rPW4ok_oc*nh_w7xgLMImu;+GXSFKTMGKd__C zFxhv6+n-TayuYPh1}UNJhy-^H`Y(xj3ZH-Y5bE?BDSbyHN~L zVe>Zl+}-_rFeh0j&K6Bd2-V@o&ZWkAAlEy7`p(-P6QP)6Wg(<>!OS=Pe>leGf7!6| z+3}v41Fl}atJcgFn*!@jkB(YuT;%^xqEYJlo?lDJTf9zavDZ8A!@JpfI%N(8c5^)G zim6BOU3zj7XUbWH;l5^~Q!`L%E{{_Pd$1m)4a<%V+?d4A^h9y}H*Xt-m%*o5&0!Ab zAOrg;S<33mM>G$S&wLeM|7YarrK{xjWiaL->1pBxJf7h#YFj|G8*3P~`18vMc>y$z0JK%D^4mOd1guGVa+PG=BsR5I- z^WXZW5-%Y3hl8rkXUYBvh-C8(zNK*Y&FSNLDsP{_OVid>m|2ks)pybcN-cv(dJ@*B} z&PG#3?Pd%6uiroDb&@hg5pSue-&M4+@yb|lvFnrDxXIu-bI9kEp?U4i#5+hu@ zqSIe`+Yo0Ml^O?YbEYk?$Jc+FW2K5NXS?7YBJ}&sM~u)@4&6!+%%b#E zuY8h@q#s(_e}B4(&2D$DS(_c>8W43meNoqDUL2TITMdlS`i_{6570r!K$ z9$LA#vR2bYgm)e4snXr8lVRO&)vi3TX)u3LxonsU?{Wsc%#Y`? zPZ)!H(a;`0IsNd-V*AE8PA|=}Jxic>Z{BPb!^E~7Ff$HG!#Y**G?+e=Q+^z`EcdHm zy$ehHw7VrJiI8I|wr!Q1F_vP{a7!}0QS>bY)za!r?|L6)NU}3^4G^T~k{K_A*L@k! zx$=$2+;bDlC6qwKsF9)WwU7dMHO({A9HKD_u=`}-e6 z0V5x*F08R%&Y!TU!D6N4>mQI2ts8AVP&YS%rscWWZAKmTXqx(aVu%`T_*BY z52(0rQ3yPvXz$C%hCnfzDFVCU{jAMHUA>fJN2yCcHtC1&7|c2ae;?-eJ|B6%!L0lZ zY5ua$I=)M^p?}F$CzdE4md<`RHNJT}l9c^>X&!#Ut=j?Z@rvb&;i$YdH;mpk3oX(~ zOKg~FlzQkthtrz}R{{bTbPuzppW`W;HJt-|8Mg(O7Gi{dWDx7yOu2^F!`&Zp^Mqay z`1F;@b;|tC89qQ?qJg_+;qJy-6O30BI_@tr=BiH0tSq^pS&N+vd^tngos192A*S!0 ziouUV&8hqC~@_TEsR4#e!S;?+%i}*INH*Tny zbW6Hdm^nB3)RX08wy(rDjZZcrF+v0W9o-+bQDG#+e+~w(wj)n zsqGzliLX7zuBpS0%eQJFbpk|qMd>{HgpD4sT>4?Qk#q(u)NfgPTaOpjT#|8Ep8FCp zuE5DB<$5=FX0I;n&|+s0-Dbhd4C>;o#``n88`13bn0!2aO!&jwL&Z593I+h3=O^@o z)tTw(p(b;k%5B94W*65zDJ)R8B|6(i%(3)H=MeNcpilhzHf;r2^}+ohf;4lvDV0_r zC1o$K&$CHvG2XOLQpH1!hHseLgqqCt5=*p;)qkU7^n5R5PATu_4_M#zA@y9_D;sf( z>j*?qmnYBcZUknangoY|dA3=?LwzaT`7X7np(R_3Z$1;o93pP2Oa_Oxxc=IR;1nAv zL|1_VSzSVSjlXU?5@jDC_UIaab&~~G?|09xwElI}2uVLetYv$8&+B>7?RC4RpNBrk zs_wcu*)?9LWedJ7H@7qzZM^%;erRe&_?SVxms4Q3^N6lh?WwQ(*nUg4e_nYLXj$Fc zM2t=CsU)LMXE{Q_ZHqP5o4Tm~^a#;*SDVz^*x5u^=bUQdSt3d{*)clUkuT@#iRlOb}t-*MSBxj7_4T)JAA9?AVKjB?k=XDn82~+jI`HQOIhsowW;s>lsTey6z zyJdZOyCZ;+)`2&~2~d`Jzhlnx<`W4bCJ-5LCUw8zu1 z+l)j}@QR&0)j`~!o{rzVHli;{jXy?TDR766G}s z`QfuwWXSRHmk0M&z6xTTsRDT^PIYMETlOluFMclSUHC_Tr~f5;sVoe39#a$PRDW|h z*Reh0zV|O-YOkGBFQxKjKk*~x*t3`FAO7?IF!okaaeQCXFfKs@0fJ5l8Z^P30KwgZ z2X_W%Cb&BU5AG7&-8I48ZE%M{2N>Yx_kY&>L{Uk1$VXBF{3B0+r$I^0=y;n~m%~Ga571CXQ z^`}*nkXIfTqki^38Emjt8st@qB4s)DO3s{PeEG|S_fSLs5Rsi6;Sos3R9T>>qR7ks z>>086e~R#*^{+yR5;&n~DmkV=h(DVa8NQ+z-N8i$NTvw~RnO01eg7Wj8EeSJVO22E=NfV%% zu`4n9FO;k+CL*D=vPk(TIil=PjXcLd#<3@{vggMzdc%a!@56r@++DE{l6VavX~2Wy zfT}JP2#MnB%4PRs-nIp_sT3qyk7Ykb+g6$c1rZ-K^qm#{0i`b=V%&bK{WG^!}x+%POM^Wm|DJ%aQ%YHaheH z5A&B&gn-U=+=}EoktaPe*nEE3oWSCW7VA$;XB3)T-*Cxe--EE=YqeR&hpas$j`#1f zz8ln)vJiUuvC;h1V0exMSfNLm1U|fR$zM z3R(NAbLMtlDnC;OxJHv6TeqRtvhqg;?BH$G&_d2nEOhXY=4NPA|K(vOY+{r@XN;Q$ zbzhqb!4`xhqVo1k4AK$VeTOH47Z-abu~VoHx*1^yjUk$k_LI{}nz z>fnZCC*$%MCnXysO~w|GBE@D$qAHIrppy?toIDXk?7S$7k8w*2C1bxDbnnlU=oeaB z6x2S(ba~LC z5@VfGQlF%LQ21JTSrt*9w2Z*k1035T8pp)ZjR4Gm1mbHT!{zyj0EJ=DVq3ASAw1E; zAS$7`h+iKTbROOEg|R)=0Q~s(UOYuIRB*9ld%*oklb?Cl>`^qCklV;&Yt;E~Y9yzX zdbD$5!7obeVi%86ud)5JkdL$)Q@5(nMNK*I4;O**m%%#NAKK1B_ksw9Fuh4B?zLB` zfmj3(pI=l{Q9Jc6b@bvJzeGuaq||BxgzKrKLGHoSF-iZS8>>ul+c$Tq%T>peEkB*` zc<|>p65w~ADWalLx(IWkT7fUhbLN*mRITOzv{S|ocC{>$t~XjoK?UvTI|sFCjcT1Q zoag0!bF{OUh4nfuD2%&p>a0fGidUD4X3*E6!xNie=|Fx;tvw=_%&|4PJA1qaz*^P{pHRuim#|RD)n8X=(q~%4RhW5_ETsU&U?c znQsf9KGnRgdAsG=IC8{?SU6%?3Pc;dItmZ$7sW{8gXBqFY z@{@dRGM6p)D{#{fq;G1zcn%+LCs8%!}li7!YHhthfM)JE&RCXM*PrL>- zL#L!MVWr@QIWaAI{glG3&_Z`?OIMADti+hK7`fP+rjLtPGM5x%4|;F6n6K($Wh??@ z0eLJ9)^dl8cmLu)z17XAw5v&Z$MFcU%wY9t#Et;0qE?dgD2m>gzJ0EKxeA;Wc67KZ zqE682zMV~^F&W$|$E4}9`~K1y-@*Ot%z&eeZvB|J^eDzB>7BneW2F^j9Bh)S@kERch=7vyr@yDjF_i7G&+jSIP!cwB)w&XQ@$qI_Xy8I#rOKSV8@-(a0^Fpo*05J8 z%_AhzXa9hh7!Jhp+!Vi6gcN)EqX-eIrd@t{{*bG~6k3!G`19Gq2KjIjIkMHXciRXpod!o~ZYfS?(;! z0>=n>U9Ok*T_<1Cw#b!!6El~~(}}G-UQ2OU{bRY>eD%wo)j1R8rCdOXqNmFt^_rt# zJIPUxti@&)aTwHSqrB&u&G3LZXXJ@ zy&BT4R;$;#6{iw5F!7g2RFyrecIY1SXy7HRGijo2EcSwVD~yNE$^hWNCrXdyKTxf?iAz_)upEypHrgeg zJG2)Q%Iq>!_>0sq6f*2JjiQy!MkZqOv2d?^V^8r7Egr6rZ0a1OKsENqRcIGKBI8C) zbmlC4iud>g?90iO2DqBf)2Vej-LKa$FtP1v+_U|`CQ=m4aWw4YyFdP@g1gaF?!)@& zP!~u3zP>TU2Ueu#!83_1dMs)tYKG2&1x($=H33%60<(mTE`} zQ&#C#XhBa&{jhRKM0SGOucQcH6==e=9T9JevNE)oRP>b&7t@X5AzN^cNr#Gxs~d!~ zzl;aR##5Ep^6!E23ig;uUMwY}Q-yd-V5Ggprc{Tu!mBo3|8=riOfvL4FYir6mqZV_qH8th_($tO=Pawd$#$lBgy|Jq2F|Zx2P`$|2N;ZF4?n-oyPupOgtG5ud*%P%51S$ zz+DSlotGbtl^be7V0`IwutM*dL}}~BY6nye9AAilqU7ae*1J(hWTf;d@A+auQt4Aa z+U+zz{^k}S+Yru`CyL$8An9;OL>Cn0&xg$78q^$158b*{0li^4%yCe10RvuH%Mr-* zaQNn!*Cw&vPK6R%zDHUF=Tsid4P}@d_UHa`rhqnK-U4Mk)t_Uk)|>C^O*iETMt3}gD{hzZqVs)5?#Xg2T3kP1)0b@D9+fUcTPdk3 zr$DVj_3rP2K5=r~gpLzWBU$Ce=O==fZe6R=zn%NQLo@r(3#e7EWPY-p=(ER>{F6=J zs*`T^4P<{*ydOYcFaM79eD%SUitBr*f_xPWv>DFfgw!Ho1aKRQ77w z(Xi0;RsK}yU(zgB93#iT(HjLQDn`-Xww}AopIUw47qt^MZ(DNld+?Di2`hiMBI)RB z!q6z&5bd6aNNSr|WdFPSHPFRYA9r1Mpii}glqzS7(wNvX7@>lpo-pa*^c1-Y(!_vs`yxY`hs-qE+?p_`f_-iIR~&Wr zZuxkZ%bI=0o1?hY0#$-vpcRw0b*#X~6B=FbX(HU#he)8tJ3Y#^A) z$(y_7kF7m)&9oj0IimPR^*`B^Mk@2Eh9v5crgIW1JGZ%8#%l&|$B%p0LjGOhCxzgi zMRTswzQ6oahK@kx_js$`e?}GkUB9UD zUC<}`r22E?(h+HHH=e_hra8Ur6|r$MSsP$94y=*}h^V3p^~Lha*_SVAu^|$I& zy1w5^VkU8lAciy(!Q^$xo@*(1w{Oo4>R}~^XO%;`mqT0@_<-Xw2-dJ{pRUEsY@G;r zS^jgT_R?=pG=pYKoxc0x<}jig95gJadMH(TN?QJ)r-%MkGk7S1wQ|zZT@YJQ+vS?@ zEP(T0*Lb!_55eRw-$)S%^N7=6Q8a8jg6Kz+6X7Du5c}@icEs}`b2HL2M(G_>1>hzk zN>4fu1P9IRD`(Pa*yUBRu`g7;W3K@*wF(Cg>!$SM&pf1bBH zl=-3t7)(k5`s0i@50dO>0=KYRyi{A>Kq530D@qEtc^K%~ZP5$u4iSbWbcC#$R{FQznqPG9?zC(qeq*exWRzF8EKy$Ky2`y`3&i&62) zxF|Ww9s5JuN5}c=SqKt8vn2&bcl$;e@5}s7`cfVOJxgRCthU8C6nWowqVt`@#{#=e zZk^c#yKJIYD(+4rt<}oFg$yl0XVFT6Q$q)b+zMN7uy=6sGxr2TH2Cl5^%k{hnX7t= zyuI`_o>A#s{d)$8#l7X1%4b$|{-9z1#hK#a%>FIxV1|G)4wZEx=4Vzc{(gO8mY9JJ z4r*78)c4!4XI64?>7-}^>G#%bG;}d7QQtEXS8K)pIAhG2#{8A|hjo`Qm#xt!A3#&O z(Wu4aWB2eiem1>2%pyUF0r6jZO~VvhQT$TL_$prMl#1D%1EV;1+M~Z9z&pb~|3Vv% zBW-aZ-TihCrw$3Lz2b<{%X5g|>)^uJ3gm#E*r85@birPh%ZJ-VleY1-Dzq;##UDfV z_uszo^#cSuaH8di4uV}r!rh18Xyy0u&897%SLAfhHy3@<$pg_7E0YBH1=>q10}QNm zRiq*T~(jxNZyWbG?WF-PyNWP4Z#~jchi< z*6J(w8Xn}<8m03SFk2N>Wkdg!T9=|=sFDo7qSxp{32zC{ClB#ymt@u2=}r^dG37?y zUjM%VX9f*5bc*fb35_>GL)=-DRx*#hNx>69=vp}u2~5#h&vM0Q@ipLhoA^4w7p9aN zua6<3_6`2AY6#tlyC8$xzDCV9gOICnElP8@xT(SH3HiBO1INWGQ#NT^U$Apm`RYQ zWUn1jE3AF=R1`(-#NW2|&dYhtzEtvPtZ2}qBkHlaBWZyV=OK0q(kKK(mZmoJ8RPDc zbUb96AlZskam$5aR6(Q-*YGcwzXwNr?d8!lRPG7~Ataer$$VwUbT^OdEmwv&58sx&e7l62V7uMT~t{O$~QK0qqG-!4#(D|`vL+xp4= z7U&*It>ZbI&%PThqe#7v(qe6gUrjmQ&Q7{3zz5s&&du$#MXP7!ez?uOn1bCr=S^ne zvBvN||LtCpquUU8Ph7k2Y)C?3aqf?%GPjafu6`)j5N2b)>G}2p24Eni>|mIf-7s0( z%%<>Df#je_@C?)$U?$1zpUy*7(8_m_F4W=_iyA(r(4G{e1AQ1Uj2B>?&9dWpRo-T_X62IK$C(ri z&CO^@K`1$<9@nLJ4wJ_ppB7hK!>N`6P&L4gJgH#>?H9Z2Xo&$$5aS$4XIL~*CEfjs zFTPP}0XgU^x<%jD(29l=!=GYmNBnE@_Q^_b8wtmM2Nh7iYIgYe&#hR$>92?-V2aFN z@%w~%AZX~MGb#0EVrgm-Fl~K=n5qmB4~yG7G*EN`Gl^bh$9W3k+4;`+wDyRsdUz%t zL2KIQ>U5MQK+Aq|j}I7R!NFkXs&zlL4+w*Zo#M3-UDtgnyV2ji>s*e+I}|j}k3d$B z(nk#Bk4EHlK74Xspebm}PbB$MeIzOjaw_|0NvCmtTA7%b_wR%f9y_2roUc20BpTVE z1nW7!=LaG)kc5)(zvF1h@SH&Vz09ar7`#Qf2*WK`jMg9kAn$*8kA_^%V4sM+iM2l% zr*(wghW$|gCpzBj=~GMRw9+RJFWZzEZ&Pt&UH5|muGB(VM{DL0W_!w66xl7C2>mH9 zf_Jn1GFV=#iSI*^FkAkdoH+7Y+#fme_%!adsIvS}%0hZV3aP)EZh0f>TukfX(IEHN zhq{4>9s?DT%ptJ#=X0};6z9!`6O)5ioVJe2@*|S+@3WVD-H$G~qqK6s(&QdqkLjO= z*E~g~lGkqnGG5>7Had-DlU*p?FOrh?kVnA-k&fTQKecaxrH!xFsx`8(gpv)Mbr`xa z_}9;^dUSXBh<50rWY@0XjCGnE_&#GRy$*~4SB4Ztd_7qcS8)g+6&o{k#ktFsczo|g z+k&$pznWHh^!QD$3J1`Z87vi?M5m=>?xme2Up| z6BkLX+nq&wKk*G-ur}NKA7OXZ#X{8Z0`_)h44?^(w>4_Ddk1Q9G&;Lnv@^IoTrbxk zIi<}B-vJjkgV3I?Gl}k{09c~?PO8||y3(Yh(XRN`L2+HE0jVt_H!J&AgHpD!FkdA) z9$#7qu~9SU!;cg<*t{%!8{elh@9H^j0XjFQU{pnxWs`0zpZDgP9@)dz`J}!;zh`JX zuby6iQLoO2XRWUHbMFU#zUaWVDjYG4VwQ-;dy`j>{(Taf3*OZyNiq$g1vm44A;#(! zu{G3Vi$IGNB}P8rW!RTy^XZ+2aEXPg=P+N8cI9_E^2V=-j4zaf9o@h^(?gC;YUM}d263{&A`yJ*sqbk1_Q^jTg+T|$1+rC1pLVbo-+0w zrxfNxBXN`^?n}aWypuTc!h3Zhzgn#(TenJ;O=GZ_V4jYC0YudTl&V!v^2L zG4I;ko@nk;H{e%iG%S%#KC`H{znxwv9m1svz^MqJsj^H(8=A zGl`M!<6vv)vJab54$Ov58`l`EtNL}2HO30U@qX@$D=>`J;qH{5C6wSWG4K( zCAAuxb4+Yq14nHPd^4xY^O$(QqT1(q3bKg(t|#{QS5_C1^L})l%ix|#oe&dT2BSW> z1%#XRI?{gmyp=2g%M(g-d)6j)>kYkdgX321B2p@@xVJ>S%4lnTTo2HT0C?;FNg3JU zkS?X3s^rmO39eNBnm_FW*k zQ<$%-pMH_bD)9yZnL(@b^K5Ee!tJXOkAA86#)l(}>~Io*^+H$PbH~988WUs%Ai5<# z<4bCO^*xPliQ2OA-So77kJ#;CKpg)DJe1}m{~r3L3{{<4&$io{YBj*yRyg8 zQ+}@^T|@eu8`{e)IB~k}>rx!n;N8j+2K=!*Y7o%u0nEK>84~;uUK!J~NeP6hiC+oZ zdMZ6MnoUhuckrG7$FC!y;&){j;e|VzGV@2 z5`vTSLR)vC(@d0CFk}@iC9gFnA^--I$=k&XUxQbkS8{-m`aNq-Geus}h{c!9e4Xb@ zJj?r0QT?$hf=+Ia=CpJ8hUNXli?=2&?dvtN%3+$9i&f{TT1WG-gQ!%h4@9xzBX8C2 zWxo{P0l{+aMR(s}z8$>S<7tI=x~$o>!=VpUeRFrSj;5J&_>bB_nJ$*De6FA8bd+sc z5BvtDmj+Gt$i_w^nKw2O_}Gq?>C6Xh;LaWs?gNf=AZv+lTtvg)KNwmLQnXFYcJ02O=rjJ4u7%L0zJz^q7$uzV8yhvv!p1`} zt2jHL9qd_{nCa_FUPel0b$`qF1y_Z*n`p>BrqoTqeRC4VRf2P7dr_F~0S)Gsn7|91 zsv~aH;r3d*oX=(U#4(zaYHi*({-m9u)6bk^n1tBixlIcnKSWzk^+8E9a?{05%cQHH zi#<}0jP~WS812Ix_-UB6|M`p>X_+`eo>q`2q+XkkOVBBOT=D*Gh}Yq!o>OrGSCBgJ z`5;^e9k)t1Sqp{f-D-r5O}TT|)^q%Q@+kB9=@}->d{u z=4R0>fAnqKjNJ9b=8|uWIP=~9A&v_YyU`aPRM-Dr;a@78dJ*O}ngQo0D5Nfgv8$N5 zIj)KoX}x3gP^x69yk`5Xr%F?{0R^NSD$ZgmE8y*~qFh7ymI)H2B z5pD3|?6>x#^JTH6J=I$dPOfW*@JeTgY_<8LK*(&R#ASB})UE zW2Y~>2|v8GA3;8klu94iDBXHe@vY~Mg*{CPCdGi^hzEW;@OMPYDCqSFh-B2h1mw1H z9P~Az;uIAYF$w{rPqQh86(cpRXlyh=b&G#qQxPS8vaEQ!j~}?X9U;1&@?AWHUQ~qR zmx`81GVHb_uo-47f{R?tvss;-CIpqsMQg*h=i~?xYL)J9J^{zQK`r5# znAKq8Bgt)Jl)k-9bQpNg5~^NVhw%HXiRX-DZgIm0%b9{ao7J&GIVqc zs0sD4!dgy~hCgqX{!h5@G#XwdShkMIrcf}D`Dd(FO7uGgxe_GO=afJHw^NvYY)5U~*$UTaDk84+64`S>`YVfhiYFv<{lPEAD$L|2 zmIJOC5$Ex~b%;6WAaR|r8LZWt8D{NFNaY9-d%3QY`1|OMEv9DDlVD~Q6t-?HiZFSe z5H%ID8K)-{0090j8+~~(Up_>+y~0e0J>28-T~0Gf7KN+r!F2a>hjs!HiL7Z`y`H_i zSmUb$aeM{uVw}gqQE6PeoAFaR8{e<{*3W6ne_s8Tgp+BBeF=J&NP|$cCq8Iw15Np6 zq%@KbFKW9kQ2M~S(%2&}y^mYRT%FWO5IxOyfJo0#40BK0?}2k*$@oD#Er_NLhKx=8 zdOu-$ic%ZuA7UK!ywr6e7P1#LAQ-(Y8HV)?T52tx*{$K28Y`5PIlS0#kwivf|Id4QW!7oX%#hTrKE1gVSbG zMl(<*Ee8ZnB^a#!s^7p8tsW%2z^t?jCgZf^dMcK;#~?>fz16gN=Qyubx&7Jt%?9IR zHORDkHTf(x*&U=h@6eSjz zchw8_>d4d^NcDd7iX~mBiS>+rh{?jqU1V4ktX#fXaskjy-~PRj{mDi;appX>i@Wm& z_UBQ?*2v9XrL;3s`rLwf+#im$@%Z&xx9b;^yF22L1p7U;&Qjj*v4?@s-GnXs`IlVJ zwYhLA^{&Na_8!v57>cou9T14Mnd&FP*{7?E&}&R-^2?7Kj#JHV<XRRx|(Z$i{ zH2Ejh;5Cskgy8%BR*&g)gIIO#slHm9$ZSEu? zW|m0qU{tXeu5W3Y$y;99E&a$CTU|ZBB94b5n7HT|b^6;{zvRu4({eBQV34HX4?eV1q%RZKco|e4%r$voJ05|% zw$Q}O!kn`*dTY?71w)4s!ZB_rK$S7%^)y;xm3W0C+!ddRHpV}H@Ddk)D6&i*Uzk`y z!{S9V-y%sk-y~Je#b(@BXR1$qq8Nbpx4x?$?rEsd6oQj;^c8dHAC^&w#YX_up&}PZ z{{uEw{{uE@cK-)#WUXweppW^${{frH@C;b%Hj~J&#!m2NpdaV|a7`|)ZqAl2s^#`k zs)h5{Qm?$NvE3!*LeBSNJozuW0|}#t2mk#_Tq%pnxUAIA?H-E;D&{3AxHIQ??dB$NGykaL02*lbyL}lG|SuVvlN28@Sm@po7EjWTNQ6>2axX$L4^hb?-1<1Gis5+g8geR#a|>wV=`^%ODjJFX*14 zm)xNTgVnl>478xyqSi4N>BpSdTMWcit6)dvR{ogL1B2MNz2yFS9gF-Ravy)d7EyC# z(2g8>XLK!5MV$}4?riMh^s~J^0Tt{3+b~&GpK6FMIjH4xXu;4Dji_QyP@+0MolrYAN5v2QtDUZ`z+o7}5${yd-3gT6KZ74Z}P^NI3sU{Jgo1tn|CaD`@mSer%#> z(UcZvu7RA&c#&kIJ&HO4JmEcn9JEBLd*UCvY(i%&>p{}&`WQ4H4p^}BTk|e@kJg0> z&!E&YYEb)Ez6KEU-!2Ve_}>EA|3BorP4PeEyI)k|I=YRw`O$gnIHnBt^{n>4U9O*% z=YLD2<;eBd;U|^&)_Wuv`b)+Xr@`(V$x^`)(6IK&1UO>S2M(YZ(hGmyZTf?R2 zf0`e%zEC)o6u0Xi(Z)qs3LN$Z!q`5sVK){O?|y*3LISUp?TOrgM>a6)tiQxpV)31u z^pPjzJ3P$_gS9qi93c39{AR9*J4D7f&IfaYUl0k1nV|)KQgU!j3GXB-)nq>x^dI{p zn()TjHkV+OreBqSi(tsJPWYeAiu6ynPD5JF8EWQ!spT-J?Ak?#bZU0QQllTz@onI7 zYXz*I(hCJ|pJTYunX(p>M9}qaJucAW9(`Fil*WLI42~e0@x>c?{RPTt=>7h-yA@R& z+N*LfLC2U3#r=iYG16W2c4B;5koME_zj3>{Ii2bz^*wtOZI6V|+StP(eg{4b74XdU z>^>}-Y9UD7TPo^6qO&dfH$O8ed-7y{A7L_aQ%kked3rglnyQbgKhz^i^5~vmgqAbg z+&K01%$1)RY^O9FUMIoXy9(4^q+aN`YraZ*>&y|2P9yVT=a(U69e26ra6Q&)&nV?x zhuvB3)!{^AjWv?ev6X()WSiU%#)~~tDX9H%_f~YYlP6^*ATxt9ZBuGB?uXTz!sg|r zc6|V@nqLYu90&?`I*+|gt<|1MXNp`Bn;q3dZFM@`F~G;g`}wtn4}<`@G-N|y?_sNf zX|b^NtT>WhS~;LRE*@|;oAIamEK&jNDvrA^>-C^>lPqQ&hl;n2DI8h%K%cs#ONmq; z8r_0-8Q$Yjdcccm7D|4b3HVNVc^u6ko}xbW)-haYQw#ZP@V&$kP(P~6Zq2WY-5(rh z;E5MOev|7fWAcg^=FIT|Ey;!%UFA~r4htEa;M0p?E; zju#+UPVlkz7k+Ao8b|atK$g8;cZd3fb6wIiWcM_>dZKz!<|_93E_L0G=0M?Zh|i@3 z+dJhx%@}zZrLDo?+Xp;-ZGKG%y7I4jJ1>(xEGdpE*FNtxeFNveLa4Z2gWkHU;4`uA zRNf0)nhvd`3;)=ran_|^D_Y`bp?=5TgpG6v!h zs#t7{H-P^7Xdk-wIi=+yw7j8TKvB*2jHs||-v5ayTcdMkPKc1){4DgR5=gRC%@Xr% z&D*_SvdaBmFmS0M2{u5q9Us7v! zY$EV2I<`IZ?ra5p>`bi1bJBG~r2U+#lY3jnZ09ZC=PSo={gBj4Wf%y}MASQk&2p2b zQ817sF8`7^yT^T1FPB~?B<;rbY}KgF;w5Xyjy4XWUubk}zf5_!ne(Z?MpY!CfMF$l z5r=BidGej^S6i!qwH(k>WjwyGvCja{?&*mDA4*hBLi>nszaBWA|NgzUwp6nP{0b_; zhP$8}kkgRCGf)L2eE(rX;;)q`9dqNkWq!>%8V8)E$CAK@33GpOO;2vojY*Hdg4yA@ zX+1o>hO;wN{;jZ%I2Q6sF9YTmG3MQ5Cg@)+aHv4tj$P7S9kDvJ&tgPylLSQG>|pf1 zwwbOF0Zk9x5ycV~%&Il!UcGN7$?J&tDRc4?zmm-DH>X)@p=#p&{x09aQriRQJ)uke zp0>uZVUiYJ71f+!d!J}`gR&*{du9B;BJ`>BI+I#_jwO7H$a(+hCs>fYiI$gT4vjjU z_hl^XlP0pMXzSWP%qS;M&GXC+$bcV)4^6_VRscn@s*h)i@&Djbamii6E~i9;{oYiC0mIPt#~k zP&!X>7XKyTE)L6Yo@udGD=Ssg95(V6xT9xR zTtF@2C9nK>GG$EG6kEKt&+d6(pnX6kxVWC;2f@bo2F!nSg8>7l4rYzgT^ZO=F= z1w=%08N>(OHjU$vGwJfNtk^W8*KFPXEC*Zk;*7*Xb>3Zt#;CgrN=)xMztxA(OX!Wm1&+}S-R6#&48g*v&2#?hD-zQ+umvbO zdbN-{{eH8nr6u_1=aC=RAGzpG|JB|v#0`DUEdP8S`i9}m@1@b6?`iyt*W*{!cEk;W zQU;)IAFhykWjlV7U5AO+ zflq**dK6S^@Kwjyf`Dh;4&UDrath;cO|M5N^@~Xl+Sp7r-9u1N*bx{$Zm!WhAM27H z#os`>rFD-X9X)!%ud!5W`+K?DojOlvU=ZDLPv?;{K>hv-48D%)Lr5J;VO;YRGN$Wv zp++5f6gJXq7j%1(;Qu$fG1TYEOt-h6wEbWZHUnynJH!ZPvn6^F@{eJ#jpF02LwDW$ za6kTAR8H`dvSHBqnw^X53rk8r4_hj+8L=-@nI}Ho>FjucK=pmCojt`JZeAM z8pby&xb|Jt-BXrvH|8~{0#T$Bj5XVlAF84apS6BEsqi?xKUfH*Qam|#r1WjYa00A< z-M@l85{6P?iDs&wOrdc|w`CV-6W>$sI4H*+sCLk_SIB~y)$4a~9YR1gOL}`df9dTp zX?Ap$MQ;^H(_HQ@{MSr5lfOlsXJ#Ehp6e$HKh0F#Mq?{=_vyKZVPT*6JUCh3H7-z} z9R?w9w!F2(ik(;bz*_B!MP?|6JO<~6&GCG6Ty0rg9o$DZ&~Y_6FK3HjhNO%pjnC;$osR*G`l{p(|VddxKqLsrBk{V_= zROp{W2)4Myoq|4dWQI}?;CI@k0wZ}D_g|oL&;WTqXT}hTQ#}c0R6hRW;Z}``^B_}4 z0b%MupsTxLE)rV5UZYKtuzD&@hV|F!@04qJT5;emSPS)fa8}jkq5nZ%WOjDbpcsGJ zzXXp0X)v{_Y1!!WRpTJdCNolJND48M(Fm4H^X3NZUXHPq5VyyNu~odg3F|a%m^-qi zy@JFrS{b3~WOM)(-T1ckFKPeS!dn|eUfUL&ru7;`j3#Zf!sT{Pbx_Y;aNpj_FpXVg zJ-NrvOON&yD5+P|28YG<@7l>2+wJN+pyNxC)P@ReR-Dg!OFnM}&J2}ISV%@O%1mSnsTDKBUqp&e}stVoqHu%49YI$nFOoCRFo4+poxR=#VH zIeAYwRH>h(?c|ted%J3jZk#f0ogpu8({--40 zNCE^G^_ZKr_wf8s0lXCt>`nOBnuZkfX@iK8A3wbBLu;wuY7V`Z)Ed2;bHUF9P&u1$5VovNQ!e7OpL7Za^LB zt}93`mVUO#e7_U|mkYTd_GdDJ)NmllB0_p*SrV zf20x@y%JGC={g3PxL?=+;Hc#X(vcU?UD#c1-H78JhYq@F_cn=0bYInRJ$zCm=hQnH zeu#|z=j>WiW=6~QgvL+JW-z{Pe5t4M%#g%lJJ}IwfquXPt#k(O?v_%+s1`druC2RK zoE)!Q%8zkfrqkG;vR52)qu>i%zwIYM9WS34DFg>UOGrk#U4Cnx;G z0eTA!eR#X9>E8a)zI`ADAR-Jk8uUr7aR=-GX1KR@tKJa3l^V%~!t9wu0?E00fO;o8 z;MFZPLO$%dlt6##!aQy%}x4Z>%+nO-zciuWxxJ4jo{-Xv<>}L zY-{%%8>gXe_4;0x(UIenBqPZ%fSbiO?!)FYI~bQQ#&w1pvz0r@EC1__ui}v6kjqXf zg=+|c?^EpHYMk1T_IAx!zi-;6dPRhcd)EX6$dmCL&b_hQKd}Lo=>C`xss13__cp%q zS3TDr4Z#DeeOv+*6c#97UoViDXHzssQs}1z$YLqGU7M&uoO(x5+qUqr zgrcSByF_7)dS(Q^u&0X7fGPS@8V|+&6b-8)$&%;vdSD4v^XafRb=z}uuL>bq@+#hL zj!j<_c)ylu6QH$*=1M*z@^ILS45Q{z=$I^#iG$q=E74Ip_k{*o!CQus%4|iO*@O4G?u$<3MV;m3yK}+WKNCrThHfDq)(b4-e|`>-N3ub( zPt&gFiNY5Jvj9);yZkpEBuvwtpIPB;u`(EMfHp==myvX9dw0wD#EtY+)c!xStgyck zyLw1l?8zCJGDcflCj*5HxI)sq*LokMK)lbvf{@6r zzrL%QjM(;Mn-xjg43O^}?d-TCXzVHJR|PpYBn3gCxVTCK0EZ3+PpngbyAK8@;Iw?j zE)QW&{YA$P`HaDdYb zhN~OJ0z!>OT<-H#{O;zmive=l5_kQ2v~_LE2GLCoo;0G#E;#>4f$;t9Eo*_1kf&{b ztLn)7$ZQ%+1Z_QF^-UwHvUap&*N|H`W^rc!&;%r6{{ou8hm&z6WY|DCToqcbsA5TI zRuOu+vK!OiK#n(drcU@~p%b0@*#m4WYr10B7Sb5q?3|^QWzrQ|MK!$JtamNp<2tVUNPP3b6KG`(FB<=%;2hgzD+kTHW-cQYR5da9`oRIdF2HBz!Sbc~-WMbPCzh%zs}K?vQRfowWwkW*t>e_dKGn`16Q~ixcGk|k zK}s)yb098~0F8?|*P`foygdM(_B_UvgBGAfO+xQU{Or>!c&@a^FV}9aCZ743eRto? zOe~4|K4%1HH~UQ&3w^cQV)}@Vt`WCvvZwlwLhp}6LV9skHZz3Q67Bo;*M`+lA@IXb znX+p`?ouQ>eU3Xu^yqKx6xllzvtwU=yu4q{#r+z&q7ws$UN#`? zxePs_%|$9x2;le*qCK_!^X|O(GJ{@hrf~mc^1bSOqwKbF2K*VKT;OqQ-SOL=%Z6%( z-}56;>Dr!Vv~c)0v$JnjUn2|MN~f{TrGC+~{q*dZ3Y&9nMlKNG+BqKUYt? zlpuCX5{bpKZ%*WY=kDB|9oz6t7)VL!9hV*X`3ZZr?JPf8JDSuxri4NLlSod@i#Xi70Fub=H;s+r(w#MUkv-R{?lC!FhA zgZNhvrS(UArl!JE(t}jcZefnSn!S2vHcN)c->zW@1O#|{6;}JVxk{Py+i}0pIe6f!)d`VB;;D{8X^{Ms1b=D& z@Sv(NyZ!^Q=~{Q$M#K*X2sz#b(;ZP&r-{(A#TTop*ML-Km>jCt@c}*D>3+ggrM`M3 zTD9Q;Y|G5Ws*BY9{=I!|$>-5@zOj5h0Jh~fFD?e9|a z5GJ*C-J!#`>AE@+YaFQ49W`J^XveXga(VL<_HiAv;vjUCNjpwDoBeyQRNM>}5zX#agqJGeyO6DS8{G5D1K7)Pu2~ zPm@rG&tw3*jwI0ylo~balnqhz@56XAS`C?E44~}>bEa5TUOrtDW%-t{e`ovCxyD|+ zB`E1x$R|U#E!I*)mHaNy(0syJ9s-Uk)Du9%fxbXZkEASDAEw4 zrz;`%Ri)$|y{j-@R&hkC%3g{VUJntUtbLV;Ap z9_7y8kro~9gENUewE5L+dW>d%O-WJf?ESnhnZ>n!P{$+ohSZ8RzNjr1TcU%M*c zQ?5tcNZNb=!ZO;Vi$H4~f2N76>+vZ3o6HuiaS`2cZ&1<*c_+GKs$Z3OO3$UeR}wRB zQcEpztAsg=9OGj#JdHV-??XBv%eC(V9TZLY2lIC3n>6>Mdm}9hx3dI3ThB{9w}_hg z`aa%D`#x>nwI1FkzjM?QFVs>8I4WIkV2VhH(NXlm_I{VoSL*M-cHfL$7%s3-gmzH} z`rjzNT}yu>dvcbJA*=J!`ju)Kza8ngs#ejva(<9g`}^R5j|%gS^jSvEP}VQ0e*d4V zPFW@+mPBP5e=f>hUYve_lOHqqk?jh@KW)Mw{|{hGt9XY`^ZGdsJ2FF|3@YC@UJOE%iM3aBh@j$%f%EwQauY81$ zrGP67zu*T~M!thBu};1X1z;W|!$?>_FgcS#k13PhD00^egztK@HTn1MWKX=gy{jQYhTUJb4r=ON8&)@W=j8#dT zb$kQw$jyRzUi*NlQ*BE`XrIatgyB#af5rDWD|rIU%n}D>&BIwZ0cL{4 zXXzbSJvdMDRF2Sa%atcz<5nh(JM$Z0HC<4$()|#=wL^mPmN!xc?d{(4aAL%v8u(Rz zp{ssTJ^DF34&HkJpx2=R3-$x7hth`+fyV}b19STy=nZfX@4Iz` zsO!g_yFUUvOJ8^z;Kbr(#{o_|%>{n#s0S%_mTrbMOMcCm@oULi>}F|~@?g|jEYFn> zrY^s9X?f~Fe*do7Gq-M?IeQl?hjoPSP;CjN9Kb~jnAI=|I*ppU1uCC74z>2=_E5|%7V@G*q98B&yli0@&F8SHVCg-#3#fj%)nUOqnme!M1B=Nag zb$y?n`R&8@AJ4_-t&6_glCW_=U4a?Ps0uxBK;JI*tbUpHsUv4|KN@1N)FUq))WsT) zHBi0K+cn!i##~>&7e4A23xDK?M~Hzug!kS&g^!)!9Hyu4+}L$f+sg-& z4Lim)S*#;3DD_`;{LZ0SZ{O_L^YR5!Y^nH4>tsyR*qUf)W8wmm^mm%6 zTZx7o1D~B7H*ztqjQ4Ye+*_AEh##au>6`1;-MY1I-A!@$DX6$h0pCFNV!bo(id@D?p*{^}rQxnH-0oKgK@3Ln6+tJ@I`+yQrkNp5vqc znG3?|z4FjOuP05vpET^kkl9Znx?zV_ySv@OuRGw?D?3HPIIeiYMs>hF2NN) zOP@NNDi*avLZwK}K5x#U6*L(a(Q(+Wn3T!k-1JVXGH?+bITi|VLmBOU zgpQWd5xs=c(ke!~9>J~?Oz8*PGy7bRn}w%Ae;lm){pt6MPslu80i(x+@xx!IG37q= z4gS;{eV0$<9eo!?Z-Q|!_lBicm8F*(^D*&&VielUL)h8Pnr?=*reiHDHy3+4@Kd}k z+1`DU-W~jQ+=dO~pa_)NnmG92!NG}JaquVb2Im!1zu@J{IhbyW!B{(rvPLaC;Kt-+w%p^?hfpQB<_dL72{fa)8 zmag|U%J_cD&zVc!I~4rYuGOS208dDnJ;3R>!CTH6G868uFWb1z#V=P+tOeM(Z~Xy) z2C4E5E|nvTCR}as-Gxu%_~%RUjc>DgzGAn4kZ~Fd7!FlWLCLk&wo&yH^wDj4LuF`$ zVdiUg2JmrQNPgp4rSOA)s=4w0@7}-M_hs|YTVt8ccQyz_$Fez%=!Fp4qUa03v<&k$ zVNj1?*BMq-jTdYXxHk;*Rk0W~UN!T0{Aq?&SFy=B%c8jUE2*J148Ors^#QtToa;n% z_MFW8`nj-=H_tvA7xn=fcrFw>hkgmgcRZm?YkbcWJjoM0rGLtJ;ybOu(-YqdmAAvw z*4UYIlOJ+!U*PT+_KSSJ;L=~@hrAu!Wod6B^IH9+W29a1X03v!#*;M)Hh!Ldj;v)c z-SaK6`&$Lizpld+EN0=X_?;W}HEtEu;^c-i-Lj`l#c^l0UThK6s?pJ{yL#Y1vsXcZ zWy|o-Rjcv0Wy_$DQ>WlvJN9?iPn!c`kFz_@wCNBUaAC*Ac&wi_B|Gl$j(s7W-*14D zo43I~>(}EK+cx888)&`p#TWTo+GxZpcT@1UC9?6ilZ^WhTs|W!&TG=>XP-r{04(TO{a<2P$*z_M!{+B zsSwD&FwqwR^#k}9bm&jsF@|xH*p$UZ+*2_*C$5;Bm8`^7!ZiLlVH*EG>E>YtP)=9@ z^b@IRurQWJOJ<|IV2H3%c+2c$sa!3&#JwMScJSb{Lle&o9()Fdn0_S^l=c72-Yx#` zw>`abn)_Uo61&ct)wSEKS-B}5o7t_~O!`3p3EUQ;GrvQXQD?azzXR(*AYt1eK}Zq4 zAdZHSNA4vg@X6R85#%g-EAADCAT9O&b!UBj=33-x&HLhKbg~jka-;COKX1Vs?8!gx z>;ypEOgTa6&psgUpEtcv=9Ux+Kz6x4;6_17HrM$K&-?S|tuPZ`!XL=LOZ0u#x8g?# zfx;+G!^%!MGam6H#AJpwH^(&o3~OPI6+jGYX~MvZYbvZ1_Ytf$!LI&=wNbGIl5S^V zG{FK?Y#Zk^#HTDHvVT7n3;`Z4IPTc5?bTQrDpA zQ~RgX4i=Nslc7X-e8&@gPq4Vv#Kv%5tN7d#)6YEHec=4$0Vy>*Xi@q|{5&E)_{4w{ zG_4vW?nTzOjN<6KyF^de#Oe~F1q7S^Xp!v6-J@|y7{7(}wK}nWNGFbC{1V=TlG+*s zk7RfxV1^Su_%kei6vLxHX1FhI%%1{^#2RoWVwewZ3}=AFGRPDoyrhT)xxxxBw!}E5 zGzIT80)3YYvUg~>P>Ip+#^`tBoK3jYM#ViD&cX$MQ@FOzzrsCPIEyDm|D8U#@-AHA z8)@K88OW7(5B5$E^R!jmli@6!(FU|rxDS6AP1ZXDZF^`GB;4mc^!M5OB%D9a-tW!c z>ka4Gdpoct*BXkjK8r@;B#o;t8QA%8tqT`!+_K2cLKVsvuz(`HhT!a{_3PXKVM2n@ zu95zAFeK6UM6>Q5OgDDuY|Z+g=SV-ZG9;0-`|_0czFY?5p|8kzqv2vhHC#i(8P3uW z?{frK;v*zPQXF9}Sen6kQUt7(5Yd*t!}60z=z53=#&_JM=C2kHn!2GTN%oTkYx~odiY@C&O-kpfHKHmDk~LK&a>qS zf69kUrLvFE6s(6pGu&nhS4$2bfn@#PVR43~$znSjE zAz_wilGH>z$>;%i0{8(q0*I5bGcI`;o?_?2@C=?F#?J6`lJfWzo*u!@><=bJfd>cF zN~$9%W8dOR8t!IwlsEfL)8}=KN(f~1@@a9J> zu!quPRJLMxJ19pwD3hK1e}p}UJ_q}BUDKmU$Exk3IGOKzIHB{p-i?E*wu$BB{|E#7 zEq7wucdY3>WWc6--2x+PRqi>Q>-ldC0eZ|8l?Dn8QStxg^10CGP~X@My&4Al1jKN% z(C2VMmkm7|2l=$>!f~y)JdST4UDIdi;LT6sJ4Dv@PGEP|5;=Y&a=g!J*nKDIe_>;C zFt8=qCxVS7*#5t;aVl1ZYbKRteTDG^yRTqSjOhCtf=y5{2|}dS(sF`LB-m|+Iq->6 z9bp2&CaLi(AxLT>%^=uhf?ZJJfu~f5@i#?{X9F#z`WlX4QwjD>ITscVNdu&Y1e<1x zM`Za<8Yog*IbH30oaY3wtq`Q{!SoT^;&=L)LXf--Vn4F_WsnV=XoFb0=3-A`*kpac zn7q3eA<16*ue~z-7tURNfUnCxxdK{*5zeAV`-8-6aj1M!+^e~XY;(V(zPpyQmOs-E zJ|h3(Ea*pbQ`Tdw_rbD!lB)$ge*rj7AhhCzXyK~nG}{Mdymu}hmO*J)hJWKnh451$ zn(wMl3trN+kE2@HO zu-nhsIbF&W4I8rmYdl64S(!D^*t&YU+FP3z&-l%2@#BX{Ne`ja+O<%M{=$#RFYA>n z@#nQ`amLD(U^5W<1}tvmopLxSWvW|~rp`0q;a@K>BBx1I`s%7x?A6b!zH!fo3~tf0 zBz}>Z2}A1C_OHxJ`HkVJu8h{1@b8J5u+b$VQ)V`Za*u2r9XKTLUT(fNo>e*KG$C>J zl8u7^Y-ZTOxG=<~AQji7LL8kV7Pa^BDEx@-*?>|o;{F2|2`;MvR^!Jw`N3)^c|Q?` z-NVmUufosoCBd-!P!h*31>K5ipB7tVz3tlg@CBiv3&P{)*@9r5@@m=&{ClbMYH)=S z4<5h>a9zC`Kf@JjCMabS8HtfEU>M-761?ZLzy*4&taOnI9LT_-y znCnAHBL5%dTk(uAU!PN^LLs;B-I+1pfLOG}HXf6sS%U9kF@Xp%F@k2?t9@&~i^E zbZ-*68g|0EGocLL;Oa?ctbq4+^z-JymFL;~Df8b0Z=S0Hl_x>@+4b;Ae=ZtC{pt-H zR_j4nxocO}9@vK;$TH{htS`%@^Qu)a7`p%Xf#>1Lz+p_7xG)^Qh9Xdct;N#xr7mnN z>%dZH8bwvg#k@S-sdh2-5(OogOsg?8!HpA!PuM^uYA)ds zF>OW##L%-#N%_vy3Z#5p{?Zp(zE&h-v2Vma?|Mtl|sK zT%6`I(`vEk{C6_afrBt`%BX2yGslgbpv=z+F+xXe;s3=v&FE3LM~=KbYBc>jy36$G zU1FzC7h=e7;x#n#)@XvioDth)+O#gQGYH-D{63+%<_r3V?dVnAx4eC-QgWV3pVHcn z=7whpPz%i0E<2_3+TEW%Pg@bz_4CJ*dma~Z_*KYu+K}EWs||1$%2sNyaoWPQjkYze zZ#!kr(Ze{ve^{LgFh9K35bshX%`|?m5Kq!9h>Eir3bOoDI>EJ#NvR2jJgh*oqaydJI{!hS2UKAV}6-R@R7Y zi58ppj7NMQQY|pBnqNSGfCT^Sbm2sRuTMZ5-)gN{dp?Yypl!)404-3X*Ofi_&Deq7 z-``reuIjzy#P>eo5ksU!au>mWM@ZKTJLD?d+O7i<35_`jiO00YJ@>Ba?IOhANZ9aa zz(agx=~AfjkQ<{x*?-o7>w$gXy8chj9cxk{_AX1`>@q*@^B?@48}kS%FIj@GKH~le z+DxQH>+z#~2k@hHB;T`fCvhFIxwWXLHn^Cy!BH$h*Kaf$rYCganQl<@Q&y%u-79i_ z%vV9xCf=8z9&`bKyz1cVE4twiiK7M#o6-HcBGmeXI4RIdb+e&r`DFd4ajd8o-)O*L6 zR+D1vg|S!XpYM|VY31n2TvSZMhNk4PQ$l~Yo@m^QRAO~{9J;kEyDVx z%W-zX(@)B62Br}IN#SR<$LN3@Zs2uXt; znV{^4qPIDyTcPYZ&o9rT+B!ORD0W27@b2d4Qmkv)i+w)n9kV5iC(;=VR#pYSOHvl) zc^pF08j>#gAC%5MSt#iJk}CscWgl$7XYos+yxdQU`Gfc}z%#uYZ8)T{km%UagSP69 zo_=btMqM4@B&K`rO25q$930$%Fy|prH=m52&x0ZpNr!CBG(*?tJzoaLB;6&O_GV$Z zD`ZW2KFOz&T)%EAKExfVGdFPR>j?nf4SPQC2581A_~+iRsCLieUUtKnoZJ2E{;*E% z<0rnF611SM>|d$s74Ap{FPQjZa=ZD2RpUNgI zuf`jQ$wPYb5885DxlM8qeYYk5k;vN8xGrqGcun0ys_`_rtGfEQDs7Jst!G5#V9E3o zaa-bN_XrCL>}LI<)Uz$|M~1xBmRjK3eZ1pLucMv#kBjE_NUm3)aIvb|=7G(9i;Y>> zX#Oy{#heDQn?^+pwk{zR9bT^)9R!mh%PWY-hNeK2C1)V02-TwLe=H#hPx^JJ7 z`VSa3qA%rsOPw)bpA85Kk8H>l&~KW(_t3Q22lufwDDQ%X@NSQs%(y4r9Tz*(>50Zx zfUENg|AYefN8cPFSD!YhZ9n^G&L40acs{0E{A7{|=g%L(z2B>iO-H9TsctuJ1((os z@+>BwssiE;>t-Vd<$O-^&&QkSLQaLV=O$nMF?;s@2{k(xtx}+}(=aVMpg+JjJ`l2G ziH+s}Z;=?t8n)%z z_syfG7BBb>f4$as1eMcpuJ63wrK>dW(&uc$o|#!P6iRNeH~ZU>6I_RNb7t;6ICaKG zQ@bwdg4A~1`rqyPCkxlqK}$}4?-LP`B!$Uqh~{K<=yram+?VT08+L@$zQy$av2Veu zlrYAuZ^0REabsX4dDoJiOi6ModAfQs6J~2p8FnJ~mRFwnPJ+qU!;r8TK= zf`>7};nvlB+qCiZ4KU`(f#k`Oa-yCSq_H0M-3sF2A3O*a;b-_#FslTGU@2}WAA&tm zc)jv2^d|2b*KJ7lbwOF1#2}-rq++D3+!$Sx-}zqxGy5^@t%b|%_--jhElaNMGh^$w z*cKt3-bc4-6HleEwSCvPjveE6uag6~@evUTLGoB`N?_-{5%Tn${+8wcy1zxrML?{- zWhxe>9+V<9sNb|&4-n~0=IRqye}aF2<&!6L2g8#ABS#DzG-4!A)c(Uqdb-KS5BR~6 z6EkL?I5B(12|_c8OBU*AEmhlNpWF6Wo7G}?%Q8K0Q$_oJzB6`KtK zhb+ZN?8S)Mh*^i2jbQTS{%8v#>s)22F&5k>-9J-8%K1Art5h{&6fLbS;Ze3$XYEGB z$Qz7%35k6?NO*K*=LIYLI64aU#v_Z=Eu3zO{_<;{ScV2Sj-Ry?{>eOi=&ju+mksTD z)@!vDzkIQ8&kgB=wRda(YQZH-*Sa%j*UD)&Qycn~scq#}^VQ6?%K2ASc;c|A{gL}T zU`OVSqU?M2w&#YN_OEPTs$l6N^}MI=nla-Wu{iSEdQ~LufK&*CiF3Fb2Y&pZdFOxd zdM#3Pi;T-mwuby>ba{(!?{uy!1}r%Gy?02!c#+&lp+|c<^tiBtn<3BdG+-d1QJzSp zu(5AKI|yX&qEHwwz@P8}Kp!mMYH2k`dIJxNyebIFp7g?Om2nQ#mb^@d%&q`X@9HItuY+Iq zz55va@NF%^6JRI?*#Lv^WDdZf@KB!X%XqdnSz2~;BH@F&Rzjf~tsH&Z_9|8kr;r@z zK7fGZN^jx%+UbrKb#C2AD60R;7tS8mS2-8158-9I!iz2SVfA6xw%hmN3SbMq7`CRf zrgOQ)+A}NV-rAFjUU%hR3*)s9)%s{{Md~B@o4Y;^`iuje@4?sc4ZQX8y*qdA-o10{0pX<=(dGHti%LJym26=0wuX&5d;uD~AzVH_ z|LR6|Rm$^FBGsxS{i2L#)m_oGs+(eAH5!tG@$eufZcKF7q)#ASx-2i+@Rn;%EDOwU zKdePir}&OLZr)xx;?jhZx^v3;c>EV3jL>NJ`E#ErZ??p*fV9&?tCe#w6cU(=&ma8&D-F?+&WHVF@H-eX1B zsX09-SnF&T^^IE0!Y3&o!6OtbCUoI|h)_G*-F3BOKxpC+4p-Q#7?H)8Ny%*szmZTG`eMb7mo=i%_ zl$m#@)Kmmj56FOv>plMSTw*NF{IvdNH86PkJZ+@|eFh!sjlVsJpEaXLuQ>uYh5s@T zG!MZGy4{}FwDp6d?Zdll?|1NX`k1K5MZq_0?xc8na&PpdClXg>u9h7dSp61;6=o zD%0+}&5-s}Q*`AIBn&#-8wx${Ib&MSo^wTEhW6P&{O2LQiWgj6)Uws%qk&Ofcl6)? z`52Mk$O*xnN78i{?lHGQHy9OS-q?QLCO=D8w0Cs!+lD>s`1h*!7GtT*Z&Z@XwLs2*bxs?^j`CR!Z#jp!1mLxk1br^OrCm#f}XV@ikdfXpwGr=yaSSupG zgDl<^6{~`0antz}f?YLxH-*=8%L#T(#mW=@3N!4widDeN#a|4&p<>nXa{d*=Zsxoz zTN~fKWiC^GJHu|PSXVq=7|$mW?2d}{BKerl_axX|6&p%;smkKrQ?cH7rVz%k`zjVg z;*DYNK2WjYBwihcJyfw+f(7%V2=++D+7SM}uy~Ji=#h9)ER82B)}3IX?A@m-wpSj( ztq>du_Dsd<5Ue!Ao~zhpIhi{kI1%iHig^&snqe`AeEzkC3rz`d$9wGiVNuTs7 zymR#_e9ih4iLfoCECua27Gi0&u5T)12 z@P+?Q=#`ucVf5V+E34Db<>!XuN$_U_s>Vp#X!puyZT;pe`6Z$@_?KLcZ{ z!!v3J1o_tsOlwoOcH4kD)Awu}6F#hv&T3NZl)Y4r!3YV(NPbyA!tbwsL@=j;Qi~Qn z5_CB2@LuksTv&yR4kuWmMl{olScp(f9j2<~E#xL%l zTeV0Z_r06wI2TR2x zcOODcAXgW{d)WPnz`fe~+WJkwxaK3q=-fAVUU}>H`KXb};SpnaVW?I7rxT!qdPgSL zZg6aEiw+9ctHU-@Z=m4oaUp zl<@V_BsU=4n7sN9gvDH4hayS$Ct&<)#|!H>g}SyFIa=qruG@;+zt4mv50C1WDDX)_ zP>+u%a27svbdpJMYi<$2weB;lK>(e*#m$L6?bj-P9N zS)4|)MF?+TSUBFm1#|BSW~XBDcmsc%#j{tjPB@kS&M*fR3&tCSV(eW<73)pnJz-dp zoOlHL%3*>PRk21Sjae*SF%|1T;$^cmimO;C!G5xLom4E<(2l>x)ghQ4u}MaZ^w_RJ z8G=)`=(fgkcUU7A%mu&faxYvEC%!6NVMZiAS)n+8`<`6>CJ& zn8o51Q?U*tUN%dkxQc}m>?eEIiD7I{qOhL7rb+p`{{=Vbxm_or20ksU2m5qz!0*%X z2je^95&oJq!qorbuj$W8Bhu5EZf_9_@CP*&bN9ct@CEhX`GQjK^mM%B=ut{zH9v&w zsojSPl2}%@-V(b*msk#N_4~(RBYb1(Js#3eDgwj>oV2pX2WLGAm<>VH|Czjpl=oQQ zmF{vUJy#nJ^&kAWPE7U0sK@W6A_wv2*)1N(!}mkqLHMy!UTLJftd#QN)0Oh#(@A+D zT3#v^&!_XZSv-3c>%?#4zcb81#e(^Cp%{DDQN?i2m zlEm&C!(G^W6|?AjjSOFOqZOP>XYW;I?-ds(nE2Mc`%ZCPZ^P9^d|4V0aL${f6%GFk)Eu#&V23StZ10QL@MOWcra z!CUwSoeqqfxIZ#_|M&?9qOvn%$kV}0Qcs11rxbENG5QS;^bzt5dWa+hyjKSNyln7HNM-YdF|O^=H^GP?UJZ|~)CW76ZY z^?Bu6Dh}N`cZ%s8+o_8@DYkRx=$KBOWA&Vw1o|E96V#+hP@jYSdiFh}{5&Lz`AA~i zxb{7R$BqqFfBhvB4V6hje|4vtD@SFdb zjMmSgc@md{@xI;Gh93p!dVq&`RI!0VUFL_c*VKn-7XGn7Y#!mijNvUwcrg}!*ck4^ z!ryC3o5C&D<`JGHeSl~LoTqe2XsJzQ?W3&=d43Ny@pgVK1W9Fzg>_>!~;*5EMuQGDDtNSFA_Mw%o(_XJ;nn(q{vY~Q%Fjq9%+&q=z+ z%%{JN^i|MnTbt%}b9%fkX1_VqxJQr1ExL5!!1zP@8rQgamoCj4$CxUs%P|9*-N+#v5XBJW62G$n~PNuM|mZ6GR;TN=>4 zb)P=1TO}k&pSm||-o1PCX5E!O`ao#|UsKl(6+*@S<-g@=wyPfQ$F7WuS{WO=Eb`*q z)?K@{ZbO8)q2t2H$R+gu>BpBtkA{u=^l99Xoky<9lKC;vTYX)@2VP#j1cmYPOuRzd zhc0{-#vzban2lkMOMAs2U1@b6fvpSg=)st0f^e^z^P5X;1YR3cAfjzRL_|Q_2>rQG z_A4MvGY@9t-t`+rMK*2_8rG;mWMqQ|p`lE#bn*i3F5!lx=I*UwHyycpda=8Oq4`Ox z;4$#wu@pB7pi6IUV8On9C$3vpt3d-l3$|V*Z|5eVNao8;J@MJ%kA2R1_SO;Ww3=Dl zc7#o+Sgnk|U9nQV9nx|%XKRQw?FCC50PY9nXuz0b zWhp<9E+Is8Un7NN??MdImy#~wP8O-8_Jw3-6NrRm*>g-Uvz?`t@=8{}Snbl!155k^ zPuBY57+8w9tZedbDxqhre}1+i_yHzMjpwe(JMh-6K!`*CP&~CG`%BZyx~Qp$M`_t@ zqM63=Qr0c$D;}+FO|bCH@rb3Jg{4&7S6fukRmn_O<;35Raqi;hpW*Rw9koT*-@d)R z#en|oosUu=j?~;_?F_D%E?>D7=cq-9D zjTDiIjl6#&*gS0mrkkYO?&wF-ksFkbHlT&*4>uWSZ|R``^||naKv6U>Hs1FXpl@ z^01$uE}Z}JGc2xq_=pYn9;CG%Fqq`gLC%n88rrcu#{UM!Pr5A0wG3O4Blxy{h z+3eNiblgB}2=38xRk!|3_KoBWT%Ek{DJ9`bOm~yedZfrSOum6#P!f~X>)&Nq{7Sf* zp`pQ-v@lDuyvR4juFJpi5yLPhd+qPq%#ZsSLItX5OAs4ZR5^Lm+giDhie4c^*V=Pj zH>s%9Bjz3G80{I@^FwT*DE_FQVykKY1ZRWzkU4Wc?wyd(Hz6SbAK`myQI?IEK^oha zSx)?GC~#}YEhvD0-WqZf|F}DA@Q^{%rwStCgN+t(5?HclcFw9r1}7mceP-u5-lXS`K^>&*Q{2e6L>xP-D?t2+ zim}yidr5FL_hGlOCu3ULI=RuaQQ2vE;>!Lwd(wRT`%FUOH4r8q0lx#;w_2U(IU0C8 ztlOyo?n|>{U^TNz`=K|X2-*H#%6!cAb?4XcYj(&puwI^tkn&E!==|QXi21oR?{}Q?O{Zw7 z*ZHKwcq?dn$KFLl4#!nr#N)*BnYV@xmC9w^gkkLUop`)q=uiV5XU=E-@9TR0oI7-= zMUP)8dA%P^(vLUt?8!Lx1M$=@u5adJsgyip7r(}R2iF$_E@7uWOo?A`!(Z_&L=yk! zQi~WR{!T7|#P7Sq6yND@`b8-H*N=;q$~!*er=Sww$HmW+{85;KVZ`*FnJZ^_k6Pf6TlK&LigwOw=U1%Jk z{Ua@hc7YH^`^$xb!9$0B+mJ79fbB%am$d9yOBZXBc|zJ+I3lm#!_QzjmE3Y9kol06 z73?(p&|abbC(=f>Tz1McwU=~NSzmzgWg-QRqQ6m2yK-bF&*Y~P>1uA}(Ed}7>$poP zlL9HE4^+%lChCdp)~e67sepFM>%`yv4)sYm*e@aB094t%8(%q)rDMfJL(>ut_3L*q z0eFh<$CviVX{_7}ku;_%X@JRZ-rHK;`ejrDe#?G*dG~Jc+E1F1LkT1i@sGT22jzDM z*O9|}z+iMKqDcURY+wcayMVx*WKsi&w8+EGE;xSt(+O zZ;2AVS!v|23X;EoO8Djk5iZQqD2iP3OT~rI=Uq&R{X3;BRHB506rz78$G6vS^erLG z1Sgs-`ro9frev$8o-0j%Q(8gB#Ld&>JMisU27^lYf)jp8vxxvr!|4SI>e%>M#}_D= zbvA3C*i=AS>7u{rj|8)DjdBKouCQ1^-X?G30z`j#AN}TW zDFmdcY_ab&mVVRUSHT~r<6|06sEd!0Ujg*S8hi}u8o!M%Wu;SYx z>`mi0?1k!34`P9y1N5#&n(nQ{_rCVcSe$9}XbjS*6(*zkp)d zw=ZUG;iAPNTy)l!i(D=BT|(#fl+K-}(2rb}M#TZ_kFbw@&7{!pr(CqWTo`|m{KtKx zzmZPOn<{xVfB(wa|0Os2HvjMB0i*vt>xe^F4Nol+wB?O<5j;2>vLj7!bYy>tFPsLz z*OzWRlgKanSE9S@mS^jSwGB)hP71u<@QD*gfIs<83~W0rThF&?TBTCc7Dv-t;nVnZ z%VS4dG^t#rsk0yqgT~Nc2z_nrSQ>Q*K8z0xle>}^jvZ^bA4 z$^d4(<;hw8T;!V?>vNjua*}k1*1-~4e!I@t!TR>T^ zko=e*!nyH7^b_TW`iacu=DcfbdRxbdyt@m}yNG;VWC+r65_H1B6UN~n=rrkXvV56L zSZIJHxU&IwW47o!sX(dP<7KZmG5+srijjTNIAEp&qJd ziZAOun^hWn7xVhVy6(zP7R$%QXfOPHTv?afMVbF{rIy3n$FwiX-P^(BenX|g!?5#1 zhn^qy@S*ZO?7~p!JmkW#VdsYoIX~>d1NKeOA$ZBq3&X;a;bB;EvRE@TIXUzJjLIJN z5R$_PB1Au+P}nGt4?t(Uq~g#EiAjW13?W5cCV%hWXWxv}(xDfU5-$uTaUMP--!Dgo zJ%o|rVIxO|g^wf&j1->Urw=4GN}c@DKZO{kpCtts%?hm@>xr?U5M0~A*W>GvEhT~r z`K3R)gCqSrD9O=yZ2z1ZlayCZZ2bu-kyGE`+5nGb@*XwN{$}@Uu`UMtgZMK1L~e%u zj(#ZjjX$EVFUi1XlD8x|uXpJy#*Z~UppKuwmm#SR;X3k1fR|(}XY$7P{7G%0@0C>U z1@%%+@kDgW3egKmN$<;>_Q-r_kBsS{21Nf`&>xB}TZ&)fX}50TY54Ur;0Ip^ho#HF z{>Gre*YSt!PTYO`iJP-a?nQZAMx)+TqAr7C(EsLA{Ncu6@{T=uw!c0Ym!a|HUc0zC zOxBDq-F@UjzBy}$|6t3_Q%sbnbN$Xk6lmw>$J1e)epZ>~3XE3gjJ3tjT&<~+2y zQ5gNrg9}TyD(R{E(c`Gtg*Pe>E|fDO6iRRDT+l+)d9I&4{WMNLJm>}?xfC3(4>rm` zN$wJK2Zwb9;GsNQo(*#08+iNqW%$GO!GlTsr3z!pe&q~=ETgs5BIu|UVEUlwg(l}X zDB-PM;im+6K#E`8FH@ ztG3~2!~-H}^)pM$nwU_UpqdU%6KRIOOL*zhFLZ1Z=t#&^7P-Z11u7ieUrPen-l2TFWUqFaNe zd*)Uww&VJN4P=N^Xc_WsN*f_U+h3*aYN9Q*HDqn!V-?z&Tf{&kZ4&Q+5+7J}MmuXW zmfCXt_*lru+9CxSX%{g()wa@d%G|9B&#q1spAbdN;Ia>jO(4UW>nChCWCc*WLdMvQ zrQS%&kqqk~)nNIw%=(di8pCXb8w0|2!rkoB=r}cLwF=&Z*(GN*9;uRlM0tEFcxW~UwoF)Uolpn zUg%{3e}es1FvRIS^hpIOl6a1+2kPvGl*^`&8$B!;u}c$>;7)Pnw}LBi1bzcPCLhHm z@v`H`p%XmgNS_|+lE2TO)A8eY87@gekAVaHf|cM+&bYmVBe4a3PySip2z+V%dhmu- z@JpZcAFr!PWUYs)u#(WS&x0b_%TIn?Tu<{9uTQslPx7g(0RJ@tba(M0&twQlp5)_c z+qR_@xJv*2u(j0HumAmbeSNwLRZiQMRnO9*UcK+X>Y2&Z6LI``gv@1Y7UnNh$~UYj zKRe&Bc7jK~VUa@3e8VORP4f+#%1_ESY&kzQ->{QX>HNY#BjlS0uoO_fVGhEqe8XJ0 zUHOKQUPZoPb@=#v!v+XJ`GyVqkN1*YK8ZhO14(4?$=9&o^lNJ%VDn4*{fm%z1}xD^|5!2d-p>uYL)(1m=#{XqJQI z0MW*`y#rRL33#Gp9pZ|_kFh2Yrw`|shcQ>h(3}Ek%^myA8W{`Uv*MY|W z8kOf5yw3}Tq1XTCqj|uH|KBdA=`8a9(`MUdn*QIY|2vrfME#$v(x1o;Z(gaaUO@p& zL);Pd@9F(#Xz!NKJsRmaajq#V`^83LE()8pF2Wi4Y&+nd^VA$>OxjLF^<;owc@_LY zt{|#H?-5H4O9pu>_wl~@X_+K6`Tr`hX3%Iqsk2?g@$gHgTPW)F5mSguiuBLy!K2)`7C+^q{Ab#@I2$U9WDC zMilMr79Zz#8*%f0%OoZeXM4%E(Jy)-pUqb7go3hmG^0JEc+;y9k<0l}U2ZxY<12Ee zRF@|wu7$E*z7u13{X;lr&s3VJKkRikgJ+Wu`(zolJ-eGo!~`x1HO(DZ0MywSy2X z7>d8M4gId>4@X|QpcPKsow}J>=~w4Cy0MqfeOUCf3ludzz>^yaWc7!7S5+W?I?nJp zCKOLr|FPtk;OU@mA;KsBk)k?E7{#AP@jL*Mv$hG z6E}3Ad+Hljd6)TC$;$i$YS*NF5Z=qr#SYY=6?Tt1&n0*h7ZIAJM~2E5WUo<9=!Y!j z&dNizRv5h?ZX6+WEYQ@~9_jC;x_{`?I#4R)|9(VMY0wE~-T6Ae z&K&9sg%=Va*zt~hM(;dEsjNO;))hcRKF0d+wu`^SCm3L|m8JLDLZp!)(Z{vq_c0ZE zA4b&9B+n%Vxfc2;51a+NAp832xO*3HPeJFa4>I?+i=zkP!2tIx0p^e?b<85u~ezgt6>(Lkb_^cvE&U zB1TX?G8;&2%ZF4!PA>e)DzwoNloo7sAtaD2L1Ask058}n1k%wP~;Us8zF2icR=?Pqi6Gh zW@hfOC;sIVt>#I^UxqW|0=@&SXt{feL79WNJy28sxd_WDXabkINrFnI#)pf`Y{;gSLjr8#No2 zkG;ns?*e&3@~YZOzvgcvu?=icLJm6hdIGFX9Bb|F>FpDc1zm9WA6*+|EMc+KUB0QZ ze_ZK)^kmBAP%~f5SZAWlPVlJpHh?n0f+AAIoFDnk^}t0i}dW zcpZRgm6+0@1oENyBp02Ms@%W0<_ z_-NoKcQggX!$lBo4lg@Susnb8qR_Vo%qk&nCVG1*my7oC~;#&X*PN<&D$RpYV9q*9vuCNBC;LJaF;F}Gj%;OSM%c;Yd`?JW+F3~PW#HaZ5zp{bqb!LN7`&V z7=)J0_}8mjxz1 zan`j2or6N&or_cyGs%%}F~ZCvmLqk+X{*~L%u0u-wb^b+RqGC%fAsCSGo}0V zh6+#M;>aQ+1mmZ_16_93hsk>AI{#M7#Sx_ZZG%icOz&l6*S-Hz7KgUpl>O#SVSomo z(Wt0+f*EJuIynsM|mXyeHIGq*2Hj`j3fWuCP$%d1gkpJVOs z&U^MJ{x$+3pDQN<3hxrPUz#t@CMV*jYL|Z(t43*9bTF$JxD~%PD#So{u&@hbp_Dc1 zR-qCpNtsA!Xz*7SE;QKQQHKyoq}1Q>%Oz7H3pUK#00&QEAO^C-lXVG%=uO#{jzVy9 zv|LD^&P9pRM1>^LC?V8t%tW-!JhJgqcpWb%PNu?);!&r$&6Xh0be-?A6^8@lDD0i{ zioh*>9*6<|6OE*%R6cz^f92-wzFGtdRHW`Dz=2}l!THw(u9nH8)!GMWn>v+o@U zRo~+eSSz(~Ey@_&Y+7%6xb6BKj|uB?Jwz;~UN%Q0hHrq38f=KkNKU;ErFNfBZ!KsX z><1&f#mqylf(B>4g_6CTj2U;1Uy6k#pZ*vxD_<*>D$6PwFw4^wbmT%u;WGHA?sC5{ z;*6p4Eb)yz1K6Q#|C}rJ2}L{7v3YA`{h*1nh0Bt~F8&>>b`$?3&!X@By9x`1_^ta{~{RmlWO)$HLgr81C7+}$U$MycQw6RYO!#4UVb zD=^4TctE{{&7{$!7F4(ir{SpCi#bUG0$*yZkn}gP<#CCHwe*-3=zy&;2t7XGC3@QI zx_A!Eh`HAM`Yuo|G&Q^haKyarWqtEa&P+|?ZhGEq+f84Q3JNSd!L+_9Cp7PLCGdmbVeH{^ zPXc7wC#@rkJP>@7jhG)}9KV!e*!onXam!{egYIsgymWg+AnkvQY2+>%yZ~FCF!IC* z^_9z9ACJM#(A_H(L4b~S{h7q~D`uIs89$nHy-Jh275NqJ93w#7E3ua`mHIh@|}#6CELzKXUhdy9g#z-!5XfbuTo z8Q2qW5YMh1abiTTjrZZI@iK3&51+~N{&>1p9axq1Bk{;|IBG<#28~E@VcN7LJ;>nF zbk3(?W99Oae2b^WmbeoZm#Pfdd+~7)CLj4Ye7k&e`Td`@y069W%PU2LSvfc#D$g)1 zvxZnm_wpli^2?bB;qLhPgR>J$cWQ_yX1?*@XGwFSwbT|&+BFe1EjVKGa{)Wd=?^0- ziD+h;?QY8snWgBNGjq9*WI*>f@n;80P{HZ6c|Q95<}xZtGf%T)W(nNl8LlwV)Lt4D zx)YYdD!;StW_`{?-hg!5`IfSod+SR{H@&XEdcSS*gS`#KXsc+f`dmmo6OW(ZN!~wxb91f;?V4dhhH@kWRoI+&5dRWO zHNKEP(2)_5UF#yNwU*tx)r;cwANb%*8PYgk+vwGP!3UgX*Fu%Osmd_)^ ztHivy&&oRD29?N#Tn z?Dn|RE>4NNv_RPyHjxL#5pY0 zvFq@;wg7H)9cU(t2l3ym+&rJ5+K5B^M_*~yar=IwPpJVm?0+#{@2=UC+vXpH=pto( z_RHfLQHxWmKY4!8z4I{p;p*<1$zL@p@N7Lv^K5}PhsQT=#pTU4W`m0}2N)cq$n7AxHa-Hs#AG`Th&O)J ztgw}{{HcObG1zE0&B5L`lAgfiXr=6qeVa$Nn_l_FAcwp1Q+M;jZ0@T{Wif`{hZWiG zPoo-F{T@x@T6%iyPmQVz7;h^}O2u!c=UE$?8G;sbRmCk`phc~F(}Ogj_+(lBkPRMo zUZqyLFM2g=$At8SNK=4!aojIl=ovZ8BwYwLmA&Nr>*PR_gVAJ!5a)QND=Ma*vEszO zr)nV4rX~)tgV51y?u&Xc=co%?*50=wIboXC&i&mnX|?k@;UspS>R9h>s?k+~sn|j2 zep|EB)!i+iBDbZy0_O<4(fpe5!094$=-N_Ol<95zJST_gv~hyerx$77@#Q2k94C8! zTL^OUxrz?j823uXrr#X-S3kBv*Do^Y^wiaPe^{xCQd;v10f3~TIR1Bs6NAPQOeT1j zw3ze!oU)Cb9_d2M$yKL<-wyVV9bO09il@OrmR#=g3|S3ayYvoY+&ab@q&K8|RAwuD zl1_Jm=nBU4xyudByRl?5ae8pmKcse(oZRd0Cas;0e@qD(&W46NEBaV@3fhTZ$(;vB zNpm`#LYjWrM9=U$XB>(tjC?nkP%QOZH&#mv;l9%kWI5sN@TH{+huimUYH*6C;eXlkGAYzVPka|X=Wz8i z6|yRDOT?5nGwKH5*EK(>Eu~VFXAEDC&_M zx%rdgQ3hCu+wp9Modp@oZCJ!>s2$4hot|CD=eB-F>aaTBJ2}W46KGdr3);bKJ{Gaj zZQBY1+OwCAbV|h!Ivn9qQ|8r5g0F%OW9ByE|fcwQe zW9X7#W#;U&1utwJ?ySXaD%|w9qCXlVLU*%7!~S{dI$z^yW)G$4!$d}U6SvOE1xs@2 zQsX*B8wWcMixBo))wZ=guUQcw8-$j4Re?c%_4lZgfP5Wm=9%)W3FTU4WHVWwHI<8& z2iY&5I_8cAL-JIFmUaDy?MSpPjmZAT9Ab`L;EF4(_9a4|8BQT>q~5;|VR3-2)+_vG zcgXlUE1otTX+Qk))P?2`DrUDCr#uwE>1BBG3myi>#mvUv{ls;Ay?`vmopj)co^DZ5 z@Zxwp9N!THVxygX{o^<&ArFmvBA=*8*-O^$VLXpb(va(Crqr*(59(-w(<~*ED((}f z1>o9=?YbwL3$QZ)fJV**c-MC{G<)0emrE9ikF_t{J(|o8e3}PPE2gQQx3V%@LXwj2 zw4OJBD4iKxXknX6k42L0$=WV}NSu!3bar}oDd%tG>z!|AkKOIkDY`NgHxf8?Axoca z=en#Kda~vLj@pWI@~Qt=qtMiPS<+6k>|w>Z4Y^*u4Gv>zp?cuLqBxALi&}u+-mBq} ze2#Mbtsz2A*O;*H9bUw-aOa=EPwnxl#4_u|e`z6lO1az5ulWayJM{{aS7GekF!A_- z5}Cfm2MXjA*KT$nxV6vcxu86H57XuYtD)^ZO%D|IIGfhaX*V{1bV5kTH!Qcc)5sqR zZ2XLi_6HxUbfC=ybb6=qy!AnE6vATBw9-Lo4&RS|vJ+PuJW#&BP-^K|a&8pUZ z^FRq_o%S~IkE4Nca?L?YtZ%3_9w1DL8h_(K)2Z?p`|g0x2z#2!ul`f;P6kNxQNmpa zbW8+DtZv6{4qteAMA3jaogF@#E#Tv|>N7`G^b5U#b16CwjGC(jE@O|4p)AFJ9K*Gy zWZIU04&3~v(>KUCZvI)`B-VCrYbz;aRCdA(BwZlcEDM~e=!|#x^0Y888H~$I*#7?0 zs1ft#uAcR*pE3G?#jrOh}WraYF z1pCj|Ra^wH2o3H#U-|c5>g%S@t?HOVk?G0&ncU-LgUl*REsP$ZSwCMgqlB)H%_7ix zRge>C)eI&a=T4==r$>`14vaiOQZZkcVAEC@N?ThvYafNqjGMzCPESaKp)Ny4=AL?~Izy{0_a=!KT>zh%7VW+VF;`MjZv2 zlH8cvT2*FC7e3lcD2%k@;DN^=BOyuS`6>1oRuK@FxwA+qiVybnCn_G&xZ-Kme)MO%+6?OBiM9XD-e32tiWTJxXNfwO z0X&XsDqaTf8drmQijKr>##L90Qp=xsW9!P74o8hA%6UW!S}aaZO!M&&4pvWln(}i} zFR{1>@UKL_s-N-@%5!V8u~GbOBbXKP8{-tR4d~no%;wwXu&($QawLZwM8PR@HR3JY^X8V#+bib@O^bs9)C8GJWUN)VGLyG_tAh z$e-xlMo$9R~ zlwr`I64i`m^Wjf%?T+RK)Qp?`4r#36PYAqhC~=N0Uu(WFlhL-r;&WN|-D%!AUY|ze zbe=RHG?aLWNxLyY+A&(~0|UJAn?Z%ZRDGLtLu|DdR(eATk$TAr>7m%)nbK42$yom~ zEZVq9e+)0r2ucvKzSit<-Q2V1ezFyY(;^vcm3&D~b;GE7D= zjq7Ak;{X_@ebY#;u{f-1&dU6E@mC6xfDdPsz-31`9q64_GwMn{LD7=@u*yKV|$~@Eo=tzQKw91 z5o4yitcZ=eBa-A3N4~PQR2;#DyUH}#)2!shHL0w7qe^|NZQawD?0HW!|iJ0FC$vGJrM$aesFHlU%9W`ZJ(Mt%?Ol zsL=uoTvlzr(U*qu3tIhEc0WNtvsq;mpIca2rJTt2lw|3vB~=uqAO!9z?YF}bD93uh z@T)df+la~5uf^9bUty9K^TyfL-{9kbK~YC8MD^ z$d<(unX&tqutxZ;Dwtg3(ty6hd3Jw{28f+4N>Zvw@J;HX=ns|5M&bf%7Bd{I@=*R@ z^mbXg!uC9gea`m82)j4Hk!er&R($d3A!!Y;tW{G~hB#me4of%#>Z^3>V3bWqmEFY>NmWfiwC6G4}%LH;$%)xHF_V z?22^YMM^5Hc;{07E|BwTWS#nnzTZ@)=Np+J+?{8&W zJsFuu)F7Wdj_gA1m+fHY@h z8xrjfeMmb}m#{?>c&I%bFp<69;w*fQ^4)gxtt)i(ij}G70#xy`r~k6p-Ol4^vFdS0 zX|bwnCod#$z186*w`l!geBw$q>3Td%h$&)FOvTVB6V!Kn?{zoURX+!hs8C*cpYYqU zJZkhPFi$3vHH&n}cJ^NVnH_gEZwY(B)LR@^=Gp%mwxo6;bZa?6LESCzGv91V#ifWm zZU!*`Dq{`bFtLYlpOjs)gnm60vK&IZKS`bSU9i|Z=cpn+*#beOMNE0m%dp8XElzmC zwCwct)!hNU-!|+qW3h4-a=(UEe^||4Am7k%o=WD0H0B zdOB?@Oxl}grDt!-wqge30G7}@W~pleb&_k~qGTv>E1H0mn5x5PJIAOYWjhWFRJLSh zl_|GjD+)d!6^6w>Y-hsP2LvHjpo2*#?}a^{&PY-<0;}Ex0#oR!^@92=Pc9QJ2QRi6 zd2kSjS+VMyy%ITWf9^0FrY0RPxVW@<{h%=J>DSg`>V^=m2D6*Gm0~3qOr2&xK?L3+ zxj4ZI_9Us|*7BK2*OtO#6HL+vU0w>OTew?X`TEZ)cIk=jz_EIdNb;XOI^p= zzB&q8k4438sW_3owjX`&Xm3P(l|V>V8uGwU<1GtjRe$cIx4v)ibOAzJUm&#it|^ZO zeMDcqWV2`~c%RwkmV!Ek?GI}%QP%5n>rhm%uD+Y&m%rNJ>$oX`uiI*%C(zGr$(AUI zO$INEgqZB3pQLuMZmEPO82W{KRSmn`WGz{ybF-|heo5r+l{O%UjUr*j5k(%9|JuZx z=n6jAZjXS>PlZm~AW-3XBydd!eRpdLxNV2>YKEMAy21Nq@N7f*Y0bYtIig~zY08k2 z;%AYIF7W5?G*0w_?EA!faPEgF>{&ZHku5(ACLO)V-eBTy+VB~Jbf;JF&t18!t{RoL z;hQ_7wi`NGR71f{h3r-K_I6=~joEX9Bh-R`exp&Es=m`BDoZT0QkDm!rg+UT#^)bl zXvxg|2&)F%Kskm)-*p-Zz9odW%;R)!47ySNcd>GwiiBu(&GhAb>%M*a62+Jt3Ts~j zOSV#2YSc4>2{XzHea$KrI87j3r!O zU|6>!FlD@67X&w|V+o4(f{~N993!3uz71IH zyWi~F{+%D$R8&@$T1!OHk-j03uRXdi{rT$ZO022dpS-9*#MLPJ5}2T+4OD}T9q z_JsJSa-v(Ccj>64l{?Sl1i@S>t&CkZJG9lB6U3KZYacxe+stt`3`F1qxNX)D&&-9`cazf`0`LJN!s+ix8lAry zYi%Y)I`RH%p$YS=&-~K1xvz@Rm=s^xvt?z5>X>;o0jeZ@4mHGE3wnf>J!3nqbeNR! z|7`A(=R-rU-o?%G$JpfccipZ9*o7m>ZGYczNiKX!OgIBL+pr&GxAS0v;-j}wU>BaQ z?g9xOh&UFb4WFD%Tj))2Bp!MA@-h62Dp+p5O+#x^5fRWZqS|(cq@IWtN{#Xz7q;!5~EtmV3mgZ*X1tO z)1i}$TGc|gz&lLu&7 zS3<3^lR10rW-xRc-UH5;-;3d4B=0~2*X+E)Ub)7(A_&i30Im)i9UYj&&hajUU4OT^ zZvuK9K`j2jpJ1soc%tdRRzO6^uIZ*A zn(`Ki_*iW0KG`+r`r4I;K)5}MdCIiL0#*-99Ni~c(4Q%)^ums$nKXxW5 zH9%nA+3s_89R$>}eev0dLIVcG{s2x9(PlG}qwTq3j~O5^g0KB6qxTwy ze8rMq4JkqDM$_O+%JM|r^!^NGLzT%+RI z5R)+Fv$<=kp-W}ou%I} z%Htis3HGbk`Ta|mU0I zdx96BpB1?miE}^U$=zew*V>FCHTL#Bv(cP@Y$IkZ%y2-FUM*HO=VS5(?I&7TS4w@1 zfjDX``w*r9=?NW;{KuYU8SQ##SQEOHdb@9!;{o`j>VB&VrMcTT7ZZ;F6P9$#x}w{9 zznxs6S)&!`KGKF{g|Fu~g4Gw}7+Ycqny^8?tHNU4)l_sVfg% zi~_M+Gpl)^{hksN4>RqbGcT#{NpkYbqEfvie}F@*w}39xpkAdQ;YEv0ikzT8F<;p( zrV^g~`4yHvKPhG$^za@H;${lSw>7Pn3f&c|29yW3Y7FQ>i&-T*gIRn(dEIMSGr_$| zYkJbf@hN2XEKksQ@=5N(0R{9XE_%f;kq(P(KhXD$(L_w)Z+j|YBFDH6U~6aQohck> zSg$Xei{{}Tm~%{1r#$oaaR%oQLS6cgAIXNFmy=%Zo9~qDJ;BG!CSqD@9&ZawJ>xBL^Et|qf690g=$$eYe?-w= zimM|61pD@&zcy#CR+)RFtOW%wQD1eGp5#7zQukl9q^?*E8te&F7xlT!O$EijDx0e% zvYM|INOc@Cbu1 z4Rm|Ub-h6E{$i748S1iE7D!X=Q5}CN3jwq!Bl%SnDC-)|!~Da@{K%^3D4O&|!g7Zc zKhA%y#=vTI58Cg$1D%#FuJP)=_ZirY zY$pUeYF8u=KtEgG@xXeHN*?nOgQ5*g{4pfUiZ~_a?_-kZEhC5&@m@)`T01IUCgCDf(WNYEXWIQR70+e1A^W=ncp|OjZ|^YuM~oCv|G88m+_M84$__&p@DGB$=m!ej26+9F~6&oKUqk zJG2e06iVKL!rr!2EJBah9tz}hJ0UF0L(3!CPV)PvMnL$L^~(+z7`pG?9s2+XsbHj6 zsMB!xeQ-eBNDJjr)gbW;t}o|6W%(q7Mh|aFI0krYkOz_6Pc4P%c0$aL>nVCGrCC#Z zw2nnGy~q7)k=$WWx2E%HT>!W~5=yPQvi&Kjkz<>V(0lkYw9&*3-%qZ^5R%YbuKe-h z@5!JY5eRWY#QZoVvhSe#$3dG|c0sG}G@(f!;9x5v$`3=-lAd&e?7o$9;6W90JQ;7Najbt$Y0pUaivVl ze7So|!K-;Wn`3QxC`n&_yQZg9NE##T63uyJj`F)Q-nB<4gzY^0q7maxp2BDI9MXJ} zgZUY*i~lMe*KNXu4~GNmTUKKVKZ>dAq0Y+1ZY~9WaC8$pm)rgp-q}j>b*neDZcV_Y z0nbG5nB-tNalvyY|8uxyB?X!`4g3A#&&@wqRo5|9VgfItt%uom->+3RB$o<76Otp0 z57>xGY#BR6vCe~eR_n1${QE9HZYV(UC)~t)D4)DW@b2nMmwH`2E-p(VkN9?l1)Hmu zGha%zet?{k(ieoX$`2nchSQ^Gi8MTqjt-6v4iA33oaGL*$sHW%HnBps1DlhnJKgbF znA(8e=l!E7Rg`3ryE_4dEq2D%ZK6d9GZV9wk=yIzHmG@)DQ)4?+`j2NFFO(D1v zYKYxae|GNkB%5fzAkv0pt}T`YG7FSK9qQQEfs&xUjoW0hE$;e$t|7N(ehVSW4UI14 zAPddCR2JLIZwT{b;MwU_)xBBkJ>=PKHhuUh2*}Gk(zGDQWFdfm8>D)NCH_t6X&CvV6QWAHaU-*pCZ-EruW*)CPWWlhRe%~h*8dO2)< zqq4jHKQXDb?e_l}+)kXi4YIe=gZ+pj5*uJa<{#B{S@y_62-;--rdnsyLTAKPz5cRL zB&6KdIW^%1yFuXroDdOB|jv= z@SeiA?KQvZ8$lC~s3Hy6L$iv|#7Y{eK`fU~PP8Dw2Z>8I{g4Wc$r#49cS` zfOk!;gB*V%M^e$LZcfqR7cKVdYwh0#GW`$wHb(uQz5$Xi&&KPG zi^C>IjRegH3{nne?ide1KDtUBjA{YvT{I@s{>Y+_pV1? ze{~$c=A%v8?07l$`S?7#${y7Bj}2^c3Arm2$B>Qbn5jLV&gVzxziwTqN8`Su!tO<0 zxO03(ixjubc}_TmnzGaF_BU)U1zj+J22oq(SjJXD#R`!pu(-Fv7_O&QAuAZhM@Ynf-34k^qpE({NFIxUA>X;| zlO7`&TBct=!2iP^8O_*aDHBI9$@*GyCstN!vgEugDQ!9-!)N~FZoBX7nHBV1r=GGxD7#gCAZlgd~1~A zb=aNw!q~IgxR~eKBJ{GhJcujc9d%I+27oE|bHlT1FJn z@4Jo@iK#t8a@FkBRj%k23bFwN){^~3H+cv0C`z*FkuwV0kS3pm{k|07OK!WaI; zD_XNpfr=vS@k%j>02c3m2(rbLt-E$-&n0x94oF)(O)!{Eou6hNh|w9J&JR8IZrgg! zjC%M)QRw;djF$M95G!lDak)C!aS94)$pY{vdoAs=DW*PHpal?3(SDaM7FQG9+1cNo z*S_6sXzm?=yYi*uLVK}8EA4q6h$Zz)>jAE{n=1uJF%_@#N4uE&aY`;NcgY`mGtbcf zbG@5(dyJK2oRPo2YM>LOxp=nwE-Y|2@vP^FH+CchS(r~Bjx^gGy! z4$2=sD^uQOI0jOV2r@Z{g3ArR@`KV`VUF{+hsS9LJ~RmXR6yytmUc9GLQm+6x-@M2 zJ5Xa*kx|@)U3!rRquBBB3_yoY$in?qiZ|djq~_Em1q7dU(W z2SJPSB}t+BDN{d0@C&G)Nv zIIT%==a-;Nn`Sd5s__HU(|?e5FibWK7#ntjV!W+j@{33gj*i4^pmuiDf_B0KIr*6% z%fjodjDHbiFnt^S_03Gg*WXadU`vD`fayf|ll_mXfKUxkdz6~1l0hpB+{!0(wxskm zNzWZ1;J-xPc{rf-Px_VDNa*)IA5xc6d=W^n3-(Zuwf$*p}has(uN7GhId zG`0khg4Z&J6%HGLOxn)Ny`b*kfYGj(S3{yA(k_$!o;7$CA;y@5dSAl|nU(Z9(%4{^ zNA-X-vm)Y-5b5V-uK*?efo)iieT+~=kATy5LQN_S5B{c|G&e9sJbZd*SDc36|!iJc2xudwQoy=&zEu6xy#@))%V~ z&$FxjlqFz!SgRJ&pDBB25;Fbm{7cD~aGc@oIKU2n?8l;u+b#AbemGPF3UQo)?WrcB z$BOxX)%^h*;zmnuqLUl8B|y1#4V`QG9m?2yb!re&>Y{WW%W>zk&6i0G*L^8bB%1^Q zY~evF?SX*?tNCVjP%o6qb7B)Q88t*MNhVuDfwt3Dg43FaaJkO>UHe!6(l%h{|v(^4GD+uU|g&UHt8=46hOM2Z9Y&)DFEeu}mAJBm_d9Nsq z>I>y^6k3J(v?zPT{VQDIR&e^e5Q%J*v7^WzBZ{ynntH}eM3$Ar44nM$%HET@Q_lJH z%YK}#?_YAattY@2r0D+iF5TKsYl>S)od{c@9NsuKCB`ffk_&b1#?Hz!O^*z-%yBOm zjTCe$NhBvb_oEP0w+sO^vZCg{^Ks(h@nvWr0h1A<0%#zyv3&Icc{2lGKf&S26RA7a z<__Tac$<$j;oXMPsZ)=f;o?g(SKq%_4vFMEp^+OKcE`&g@xM zmQ`>kyxSLk9H4xyEY%i8AG+4=%JEZhy}D7({P8s7iJG@PgM&l-LVUXx7qfmFTGifY zpn5l>?bY3CK(lyqP7E`XF7$g77=?!np@DHy3>?cHhp?0Fw&!}<{A3vX2|*TbZ~`5s zKE2B7L4|?3ei;+}$sW*c{@{;0-h!@hN|Zc}3v;ZvzoN(Z6!NxFHl!eJ^kf#1_!Afb zg7)!q*WE|hvN`G+W%$|(dcyB@!5`POhZ)vbRsHF?G6Wjj3-^R8>X3HI>4f#nEKGYF zohD0%*yo|v(i2B?Rp%tCH9u=TerfYuF4c|{_za-=@!0g7J}N5-7)dUSMMBq0my3R5 zki~D~hh2E_M}eLyvwQF}Jlo7rY}=x2Ir6;27etx(zWpfMG&VELm4{Tz{(ZBz(f?~= zzj|(1w-9R+%%$xZR^c;e;&6{$Y!Nd)nnk3DrVXldrG0wg6d+Ykiz=_CP1;;n=6&ea zU9Z|1KWS!j%{eTEhlA*cFWopQzEtDmUoy4vj6c5Wglsxo_Cgr>nVkt5(XDK6ZK^Mt zy%lD;IJFU;!aD`T4yNRSkuN!XSADcetb6yBV+x-OL8*Q*t=ZTv+Ihh3` zF4M<3+48v}M$N1}XO_!P=u9`M77grD{p5aCdZhP4WeMb7;VUj?lP#b^AD&P9sjjvB z)gL`7-*0=^E-|zx?JX!8jAB&y4)@#{$cmQPY@nri#}EB7r2g`Z4V#;iiSvcqhUT#A zX0%?59*XF__V;Z+9=HsnWT93O1%~q1lH%J5%F87voF!)0d~f~`7{K#2hLOrMK^KIRXj&6|*zserme!0MQxB)PeXmkmMo@Hm) zGS-_lY9_wCF0v=>?6kT@M+ZBPE8LL3Q095TA-A?vH86xfSs75X zce{c)G1nDtU9%ocuHK#V7n>%{wVt5r|Em;?bm7C?oJlH=Sf)P&^F6W5sjGkYG;$5r>$q1^#W#WU(UgP_w3WNZ4Y)Z zbBKI^>5AE&0zd1YvTDoStun9qz2dtTGoXlwUN*nIK#IC&26Qe4HYb)YE(JTu_#ognTYmJN4 z()v|hs?rdzUbR~&**r<^fvQVt*8Q$rb=LL`mHvfj$S2eft!TPK^6L|KFCUH-b??Ua zh-*&Y0()JzFp2m#JdkcD@iAPq3AkhEJlXzvVFWly4!r#V0W&Fu! zspy=f7*l4aZs!R4F92CUroVsKBNqZ;D)4I;6e=|9ulTk;RAYj0v5Z0_ml8zQiLfSeAsPUt8c&$DdHYj;D6}*@(}KnAw_wg_9s)GLmPrQ;k`G| zU*SG3Bt{CfdMOXN0nOx>G(1h7C3H88rP?Bz?h2a*zhCL=CgIEAg$shxCLNH62%!oc zu&42aP<`}ET;n)NX)Ot#E2jx(&|9XX_KMFr2xsJ4PzV3P;jkLC_;}D+e3D+C#`YPg zw&Ff(=SYW+{Ih>RYVC`g;EEsJRN`zzi0`DiX;zOq;X`=3=H{RB(ly}oiz7FOel!m7 z(lzrqYF$$)De=T`;9=nZ91jKpCr13w@%Zk*@!i=P{2yVPco!9+Z8@xwIEIi!B!u)eZ);UH}VBv-tPJc>GI8wo7mZS z;3+K9TsH3OCXJt?gV6=As-GWi5P9Y7Fy>0drQC)pczAea4pxjAv&y?G9t~c%3y8%_ zIF@v_11KumbNjQO-0agZY0Q|U>IokNJGn_MEY@l1o;VaVU)jP4IpimC@NJ z25~{8EiCZY%v5rbmW{0nfwPXxMiml+%%`B(d)vr+VcG;XPNmK-L1I^* zLwsa8>LX>+92s&z8SgVnWQX0v)v z`Y3IM4{JU;`?hN3OI{OyPipB`yY;js!-k|#-63+0V{#60Vm!*tV31)nt2+vhBjht& zb(*KF%Gxo8M!HdS4mQi1d=pGRQz|PDAbHYgUuR>)@}7N7DvQe#%#&bs2}Hv5dz5<^ zvamEAC+MmW{)#HO@@AERd`Y}%R7G?}zvsfIpB>}7hyD6|Au6bIP)HO&q%{5B`c?x5 zv|4`;I(G7J9oDIFqewzT?;*C6FDtqR*1k;F?5*`4FuCuh8V$sDz)yw>MA@zl$C-?0 zMB=BB_=UA!GA|cAkxqGjCkDymw9$muC)rh$d|-pv4y{w-=`Shq^rx{ces6e6%Qf5S zcVk8`6Wba}Ff1hNI>iuVkCPMShlUNz9Kp*tP7E`h5(WCHIuy85~6ZDEpIavKv~pl#r?0n z-SQ_Was7g8lt&S7`^fHDc>cRT78V&I-zyOTZY^&^v&nmf5aLTI=d&AUBXOWh3Tku_s#r^X#RPVLa4N%Zus8t|3d8Yqf zaxH_8VVYuld1HU{LY6G@Su%DfCuYaJdq>}Wz*WX)_+8}P$SmvZK?*%?0v^N%)156@ zrSMP6S7tM=53=VwFgs5u*=JVeJG_0X@I1oM5I>Se(J%m4z>oA@Pw@+-QGZToYSVYy z7?KQ)wWVn|Pr?smtywIFX-oeO(vqeumu|hw{$SKCYnk|=8e$1{Ijg(jDa}*%Qn|hS z#4r=_rcwlQ?n?Gjt{(1|A-Csh%BNuN$Bzn6Td-)TZ)k^#sB*Mta&%<9Tm_LEFOF!} zE@JWCxhuoNSI*tbp0L=iLx*}y+ii4zg^{og+tnA!2PV}ha zSjg5H)<_oHyqt>EbSV>7sY}#0*Am5Ql`0cfC8j$qQ$Hcl--Cv?(uu82&wLE(+G zEI_{;cQ8ogU7M^ra%EONhvi`0*f5{j-g3XoGuwOhcSXeHB{!3^3^7PF`B2Laco$ch zSo}seBN737c@wFT^(Z;CY`x-bX0|F{*{>;Fgze*M zcdFQaMk7)1X$|MLOP8!H=LAi+39PGIaIr$sr9sJU>sl>j{aik4s^o!3TLdC|#p53c zwSSK#z-+~iH~TH`xwv~wSg%ekd|IB{KDya?v}aKT0Lg$p%^C39Jkk$mZfG12q~tB+TtE%=nqhVW7@KTfRkMCHtjyT*j| z?$q3u@zJkuGw+s0q-tv;;@eE~$a2V{DpmZwEc-93RH+VhwHmara;4f{x`E3pSMewE z?j>st$PlI26##FIi>Eh$tDlR$*#Z0*N*%b*O})RL&d%?DDEE=IP!Y;JevI$n>(5!4 zCdvgcN5(5!`o6Ws2f*G_F0k+qG=zq~^sGDVRYs1ce)#Wzh z4jhRllC8+c!=ma8D!&eh7}|~$FuE?eUBRiTgk8!*yI3h3n*dwR^o5DyS6y9aqkrjO_Q2&8qF5At}|F0#`v2cyUL#p zscapUvghfoQ8?6OUrBlB`Jg~@f!iKWW^@@lO73^oe^^i^Zad8XWQ*(PiN0@@d*BSi z8sn-Mf~scoYoG!7By@2ssmM>R<-TQ;%jnC&}9H6_1>l3!f!kVcIU6swEG|Hy}YfXl*vpx&R08gHBqT38`VZ>PP)H<%qP zCN;-DwEp?c*}I$l){g*d{25RAOk5?RIt6#=#P^JD-!Zxqv3Od490N=7mZs4$jT=Qp zU1}E9sY#>ANJ8I=(9g(C-{?-D=$n}zM)nve41@5$a;){@+r3`ay`USez70#h94N|C9l*N|9v_xw!>YD_fz6RYA*w zHe{zqDJx4$heG`dw5V0VMJrn9v=*Yy+0(szVV#w(LZ*{nGJ~%jwe)<9(L2(vWDHOLFmZAqeLY1D)_;Y31G1IEL!oc4;L}HO2uK zN76(8fe%AO3|E#4<@8-jr#_+Mpwa;s&+Pi#S$Y!nE=~Mx9CMb^`Az7YRq5EfXtI7o zVeYv6WhbR`o5h(z==hU3IwdVX7h6|iUe@84&}8@|Sb6%#rX4i${rfoP{d*GsHHn{U zjBiWhlcY6SuaCo;aigIzeu?+*-(>az>n{$HQc)>wQRQrAWn#ix>GHdj(vPcldgz7E z#66*Bj}Ag*O@sD9x7WAq-@he!uYr_m_{830{Q{!gYVR9+4LMUwKUFB-F+RRS)@La- zsQqpF*81B-Hsz#fVT-mjoA(5J5y0ICS_qx-Lw&Tq6Mjn8r%U6VCBwlPKMi+;a!O&Su`p>L~3}mj6CB<^(sqynN z&Zv;%G_ymGHy=5B&6-(LS{B?N*s674pGuXb0YY6opw+D{h1Wa?Z$4#2m%?!)yWyYR z2;DAHG0k3O+(@u zcynd*pqP-ZK4CYP6yJRV>RU7p3MTToEDexvSe#`(IBX?_ozrV}7mB^ToI3jS*s&{z z6scU&(yD}YrFyyn3+07ew}p+yPtu6LdDjfpt8c0&kuM_{2)^&BN7ZqEvM3K5N zcoD3w;$-h1OCM`@0|>{RDM?!oG>-3f z?8>6)_I5KCUDox)Md1y$wz7i{vKG!YYl?ljKL`og!-yRzZ!wj5;Cr*xef7Q)qCcbt zdn$4#tU8kRpJ&yKT8;c#W4T?4o^AS1-LW>Y@9;xgrjOrjVRcHfut;p$x{p_+b0=ycICjbLD?Yh65OrwwQ7|w zU!z8O`dzkGEy8mEsYhi9&jnF&#QY)llX)W1E{#wT0IoUUT;Bnsuj6tqTnZ z2n`Jc2%KNX$E$X2FP}PiZH=lvH2`Y(5cZ;PZXz0VcT?f@cb5|Fi5o$*r^|5O<8QwB z?0!-l771V0M4Dw(Ns{6 z8s&7kvTw=;stYUIaz$k=zfI*p`Bvt)NWZ3?ww^M-C3a)=`J0^1Z#E?6(T5{Ws{H0( z-Z${AJ^S(9YremlLP3}W2*X6MlGCg9Z`*c&cfa!^hM!~OLAeP&Wmu<-2gU!}cyMpB z*?2IaS=E;R9wBxtIAmd!%Knus2CS%Dr8YJc9z-7NdgbxcAprr9D4=#qqM$o;h=NV>~&V zOU6S(LSO=Mi!)>nmEIYiXot{sw?8{2J^jwEPQJ>kpll1?zl->cS#Q8m5iIZig zeCxxNxOfwdi#WLx9wK$n)j~zsZaiW)EJ-6v{*fU8QHiR?{xjKrOMg(qq6`z{@C}PIOlNFGPj|8a#C!AZjv`qTvekza!Vd>QMSN{AxD?1J0M3K)Ehs-2 zKPe#Xfqj?6ga>=$XTF?^ z*8jz#so7AN#ib`w2ql%c);{c1bT>H9Is4Fsih-Jl7x+uo)I}sO&!h&1eVWrqqw8e2 zuU$a%N8ar!-qyV4G}ITGVhHpnB)wsW<`&|WS*X^swdU5ndrH6WxTM$bR>FXU>37Qo zl|UuTuqx-hh^&(8d)Wu%%^c>sJ%}oV@bpDl~sNmW-E<1rAi^n>6x9!(&55RG8Awxy*=~uu}5V z`1K9DJJHI5~xrrFB`nZD@_`sr-n4nX#)UDd*c)r3K(_&csWiQ5ftgxcV49#_)X8V*|c|C_Eq2;hg0XI4AFr z&JZjvdzq#?i?>kPYbd8HO|UMRcMxKF)?6+xZ!#=r{?w#>H`}PHZ~nN6m8(Ue>Sg05 zMdR7AJfw&P6DQI=(NYo4R;xu?=21h-*vE&n9W@{!L8~1!>_n}Y_&vSR{~_Kj$%?CC z^n)dPFdSI-<<>9ou9=W9PBVE>@6c)0V``mXeruPdB0^0T>t{+r)PD~tbXa~ET$oqFBEB+fxtFV%q9ZOAQ@89|DT|1%w zSibmZd<;BuQa)P*b{p?xc`sQB<;nY6R7lO0pAY!Z3#GV#asB%A2C!KQuK1W1u{`$N z)f-nT0{fkC3;O_%F9c7VE?Lz)ku<3Hj@}J&-W?$o z;b-cKkvdW`zxhp`a>OLUOOr=;Z5|m^yIifwBfHk=6kVfyoncYI11r1hik0m=w@Q`9 zUhbV2dwDg&7rO*+^l9TYpk9~%T^gWDEw422x?Ap*hXzIbol3VZUFr?+YU8s(*|RuD zN+D~+=b2v&>9?Bujk}xuw&h)H`O87!;Xy$W5pt>a;bFn;!opT$faOXlg&e37Nk3d< zJu+F+s9q!#B%-^QC;fbSf9_;KoiD+t2L*-80~z^t?ZaWrGO+xt@nH#&k3v6kYi|0w zmj6BPonN1mA2~6(OY^AqwaV2b5EuW8 z8|LF8mFBu>^hi|JzHIH`4bffK#Zqb5=Y*U6L*a5#IxlHcSR6&s%B4a*d`wFJ2lhJQ zrnC*3t%(svXkSwsVmOP^5XByldg)Ks@pTCjeZE0-S9$Ks?z+22>e3JP+>fK-Ur4wY zd+yKTKPAug*z*APoJ@3Uwyqd?9?0c>9>ktEN#(g7EPkRO7z`%9IY~E+wJ%SkXnbB< zi&;hDerHRj*YSDT@;7k5;fKa@6Esa>@qTC!nZpT3cI-a2Ivnd~yDD95$<;OMhgZVR zMRNleZ95$3A8_!?N?*-BFMqFD^Q#tV)*vuYv5Rq%K|ZQI!DPn!xM&>Z)~`V$1W5+4 z-g#j$i<3s;7))`a=WHoBbZYg5XVS zO94xlO&qs0)xTLYfBjwZd;AjeyG0$L#*(GuCN5o4yJchl-+RgLNlO;jY1yo{7|?I_ z?0(gPf~pz6|D2>he1khcyM&ZEeSL#Ns`i;nfne!$pINi|__PbkUQB=Z1_t^X0feZ` zp37(9C-Hw5h@~&YP7nPDm11YPxci9qqPvfu2)5piJnu=yp#Xl~w&3aK?g+deXn0R> z)MReO-tbK8g-hDOrL0cTN3Avvuv$MphWm^&#uvGQpG^Qb7LnQJLPxNjluaCq#sk+d zZDMq~75P6cOAjyYaAhrNcCKQlKbv6jMC>o7Pqe!kjd#Jxa2z`}D@8NLe&i zm&V?~Y)np`9Q3zWpFO)e?G(VNw6Fj=RRhpg9cWvvzq52iEE{MS?mC>5=Xfa&7bSBY z*5+esJL8yIjwfU1!PAZnk1u^<(cfcarJp{4@Ku8FWzH2X5hFWHXx@^ff3Sbcw!I71 z3H!Ll4TD<&v!u zIFesy@?hL|qEaD5)F0%_JG+%z?-s2GxVR2%pE&(gVjmCTL=utY0$sr>zP0PuY`9

    4!^f;bs*J!ARuE&0d_87Q7 zAVdBXUH*6x~uHOlnw3?oOLCNq?HeixpfFIbEl z3Vjyt+ehgT9mUmky;(ol)*D>ua9{s)+)Z-wBmRDEilt^YJd`Ca3%k{4<-d%???>Vn zK!_f?%hRO;S6f~`aYXWq7ayNap7iwN3tjJ*FY!b?;^Rjc4MUVRtAuPRpEZQgnjqSH zm}k;KK5JXSzNg2DMRtvb*p%A5zkoIf@8lYGhyo)2^~5He)C^+zWR5tV%-VP|)n$M_ za8HZs{o(YM$rAz^&78XNQ2pxtHG_QX4462fdGq;0eCx0^un|%;DaS#?%6g$1%GyF+ z2FCI4%C8z44?p8sH1g?wtIL-h8#`di4r+AByxf9z5tGu^VY@;bYsI+6dd$bglZgHC z>1J2p6jW%?wo!8_I=ofAPSg@r8bmEoP~go~&GvX!>FU=JqKGl7UZLDdVl+YspMwaW zZiG)~R1sDGANf=#=!})aJ%?R+Uyqd)N{s88!)9u`=$UC`j;>?dwxMJ~7k?f>xb%&) zFF@D}Y!I8nUU1O8jnr@q@1huvE+dW+CTmqHgSf2Tq&(IW{@5uaY(s~UK~GY||0uRc z^rg0k%?E0f{dAseoy5;0e@i46lFBqm8mbBR@+vxOVqP|Bk<_`Ewo<*u?YsLGw-dvQ z-I|o!Ky{u&>{AnBH+?L&EB9S0H#Zqit25q5?crfdlV&~*tW5O9{72j!*JWc|{Dzn- z3p%tZw>{f2tVw7GfUwYZF&6)%l-!21me(G#uUq)y=;bFX4xNbui@5X)Y13oOz`7R5 zEX@+E7w^a1Vo0|CPM0~)z`qmkvD#;LtH>M%YCsy3lE*yLuzxkGsCw(Xyf&Edp5 z$R)UWi!!){IXi@(5V1Kfs~drev9f1#_ar%bYLsfP{YYaX@kH`D_IhW_t<}QI_x3r| za`?3U`=?E6SzyzX(Y0GRRPG(pAy8~yx52Qg6_!^Eda%Z77l zs+aHLui*daVc-diL-J_<415{afQG>tLQ@3#NMgHPEOxT_F49)%BTt;L*qMDyS+gc# zzjbLjzWefT`POlb%~HOq9FHLD1xa%z38!h=l9#P{SDso${rP*;wSOD(fs$$a^JpL&!SI?9A1LpR#op4}w)8w3M?=2r;0&v3D@~^l3cegf5M= zHP-rzTtWFep~BYX2H+wjeo?mCNV{$>bT(blF9%23#iMq`({$m6ep||Mh)r1!Fr=|h zfx>5Oq9Lqr&_rsb-b#0GdUb1a(J&B zz{VM#CU+E#t-UKxm+MI(>WhX{8`rYm((t+)FP@E#3a`*gyEdVm_n3r$0cG%O2^v;v z>mTXFXmydg%2~QZ)*n@U>b#6yQs!7^+QY(@n`OU-vGJ?dkDIptfTm89K8;#UU3_T# ziXE_<>+YARY3N$nu}EBem*La8l=o@vUe?B?Yh14(E5hqmWNlUl!uLIkv#j^#ntSm| zE_PzYpkkF>3KuSEQ=tJ}rW!ZdxJ*S}Rr($BH`3428FvHGOX5KOCZ|AuJckRyDMSs% z!_B2*a2Zy&DiFKcoQx%lAP@7N6{}FD<8?_#h}A5$>(?t~(}sDCVqGn_RxQk1Io2pS z$h~PNzvhlbTKIHm1JGKEyRy9Cj#t&ZLgjbuh4EHW--OhPrJ-!ODpPwGjOkC)Z6?Ox zN*2kaY|4^!m6B1nDqGWB`||4XoAkVWV`HP=GWAfC+M%8IFRvP3;duAeE&d6u)gdIh zNkFyP?dsR)YLPs3c*_LmlH)t3tSIJ$PxANs&SbP>_#|``mY;R~k-~R{y#Qyj?`BxAB`sd!gf4~CLp#oGSe+&F`|Ie@cWgrpS zLI4aebN6l;JO*#WTk-g^4-~!<4H1$?N<_BEo$;kyXsRJa>4tb4M3+WZ8M`GHQeZsC^>x|JQ9D zq*$!!-j>{#KCw$mz*|EQk6eR$S`pd&o+R<1Ll&kEp1vNMte-k`(W0T-z;5YM{Bhg- zpRHQ`n!g2qSiT(WgwqwAD<{7?*`{vbp{)zs&Reuy&gxgu`+ehB%}xAe_c7V&_`VGr zxf1g8jT`nK<6a)y4OX-8v)i)M9sG1gAM)P}aK6L6ybUF1!MJ_x0_!&~T4m8JuXTuEIJ-6=Ko!pS)fZk6hRW1Wg_P^Vh0WuFfO)CoKUTNkvQo4Ory{USa#>MVLk zVQj!Fu$)M_;So_`&%1_!2l@$?_;u%)n9fiX9OyH>6GkkyZrvv416z!Yr7Va|EXmp&vh#&^;T_oY z7b!a01er9{kNgBb*Q{d4VcP?~=)+Nq_CuraA_uHnbl6{V*Kyvp+a)rSum_ssodqT@ zA2cYc5j{xDxA&kyG4;u>E&G&pufzOoAxP+icx6xQVSYY8`^ptoHu|E{N}Q%M7{}(| z0$}b1=L%LZ5GUiWk!?GKMFs^%D4uEDzQ$3V8a9rIQ2dJzOIz>`-Rb|qzc|0O{nvEW zwpZttRh!dQ+r9}+d|T>2MYd@j-mz_97}uYSdh3S{@9Buhir;6Y-2rfqYDHifIeB3aR@DrO=^>Zdk9ex{}e3eKNB=Jd4K31uofwyoNsMwf^dXJcljc-kM)6m3+l z=>WEdbWTdeBXs?dMt8@6~P4`0aO=WT6)-(k!T03Hv+J?`UWSF`4Q9t*`mpyhXj=-5u( zQleu;b7`0+N5klT4Ec?!O>owvPCNBYa*w@Irl) zf)N32s25N~j$&%gk%hi8bjsg9Iea=^lRI^qOh246NH`1ksP5@jt(u!> zb!wOWq>bWz?H?o|3#Nsh8W(zZI|%h*0lxS63BC_=u;wy3?@}w_HK$KQ*f%^2`WWT7 zf|Os8|GgZ)kveLRXI;ayxgMc`twTcs0z>7AA#DOX5?OZ86fSwfG8@jf|N7`@rXZ+o2Pqxm@B)}xFD$Z-e|RK9jE}T@`QW{62_K)YnE3el_V*IatuY%mjHweD zsq(>R-IT`QZ81x%PcqHCR)XtEO53&PsA4($*a z5GGIT5YRS^lw?QE0rxKRyu6xudBiNPT%{qDs2@(G85Yv8URcKlM5-)5)1{;0cwH!x zkOR{-ccN>etEY0jh@aB$=ZnB7oM}KZ&V*#{(D8(Z+G2Rkix&{Ke3MkF zOeK%$L*v@F)iJu)q!og{E`i9&^=~=Z=DqG1nDO!Axr|TYy?ce%n=(dOYOFn#EH%b- zs#&(K=H`S=nau-o#nobx_58XJT^80N`fC=q+QUpQPa+yn>Old`i7_AkJFisU(l|`$pwa^Zc-xE)&uhK2?NcHo9W7^zGh+O`e5u{~X{sbj3R zb?SwM`4if38Q+D{#(FviFVOu%crR+?+)>J-gzy4=6Ye3=zOGFBYEDj$WywydQnB5WzE&U9a%prLYg00%ZCrotc-F5ZYxJ3Iq0D}1 z8{EcamA+*$?QTOR(NhPu+gr^&A!=tlWRU5o{@I!BquciB+Ms$9IKF*!H08!XKF|Ct`-@rwwrs)Q%#c; z^QlpK0QbY@b?i7VENpJaj&sB6g^@}f9W!R@C9ErXD{{v9F2zivl_ z{$C8@d_n+t+GAj3U|?Wo4q5a)_i8-9%~u9#ZUzvzwbkb=l)m?U?VlQ%EFKV-je!Y7 z0RWZ04if-)+GAj3VBlKuH-dpdw&DBQFPCJpfFdY>^ECjZ@CS={+U1#bcokRr$G>xD z=8W8%iw9d$YAm&t3KA-5SyH1(a0tPz0x63_QWm!@o?4JVki{(&3GUpGrD)wQTBXAN zpb?ng_slclAt{SJUH{|reBbvy?~&)s$zt>VFcWa(XMKB-(av9`l4<56$Z*M) zdKD5#BQG!ED%_3mRauNwSGSXm2-{yH9C#XTo0W|%)){15N3l5|u*p9U8~n4e#lIh$ z?Q_WX+sL*PvB|EY+~MZGj*eH$l{voi5@#M+OqP>ea@dQ{(oW+QY9`sq*d1hxjFUUb zHkn5@OI7D1LXM@4L$=lvo5gHw5;52y9>x~&0ygWDk*&{1wj7IOYX65#+S|$;b~;`$b|S_204YUzMh)hj!tqP}%A!+AjCh2vg!vk7 zF}BlAC-lWbSHhWf$&N)W`peB9`CL9PjvZCpH)~%f@y>y(wzt7qsrEM7y^&Fjg;M`v zOfNZCNiMZ5bG|n7oo}o}yx=eEoUtc6x%R!z4|YT6d#kH+#?6_B?ovx)uSbSqB7BJo zIANYbsj1`SFm;M1V`4WuFvGqYzwrR1>c?s>I z9tR|PU#{sEB3vcT2&tD*&0EVkGF9#6ELCeDqtwYFTk4KTuefOA6rXghhnYzQ-=Ebjy z6;GXo5ye<7^&f?^s^nZHx$dztJv`rj52GUPp)LQm*C1DF2}T)lJ9NHaT;MmAgonHyjGpufp~o|;;m@f714!INnNQ|!udh)Z?p*GZsZz1+IfKV z{}ISJN+RkZ;c~2UXe=@RhN@DpgeZ+}#aKWdL4wP6v=EP@nY3>f!$SQcL>Vk}v9UnJ zlC{#mGDZ|u8Id?D5)qc)4rW_qh$OsbR>nD_BDR||@TR#LVY4UF%|bLZXE^)J51ifB zGkDZ*Is5DdPRJha9JE(B2dq5WK__Ijxps~_9x-~MuercEE!Aj^`;EE?izJfB@9VCJ zwZBK4glpVjH0K(V$tdy#V&!+E@f~do_06A1uWSRjuxn_jIgOl0kbGNvC}~^#sWyd+7(M3&=>)oxDh179-Ju=X0@<#C5mECgQ>W z#X(HqzAVs(BU=pe;d*=L}IaKR*a)fpr#yX*iImDgoZi!tV!>w~1$H53oK_|ic7oMq* zUDI9LBV5BG;~a*VccX#)I}xjpAnPdiTQdqZ`K;Dx6Y!|W;&b}|e>6JdS+1jnaW`HG ze1Ndo1#g-)@tmEDhDI%{aqE~i$TnX>w0j>@(ZfcDthItY(9!CSy;cHFGrl`87-8x@ z(aTwGR7HmV05ZiE?2x$cjr)-<4k1Upjke+<*VmS3>PKYI{)^1l@-auQ+szw=Op?xh zTxrB8%ZN(*Aju?!WEc6K?DlM#x54v^a`L#&QEELLDOZB;l|X_uwqajX`9 zz*3`$Qnmzlc?c3o0-mxBVe;wC^bwKB(MvfOL@w5fGDy^;@uI#7t0hJv#@nTFS|V+6 z06lr$dK!n()BFR5h@%){07G;gOZ4&_rz{pI-{55}6)7SUQ^o5Di`tlCCu5XR5uY3F zG1ZJx%BUTkc}8W7G{$3?sD&QdLujbYz!>c@#8De_zvFy4cu;$T_E4nAF_kmUQLP5; zFOkA=Q?yj_N9IpPDrv0x>6>`Yw;#XP`qQq5d&OijeM+BJ}5_d=4jn))Yn zU~Q2s?n86yLo~1-N0Q%%WPbo1tY6_9|3Z8dyq7u;4gJ}O^JkH6XlS2BLw$hn*PNr5 zK0sNdHb$~I9B+tp@@rP@dVFbKHt5qyQW z0R`28`~s2-JO3!m{EOrp1PZG`&p*QWkIborh(Zf?K@#)}n-DDMfj~ha+rD=5Q5ebC zRs`}JFsC*9{g&}VzOMj@atcsu0HP8Q_%*rUbz_Nd&<0(Buf&= zR3b_6ddDs~mbF5;(^}zE{f}UZ#IA)2HsAR_^D807dnXaaEQvoI0twd|Q$$32oQY`9`0o+6hG3ojgA(acsYtC(N+o}+0*Tm; zvyxIzp*rad6xJXwO8bBHh;% z^L=rsM?XW}6G-HH(!C=vsTJXVm%H~5O%Z2TVSB8z-(E;f#1r=Om}7Oqw20eqMg);5 z?-OJ#9b6&DbD#f)qA@Q0cEGw@-W|HNKWlwi&&xXe(p>;+b{Ugvu}0uaIWPBQf}B^@ zRAQz_B%g12BKQni;R$mM)^e^T{wS>1+n~Cv_hh}o`fI9NbFpTT^^&Z&C9<)UY|E&@T$C9;hvqL{{#1>so4qLcwVQ<`xok@ zqTl1)GvQFtgG6)8Vr+Y{GxQnbWnFf258g7%^DIVUg8S`Q0a+Gn9J3NKrO$KL zUfx%*eVIJl?wtVZb+1Mr>fS+mb+D{Y)c}r4xW=A(4pwS5hG>4wbua?n2%MgEtbo;-U@5<1IV@_5ho&*C%DE{GA`!g zW4#yB4S|i~8NBMdAAQ7An9k=~-PZ*Jq^}K9?$Mf}yF@Po;Tz38`kH&$1Y`Ito&*51 z0=Bt#7tPVzXoW#mJ9O4tV3^(dBL`h2 zT=N3G9I|!Z^SN``SX>f$W>i}-Rhwrh5=-d!(*nNwsvoO8){zx@Tja<&S<|eNNZV&( z3fDIG(wf;%#-Qi_4y6hw!7e!He$Pd?|K|Y|dpCNt59okh$Y1+A@ADK*lCG`pFdGcp+3drk6>N9>1*-D0yKBNY@ zpCpnlWItJSy>(O^P4q3AdQ2n2!$cXzko?(V@Ig2TW-5*&iNyA1AbA=uyy3@(Ap z;1+xa1|Glr-hKD|^LnjXZPm3-cUM)P-luBs841L~Cd_A5GP$fpNAbS{xr^wZ{W5W| zWo+>0KNS&&U6|yhQ*A&^Oy3tTPz|h1r3LL~gKaMEl34Yw^naV_TF^jpm574G1P6oN z;QnD?$VfZ+1f3JELV(?kGj&ge!VYUb7>8dHUB!R1oUjPJ;WIYV?YWqSR)BeypW#|8 z&hl;GYJu}htfa~hhBTKjBdUZIFq$DgMH~+F75ww zn`%lL%f&)!{p6$zRgz3Tz7Bwt(1SG4x!c+KGlWM$Aq@PAG%NC54ZY!ldq9}u?R4Im zS2yc)j%(^GU)!)LG-BqNNOSZYst!N-M+RiT`foo+%Fz0O^fOPWy!D6-jBEtwNZ?tm z)jeHcFCYRDsY{;VB<1pF+m}RBw;bDl?=40INzg z+n+^Q!m>6tHg@^k)=oA*1E!O_;y+~V5z|fwOix}Sg8H^l82z^|U%YU9(s{x3QuoEs zH}r3$g&4#y1-_AUp`E{Y_=fw1_CMU0v7Z%iX)8ZWM)gD$M>W0ikd+A&k*2i#NgUIl zpepB2^YEc43Y+T1n^(o(WvK|pUhlpn`(FE*yaB`EW&D3;1884xJNhs>F#0gsBYPO_ zHJ}s+`Q_q=;?v^IfkA;k0tG&+;*#mU&<@@G99zic;KlisGl6l%4%#!L7g1IUO zU<>yup=&~Z%#G}QiOgKiSE^6%M+bEN@c9emViFBZY(u{a_q?t9?l(AfPTle9G-Bp= z#vj)6T4GHs8gz1*pWyiIkvCT3)=t(RxvPlHR5d0)PdfbMwG$X2!vATMup;;Q1Jmo5 zNfBexUvYzEnTtuOW%y`UKbXD2x5C|)y8A#qL~6xKNT3p>7CRLKAG)wEYgB7oTrOG$ zFJ~FLyHNRJzx_Oz=s-sfmL{Yb9z!oB1u2jw>BDd#@wo~d)CP$r9)&`(p9JDRW_-xN zHz2P_;2l}nIrh-;$nPlY&|EiOR~O@z;Ot}C#Oo*QPkEsfr7^&$iAVhQ__g^DrXm)p z?Ag>prF~T{Ml53Ikh5;cOtbPys9XDD=@HFLlO5R1p>%X1cH%vJAi z>=n)sh*tzohewb8;r@vA>i5Vw7mX@`e2n9u19u)VFGJXh@C#wwkQX7}JimE-1Ag-> zy!o~}u>bwvtCwu=R0hf|n;Sl{QJTcmj*K@LTd-%ID{>>)16oXnXm`7J8n@HAil zM;(_a_XqbbOk0{?O5TCN;SJzN(igQ6hLmL9Pv7L%&F<;x~dzaUlKda@1-o*%3d=$r{)p8^4{$`GheV;*IC(I^U zBUU56?z0S74)DKeI6EhdlVvT_o40APGZw9l75Ge6ChRz&@I_%(AxeQIJ}QCllNRM1 zB{v0$$d1sC#18nI%{fmP2@=aXg8g@XW9En8x3_pt^nX<@IT04`dRwG0W-Yz>o;5@v zSyy5J+TJv`LQcCKUgoTys?VBiI;lo!%u_Do3pT!X*}RcF|av`KdKsPA9C zkkHAa(?)6y;6C>j+Vc1^zxQo2NdzMDxQEZV9)99l|7H5abjdrM6T(VyyO-jdDzVExgnN8?7=pFmE<@Anh3QI|91xkBJ`$+p0?+pz^&*4ww zH!}t?rfbyXFYmq({`x*!2Bs;j8vjjaTFXOTNF|qGdQoXsX-Mf<2?D-IIbn=rJPG(F zW=g@HkYPXO1^<1)jbKK!JmfwM25ANR^od!d)z1jRarQLeffpH5=o!INt zr$TY@4z1_tBV~~# z(8ffBtA%F|&JETsLCmWIYX7w^E@9PYnPZ*{iLtxq@9mvDh9fg}`+r_a1-+)6VEo5> zC;aeV@Z0_$oV$YO{10w@ac6&K&QT8pkJFB02Y2&B^9%FB6`1O=>LwZ*ghes3a(Z&F z%1!@|t{A^fZ9i(Z2X7W>FY%vkvFxRtAiUt_C(sehAy`Lf9;CUe$J=I^OP8Glrm z=zrq*M)%k>(Om(?k6Mjyg#VuGU3Ir$nhj8+u$0>me6E4NPYb1nva$* zmp`1RCTim2d*`x$?91Hq(O{fCErUg6qimw=Xb*QUbMIn0dgfp{E;mO^(2FC;tr<%z zf_;Lenh8IHc|v63VQ+3Pde3nWb6RCuFuy&|FApb;cD#997=Cf_{o+qfrl88^F<}0B z7l77RTxwNlg=AkgscdiBIt*}b#4|S1TroYUTt~9r*T?jeRyF8B^&+Y^`aK>OAKE*e zTzvGd*SEMsh@N^Y7`o++c(w5>jRHlFT&LG!+FRX4xAJS{pgd0SR_n8YP3oTcyLbgG z{FEWv9lJ)E9_G#3&;{zlS)V%*ZSvN5tqh$EgVAdI#k3{8C8fiUKATzokC=yS3M6arLP9s`b~+%e&AP98!sfU|gpm{&%D~WaM$%IMkHMl9Trh z7cwC!h2V9Vi?PEh>J3WkL?JuDF6ZS`>Mq32^-}S2WOP5_fHEU^{oLbdG=-9r)pFdW z%n+p4l~zskfk=s{lc<{0iSxawX$P_XaCM9>UYZ<%rYmp|A&ZDc;4d+5Y79Chl7iH= zbf88~ZC#pX#T*7pm9~crKGnwcr&=b^-%gRMWjB?;!*2k+Ug&==-&+ff&)H$=KhuxX zdkBMLE6bYX)}Nitww8A9woGFe_7e6K_IdWp+HZ?@`gYYl(AmSj*Ii+Kx*lME$9>3h z8Azo$qbDPsv(|KV;RTo8AlHtm6@jI;<+jzfwfF9$t<{e>|3coo_M}%% z%{H~lt-fEfL(y} z(zhk9rOKs?x-|0?^Lg`TGn0-s=P=@=5%dzMkW((tG)czK>XAHi2hJ|RGQpAz=)@8G zN$r8&RaGE%@9yUICU|qjJjA`jZ{oGUaLyZsD&{raFL>Eisyr!>QeG0ZP=-jyRTw{- z8X0gvLYA^F0g?gDSYq6--cPyWziz$txy8O(xih_4@m^79U zBZF}p+~>reSc2(1=>qbU6BK{r|BV`tVp*$fh4#(dnO~qPU+qTu{UQH|@%xwW`6n8M zaG7I=uT12|3hloSi9J+B>^_+*3^eX8cfRe+@=5V&J}*DFgR6nnj;7K)U_yaCmh0Rv z^FFKpVHm@|db=pQ9rmR-sMuGUyC~bCU_ZM-6-(o%#`B+?8k>3;qX6Uglyjv?n_o67 zrBeFd2TGUjZ(R?Kub5+=@8yU;p@d-Z@SA$HFkq*eVsS*+)CCCDLgbf#og*f|7><(can#Y1?G6?c!=)#Zn|!s zB(LqRRnI3ou6f@T{0Y&Y{$szuTTU|iGsMo?Ztwk_`gPv4sI{NnDckznb)$meNgn%Z zJA&rbmG4IP$H!)njhgPB?&59&Kj%|{4gPih4f5`z{-fJM@pm(SW>O3IB@>={#4!qZ zX99KyZ@=Ag-8$SVpXzNn_f_=TckcBG`pty6`%nlalme$_~m&al;Gg-q)PND!04-otrf7Wd^5ufj*mV^}|P38~~Zk zyvU)*$;cm(wm4-tWRz8uq!h*!@e;W~La47`jGJwssRgKhobewh$k-ymeXRWf^B|+j zVxj-)A>o>6kCQdHfpUBFPANFM;D89J_Net#D*4Ca_Uu9VvGsgu+ycA5izq3UIrgXA zX|Y42uhz53r8gUZXo<)#Smq)9+T_H2cT24QgyTa7OGa1vq)L9-REXsxJ!%QY^OdAc z)r^pnH9asrGTkg;hq6p;N4zSi)W0-n;j!|5Zh-clcBVx0#izp8``>e42x<~0qVc`- z`oi@EN9fh#z^e7E_2l20(ZSJ}(Y%BT$}{x&A7xTHU+MPW0e)=$(dPPSis>f)QtZ2! zl$exckr;E3_Koa?ETu9gvy637+}7Lvy$AEl?p?q8v+rC?syLT}kOl@9Y>jZ4C%Z?J z%d-Q5v3Jg8KEtg|*L;u6+sr49+w;j4I~C~_ywwAG4=mPtT_P8h10h0B9yK2pS(eZj z)0Yxs>a@rpN#H%nfMV~UxWjn+3W4IhagwOtQT4oEtLoIh$lS>FBrH@buV zCA2}SwP-7IbNLbf#(uE?8bbQ${nXj|c5BF$&~4GhNkCLkEvIejK<#YzaCbUH>ZuGR zDeZ?>{J-$F{~2TSCumA@cwjj3*T8!i^(%dJffrmDFR%SqT~mge$kedHC4bLgS!Q#Y z_fgy9+m!=z@-m%9`mSEApf4KPWnqAM>T!c&2bj~wp+w_c1q)6}KzZ!rF?KB~g9kK! zeX-qKYuZ!BnSwv2e+(@loy5ZrR3RG(1%Y_0;GN*@-piSXT$8g0%(n%3A+%uB{zKqU z2rPLWe@`-Ns$x3i@~HAua&?h_UXMCyn@rAe=rXIXwcX}2 zHt4BKhNW$m4wzX8rkrg*>*#XNq&dF1%TRAe8(0TGzV3>HV~H-kE|C2niBvVpSL z*ra!ZKNs}X;Nc@n3G=w?p0baHVD=ir53LY|W?VX8h3S3*8{eX)9Cja}AUfj&tK%_*v${*wmuupeh_jYtZ zrQcX&@Vk@8GmH46jy%fduEY!LXU3NaJ!*pVoBMWa%y_zG&ZD7$WO;1)tK2&vcJ8TC zl=4L$E>w8LV;m5nhn(iB8)FvNKmdtNtd|1jg=ULfE_qrg#4&;?j@-ZWwx0B;6~xe2 zuf(2_;MmZ=F8J*~yj9Meh3E1N=iG5et6AY~#CZ8W5yBgV+mOM*1zD>x5AC%X3Qa78 zz=$Hh0%Q0q*0aJR2;cQ6h^guKzFmxQ$uUO%E6ddL+5c6Cfw^d3$P{j#oK2cqMPt7Y z{xi$+G)`^nDWy}(ZuwrWM4je3tk0%WM-_c3%E8OaOYxkZm-!ICT~XE*Fbear=hkj_ zDrY5YWo4xmhgjm<<7EN<`#bsZ;iotKs=-)qLkJ!j9?b3{&o#C!2K&RG-aHZD;6@Hv zddN;j2Y7f#MOj-(eU#OrE2bMSrl~4sINZVW0ClLEN?aWm?O}=g?FYy_voQaf#f&uP z^WLAel!?S4=k_l3FZ56JKc8)s8O0`-Y_ZxOmKmnD9{bcZBr{|mJwsSPD`60ne;4!* zZ3i<_{i6jP1q%fO1qTH+1v3Rb1v>>T1uKQ%$Cy!^;hlH?hOM;tWOZ6(O}u3d*rILc z@HKEXK5F1;5NdqTAke@Ea^uQyldjT?Sjm|(*Wnq&R>V3FweFDYh2nU&d5iKHL_c<(nBjYj4Z13dRZMHP|xA1oO9OoPJjl>h1N z4DZnIl>Cd($nCdVfACi5o!Ci^DsChI2SCZ`0I1d{}v1e*kn1d9ZN1cwB* z1hWLa1iJ)npK(y!o$)`PougsFDEE(BbbUra6SJI=!SsE4K{x3Aj&mk46u%cLx95ceaK@qMklJ(Lb6z zB-~kez96CbZ4(Al%>VhmfGcR{TP61EQ;ko1Q$FHA96u-Zbr3+J(Wq79*sliA( z7dbX~UsF0tWygnT858lrN-!JGcfx78@S`8MS7ar1T5gmA)Jt_!9leK4lh+60S}$K z+9WTGz2}iDR|4K~G^I=?qG!=hZDT0LPA0`hP?7|D-!*QJMivkUd)|SzE0l7)6*I2J zIGS>fNrJ_*7y~1>WFHfH!g^ABe)i<{{OC#Ui7{2>pw3917=y#!dD3^rn5xy0JW_S0 zn<~^X3MP_))nIm>n4M|s^3Q;6qA1u5=H`jhnX#^L%7~MQ0hW12aNh)^ipf(jY9um( zbzqJcSONS2*a7ST54PyU%3p_eD3T7N*1XqkzfbGZZ!FywSV4^W1aK=~$*g)PBRt;7>Y8G20j{iX%8PuoD!N+qHMHcGM!3Hsd9Fyib`o2 zgvYVdyU;t)yTN-*kxE-D}9A9ATrJZle+pi_c|ED{X=)F)A`DGb%BvR47&`S19#;R4n?a)To=JuUuUU zg&aUg9c#TKTGWj>^O*DKT@wYAb4sTmD-gniPma|sY9a2)LlF0g+|jPm)Zb!l}ebs27nZmDj`Zs~4G zZfR~QZW*VEr>UpOr|G9jr)j4tr<4J=V}bIUq8EKhw+TUCV4;v#kWh#Wrx&rdRE@0ADCUUemLD%NLgQuS&9Qm*U{*dZom?Mm($o7BBJfQ&1* z193=T*{#x9h6EK*6Pb8rc|Z$MC`(YH%#ff4Y9mvx4wAN%3z8&Qf$GSfE3|`HNJc5A zibYZ%3s4Q&b%lM918FaHSJ_JHV+Cp;`>tLcL_!iuDODtsf>}_i$j+;0?;KKJYN67f z6wHcJNA_M}93(&rN+nf7k{(%5YRK*@oPz>Le`$!yQ_>?VB^3_%_eE50%H>6+7z2@w z6rnARN)sDv6N_^b2WL{o_yi383=B$L{JNmNXolHO%p?`CN@@i6J^aX}?bi&}s-vT1 zp=6-sproc`rlhB2r=+E1rDUY!tWUIHBeInduvKaEsW0ts<-_2z(6}QLWnbK+Orr^dRm{+~$yK4v2 zyKq8y2gLR0OURgK9E}~pdEw14>YHuM*?X z7)$X~+oaY2&wH9}GS7@*2k5(vvj?d6DY{LNce38X%r4vlG*0u^dpqwvZ}%w1#4`h# zZoi%;t(SC;dM51UkBMgmvfO%~X02Cy)q{HlZoAfxyxhlnwemA=$DbJcWrINvJP7y& zE6iZLe!Q3Qc60sS^K1r4b^B{Q5*7=P5{Mjqt_X|3dVsVw^{4d%t|J>t==pW50Q@j70htQ@>Jh^8+EG_F@gzK5>?~#oVtF?Dxoq z5Wfh7--6FFB&nW_NPMtF&|WCO6Tp-ilGGvEkEsui2;K{O_zawL(f~fQ#|Yybvq2=eiT24r`1Aju!yo7?U};*m zs?1D3Xjte%N@(Ej<6AXjF~yZJ<@@7!wxA|eqq}rxXs?IH{(OG1*XR&7{ON|?6ux<8iYmyUI zSgCT+nbw=unKt0iY-1&2(X%zp(qu@>Zj#B;E>G)f(#g^y9j}4t8jt6CCPDN?lnoA; zyHhvDDQwMGsvin2@Ze?R6R8=j^_u3O9_3EMPT5Y~PSsAaCq4K(xH6mt?gS@=8^cB5 z0602a9?k%_gA>B_;R0}9_q-hI_!@!j<66 za7Q=^96Iity2MhiV_yFp@hG`qfKQE^q_(rT>ulEb$OKeeaKJal15Vl*Zr5DWb`EmQy8I}SaiTWTZMDYbZd}7=nwVuU7r>`zZ22p;& z4qqGhOFd)R(&?*z_>3sJpoNc)Yor#iNa_UFJxC+UE?D79K!^= zd;7$7>5I#lRn!^G=+0;hR+2&04(+a8d}0CdU3wek`PKOq`Ss?7ZU&sX)rTD-Me0@j zK9M42>eW6z6(S`93r4M=wgus9n$}w1g}PN8KTtPR{II9X03~@%f2ab@0C5^v6!mEX z(*TWtXaES11?U8X1IhqtfL1^ppcaq^=mmrVN&qQNQ}<*NC~Q%i;eC)B*W*EDc=S+vE#sUE_y$T7zO z<(TJKs++A_sDsok*3H#H>*nj0+=%aC%M~LM;x}21Gx0#T<4bD`;`^QDjFCREo3zII zc%WLhR<}~OQMX*TUbkAe*|R-5-74LI#|qYxi>Gs^(9`+TC5l;!1qukoBE=j9lwzJ@ zDStM9As>>zm_KJ;+bbVfdn0mky-L<1=;RLBtm%~ttiBOAIaw8L@pC$ZY}WQF1lHg5 z{WrI1k=Tm!QTHSi&Fnt$W_yt5gmzV-HNlZ`Numg-eV=;cc*47C-#X)1u+&!w)Vfc; zu{~j3HE6AOv{>pZ0_xnS-?*NLuKKl}5yY(CVwT^8{-{MY{2^2hZ@Qs8Or!xZCmxEef6wm%Q2yD@J+p0ckSbo8Hp-u^Wx6CR0~@R5RD zOy9rfTy|Rtg+O9n5gl?uaG*G>J$2^*)K^s0V9q;tj-Imf#lf{J+Ut^cXA23733Cb1 zg!zOegMH4$*sh|SuClc*ojd<+{BR9I3B5b-ZQk%1LJ5Prpl!@>PQpIjJI`&_@Or{N z{X4)mS-3l4Us*RmiSsBw_(!nSb|g{>2}Uv_K}g50dJI6N0-(m=Ibg;DYz^+}leefY zD5{@dIU1m;{z(4a$b> zxg5_h?mPQ8M`724S%XG{=$0i7O3Q4y>@FXsKeWAD3-b!U47&`+3_BSNm)0XDVhB?z zVmQVv4|6QyIR0oC7Qw~J7oN_=Xj=MI@Q8;hLrz>}9M#WSfclk}Ssx0{@wUqbC&Dr? z>v7GQdz3p2J7ha_JDv&MI;8sz`(^ue`&Ii*`=$G}`<45R`{n!f`_=o+JJdSNI%GO@ zI#fDLIutq#Iy5>g{6G6^`YZYy`pf$3`m6ez`b+z3`z!k!`^)>co|A634jzRqVY=gP zGW96=H=h%3*AA|QwPT*)ZZh|%__qg#2A2e<1UCoA23Ma`qXbaCsP`y!6bH%;MS(I$ zNuYvJFHuq`YLq4F14;|Ujq*UfMJb_}QI04Q6cp)vwRBiNZ&BYb6;krZfSN*@T(uv% z&u`WB%Y;-sa%>w6)`xGs=_d$gd@#QYJy+P)7%aHW3Ir(r*pYZu%ZgT*G=u5agBP-7IpB!@ zNN(QSX!D4 zdt!h7F#exi;i}?Qs?)jDaY(JqNi!H~WZhe@RI_O9Mv5fn`wkDK8x{+>oqMGI_u9O z9J|;wTdr7x|8uZ&Pt$0s`-fR8G|#P@Ux&8(UdJwVTnVrI)JXuxz`C!_?$XCcz`}qt zvwr8$#fdK9>r2n-lvtV?x1yX0HwRNZII8z=}l^>F7OfYN&lQb;Em``}h z^r~!#3h8P|OcfU!!fmkE5H;Y%ef|}31q&VWdf#&U!xNYCI?ySv&ZRR%eY_qtJ*B6x zr0ot_{S~v=)YzTARA`4M@Wr{Aw6!(%l%=y3?8)8ZySGoW(C9B8QY0K2_)Gf(cEQ~5 zTIfvqR}XLUSci=-vPTZGhN|N`U48SivVt{77_Dyq$o=*9j}8n|mo#pZ)ttJYd53ShN{)l{R%M%Iij-n!2m5p6*&_qU)J zSof?E-N5VDUJsLbNTCg!f9{ts%!InMl|t=rf^ptlNwO|{n} zkMLxH_d`@}$4g03m7xUV+6!@fv#J)!@JZDbZMy_lW%M9FKNV9W=NbJRr8N;q`7eF< zLk*Al^Imp;Z_lx@0)a2 zr^JCzg?jn8@Vag1tc33GhT{~!^Im^_&oZ@Pa8QOXU{B<6`6G6DW>j7{?!DStPo<+` zDHIe{kfF}RT%1mnYp(w#xoOb=bt7R+{qneyntl@;A}2#$+4=CyEFcrCMu zzt~RtqmPPgn6LVl|NEIvZ@ue~V`|oIMIo~p_cGDr+Ss#{bY{1y^*A@%jUN7LC+DZ{ zwybfKQ_-UWe?5NS#YVof-R7A1H}K-;z&mTx|7nz=bFMW@?Y1A1T~X+7)|$B5*#S2E zC+lrC!eG~GpK8!BmP(q|4WB$y!#HnNx22Mh-WQ(i1S=su;#$ZrkRDO(g$f4N`rc=T zn&(N9llNaZ1XQ0x$<@$sd~|HKx6qnvP?%3ucBgI?rhBm7$NHv&O5L?<(7~y9Ya?x5 zvlYMSYbzQPw5kLAY)$y9cc@`Kam+ZAcTm!LbPRqdARSnmeJonNko#`gdR+CJk%_-t zlg+W_wVVOH$|!orK%J@+#X1!y$*ktw1TDk7+Avw4v+q&Q}jyo8noh6vQ*>i zoQGKXrw<8eUHxfz*y1l&ID+R2MgK6f7MGHvHvx{ndlqii5HHkana$1=JweU(sS~O%cj+m!oHoLf@#rY zy>yW%?|K0e9_mf1>gq zFPA?aO$_n@ln;H8_6#5n$lG+P?YMA!niN7^?fc|j%El`L456@%(wiXDkl z5^E`+vvn%%6~-^KgiNe!r-d#{Y=q~=f$ck_SYDGzgeX_mFdA1MoDTr*i-))q*` zR@$`uCoWPBYKvJcOF>X{p*le{g2}3m$AU0gRcdy`QNCilNiS)3iRD_Od~9BkZwDiN z>GGzhTI?~WM&3Im=ftgk>}4*C9dJmw_VH?{&k0q)%U?b=n4RQsYu?(J8deGLvhS0d z!8Xn$VfS^LHU8>0Yt`EF)$PU3dSRMc>f+<#+5a^165GVZflevs?ar6a{dduy=ac-^ zP>X1jSfcaA9kif&(vCsxEDM@!3mQ+(DHs=NNhW>w;(I+7-QOY`svTlLK!z|QksQvb6!>k>s&@1Ck0v5vMDVyD$FPf6~4E##hzEU+eEw2-}-L!U! zbK=|9^m$xA-B(~iVHLdjK8XR(%FHrKEXw9~aU@@z1dFcqQfBjJfZ9FqAGNzARW|Qh z!eQ(W@zlz*9XrD>}kiq)7jonaL{Cp z>&POCu2g(Htw#oRYn3WFvKl@sXN5TU(a80woMCU+v=DSH^U^6fPHFpb!Q3QaZURYN zDBH?z2NGpZ%c1z2eYWvih*4?yQMc&#*zx+);{IT`g|Atw|Q>iM7NSg>$RhP6h- ztZM}u0DR>A=IAVm1Tnh<@(>%|#ita@pO5YK7`u(~UNPE5zp3v&@H)*8hESX)OkTCy z(&EowKRgUHX;NR_=Vlr11nn|N79h#<>^H;ezy{r~m?{9FW2L`$(HCu=CPkHr8bFAuG$qHaSm8ouSj{_F5D& zp{M(GY` zeMU`nr;#qO>Z`!g!=1CFn8KIYg=njVue!cOH-=rL=}-tYf7$Nyh8V5VPecmt=PDZ@tfI6?ED z$!JRnS(L7U{eJ(u#OJ&{akC{f4&NB|f0WIkqmVBC8o<)L-hyT+3{K47T7dr?V9fGe z&`rYxGnnn4ALXFfpLkc_WA{Hw{l7Q1`I(ZM@PBrR*y1MDmN3Cj-T{^%phs%I|s@q`FX1?%dnyebl%wu0y46mo>I| zplaUcCn@;W!+p!Iw{O3Q1J@pT_Q{TLeK>tu_x7L9`Q%f_t3%#c$v?Qxap6AU9A(z} zL#xNd&%~zu%>d^q;9;6`=$0LG>oax2`F5-qD#G{P%5}7OGd5lQY>kKK>rxs61~OF@ z>*{Ri(QOd_>4-s91Qpn@o|V7vY+TV=k~2AMXO~&m#)yFp399YAvy!vvTb;@k^u1wq zy0PtDRR68C`0r8g?0T3j46bwEt2T2o%49R0lD~Evzdq&5wqFc9gQeVes#Rb2&R@G# zh%75M6W@JFt-fAmXEN{0`T1>i-?TP`W9+RlE$?+_(nhUaotC@7XjO0NQFUD7!OcUR zU2nF#zRr)XhwhI+<1b#u@q3>?!CLC*g3UGRe@BcN`zg^>c`L#Y&JB-R@TzU)B9 zmJ+D5j!KcvmJC{v(O#CruhaOsQr(y#pCA9RXTPy-aTzSd%gzTVLPWuE*K%og@m&?( zQVRU>^HD46N!D5=S)pi-U#zVu3-mT`%?%S<#qq&F`ha3va_hh^Z`q#VZWHJB6zkI6 z1?|Tk(J%9(DJ98S#_d{ba~r{0oCi?)hSG`@E@m$%EVKdp){?~qj4hNNRY zn2^480ZCE0szFiB6LS!hlV6Zi$3IMd4KnW*$ns9g6(d``WoU180+_RvTc{@7lExVu z6dM&WDfuXclJb{V{f(oGXpt{>*43yE``$3vVy^96PSCiFB%pO|<7_TwvmnGEjr)R3 zFAM$ftIb8qkc-2Dn5@RrCq90A=*Y#HM{=odW^v4>T5z+HTi8Pq!>F^;AkXEt!?;i~ z1x+hMnOc3zT{q=gr?fd)Ubm1@3j7CuH#v4GTeb8*HMQ5Elp00T z4^>n8f}QKvRY6+yiwBD)YF+G!6_9P+99wI-?-Ac=O3!p0#I=(; zNF0H&%S6utr#%Pqa1r z6Ra^qvqK_}E*@YXar?|2x5{G4aWD>G?0l7^UfWwOp_NnHW-s5xFQ98dfvTilk$Ov`A*j{N<-^GCgA{&ytLYo2|stLE8lX?m;--Jw6qa;vw0m9}_Q zxm0-;h<&+Kxm9@=NPKxFx%i0fNV2imBZMPjiC3}6BRFIdEQx-*MTlcvVg)k$ZzYtR z;lBh*#`oE;%-;Upzt@%ipF>$=_rYRE_y59yl6{qDqeQo;yB~d#oL4BJlfbC`Ko*F; zs(?weXjmypVpq2%t)t8r0!I}p1~sY8QuZ+wvR7Gc=vni-R9^Zf-wpKt_(Y?s915g% z2nhVe_jy@voIf-vJH&!g+lXn5b7N2vWlsGXS?V&S)o9pB@06l+KSzNSWx{l~!h`i2t!p0)Vx_lB#EyvZGDr0 z!MNA1y;TOJuHKe%ufrpsQVSHEQTMvj&+7eZc0Q(#ZeIT8YMqb!r;4s}n}<@o@OO&b z3cF;(Ode5=9Zk`xDRIbpOR{cqW$N)iZTbueVkQ*t;evkQnGBxAf4$LVbtB1ZVrt3> z$DqVMKSi{pUQZ>tA4Jlinp-ml*HZ(`vH^`j+f{WI27>WuVMk1!q!ykrWlo^{k!s6o z4K^Q7X&nEks25m5%S}IJo;o3wxa zt(ZtxwaaqruuWa7DW7-_gRZvvil4a<*R1M@SaD zf;~gW(X}bEIJ@aHFH|>f|1pj<{Q~y#|ElZDPNivpDB0`1ivL<7Q%10tJBTE?j()ZT#^m%^I>-XopX71&E-q$(j zI_F$--`OS@DTPz7pS-NIJaXhQ_W{RS9N-HB-BW{;E%vT3*mvj-nYq>AM z@!F7fwakO#IK;3g?=* ze4iaV(x|I@DJ!|;s1sJhZcNvWn)-IgJ+)FRz+^2=edMuLeK+oFq5<5vzO>l-N-wU# ze)Q&n8m$+Ik-X8>i^@Bo>SA=gHjcCaZ*0|qxt)b027BOp_%YPhKcjdw3QZgg{;3BRRi`TZ0 zdZcBnPWmRDXa6YWAJB~U?cw$})!LP_1myDmV27-^jK9w*gAXGZ#Rxeo8b*r%%#eo zuX2ClGq;Q>y=CZgbZj>85aA8~JwKe%qf#wvljLEeL+{qCZXY>Okb%a!Hq+VK6+FeI zfKGNwG)%8yb2PYX*!I}dUCy$q$-OC*O`SA<>`v}6x4Uavs!pYu+ohUbQKu5j?J`Wi zsZ-yWYb&H`x|2K1Kc<;xt5fI9Kc<*|btey-f9#No^A^Y>ol{i`2*CJf%?ssKo=__% zjY%8`c4fBpxM5OWiIvpwzsG#h^vBJlY>lw9U7Ye@*x>5il!`(mUwha=yH28!OQ*jr zTNo;ZDaA{wJbcdH;nkzXJs^4?_* z#i>{Fm;y+R(TZg7soi>JEk&VMH?F#=fhlRkst7X|X``$In6px;7d*(1&Fykbi!tPT z=62bp7Sg~l^g(OnKd*sO9CjBbTT#M{zI zWiydf!TSfaz$1opnN-jR5q%yY+?z-w*aPX&0=IFW?WfN?*hdfTq+c@=ZX0+$AR9DQ z>fb5uA=e%_q0bvoWIWk07(ErfWp2!i&*h&?*tr_GO5LOh?A)HHDgH`!t`Knw*!sTp zE@;aI<$Z24aj(byS`ItLf|la_>AcXVx;&NRXC6LPTbl5VBWolOyFG=7spMD%J!oWQ z#WVG64fv8YhIcnxuC!MANnhc02i}p+EMJC^ODyP+c&bKjoRE%kXsE{je72OatSTM^o|sgX@H{W6`~H;YRxWN|j1U1P= zaZDpedqxJq=Ke)zq=otmt2I*f95jWxCyYW3(Bp?CXF?=)k35*TkV6_-nqx=_Q3#Dr zZmjaLs=prc)&AkrQ!BJ}t7~J0*2{B36G~16x37O73NHAoNWxJ-Z=dkIn-YZXqOibj z#S7s1J5JJ}U^UsO4>P%1B+pL&%F+j;y5n9ahYIXHn$A|@7r1Wt)vQ77T{)7&9-5!3 zt=)3K!grH#nXJ;flFzHoRyXEjifLwd;|*6+kPTIj=~LxdxSa$!nElsY>nkc;>sGCu zI^^)|iTN}2?rupf1s4xZiy~+Cg%!@brJdb2C5t8N<1*juZ{(mFMzKTBtUqU6^mURl z6?|&pyNW1MdTTU{o6QRGaMtrYa>MApuyu=)_k-?8+hdOQ8^fX0=Pd!Wiq|=z*zC2w zVxQ9?=Le-U!D3bLC)2f2<6q`iyzR3~rMV>r)!)6Tzy?n&V%dBpaz1ogyivB$k$R1J zoP*@JNDm;L&=)ab$N?+u8hO@QL?2PL&*H8TC(BZRNdQm5G$1$+JAN_cZrmL{N#c)_32S;Ho9&a`N13@lc z6V$!2t{!}OTTpjwm+;_|UP1A?KB~X{M*wZkQNt$PV$LVFi-t;>rp^U4&yDp*e5g+} zEmPjAu5GlqGn}t44%!XpXz--A|2Q1{@Zt*a%*OLmS)sQcoR^Q3cC!*0dw;6QT_|C8 zj?YBfX+@~C%I|u*)Dx8pC-vm^~p2lwOX8w zC&O}182pS}ZdlnR&oL?^gQ!BU-zo^3#_T@zaZr%~sf`xo`2Oe~$d1U64wdj;N2Ddx z>bi2c28ER$xqDwo20wCd)!>@;?s# zy4f#078Dmh*nP>q?(5sxNTf&f_fHR#7|l4NC2izmHEiVBFID_J4O{wjL5o^4bFW%a zORLyfHqL`;;Pf7^sx#~@tOR7Epxn=@m=d96L*L63azsU;a51Hh+A@7s{#|OAcX7Wy zt;_0OW_i(K#o2SG(22U;B2Fi@rMJ}zNGDyrB^6UgYlOSu*k=};xJJJ2#x7aOP;=pl zQkW<~FbAmaf#v~F>i_M#Fo}M8C{*T-Rjyd`8dp-!%i6o_dL6aU1U{+OEwE}gcE~3I zRnz{4bLhHUc_B?#{X*3X)#LWm*Xh7ZVK!d4Z|Ib<)}h&^e6!s+*C5gZTG}**++mSd zj86`bUYt854RgRRCxne=ir50%pq(597BY@WZT2%GPUX!GFTHY1?hXe zEPbZds-;|4^mCcP&uE-gtEL{!XXj7S8XWJI&Ce23Ufmknh)=^_qBcb7Nkg{C>F2M) zaximJ#!t^+i-mJDGvI16(zhF-(*;LWWrvdVLM+dZp79B&yHvq9*nMV@;^UzK~|&)N85 zn!hlH=CeNwdEk5vk zNq|JtMx3b+Tw-)IyKYDLTC{lEa*13$c4?t{z6(|?73>$aN8V(0bmLC>LKBc@;heWq z%Mhr3ur1^>B2#>sly>=sYuyidhawF7&XL-l@y{z({xw7@IK6XkblKf-F!;mgqWVxf zzQIA3pvPps2Kf0Rd5b~?*7=9{J0zRW3=r+&A4#-yrv@7IHuWIE*6y0aYE5_k(=lU%1M~kV5Hykp z8pR*I#=AYIR=dpdOd)a6&t+y{LQ68gg7pxQ&5p>aO$4Vm19S4YXb~kET6Ygz9IA>$Nfl^%mhc_A?3C1T#IO>E#UDIzBJ}&C>)*yu z3FB3%PTGu3bk5^uO;kaXV}WX+MY&gogR4w$wcMmtR5s=^9bS_mID-4?InaYuJ!;j&P3xV67<@|8+chw;Al z3)19Exp3}icclUSfr90xM-j(ryjsR3Cs5_wr%mquSY@KnzoYhLoD9j12!M=I^)%y; z+%$MWq2`?K-AfTXtoXI2rB3!%3qK++7g{muH|fpB8J4GBqtoEN_PB?ZW3Bp|&xk60O-F}Y zw70G4ZyDvhcsYmGNT?5U(c-*Nb}>9Xaa(BPdsWVp{^~?9uIA+0{8p=3O}>^GHn;S7 zYQJOZNL0?DG^O)t^BU^Hqfau9+p(ecbPBJK!(JZ4dAFFap(-Z$Qz~pJf8<7~X9V)H_*AD3B#uv$+tS1gB4(_yL zr%23>6&zb=)(!%aM*}I;PM#MeTr3(zC96(qBr7A1JGT3X??E<67Mh8mh&jb6%!ajD-Ula)QqUbmiLIBoRA!I}{JjOjADWd%y4Cp_Ac{zHMlW)IC z8nqKVN=(?oCVjg|V&Ms}WDZqf9C%Q{dXLDtyq7qz$R*J_+1WvKN_@|IiM6NJl3A9!yL2?VZn_8f+9Ds$dFIpUj{WbcF1)m`MxlzK$dM-+A zhD~O%7;Jn~a2dx1(Xg>!=kyF1K-R11 z={n_dHc5B&Ztr8~q4>^CG$HKSMB+$WXYsxqD*u)J&)xlWmd7w8nMoVXMr)?qb&FD( z)IQ|u6>>Y)*TaBYmggUEP@$TS%o zquP@#`!#~chF%x)C9mt7k;54#YOKTz)#$xqS{0-il&{xs9M=B2$)Fr|YFDO+1f1#lC-%x;U-F<32E#9>~XrS*0ta}@h%MiBd7YAxmVhx{$gvo#Bi{N3ccZt{ujuPA1D@hB0OPmHm}gq?jO^f1Ac1q@=wV{?lGVUu886+|uTHkG&F99|dI zREuVtuOKOjZeG=GV5No#E4uF4$~t%Kd>#>Ay74Ofvpy;$9k|!1VAnL`8(6-u5Sl$5 z3LU%lq08AY6bKutvvPRAJQPgvze4_gf&_$QFF)z*rQrRohypwo(F4GnrW{>6;_*9~ z${`N6Tyw9+T?SVxPT^WSQz$WybMUBbt*9uDvFY53um)f$1d)?-9CvcZV&Ae(-|~e<_LF3eq1n;f5Gz4O|lp zrA+fqey&Ea_%fAbsM9MDq}spTwN%b^7TXCVfI5unnl5s09t~AN9DB=Z7=D)n;*0w2 zQPpiAv)EC3;R?oJ*hk=vs{5`-K+ud|BlKT-Vpzj@Y>?VJcZ0%-IXVxXf$Y$1hPzIJ zVLcTr=$o4qbYn(R;=1~lYDHebC-?*Qoq`APKi$`oyD4#bwV>5T6`{u+sBI$`DLuKu zBe2yswf;_gaz9G&6oc$w$}!&{OMZvJ)qs!Vnpo|CjX@?>zS-_a2fIfej9rQi_G&}Z z;z?Liw6MlWBKM6hs9gmMK`ON}HcS(k&`&6T4rZ$Z4iXKcpHle6ro@|AmT5qd(f)dL zvA(PSx|9Bn5$TKgM~sAilc)gFLFUt980*;2`TkUbibx1b22f}*OQiX=@b+|)dWoGB z{^YldrFvurm0Jye;3eC+!h&WLFYm%TG3!F+ud0f`feGMyUGEo2fi+&-TQ!RMEzM;n zbUVc_93W{rWAwrs6JZL3=WMOvXr!?NSHHD^b}`Eh!Kq-@E!gDb?qnd$BC#1d^+jN5 zOKR#xUO~v`2w71f!p4_!RVqk#ahErde|!0~^}BFJjS z0Cy2MKUcAO@ayh57Y=!oL|L~2!nOM%5_zkm^O@zuBBUD{e*cU_5T11qY}D$web;EY4BmU8HdJ2^E8H5V`x@ z@-swNZdvKGmOKY8jG{GVO9Cui?usv~#l|E?ym-a9oW8G!CH8w}0mEd%X|}rk6uKHj zOx!Yn?41&5hdm2nGn6QaOkS`BRtQs4Xktij;gzq{fgm?P%TX6tpY0S~iP9-y)y_2q z4RY>DSGL=LDtYf|jxTk19#G5u1>Tf!qjBpIeKIY!R+Zm7YG=9X4f%I!5myvy=PkQ8c=F@cDzss%+QD#2UXMk*&2k3$Dgo&W*rH-!M=Xt^=l)Mf~vB1Aon z4cRXj$ea{0Xv>{N4@ZC9wl}%I3Ipk`Z*dcyk-Bsz-eXC~J$7;>jnN3AHE@k*s_x$f z1P`=8gl}qZ|9pS1^0Njh8K2p6t!Rb*9Buy`;r}fb0B!4;aI3%bcQf=~iG$&;?{9Rq zmoe;KI(m=>A-Jr!utR~u1}}?Q-uB|run8Vu5(a9S5^m)mRT(FZ{*lKPt+dsUj2a

    2?Y$xjDH57^whxw0r=*t9_^4(VG^8$3dL>gBg}CZn2JkpqLyrN9!H z-pBo-sH>)*b7b`+VA&ovCQkYia&<`#g;(I8LQTL!zkoT(`fA#} zApyV&dUR;K+wW#|_TkZ4vA=|TP;cL6x)Q?t3EGU$y}3vspwU26#*@K^o@efCa!raz zV)xdikf!54E4XI2GOzh_>iLgf(yDpJBUvJtn82BqCfI25uces!c1vAv)v&+wEwlaY z7B<($KWH)I;tFJ3SN$}>v81P@I)BRvlXmEE5Q#gr5~1n8mn_^ofFW#X%@I ze@hEQgw`&#hqTne=RHd&?)Kl?jn2sO5A2OA|dNd7{bc;$BpVlH|L2H>77nF^CuJQm<1#`Ky8TB_m#d z;Zz7>Rv7vSEjCuC3*oFz!Y6%x$tTT19%PuK(0L$2a{te`+QBGik6SJ0$!eJ{R`GoC zQGdMVp}ZBO<0(S(h@)U%%Ns7^{Ar7-iDfop&-bMGNGE5LgQCX>EJ53%4tCp#Z_;b4 z#CA)672(QPd?DAApC+?udNxwoEIvJprbF6UkdN|>vX?&eEpc^sPTx0_i3BkPLmxO{SEn{TuB zY3TOL*GVHTU3ENBjuctXl`I75(8@MB;*abYs;L*%Hcz}VGQxzcfDGnrMM#rV)YX7+ zXE4b0Kb50_F4ehAFbY>AbzWwFAxD|rbB6-S@2L^B2=bv`JLKc7+a(8;X5BJZSZ1SL zR-PgDC$2!JoBI{#AyRDfStb&Sil?_+K0Rj#h(?)oGZV|;K@b(j%qie{`iidVSlO;P zGUCoa4;<<4uso7vC)L;u%}sZKpIACqCu~fc&wdDC1A0+I!Eyjpvx8}AZkYZED%d^I zoq@b%GX0WXq>|p#^?>eLI{ix=l?!Z(cx)r+yLn)pr+V$hl0m^1 zY*y=CA+K9~E=6tqP^Wu>y9PLfn7vozZVvVijKhI)2u6|0--TZ9KH1uU0X6#CV`Q?ShUXP#A6)a0G zA!kd$FjKomx<$$vlb$rCh+pl4k-;So7-AG1_^6;5#Yf6BhsYkzt%PmwrCe2PzKVl- z6+p0Z%F4KcYntIPke>7x%HZbQzuYH7CS6#@_Bu>;N<1Z?fg>9&glTt)qY?uk zGI`x@9w*j9xf`wY{2Z4NCnG~4nWLCp{CRf)HoAC4fYQ&PtDGhUefrBB8%VcvqUU}q zQ<-SX!u{FNmnwFmkdP?nLA2CMfuH@bQ(Xn=U~%Gn5)6LcS^>GLBYTs0jEIOBBO^7ppO-&Ca_*=iGG zb%Z{ZJWU#8N5O=tu4M6~J~Ay-irObgtIqVnqVsu_)A_Vi6?6G$>-Ku*x9qe;b{YnD zqn)fJb{uNUHXQAoQGNt7c^e6{qxidRS*26tN~=RUFGpdl!) zM`b?I7hovYnO)%0F4N&7bos)nswJEeQzsp^GO?8@@Ag5uM+Qjy4yNN&!`#xk&^BeO z%a)8+!;hSpcOz8c3qZ0)8dDPUso*EiX&|o%vJG(y;kB-{0gl{{(&1rE9*RznzfWN) zz9Md~k5Bst{`VW^1U8C4qZW~eBsW&j{nU7wzia)y_=m)Xm1UGBa^%wg6gNb1&qUVT zOQ@ILNHHgn%@jOe5dpbi5#>oC3k`cl$dXby&NJ6^ZvaJu!}(v)43= zY$*PkfoHj%(gnrE;|tk-;_I9E>N>hlR46jW(%D4sro9kJm1W5+1WlNQhs5Q2f@UDv z^=-!^@>Zmq5*d`S()I+4v_%@;w>Ir!9o)U-fVI1Qd+(<;ed}e(>Ijxy=&mmeoKF^( zSG2IJbans6kT}qI#n{5!Q`KuD9qX?atL5ClS%TeOA56+%MIR)q*mMpmE#tQqu5v63 zfnZsr$~~H#_jblMsvBC@=Xk%ZmMto%<*!@2CC!)M9ac~=&rd;DbiYrge`QWLvS*_i zjxs#UC|nG@BY%67M0=sH?~@y#>k2WpN5#^8&TkVW4Ix*T&>avwQDhBea) zOgfyc9sNNPDjF4QhNrr!Z-)Is3nXh+mwWsep(*-i*x0l8`n;#j#y$^+zscp{LbFL;WblhSO~LoqhCA;;`&N_JS~V)i-aSsWgfaR(FYdb ztY)E?ZthzXHy1~aV$;ktyMPZZzzq2PjnzMd=W16OQ;dDpA#t5}s*yxzimth@?O$7z z#&@|bx=d9oAdjDeo9plErF<%6i4GBZn)VH8bNA)>^Z%0Dw=Z6NNDrT%J^R;eUp;;L z_T0fm@QyGkbcX#M3i#F-5f|v^U5th^?d)#$==7ZMRXzn(%$;sis@_k5#69tO4?4nbt#=W4JA(HH-2RA7gJ>I#@UU1TKA*n>go}`xT-Wl<(eWXGZ z?sM+WjlUB_6uQ+TgT&#(2!mMx(RndHNxx!kZwwgc)!1$HJIwq%bO-!USC8OX4JTK_ zEra2GF$5C|SUnmt2;Pfs%@TdKPYK`!h1C_a;nHO?VAW@sU-*UC@ayl|(5a1FjIZzp zy>i=kAJ1?k^Frz(gReLQC&87Y&kBKhcR~>W4X$;Tya!~qd7a=6BmwqMP&HKl4_l@Dk+wypG7`HR94!kjIKI%}e0uHr+uO9|HPjp?5Ek+gSEoA9}*Y;M5PM zxD7}jA-ypV4j3AM8ykaqN?UP~auNBkHdRQ-ah{0+rX5Fw(!x63A9W=~mixEErx zU1p9TWS=HXY!H3T15c*c_0%hjW*9mk7|S_2D8YYKd(v#+|1hI_UtHA$#6_JWB?4pJR^*%5jXC9#dk@z3W`cG&pJIoz*6~K?bLwqIDs&Pd;~Q_?fINFED7`Q#Sh+R5wW8zf`2nW`drqjZ6Bb$AS)4z$3i;M*%6% zZS=q9#Vt|~rcEVmx_5J)>CgrOTmHqnnwfRj3^a~xHWG+yN=7IG4q`F0dYav)^Xz~u ztZhBGtES%B@=lh2e|`m=SG3&}sY$z&y8(50K9>wG@uO&cuov?7& zFbrJya3kk@=zs^=mw9MI0_!ue0`!&bhSbbJPmY*DYu>|EUo{Wg64Yy;l%~ngpbxn5 z#?oN(OsiCh`!hrBXx(t+Y!W=TM1P4Y?oxnBQnp>~_|?rN6plL})<_&)?j2OPS3Nz| zu?v*n9>-n}!=$l3g$7B$H@5-tBSuFZ1X)B-^xV*MA{!?Ha~66C6t z;5EEeqHJCYGL1D?<1@4M&+tZYzI9z+>?G`Ju5z8x3$O8XS0i2}Ka zN300iajJT4Y)2bIAkG=$RvIYkg(kjMqV9>lmZCy{VbcJn=Vi02uRz|MXY@x!HI(%TqVLF&2g{tW z)lG-|e~mWqSza7cRwR_C|1rgVI`z^UU6?15m5m%E6v*iZov>TwxogqVX!*N11d7Du zdB32a`FA12Zf7FPpcnwV3OU>LE!2WV!|h9 z`km+2CP2qPil1vp-_p${)~&G4)d``Kg`f}vgKK-HcUL5W_z>`!=>28O_DZN!G*;Rm_^6uSY&X2>ETJYLRP zKESN*yIofw&kd`b%M@IQLM$impFGY#&(DZ=enpGm&@8z4-x`pa3iuy!<>o>~l%HDr zdZWK>ulvfGhOVgA-5Orb5CkTuH&d<@*Ok8U`&f>}YQ+!gL*J2U#59qEX1?9qXXvho6ek zHEDAb7id)&#{G1WI~@123ku*+mvH-9#_xALqNe(@-eRaSI(J8|+KiU?ve(?vpkPUc za0eqT&AD7ez!O*eERu1QfMlOcno*fJ1Amf8nPW#%-15l`FV#6N|A5x#g0}5M4?DbO zQPR2$c(~6b!O-uE+|;aux|`~;*jnokODXsFbx&kh$P|0oB4ekH}9-_XY zMLJTCpepP{DOxlXFpLR9OgCS!O~krx<6c~S7--@ z$2S3VZ}gdVyL*1UhMnNjS8BU1K)bTl$(5;{H)YdbX1SL0Y`8bPZqp{w3+tv1+}Xx= zel!z+-cu{X(|8tl#y!h*O9#1o48=zAMF9DMtUa+WU9dqFphkeY6?-#Yf0KHu`9NsL z#tgLCgt(g^sN3&Nw&f`YidXsUr(VUSTWm5koZ~IkaM*J+Dx?<6BdHxQk-9?;j4Z-Q|n0x0f7=5TB36& z$>YP@>@O_W5$|=iH~Gjr1hZ#xsyqy!_cK~#5`pz!JNhm26uSqffBYwB$844+Q}!eb zqjV@BPlLF2R-mPr@ZyViLqJYU3eAsQ#Wfr=EtGS{_ZxUm80e)C>AZ}{4APg@^YGC|R1rr1a8EX}hjQTh}@J)46^TT!$we;>dLhD(_@qWK+E8?-XXy9CPMqIX2v`f~~FEju{akIP4y^|wfcP^JJ6@`gf%w-x}NfEKt0up<_ zrl-GS$cA>D-pK)a{!tb$?LLHTK{*|1ydrY>j6LgFIL!4PgQ@v2-pHEgd%2?QV7DKb% zgh>8;bGzx~qw*IhZ&$y<8*Ia6X5L}#`_JO$%$(0LoSAQK{-R)=jh~pNv1MVZ=XR;% z5Ww~YCUzA<5bdp`dMK0IL_R&okb2;PiMojcD=X5QMf$vh8aTDZlu;2UOL?KP1Pf-y zU|3#P2X-&oGJLKC=Q;m)HRPg0_4O#xbOE2h<9`C0GvY4{t*+uH(TTYtO2G$F&g-n; zGwl{p?zhiq*AajbCqO#VMe}7(%RMx0$b!e(!Tu_)J6ww0aP%4^@8YSpXW`_fPEVou zEr>Y}CT<^1&sIF6s8;qzpSJYgbnnbb->ZL0<&djKemqi+tcRjenH7LlUi?Z+hQD)^ zM43FXAHlZ97l$UxH%iZ>u^e=0kCXOs&O0`_ysvJ8r*DhleEZ10*icuW<6gWVPD zrm?(=!raQ9&(V$uJ!UICH|CdmVSWzl!&7$AG3$+m*WQ{AhiP2vwG|8_d@?;Ak$twd zejN-v33AEw(OjttGe5suvIWBjnUs@gStIfG?(wH;_T{(T*xgE9pr75Iz$WRpHdkaL zJ*;B%TjZTNpXI~?Mhk1c zjMP1g7@uX6sota&}!9H7QS@K za^Nd6n-aO9CIZpBW^=Wcxm;Qe0jO1aG9Nu68y1%Zrz5YUiiK7n&+JWN)AYF1Nu)h_ zXZ#H#PG^@sUG`HvoXbRI$V0B3yBa*(!lwr%;gh7DY_;V6g)jRoWR9qJ_Q9UCiE@-w z2pkT2fp9qRA07Sv`O*Xh zJCb=@;9hO$F8&0VWSV~jqVqSYnlI!i0@<~yBP|5Ja_mHT8X~3)o?_444Hu5|t(-~S zu4jIHF&z)`L(rVFi4~4pX_KE<2Wy9hAV>8!Bt&K-ptMc-^b0`e)#&CvC8&4SHpv<@ zzZxpA}(pAyUdEX6O(P@O0qa7g^Y$rHzFIv2y&}c zQ)>%(g`24{+;G+otGFKZv$`_RG{7VoL9oiRh*Ak=26i=j@i2INJz5Umw#mD=d(I9t zbegzf`rc#(*7>}yYb95}gJ7yf5Ua&~QZ#KfgB}(=s*#V*=_b|7dLA3UA~}p>?NqMk zS^l`+3%h#;<#QdedU-mOOPb}LJol(bfgkTYm#fU?dcL&$)uz4kN?e@#&G#zObhWq$5zLuz1Cb!Ryo0^!CWTKlJP2v&kE~4zo^+ zU>;{%8EqtMD%AONSENhY&@jxt$U5=_yi;F=tm}6%3;vz2%PV|ZmVlVdEYTzgf=Ir0*L*KG6s(^Qb~h|^?tVB+4QlN3)31mSJGyLF z6QCJO(;zc))M%_9qahZ41P!w%tI(}ovlA!|BQtS@0Caf2tR$*6G`@O#0^ciFQ`A+$)MEZ=eq(RY z-s0AUiK>J-P(oq>72Yc8WZ?XC5m!O~>HgxXOsZ{fEW&}h@gF5(gP%mLwE z$8QvFBfkW&YV#It!(E!KBWWtsx&2e5OVQMN{g?sy=I%f9Tf{A&fXP23B@f@$W#m7u z=iOuM*jAtN&`*FHzhBp|@ow%tvBl0mr#%XI$yGYl2~BIAFdl|5y59_?Wj#TXi~>W+4~%)UbCuepx}m7*I5EKGQU{XSjT9A*0+{hoPnG zIdx#{b#XYc0f+mw7QWY1aHu2n%fF}-fZXcz$dvp}*ixhsy+k3@vJ@szk}a@e^LCkK z$|Z>(I3~g`NaVGV`YBE{xDe zD$K^Lfr3Zz4P|GP^zBIK1!qr2EV?6_`u3-4ug?!7vVB&+S0Oi6=XZnzLnH4f+%+u; zTdHbHOI=6fUr$6!a_Rc!y19B~sV$$IQ6iyXVwR#2MD9%v)YVT-e+`9}6oeWtrllvv z);LncB`&?pqaxN?{e>o^~_g)^`FaxL>P92X=JDL$`NZ35vRNonP(Hehg-E zICU*jo=V-aF-g;;5YpOq`$)1+WA1tLb<;JoT>q8Y8om&b7ERclu~Rjnoj%*j4zG=w^iMb|assYhPwrAy+H2;-Ea z6g7`QUb>-8$pIxNr%TCesYgg_O#^5OfgcuLBz649#6u8pDmL80xG#adIbjo0^rSLk z55ukaPvbvWE-;!i8Qphgu^V+v_LlmacO=Nf5ORzj#zI~0CRLx7+yLisck^pSq(BQaqHh`y2qlVj4T(WXEeGVDMYgmm|mveTLC-vXFg-#%F%0l~3=i}UR} z4$cC&*}eXbx%lLP<|W5{!Ep#PgwkkD!3V+I!E0JJ0os3q|Ez?pF06#7)&m!)>`4_A zfU!K3j5c^R?h?Xb#z<&De$7ur0VHKcfQbB1K#nmJs!{%az^593DiY#L=g0o)6f+_ zTfh{)j-(aN7PIm5=X4ylj%EBhSH#6k71|@}c`SSNHIFx6cold~N|W-5p&9DIg!G|e z0`14p`hv`qbQ7IOL)>U&RcCAXfj;^B>!^i{5UYwx^F>}q>?piy;#WMvXd%f7Ng1^v zbn4{dN{c3K3q~I}+TGl4RQ_XH!sgK4&hz`>*I;h6#c*6Ejy8`3H3+}c#w&lj3%K&q zPH`40#9+~BS4MqT4a+!lj9N$!u_~`JU*L1Zo+EFiS3?UD;@24;rXT z_hA9G!1GyRy2kqGq`_L^%0>f0VC4~BHY3^V>YRk01G<~PyDa^IZ8227jCiR<-*Ceq zbp!gP-r_nw;>IzOm`f6DktSSTP%~(EHh0*3x^xqjYf)`|xZSv+hWYS4&AA+#x=Rf& zI2GKf_{{ou(q0&Qe=fG?cU$rfV||H?xyMjOZsH~=0U=)6h+P$3imujOhl#vmtM^fo zHs=tI8!W`Dn=}xbA5imV(C?9rSBh&`<>W#?EQ-kdfa{*6XDjQ8X?z3Pc!t{C)}KRK ze$A+x?EX`t6VC3vC#3J1SOpJMoKujhp=~SS<+?WV6HR(0+a`Cbt#Shg=5^ot>!VLx zF<%mhIgm@gWC7}HgD}h0SK2oTg%x=bRD7@4=?|XHR+Jo$&)3d`@>ng5l=R98lHrwa z1|d+S&1YgOClQj^u}|e+5fHx(sG#!~*t|xTXX&)^YRM(oJ-(S+(hRjj0-GSq}g2pX#$dK7vd5gBHaR z^BD!@laG%ZlIx4GD;Nb$Ik-3rDEM3;@Xs#JniKu|=S{rDbxtR;mvWM(JWfX0X={Mf z93*I$^e23V?=7kc8P(LEixFxrnGrpkdlm~lY78tk$-dvSQ_{vwRA~9`kZxQXLv_`w z-@nU^8N0g@8ci%TTS@;ggJc-%co6Z%c7HN5hkgESmSHraCEDOLb?*Z?)cmPwV>JjJ z*;Xl`TLXgj!5YJPGZX$9V6``XI)iYcTVB_B#I+^T2OIJ1*i=mawC{WcYN}{bpq*s4I$fM(z5vAmY(J!4-Ed{;z zQtD1=m>(^2)>YK?X68=u5?MtKeSi?dplH#Zt1tS{yv@-n_7M~H9sA_|EpdcvWT(qW z!};Kn|B0kp;q*Eaq3M!Ksq;!~6AOP%%Rnav@t|JbXdv@;AuR0SR@HXr7A$l`F|R@_ zc<%8#2fZ@1ZJldnoKuMEVS`aZij1%8VHY9<69RxhT_QkD`oX)c{@h&sz<+ds!28;` zFbk?=7j{=5ruO$tPYUpcyFeJ8{4Po7WqfBO4Er=+jsO8TqbV(; zY@9mTL!90iw56uf!*AyqHQhU$AnhZ49HU8)R`UVUct`v+&{=aGTZs$MDuAepgkjj4 zaCA`#i8FIaX;if+?-VyQmZ^mb4FC_5!;Xm;?PcC0XM@2*B z{GMAG^DeolC1#o9-Y+M^FW}5bP7C{)rtBdsbn$kPT`reC$|yt$&8bY-=SQOjjO_AP z#dwy;&3GT!9bt!2orcJE+xDrglHyESu!v0Z<;|`Z<9ssK+I-j_=F~(I#kdjpN@?W5 z$wdZ3WwB+9!Bh8j0aB|@mZ!@WlQ~`6hil3yScLeGW!}s@f6FgnB_iSyIXI$#Mxlc$ z3xsGUQf~gYJPs{HcJ$jSeq)cMTtJPkkl+#UY)FnZS)Ki8vS!7`ro@=y$61pVZ~ZQ= zJw@+2h4?q^sc~@~srolQL;dTH6v)&ocYVFt#5UcdRie{WuC8TAvW;E3SDR#an^SqZ zwgb|s49G+>q;Tnp?yf(@d+Nzx0NiV@kLsK+0)%y1z6or_j5|#^mZx<#!Go=sb?gz` z_66s3Ox}>Ralc{a@1${&HBVf%bx>(uR4^$Hs>J3$6eGwdO2`8}B}R`|c1-A%3|T)m zuwI#!6Pr*PAiYW0V%R)>PLpBc-k9;*@sO^ZOI8EKuR*@T1;1}gKlUw%=wQhHViKm9 zMF67If;@o?LJ3Zu`zNj98L2Zd*KDQuqac^c^nZL3Xni)e#fJ^ebKQr%ImI6)khGM6 z=!e-zrtttU5Sr)q>QAYN^F45Q!qcAQ4M3odlxJ1 zId1xsq4csK5vL#T;G&Jdehhv;ITZwSS!2gG|!8|2z(@Zkk3$V~SP4I`@+ zhHnZ)2Jdd@g!JaXOIGWg;NB%2PYKoX8-FW_NxFu+?M$5a{Q&>n@bB4je5APLBYo4q z>!k6xa^{B9gNcbvD>H|Qc*N?Lgv~>vaCsvHBHincn^k|mwwtMGThgm; zZgt6gi2e#;>Aw6lSDYW?Wsj6XO`_%b*(IC^*z{u(l~xwLUMTpV+_ok?5wLr_VOwm1DEi| zw(QitnpohsKs~G;_N?r_iyw^!hW+p0Gf2YH31R6z|JxX^kT?5srd(BBif z&N3sG0}q5*-S;PAVs|3R{k!xO z!oX9ef7<`lxq05?)j|^sO(PdbV8O%}^f@lB+o5ElS>&wCtLuu02q($4^6|-K@}Ug190(Dv z*x?Z#*fBn8X{gmwh*}t`5rt}#(O3s69njF`@hDIJThWx{7`^8TJO8;TTPe<%%Apm; zs>~xHX)0v|vhTNWd-%tA-XG=tKjL0Wsg+JIMJ0zPk?N4&INy3jx!zw>EaO6$xU`d1 zjr^4leYuE8CX+QI3$X;bRwX{XOA3*-eOjvZM<4K>K%7kGIZ4VDqm9Gag7+?nmq;Ru zDxJ`_#48(j4IMLYzIb{$WQh{Ii53QLoD76;HNVX!oB?zuU_vZ7yhFYsu48Aqvbp&X zTZSJE7nRLOq|KbC%}61ZPr3}bG*IBf`VWH0^tjB(*<1X`#JJCpL9s|f8|&<*P2+fN z3TQEjBDE|C5I?TmIsY?~2|pq7rGIdXt8%V(a3e-r35ma+kSeusF4^erwfB8ZrF)y(@%l?Okmiv!sc?F_#?>(M< zFNRkh3bYAoYHNsU3bg?)YY|mz2NF~lXi?Wmvx#gBj3uWmu8&kJYRh^W|z=vK790Hus`nSx^uOd~=3ieg(ar@8xiM$LBk z7zK?3?Hlsz@_E(IdyCqR7Y~uqs6U}RLW0lR6nDF*ge4ObduRj?Tc64PgMO9p*WP)L zmh#935i&p07NP1;pZ3Kb-`@9gtVyaX{;NTXQ=}`%#>~U-^ZArUMt{~@^cNSe@b6hK zJ=soLzYl&M=9QXn$jq8IN7Hn^6lrgJ8(D9@)O3?K$IP0qfEr+w^pkx`>toWgH&5kD zSH!jfMtZ6_B*4b5F!S*Hy>>Fxmni&;hg&o~fJ#3p-5WTJ3@s1d@>(zbH`wHr^iidJZ@p(bO-_g?unDU)7qXS%Z>^%@w|g6r0LLh8n#xTHr4lXmto>T>pTZ z~yJUst*|JxUB*OX|f z(z%+Ht3VL{Dn<{xAyp771$XCDav3ciy2Oc6N{jRLTvfuAFMxLiy_?;DQkSxg{R1NG z>Q`S)5hdV#((gjx0$i!^ecek6T~w(R9-|^CY)CD9bWkY6C6~u#{dWJ5Lm}AYi5c*D z@aeug%+9^}{d3OA;o5gP3?2-I@2{ul9Dn|vcYQs1jCp~!X_+)y58fh%ThQ zbUdG}B&%Xs?DxF8-cl`_5X4@4iWcPGJ#OXMdsH6IfjV-D{S&z-=+WoGWZyZ9kWLJL zEv&^E9{m!?C_Kf^CFl3zv3R`4>yMj$w^xV7^{XQE@!k}LO;NfLQYp_s8aHM`o%HvN z&~ld@wY4N|)QQFx?8!9quUfNFrhbjVR4wVgCe2Ju_B&;0K5qsw7IX(nctQ8*yuO-v z0hYmd)6E}0bdNh)cv?Rj5eNv9zD5*u;g&?yJ<26jL=-o_5`yj2N_#?gu3N{8b;Y}} zgD9^Ik(Jb9Rj8X|ppp({Kh?%uqCPn9jup@hYSRJj^?y#1F2BR6<5i&ZAPowM`2ePzmP z>v>YBojIr($g9D^n#4SB(oTKc75g=-i6dOpSILD;>OF4p)TYGbP-JKhPopn}YJP2q zj~W`MSc%Zwt__0dO!(y!QLc&0PR;Nx#<#1AKV_B-f9nsa&@eCBPejToqm6w%%RN6m z%6@t}&OaH|9%uL)cnj$U5a?%%Y`+~>S+Gs^&mio`HX*4w{i+x7L|K}roIfB z60V|Vn?+gbYy0ATk!F{9IYw7yv2U#Voa}c?b>b-kK@sY1(zNXBWOwW5RvKNZ@l?4D zB_vb@ZH`MyT4}EqSwN+%E<>hCMho;fjv zkWnv}s_+l2YzX$1DlSmxdZA7=`#eGm5=rdGNU@;|fAz6A*w1%s@XPH8N=N<4qBKVm zzv9qW+o1J}A!sD2E7;ETtWQZn#Tzo$$Jil)=* zIq)Evo?IJZXL`^(dv2bU0P!R0hnPHXV?n1wMmnVIm5pR&+kp-kReGnz);SWHaFZ@; zonq|2C=^Vk7A1Pm-lb~8aFrV77}w%<@Lpr3u#?nMaWSd9Urm);D|gtmU3m2*i&J+i zwQJonPRe64*NQgq|?&F5(qoT#(2>)Z{p zD35q9DN$>TW_?Cz_m*x^^gDKEts!>(Kko$nBH53+6h8aOwf}37i3TJACy29(+TN_} znMtrh4kn+sZf9e2YKPP0aMYommBY49d}wz`j$w?oxMZAzcF{{{Nr-M*sHA9^7mRDL z4MHuz#wJ>ZUJ488UfI!7zG$ZB04xhh-*-mxMH6bunvMKQ~l<<2`l0(*J^xK>wT+xg&TB0&>JSGCHJuC3*GXjgt)L{H9YL zWgK+|5*dVs!V4Gu!3br|a2tUasv=J0uT+T&C;szNGoBGhUZ}XtB`{v3BeOskp|DpF5$vB8A-5Mn=P!3BCnzu=KS*H}%*%m6er@U}FJ-~V zb`vA=Rf@xxT)wGi{@CIxB4DS(51kVwd3K(M(=Gp|BQ=<2N>;ORXv+WKqK;mVabf>_ z4%%$uP-jnqlY&z1BGrBornCJETzmVSY>N$$8zYT>&R11ajWtczwvUNTbQtZ8Wf>a2 zr6c3uX&~P!usH}sOfWsGi}ex|l;DN$r6hb0Nt73wG(K)LsVZMTBqgLFJS0(`Yf{_z z*rcia=OGCPDE5|9^rxb$E2jc9SE2?BbSDCE4%$z|z?cr-Eq41}E(eAZf*@c5fn7np zSZ;pkhty~oD^tcK;hVB%XCm25^&>T~ zVQt+?6LUOc7lpErOMLVMY8A;z9)0dJskP$QUvHFYoLS$$;-_`_xeo|yn2qc~29}dZt&wP7r zjJ@bSqTZsOGEp!RDaB*PRdg{_mCK#}s5gApyDk;nR*^|{hMV}3(W?fB##W$ro#Oo4 z#{VlN>;LN`=UWtT1Q75;=K0tcQIi)(nMJTWUDH8+_;2*j*c-o0aki!^e{9>PW zl1n)Yuw@n?R6aA>@_SwD=WqAG&xrbw8Hv#HQ-D=HXQ0(?063-bqZ-Fp2Q;)fd1mwm z2Hu_A1^5*SWh>mgtF}2JYwtx2OdCdUOhDke=nF_M^kTpdL$97pkIR|Gdy`d-?GQZz ze~US^jPZa9%qAR6CbEDE%y0w{;0#T?3vttU$6P|$G-(sVAOxar2mP!)Y#Y)BzOVMA-u~9U;+tD z{#pLXp5aJ4Fmw;+6!X!RIQq$U{^8#jZZ)(MqWel+RC0B%>f)C(qOfsavy_(i0BC{_ zi0S~s?+2y_5Zc2!-BcLwusr+GVa3emDd!f+S77zytiw`%qUJbyn$VYKe4U(R{JSr; zJFz#_=yy`G(RFWHB6QpO52C5`*q1NlxBvIMBx$dnMF~TC_h4fBeFpa{v>qa)CpuW9 zYQeEY(K`GtoN_1bYF?1O1_1bS#(MV2m}dIrP(2s?H?b%n(S4*!N_Wk8UDBA8rI$mZ zOneVw#5&%^8J5rQnK%q8XA!!0@An>4ViCibEYLZ@g3PsdHoqsjM~?1 zo&Of?;96p&H1G8O_@0QF=&(f~xHKHPgL7$Yu*Kyrt;T5x|FK?1X2!LhX4u9~@UyMsTe~5}>fBkf> zJCGlOw>HUiCl^=Q$h!D=gVp(IgO&Ki`Vf0@7c2Rgj+-Ay(ELrC)S0aND>+5?sxu`i z(HGbIosz6Kf|8((etv=wWfKx9kg<`m$@_p21p*MHD7U+WBzuDem`8Z}TsMZ>J8xa7 zsE2I^f`SpxI}2D$58@y9u7eNkx!oSl3uSfS!S=lUtd~8)vZ5;5@7Fn*m_X-nq~oZ? z2)O}A*GxlhBb@2iRKg)bB={weg3)tsqRZE90?vDNlVM0W_wS#=(Y5hmv)|jS;kO<=Y3RD$DY(c+Th84r^#+3?9$XaRF;a-_h$P}a9%xuL2Kfbtae$yGPLrN~$=jP#m~O0RJw4_uQoBPjL{0u@a{Xk_iwhwMoB| zIJ`wgf5@|%3E)95JnFPDI>R z1TkS`_Kc+SOw>P!52}xuk{D}WV|10#1XTHSk1@>uX^5B9;Pt&S z-4Tf6(T({5?Guvm=KR0iP&;kmj1~mn&x`+`_h_K?5Z&t*$)xU6W}*Ch>0k`h{&Im2yGB<(%@Ne1oQP1vBi>ii+^=W(Bh@D%=Mreb$k19lf;RF-@Qo;%Xssx!=*ICkk&0ZZ`o?^6k>YHW#t*|2dAY-LQ?1}$ z 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 literal 0 HcmV?d00001 diff --git a/hydrogen/assets/Inter-MediumItalic.1458af9d.woff b/hydrogen/assets/Inter-MediumItalic.1458af9d.woff new file mode 100644 index 0000000000000000000000000000000000000000..fb79e91ff45cf97c9d636a37822679709f857702 GIT binary patch literal 149344 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 z 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 i4kX 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 literal 0 HcmV?d00001 diff --git a/hydrogen/assets/Inter-Regular.5b3a854b.woff b/hydrogen/assets/Inter-Regular.5b3a854b.woff new file mode 100644 index 0000000000000000000000000000000000000000..7d587c40bfecae6192087352d3fd0a0d25a42e89 GIT binary patch literal 134996 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 z zw#GsId?6`{99BXUiOLijZhO1%cX;4fE&c%C<)*nk1Jk~_A9uMozL_AQ_|aFsi=V)b z^d6jwpYKV+JN!~z{x|$atU}J73{t|QXG~>wS#A_FNt$#LJ3=ilnl&}`U@;RrUF|Es zx`!TybkEu1!;o=YZq(PEJ3T(`{52A~D{kTz-14J(UtqgvVK$!n3aCeaM<e6}v%b4Q~Yjy9N7IPnQ-y8__DQ_^GD$o9i;VUvI&`JpD8TpLoMP z<@#@GYkpcGwUVL2tH0Z29uDZ{RkrVDs74%|&OQuPv*RH-C;_Kia$xA3q(5mvIG3 zIu!`%bLibd%DN52gBT^BkiW)FT)T_w5Z9hx&3uVeyQgpVv4_LBC`O~m)2=Jjx3E*2 z$J1ts+LY0w+4-qMqeg`Yh$xGC=mCK{)As;Zh8uCyu0OUHz*4?|k}42wb1h3TxoHuj1M#<6H2nb#MM&WVcnGwy?4-CpL|)&jd1m z6^>nG>T~`ifbZD>Be*E|3sT%~#QnZ?ZOdwM(Qx|XiE~-3Lx|a3++Ma}^NNp) z+Q_}V_YCiFsOjos#RL>b9{NcoqAxEb=k%8JU=}f0G`cTHu%Hi5)tz_VUo{XtnL>>h|kp7*{Ux)Z771BD8y&l?Q&LAlg>_WgP=D-D0esu z`6RB6*e`aIgpltJgP_({oxMjQ;jKj9w~2_+VtXhe*?tP$whno8kh7ipE=WY(NJ#Ig z7g0~0kU`77gW5z=7MG$c8P$=ZuLR<~w^rx^`pV1T@3vHSm`~u(ckO~}?5lnu-oNfv zu2v={W%>)VpL#R!dh{j180dstmwa`Yh!p>SGm7p`@0C= zZj!G{&@grfKcY4TB4{I^8U8NL3;}Re#Rhm3x8j%aX6%F@uxxm|v=Ue9>=+;2@J*7u zg-exfeAx3dXKuZaE@=xHJ)p*l$VVm2=gTF8(1S1!VsOcZ7w{?h8OW_HeSCw?F53vX zEeYQ|dj$7zbvSCgeS;#xKnN*uZD2HxJTfj(8Hf% z^}fvWomeE&%LT$&o@?m+xnhuVS2!r0(9zL)^|Z;zXr<~Yh8nzfD?m9xSxjGtdm1*_ zZw>9Zag6^kF?`I7xSX{kZaulF9{8uRbIPug$1AVBc87WWt5f*&v~&1{&+>EYgq&5k z2~8u0E?k~h@D6?tJJU*jShsGmym0Z8RlvMlD@pyxCOlokY`n&TcE&0_s5*pMe8MX; z@x<0gD?22atyioQq}NP--@NVX{0G0^W`1vS4LLUYhI!_D_2QND(vIxkcl4Hd(Ryjv z@SEq&ofMbJt&bfyCMjvm)j~zhw8ziB+i>RbX*F@F>4*0C`=`HmY}SUodpFE#YPjW+ zAy;1eX!+z+`QhwmuN|3^GBUQ9)gOyor7IvjN00|njU&8OIKXR8B2>ktZ95-Ue8d2P zxC{Tey&bofZGxB|-vs^hB6b`0Z`rmdZPFfGv}48EA4@-jyPCM_qj1;f&;7Y&&HFF? zXSJMT`Ok}rzM5pWuAHQK1saDCb+)*gi&jmw)~pEhpzmQq2u}o})tnG^#y1)5#c?L% zyk)WFKdpHQt~_x9uG+B~|En?Be~1}iLDsa_*OQa4D@<|eW%b#zyJgtiyeLZ#Tv8d< z4mpjDxVk;88vpW6C=W}2S}tUTZSO8C>)sx=^N)$fb>AXRX-f!y!)VK=3+LGpw?oIX zeyW$fKt-d1xkkM4sP&Fdmf0M7_vMfZq{5DUbr1fuaahBS&2JmSAj*=P3x@B_FdsI3 zgtz}YxedQ{kgqy^=EU(J#fDKoq;e?-4fj1!my`g~G>3{Gf&ZB7G5*7Ei!v93-?=gO zj5U(qE7sw^&ZP?geYAETz_<`n&_2oV z?60DUd=q3;eHd}@%|mB?+Lf34mzLxU&e?aQXWcO|D;JWn6*p8LU;4slJNCaHqwDfX zfA|gADHEs7n56JfNqEST<|^k4270}r)X`9|dZs69Hg!I&Wu?*v&Yd;%+Tam$qmF!# zlS|r6Xi?irv2^Xp#~wSm_I%KWrJ~sC@Bi01-J~&(pUQraG?k>ue9%X}Vi1+Dw;LBt z(nrC*gE5o{oyF#;+lKpRWuF7Tbt}kEsj=Sjv%dV3; zC+=q1%94#GF>?=?;ZhjH_^y-N z>78JlDE!>}ERk_Hd1m8o)Wz~cjJTK~B6dCo0%gok8US|xt9N>WUE~vz)O*oAM6;Z! zZ5>1jb#iMh40?XfYbCqy#htHh^Pp`%9V>S1yK&SN%bV8PIOHzp?~KoAE6X?EZ=L&a zt%&Gt_d~aJRlHXDOx4r(=dHreVu#QCfJNR;>N295A4s@Y-0t*VYfB7X5E}-Qp7ki&C1)9kXcB7VA3yk^ zMY_b$Em zk-VZGp8e}+-B%N$bLLE)RReaU=n1j24%&Wks@+9MSHRBe_%D5HE}?2$%`Is)mBluH z?3Q+cVS78ol&$!!9=CB_Fa1`Ovii3d6`PCSIGXY%KGt%%{GD$ate;4II9MO;9})`| z3UM3xXNS0f(u8V9Qrym=+_Mz1U5dQ>5&QW<#K367YYBLnE>P?lN7L399FK&HRMuwj}w zxRxRas%#SLxO$t~6;o{!>)6`adsSP?iw^ zT0`dBc(QR^d;nLn|7^iUjb`$*Yv1J}MxKQDH&Tznw9lUXv!b|x2srhjA9e)D{)$ZN zWvecQ_IKDk7fLinuvsqJAd%WQEWoIvXab$xiiHL682>F} zYzJe3DJo`oM#S>>9}-cI#hfeEi+-m1Vvon$mXUI(RLcRmD+#?$I=mzF{Mk9qz{YvB zJUC%J7X=w|KDPx|%bz`nog$J~b8BUAd$>*V5)r9mL{EoE=Z&JMF6)8LetK;xbG*|r zYpPACgz&XDaRHZ27#k-INr{+lo*##gt?C=w5l`B{ zHgF|MFs{4+%scjie7bhV^Uc zyy%79(@3AoAk_XGvHLnzF~&nG1VL!uj_WzCLmM+cskw?a0$eQam^}0Hn?~ppaAk#0 zcQS)?XVu>~OM{%vd|q?2yTY8U*D-y_A#$l8`HEz1oz}0^_+XPU+H6EHUy3_TDG`&0 zj#!w!;d7esiVv2n(+@g3A-wADOL&JN@Y8>jbp9$nFgK`P6iw#8RNd>)kytFP=)g$2 z_l2i}ImDVaT0KVj+$g~LJJZ^QYB?=t?5?TjA>0*s%cL9)z1IULU?$W#F)&g3OozK1a%+p(Uz~wLme}H>r zGbxWwFzSNFKE2+9zq$1%Qwo=`WgF3l=Ab8jE?=>?bpE2*Q4>F{{iKbQPEm8ume}m6 zVey|FdGY~w@v6J0C_EOD`GF!SN1bo|KTNmAUohWVzWUUfb!)c#`CQf7Ctqs9d+2oQ zo~Dwcn?Fyyy=T97zV$8n z_KEFpy?K6}*c|`LmeQ@)JDQrCn~r^c>|@F^PwTe9#P$_jgC=UT8qvX#(Y}^Hgw%I7 zt)Yw=v_?SG^_}KOGMF~u&W7JMyDup}-+((emBA(Nc9la=dDpveNtrA4_TB3rdu80U z)sH;$T83DY@!B(wR9`#pmB-fazMYrCe#ASQtfgDuZi2Z#hB;y02d{C@%MZNv0e;yT zw#~K4d@pxo_OkNs17YL_tYx$18}2o4a|7XXvwfa`?GD2b@k_k-OUAXcBU|9kc_{ z&{IL}GQFvstw~?1oFqm5=OcOY|8TDNH~25#S^L`37H945J+;nO-v>TQ{)G#nTgTlF zE=F$Uql8-d40oCQGdG+dqvfypC!v;K5W#VVRbbJN%xT$*F?hX9R2u_g>u)AxMS^F2>p?-a?^!K+Mc-OMqL+4&&WoS z>H;8Lsn$`$5J;9Ewc_B!DJPyj48l|Y!8hS%>~x2I0k^zEuH$>8>RR2r>^U~P=f^bs z8{XcLgI|$S&i7nb55w(gWxsFAznl4;R3OAlBH~7KJC!jMZuMkRo#QP+p1v6kW@q`4 zWJ$si>XZg}trJ&>gWTVpfpFYC%anT)%m8~3poillT+aC zVRf>_)5)b!KNnpLt4}r(JI+wYG&`X0HBNf^gCc5A3L4@{vv(eL=VqnPz07^rnxx#M zA=eELjg?He{r2fczmwCr(z3!SH@eRYon>`K{|?>|iPZA~pj|@Ry;beRrn%I!pBf14 zPuKYLEp;US`WA>`aM?g}zz2CrNEq$YPMvH_nMj zi@y1uP`52+%wuUO?x&$IE;pIus*+B_A$-}gRj0Wya+6%_0bE@6*S3;Jo}86bHtliQ z>*8?AsNdE+Kg?xHBgt9+2+yMr+tsHj#<0pEor#KN zY;~>QH+*vFkWv1VuJE~rm5bLb zU9_Rlz2n#uKa@W8U9p&+Rq*1PH7{W6^AZ30wCej63l6T&OzVRn}pZ%)1(d3z( z6iK0Y5JyuhB*iG3^gBlSz* z7+n+UWOOq~yhax9GiA(A#=uSLnBRNfRAQeWqToF+7P(ySuGnzUwRg>$k6ka~o~rd< zO`g)Rp%XW8;kvf&@O^vs?DPG$;nnvpSa2_d5xurEA2-SmDH*2EMy^0f-_R@KcR{sjMt|HEa;HS|L( zH=oMKxLXxJIzudL^A%qkhzE^QAk7t>9;)Q7guR3gc6iC2#8-!fYB+)s)a1_OQE2KL>QV2;T36Z`WNr%qV&<0yo0_xb4HE+eYH{z_*Wl#ClN8!}1Vtn~A9=i&}riv@81uw#Pz zJ$}v=JAUBuxH|0|lR>m!GfG)=i5NJ2`aGWHnlQp4VadQe;P%Dx-!Abv#tA8)+=2L@ zPu-i`W*Ucb#Gx9wLYMBBisH}&+Jm6uHQ$kt;%TC1w+6>wc#}m0gp5~CD0M;AVTjrD z)=T@}--BBZr!Ag+$D){m?AMlhP9@hh{dB6a@tgPFIf6})+1X{oWhJ;=LQnj=YUl40 zC;a{1A$cnW7(EB`LNDTBQ626QSdzE(1M{Wh6>VfKWzpKg>&;@f4bm?DJ{yob?Q$oV6M zPK7>?;xr|O*Lpgs-N42^zG5AGk;ae2?8M35XBJOQ58^zT1h19rr8G)cxKw#xsPI^o z{6QyuA2lM??)XLdQGU-W_K34_jIP|NZ({lIu=mgE>OGYn5BOuF-cE5rROpH(buFr0 z@9&pN@XHvT98}8n(ofas=YWghc47xp7~Z4CPgmqh@OnmPsEQX*9Q>I*rnso$^@^Rw z#y;}yfIM$GN+v@G8Z8V~(=7(8kDVP2pJ_gL;q#sbz~<9yMvs=->E$OR}i1&uy<`-UGmlAyWy&jWmEq18U&0++4n4ZX-wMy{4Ws+Y=|^YpjuVXZ zr0e?`EgM2iW`QVFp%uwm2PG$rCLyU8zuS7yS+@muR^leY_eQv%PXMCgBbBrDld{9{_j7V337$ka;82iUA(*8} zq(vI%(*_8v8$)gY4x*#^Xs`W`P|bftM4;FDo1khx4BlF@5=L&qe;!P0aun=o9zbKT6Ex%<@@4i;J=?dRaEiPg1RZcuB)wIS@^rdeE(5?gl6)U zx+53pt!zHzdGDPRVj8PUXB3;SYxRzegi;aFx~h$h!byBH>ASndAc7xMY&fK->#kN^ zHO09}DsE%A1xq>;qw|Skv$%GTi>52vbQZ=38U6Y^k0#G7J!E#9nQgY}3t4*Y3SB;% z#Wy1)DSf%ORa+jUxfeZ!r zvhcjdA8U#e|Mo01<&hsNjks`9pYXxmUGcj|J9eY;$38+_e`)T^-- z-#WgQRFiX$ZiPtu9+0+RcSG6Qof*WX%O=Nh=!(;jw4befmE-O`JC3nMFSd;9U87X* zi49iotw(Nu+zw$vQM)@&Lhd5fUsbG-yncctmhurR+Of%nP3Fa`s2Vv$N7AF&K?Zb&aVT%(=%Ib|nVys~RA2uwuKL;aGp_ph98`cv{#Bgo z+>cKlI)qQ|-w$IC9fGm@1%yxIRQ$)~aw`{eIa~rZ7z1h03dn7+}`1zKPF{Z`AP2HP8bfaoWYgYcIGtRjQ4lq%+ji4YthyZ z75VBK`pS*@Mkcq*5Ev^{Tc;QN+RWjT1Q=XdwXB9qTNqujWMlhL?hBS%F zifvUOOa7#|0wEf>X!2)t6pXymgh;d zu8}G#8d*R41f{F_s9&zmF@__e6c-ikzc96Kgt!KIRVRHiW6>umGA!vsgUyv&cQ!-;Gb~LS-4jlr)&Lgdd7D> zpHJ`#f@d>)nu=#JT=gL!wsODPX4sTxehpIZ0@M*iIk%Yf5t1(B#>X2Ga20YBAZReI zd1cmU!HL^(yNJ5o&5#LWAmSx#asLNDtN3v+zrR3bZIo(SqIW)#PI1>@=h8XM@uA@T z6Ga>ceq?GhlJ!(sGybs=W&HzU+y@? zYM`>0jxxti$KuNWz~8?C6YO@F@Wykvdp~woZ*QJIzj-_RJ2(j{A)yl%9zBY;b++O+ z?U%_8u5%|y+qQvUbv6EL+cxalN$3CME~djV>|`>n+yD+RE`q}k6KVf>^8BNBl}_$~e&Qa@pe z`!*mZ&uz-+aq`8PLM)q?l&!>mm}q?s9M4V*(i;^cO#YBy7u0jN!rf)=Yp!=s&F39= zJ>gEu=WFm=`qq*UaFG0ryB!ZMfyvxezsld)xEnfb^5-@#0?e$x;n16yFE^=|<1g5( z1rcOZA@k(+okOL|+~j{Q7dtA}EF~VR5woL?{>4>8)SE%6BN85*^4HObIU|N949zc| zlsj(Nl>sODdzs%V-OGiq;9vjy1MD5G-(#;?W%+;@VV=gud9W?m+%h!5pKXWFTxF7 zrnp4ns3eICT2sV_!#n4k<@N+uiu@KjeQ40XmM~yk^Pzuy@&A zg^I0^3YpCv!*-1j?>VH+;|3VVM<(jXO4d*xzotN1wo+kJ9(H$Dv|o2!dqpR9=UJgO z@w#9*|Jd^ow58}g1YegZA~KbF1aH7|tXsBN;T3oYZuqyuQTW!LMRLopM+nwn&8fQ8WGmM;3sLO0Q}iIZsq8#>O70Z}fTD(#q%bDpVx@8ve_D zT=k4Te-_?yKdt1yO(qsX3{w3!A`_^01{cuB`<{wp1Q#-b2d^2`jE1hJ?VZg{_>0%P zuJ@a;^TUcivWJ&7o9Db)cDLM2obSnM7yBz0=1(6H(+wX&R*B|(Z^Osmd~Ct1$MVC1 zWAEO{$F8=o^!nhhw5vX(*$4?0BBHC>^b|*}fuX-eQBS@`a9kHu;~Z~eLVrKAYpTSJ zkbjcy*yV714AW@KamNwIBTbJu9&R#w`wUUE&m&x+?jLT{r>K63z#8C4p!SM)LkDDI zCr+^8SnPyc$P>r}f{@trsc`rCrBaG_Pl{Ad#xUV*tg;I1+89Z}Z&2}4q^7N_V0ea# z+tjmMom?Bk?<2TqSkZZkkI+-!<3vgEnam~i-y|Wnubn9wX>$8>6%v^jWiXxD879z_bQvW!5B_O=x3vyX z33k4?Ve1o{_Q7DdjCuyYgxBtOI!ht&%&pWl*tBHK1lz%fn^uxV^_ed}HFf5ks0sFi z#5s8SL$68beDku0Vpb@6PsFN=(c6)pgcE4w^YzVWxbOO+uWxK(BK=!JRvK@bajARk@RXPd_a?2GnOz*At~aJ6@_bKv z(rBa8-@mr(*QZ3K&nPDI=~6puFQdmtj}I9iLjCI@uH@K9B}b2zeEe}qlbBNS>9NvJ z$*<s< z?srFxT&ow?S7~@O!&$hl)*J2@-uoUL;am*QA`b}!7vYG%`YgF=Jo3!m*ZX_p4QkQw zXoANn^bPIa@WC~G!u=^9ES$yjZ}9SADDmOrGmd;;xDKd1OPw?xeP(I~cvaYCbxViu)C7c(j5uK2-aP z5U_INlyWnA+H_H35Ru;`3!C#J&&^c7xT&3Le5s!8$vDUS@9K#@q_B0#%TYA#_i4u? zL}=#{1Sq3o63Avr=+dIjimUJ$yy)BSpbY$=oP5f@`ySti568gua0C7de~PUM_)Gi& zq(WNgIcR|E@?kW*_VdqpCjL4fAH`|s^r7dQVIwRlfHWw^<+!>4SKxfa_+sadurVd= z*Rye=FFyfnA7*55gqO46c!f2tUUqVEjGb@seR8`M%;V(1r*LV-*Nk_}fp!jV?qw7%` zx?=!&#V2ZVV!sH35E<+hVx*TFZ9i2<=z<=R_@4kf>A&d*vvXL5Ah~L4l zLN>&f#o^!a0m$I;!wS85DvMLHgd4+Xc5y=(E_r9~S=bM8`49(h{o<2TvAPn^$D0bU z1s7GqOt>jr?G?Tk$i!3`J;TZsz;lJL>dGf_7mFAt>Tg z$FYAeH2?9=SI0(RXHYF9ehWM-`QQWmya%=6PincM&;Q*BX|`Waz)f%e`FSH;^ZGA% z4(|AssMwsdWa3Y0qr0$CbW360-2t@uVZzr&dD^}JWqY>RiJkZSy#74i_Q6re?{0_j zuLt4Ih-0mXet&q;S=+1a*K>J2RxbO-Th78Oa9JmW!YjYLj=yO9{Li=X`zJbWxS{dM zTOBOz8ib@YeG40_(ZnGHA^{3HGX!xZ4elDJ+bZPAH;C7q|BU;%(VfHBQl14LJ-!0P zp=5TRk0zc`7pZSVWI(XugQE}jYI%Ut8?EkDYuxTZ{b)39v$izUw=$J)$Vp3=5UXqz zq$p?pY=h@vUL`Dp$4hAWnpyeQ6>#<2vn%U`B4{W&cY@F=5bm0sediQr(_0DKp%NW4 zT#0T#ccS?y9~Jhm^AX@%6%{`*Iw7UzD#BY2BI1E|^XVYco4-g%q}>R%2v2^ANwnd<@0r2jGrb0fU~UjJQMB3K1ph7gZTu5X!)?U=?1Fnppio1A zx8Zge+yF-ZQ}4h3Lk$$xTWz>g_~G4#R{w^*??7RV|D3y~FNC0l(`)>HhSy+pg=Vl+ z8A4iduM}UzKOALJ)Vc8*{A?wD89z`AGhnnCu7sJ`{?3l<9q%Y|b^8~wr-Bpbif|ev zL)nyR+38tX>DiUk)-|9yeX>53odeNzX7*A5BJO@uX`+d_qa@D1IPZHxO?5 zeNRrcr8?W%*-@2Ee&p;thtn^{_=1ZuU1m*=wd2h0oEq}D``1ouPPIGM7dq!8kmVvo z-G68l3Oq&ZylFlX2;+P-m*eb&$_A+D?7S40<039!E{Eb9S$wmcE|~dnc5@2HjxHC> zI0+V3;3nK$!RK){Ib3ecf!}a|NvEEHkSFFyrBW8{)w20#fgYtp?SK#>`G1Wkxv`8h zKdM*)x4|>VzaynKX`YxXxx~G+(ml@(nrkzDh*;q^x}?LycmtSjp}kj#PHU`<{+IYJj_I!RL2? zFWy)SHk?ZSfUOp%Du1fH%=P3?ojUE#JEu*Z%4K*b4!z%yPzO!WRELw`vpi7GH!eClg526cHkbL{9K1X9_Q?T8K>kCS#W`|Fk{a|d#xkfoew5y)oQs`xtW z6uKOLcj@Cuxm04K(9V^Sav}Y#?lPrsOwu+>*=V%1(TUKl(nhl0XiH^x3PP;x($RBF zqDg#qUL*bPHnX(qIj25Fa4<=*x#_Dp&EJ+ywu<)r$!(kSn?HCrXZed$aEp^`mQB+-8!K*>0$bPp$v54L{aslqaswrW!uMIfJ?J18}QBe0Qr}*z9J8T zptx#D-TmY);bK$X^0yW#y5E3mbP2i`#Uqx~eR7o|sr$r%oYZ~d>jLXK>L>3@~D8@h`Bg1NZ5tGJ8GDaT_M>U25u&Q>9f z@1o!O3}{Ar`Ynd4{dv2Xuf{1;;)qSqOur2RdDhcsHEzDguCuCfvj|4MrBrBEp4m5f zCOCa3gS^Z7)gC+4>a$s#be1;xmV#KAh0rTk!}4?zdp}nB7S*^Si%YdbSvT>mivjA{ z?ra1+z^&i|;oK$%-I?jYOVV<3(#VHzP=E9^T!?t%%1gLSa6CKprkOKuO3n6uyNwqj z7v`JgmwgMJO8%jF;5a&$^3AvV#)U9BpSSpxqtUv_byTY-Lnfn<%p<;@cMv4qQ-Dza z7~(u`QqSD1C$6jvC(@7L?jfS>LAc7{0F%Q(*K%}OT&gmM9T-n1H}qss-q<#0qQzV+ zq57pqX62dS@>MLI4qcXzOUI7V&M4|Wwo^UFC>KjysUe-F6bJ$A*2r9l!}eM*;}Tp4 zarzR7tHC9I*WwZyKZ>i>H4B9(fVP#aPKx?SWmoqwU9)4%lSiJ~WLp{2cHQT2`Mz2h zah$8YZe>>1%Ih9JZm}F!>QI}xXeQ9>ic0P^EXvAh4PHE&y$lk7o<_5TYhwOorhdwH@7k#{f z+Sgp!DwawnWsg=oKp^jX(Gj-?FE!Eo;NU%ZIl{1l~1y>V^q0*K}$H*l~ss_S%_OZ(sW8qf7I<7bFjId@X^Jr0s2+7y;fi2|-h+acYx;}&j+5;jJ z*3?%j#OD;6;NT=3ovczMrymwPioC}jblE4);U-*Vg>lEvK*P5Q(q7rUsTQBxR_S4Xwq>!TkAnL9DG)9ck_3*%(Akg)bAS69&&5w%+FSr^cJMNk+hG))u!Fv0Xwnwk4t82P^=SSHN7z9_}2Er29 z)KItMv(-m&9{zZ2U7gcEGcRuWCP(SSd$Lj{-c9+>^<)WU`WEfpeuxBqfc}n9=5FZV z({jCi897F~xW9#7ae2N{?VJeS?h4|F9c&lMq#Se^ilRHm=*U8h3?RCw?ClL^^@vUb zvT-R9MF3xe+i=H|&)%{A28YesYVNR-gA5){i7RPphv{%xU?iZ>VD9W+F!b!Pl$Ws; zH|ITb=r}*a0=JZ=EM9<>F(9cD`fy~Uc4|D;a`Le|g`$r0wKjUqzFdj~y8h#rEZEV_ zWV|#REuuS?$BiG&`BZWJu=xK42_8vzKq?fKkR8{l{SiIM8Q=hW$eT;@(|8hmejtTe8oWJ_Jg9qEbJy8GcclGuBk2hU^!^DXkYn(Y>g-Mkn7J9qTxTnJR3Yw)l4jnbagaK{7Wzx;eC&TK7O z@Z^&Vidyf?{8IV#Wv2E^vA^lqsE;vJF&hqn)Ezy7rz2{5tlU6yhzEk}?$HqquzXVmaSVdErpA zE<=bRZG(Z{#tPmW_5&i>FY-f(DK=M5x~1M?t}K>J?qYmmVZO<32BiG7b%5HoAt!I- z+F5%_=EJEkMjIDbYv-bDHrxcs%%4jR;OH3MqM9x%OYp<>4Ty?fO@;~Fv z(+Qn?m=HzFosS;HdePcJLH+`C4IPn|G34qYvC-LMb03{NjB_=c3Z9>G3Ewhw@Vw_U zke{{#>&akuB6Q%q6VnAcpWL_K zlg)T;UmGJsht&$<#Smt#9*V6vpDU5gP<|83OQmdN@qP7_&z94; z2Aq+W26eI#{LLU$R1FEJ@Qv@QrL=((HFdAlZD`Dv*tbm1Oqfi<~zLRMf^L3~aay?;a7?pdFcl;F` z%{Zi-@wIjPR^O6y>(mJorqsW&CgZ^e(kI;6Zmg`29v6MjM5)r2no7s+se}Wolz^gj z%RB`f;f;Qa4s{+OmMfJ~*?5xm|MIvfY$afj4cGXFYd2Lj;2JJUjD;+l*N-DlF5pT% z#f%0UVdOPKHo<~$jqSp4HU`OqEW2D_gDgUUow-^nWOxdx#^}6ve-(0)-JM;EZIFsX zp#v%L3P?Og2ZCulA;X<*$Dvk|QaJ+Jw-icI2h-Ew2x?8^K`52OAfpqTpsEws$MXNtUY5LxA@>TQe&MqdM1(0JJv*eg1$w~Kal{RfQjDgTU@cC%h6vPl0!a0 zE`eMc$054<#?iAlN-Rc6iKi=YK*|3Q4@w-mg8v~NU*zD6v^8~|ovx{mr)L_|VKPx8 z@>g5-kI07VXLjA`Cx6dH7&3RS$2m|<9iix{NI1vw(7Q_n#h-CP->)?eaOKOQ0i6^Bu!CUce!LV3-+n9Xa}JR6&biy^2()Q4S>91${{ zWXaL<%w$)Y-j#32q|H-q~gg|eV{Sw!s>7ljYfxgEGngQh>RtZNc%Ua@5~dd z^_^|fW%3@(keo9vt#+MWal)UdWvm*Fmks~6@i_`>W_*33ImG&W#H5vI6?z(FNc}?dk%1W6u!}8K9b2-%+BI7KnitY{yV?4?xFnP*Y zT~T-}U@Q_IyECO?Po}{{=T*D2$Tz{<4Pu;JDiKUNOJG=bx0_-Jdg|p$ z+2N^S_K)3L7#|?};~LtqR9bCTxs$|cB5|B*9C}JH`Pb9bOfN8$D>);HMe-$x?VcLa zkJ2$Zq%_fb!Yz^MBM+lm8%ip zY}ty6l=ow*Gk*GH{*Q!V&kcK}gXR*(8@Teu=L99Y^`- zZkH{%lVCB$u*Fwm=6Cg;Z>#@#=6Gc6oAX9o1%? zDX2J4>oTsE=;_;?=F5WVryhd9n$1yqlac&gyfcoGW)S zd!d#f{q!`F9OMC#bGcZ#1u8rUC{L$l?77a9jzTYxV+gDC3L;M}opaY+b4vFR~xb}^igt`67Qtak3Ob8O2@>Sl21MrEDvKlH$Bfw`8mq^Rh?=<|Y0jeRDsKONAL1v`6XOfj*{T&k)#%_98sKT=aQB73!ByX+-!oG7?zD=ls2tL5G!$wRO4F* zdIVMnL}Cl%PU@ve z*MzYi{S7%+62E_OcyWPryABNoSv=!FSh)VYt}f zLck%@v_$DQXHV}8q&#FHVN90_K9a1ML|Es)QXqi>H2M~ z$49u$R(dIf^+&GwM=L~OhqYaPRF)tC;+#%w$IYFrJWFMN9Hp+^5(mLVfZ$PbSP6DP z24rBD><`bLwL&;-+0d$o0N`3Uig^o{1A? zdfV)DTxc+|Hv0k#=sRCXt>L1)*~}Wsjnk$~oqp%EDbw_ow9(#q;sky7(qMcD zatto^)Lm46i!Fx_7r*zu<^6XphvnGf!ygtOdB6Dm4~jn|`RSC6xW-dS^7CO&mfF{d zAy_-Zj`Wl&SWmcYL{@@DOGmnkS^wh$Ia7^qA^ESA!W6rvV8|qzpjKa{u4m;iSzAfV zE)W`YPZMP?I$p1EsPE}4YmI7^%u-8~qtsMvkK1|opDAyj#>)3lKAq3+?v^)K-}2~{V^-a|=8ZR3-@0PUkc~@My*6RoxCwh7d34wKxVZ7v<_QZ-DU;^UpG3bW-glp3UtD6g?2??!z7VD3 zsm58XSrAoX%_0@T>B6}#Dw`C!g>NLIaJ^v+LVp*sa!L_Re52lt0_eMbjlq|86CUW!N=y2Z>cb%=GkP$_}+$)oAXg8sZV9Tm$HDfJYU4_^BA z!)qZIo`Yv0XXS#ep%uZu?0W%k!jIx7@avWZWnx`aR(a0lS6y}aw3%`1_l1oa6PD?l zC#Ann_c_u3Jl6IdtcEbrG_GLk)PiyO4TZ}alzyiy z2t}TJr9O@#26j|DaBZECao#BYhTralN?C9fb>U{B6UD^dw@9f2&Aan`L`VlaG0Qx;v@P`as?DV=TxSigK zebGwD=cP@g6*W7%apFBQZc4p7o9d8L7UX(QF+F`%$28e{x)%FpYm4gXTUT?+Hywxd zI8&aPJm;?Kr(U0$l}i430HqSfAn^JpAI`w(gzhzN-YcE{jWh|A`}s2rN? zG)@tr6Q8ud9pDOeOIf)cAokK17iCsf}PMv5;J};|^P` z&kL+SSSMDXI7w2@NTwA<8(l@jxr>wDU21D{WalrQDTL`$vNDhFoci#?Q&~S!tnj$l zd#n#Y6j|$8e{*Y-c{vpIgbbUSW> z#Rbhb;TH=k+pwh#EG%BG$Kt6*p>zzuv&Na(gu$HJWRvzIuc2h=9SL{e6*uPAA(dj{ z;;f9vAG&Vh(n&=**qRm_n>aBpbf(=myned zCl*>va~@efb@F&6tsIh8u3tLav)g+g4?D3px_A9p*=*^q$=Wu5QO&|VKUX@<30bw~ zN9N30Qa_a#skwUVO{L2g@0itQvt!RQ;pLajwbc}tJ~-1BnjacQ+iSCE!U=wLswE(E zhb$SEt7!fBaq27yInuJnTzC6ZWmaq1b5r~qv&etuge0+0NW~A|etMsA*Ech7wpj9w zOV>PzJC_o=C4_FQp%4YBH$$kWkSR_#EP+7fEHby) zyZA((-$YV0o?Mi1_e75TH)2f2^hq37CkX79AZS18XrRFqI%#h1)gyu?-is^1dhKxI z#QW%DN*X!|K!R2#(gJ3u?vbHTS`i0%~E5&h4y#Mx+t7rFry&`aU1*$;9hK{{?=kidJiy>E#pJE~3D^|B<{dzz8^ZLnz9LrOv zAs-E+InwsyXlL7zZ1se_c5U5+DT}YFFS#^w$<(W&UM86^-uVoCh*PG`%jBYDX;xg4 z0ee_m-z*m5c0z9`rKhZS@sVs%jweq&u2O4>pI=^GOKEAu6{V#ubp?XH6xwijYAUqJ z5;QDYgwr?|4i7^DX&>@%hF>unfnrbsN+lGvyG4jT^>*ut7}&uxJgalmj11Hq%a*Vu z(^ovRe@98-#M^52tS`12hLAnhQb~H2dEBDFv_wLfesEoKobpRNapg^`7U!E2isHxm zFL-jpI@}aJCobe_;3tjA9v{wqG3L7K#?VW0=y&vl35f7rAewM0;rkL&x1yQmj`Y=) z=stQ9I8e`_b;mJ9e^k}kIw3wTnXokh*L&F%O(*sdT{^vQNX@D8UOnPtFJy}EDJQZF zB|HVtn_4tU(&AQ28wL{DqmfJRG?&&DFTJv^1Sd?mc3d)L1Tr)x?AMOpQbV<&b|!bZ zEb%p3>dLn=mnEiPljN_=W$7|mpDUE~QL8)!1N7ah97$*K$?aA6)X&MJ?-mBDzjMH9 z7$LWip6HaNNlO}*FMF5OOF_=Y4o|r<7S#1S>I)udEco^+-?89ryQ}yp%G3E-au7P>sX`LVop)tWTLL~m ziz_f1=~^~q;Jh~HmC;>oI9Cp`R&rdW6}!yXMc0MzxreR`lQhn^h)z$NlttIp&I_WO ze)lXC-E@sjwvulW$7K_pfRs3YcPeqZ?^3?qhRnAoMO1@cM$v3q#ZqbIFeoaiefx75XWPyi| z=SPL;$eK@}yVxH)3LqA@6hOGtCP8=sZiScv+$M=O$gH(hS2fl_7Otsltg33P#dHq= zn^Q_aNa?2q1XEp%Ai7wCe>@z9onaurHYwF{{gVatXVtrZkeI;NtML=5M|1>HVhr0r zpf4Q8Kk9QG51y?rc=CE>9?>LbAf&G&W21XXIu#TnH1c#+`euU7XBg$9RWEp&nO_f^ zkxG#L^(}V0(l2b&3naY7JN9z7$`T7?VHdpD9i+WS$Acuj0yS^yxUUUAfq%|$B>xOo zVM|S6Lw>^2J7~Vx*pbE6v2kLeGCs_}KjSCbs^F@h%gDf~hKvTG+a%W!x?yMtrR%+P zNIAb*b}rpFahE;1d<=|ipZ5AJ?6Aif^f@Upt3UJ;5lhFetMVkEU@AZ2E~a(?Mdi%- ztGUHr&sqQToE=||DIbHsZco}%9UJ%3UhHol8YI%$sn|6K^#(y0Y^3(373X`J*|;-@ zj63s~9<||ocPqo@^kQ1PxeA6jca#Bnng>~W=K$$(T?y`NNQYPm!!?Gcrlu0Qg7!~w zm*5%*gV;WC_2Hgozf_;Nfht`WgyLp>M^jThRACdfVUp;=bq2P6$3`dYY_J|;Oyw3_ z1{vTlx|*9Il@95c%`uAgxI;=%=9Sg?kXwXSVhg?_SYA)9-okXQO|*GZ42WR&bq66u z7xLv;xxrIK=Rct}}Gj8_Mpjjr(%^3BEivVyz?n50cPD=_k@#pSU!ZKKNHcIBt|sZ~AdT&=7_*6dKKh zMwCW_3>XwPLKqEbG8en9OG>DKC`<%1>8P1;k)RRaP>~qQn+^2NmJtKZck+xg!WfUt zYZu-=D>G&6MDyx}H_n-T-PoIp$$%i!5EQlG`ElbW$A>R?DIsApK53fzW=h(F>vGZm zng&p|sqp$s16SEIi?S|CN;T5(#Oy2tIV6|1}_p$OS2bdN{3R&mv=)l3T7wM3{(mOq{yXM>97V@s745QxQl(0#ZBMD*B;-mC zYC}Br$ciYY)=N$_6tL$eqPNQPGUOu9tS+(Vf$;(_5L-GUXGwANRK?RQVt4Y z_nqCyv3_=>(!~}dBYT2UmhRh9Hf`%04bvuOzV%C0s=j_)>bOl?5<=6{rcYOFVxH)h z8>D(BFFr9sA0lV8gCJyyZV0m4s#qMG=*B_bIAo$b0tdAhWC|cjM(oU~Vr!d?Dlft8 zCKYvQgmJ?*v*1ie=PmgUlq{IIqM^AizoKBizMe93)0EJJbuW`22uXjp;S4TYZ)f9& zE75o~8Qq2MMN8Ryz0dO6|Nf-=e+)ZcQ1#NfbuU%kFeN>O53Q^$_Wq8k-0H>8*Al$A ziv1Q-D_>eyTv?Hto}LOuZ~Vy<|8DMmR}j2$rre;*T)t`3a^lS3IzoRW&A3PWLPff# zEPb9K@yhoMZp+f=o?DtUeR`7eeK#+wKM<9fTW*3beJ2u-0S#s+dtQ!4vJ*>3CF+88 zqY}sK$apk_=c7sO2N)k82+@h7LVzC+dOjLLg3mYNWN=7fI4TI5x(iGVMr)zbT5RGv zaA$F7Gj1=2hMe=Jrfe{lxJ*!9%%xdNOg1C=-`eel_8=T5kru~}!(25`S%On_wvwP0 z6Rv~C9GqL+U7iC$B|&UXBSSQK!b$yzU^6hJ4(z;nn2jGbY5>mediC)wj0dCeB6exiWqx>Co}> z|2}s9FJt8YG9XscHR1F=b4yB6EN^VyAC!Y5WaGZWpKh>LW24`JDKkfyB1-WWkb2w9 z^`eQ)DcPF7s+!m|ZcI*GF4(1X6YHy$i-mG78OQS8b2g%V$Ew+N#>9kiY*=c@mnF_s zrwz*qU*&|aT*4QrSN}XFce^hbdus!2{J@?F_9-w{m@ zyq+7j^`~7+$KF+93S02x#IXyvsq=ejY~Ii}uOZ63PBdXp%d2g}UTfKtQ|c-Q-I4!D z;<%O5Xm-EZW!(GKZSZuDZPJYL2g#gOalSXdg={{O<~P9i`UXAK)!f@2U$vob!tDiD z*7?=pWp{4fi_@TC+Pr(nSxKqPp4-JjPZY^-xO&q?NKzjn$}fdle9zLz2k+Q@V?^Q1 zRU7KBpZsvNj!ClE;5ROLP0Hl0uj5;wVb+X$M~$JW)XtRu#krJqu0q*C(qO$cR;{$% zDzal}+|a_Px{{Fa`8P)y@~!^vz|rrd2Pu+3HrqwB_i1`DMI^{7ES;wGwbe*#1 z(66BhxzGY=_Ga{W)flucs~Qvjw8_WxY@L>~-dcr&{N9{+ZERqwH)lDcy8se9nZ~kVEXz^>Jffp_W78GnLugYyO$f{w>0& zUUucy#jnI(v3`LMpD#|kce9VRz<+HZY$g^C8zh?MWu-6hVQ|*03vEafVe`guG1M1@ z&e1gx9Eol@U~n>86l~ z;eq0;OTT=oufdwPS(#riAo)-Ct4G7wt+L~lD-iqKd^CD=?x`o)%pAHZEZ(+c-5$f-2t@0@j2Q8~Wj(ukF_vI>eG zzBRCKx>um9S-Q+qX4pk(Gmn~n7$|yhZ$jlA^L&^Xni&3K^7@-#s4piGbLMB^RvMMY!Wh3G^EBmZ|$EWXG+D zZ@lA)^@k6yFP-XFm1oVIG(9x&kvX&P)}^PW7pBDSOr61Odv2B-y8M}mP2aLZlA z`NsTWrUSWR9!a|fUBOcBzt9uuxr?IccI-TTYRAsk4Anz!pSfVp^yTTZhSq>7^oW@E z&gPoU@090Hh@ZbYf8ml5Lkr3=S-z+AN&Ahn{2G+ITE~y4J~O>iw-cI@!P@Juk0ser zr_EwmF(e+3oS!!mYz4v0c?bUUVUskm|b=)OG>Vx$+{Z^keDLt-UUxi!vgtf~b zzUi{uiD?nH4fPM68=N*Fx_nYn(l}KH$Y5sUj%crYiasznlH4B242L@*Gya)LOSjIw z{&icEDQE80cS&`*W8>E>nYJ<(pP`4S&PdN2!Q^QnI^a+AFH${Q%{wfQ^sb^Z+rSzM zs+e-tZ3`B>wrBOacdUlADTPxeZ`g5o^^W~k{-Gp`J}vs%(9pd6g%597Fm`!-8B5EAe_R4R0hWPy&wfVjRxuc{<5g9?93GDB4%MS!L4B#U;HXR;#pXRl0fq zzAd*cjvQ2dMX*sYhE9xlaK!Bo+%WC3;aL-C*D&w19sYG4$?>!0udj+0%tOToA1oUm z2jOuO%FO8O3NpkQX#m6FkRAG1rZl6Wde@5Lx;v*T`F_s%WX&z^sHXW|2~ zb@|mfm(RbcJ~ur(rE>PE3SC@o-I2syBr_mTOQt+>i%HlH8l(FE_v?8 z+on9AoDJ^r*Vjuf)lV*X7#bR2#s25)8XHJH~dq)=ht8Ho==DW=shdbr0W#T?3^dcn|gw6a0KBkz(_cQVC4$9 zXaX_5LK6AvH$mF83A^6J&i~*a;EMl1khwA=qtc9>TQ+XoBAOq#%#Lfn`3mp<{IYeM z$3rEIgG6{~{3G2RRl{HXZQZ)g*TNcJOTo?Wyn{ba*+}Pgx;*WY+b@(@|C`ZN$_ZOp z)$SfvelX{I6yS55=V*3?ND>?7E9#;R^Jx`iGkl`RN3D4A#T8}s5O#2bxw6vy2i$;< z{IT`-^z^Q+Rr2P|vQU|vQgyCw>cnXcZ)~0R+zb0~aKYI4j$6q7nvVC6xjT;?*|U#J zlNL|J4nfsn7W44X^Hpa&j9+v68`rt+EhL zy_ALTbQ?YLz2raHLw++%mt9#|qx2mMJtkrcuRtSN{v-GZewcR}j5a&o(i=~H!uZJU z@;b1#^PxYl-C@0bVYoGP+B|DiO&!lK|H+V#>mUQa>9>A&LBZl%sW)rls)B+CCX-(^ zHg<qh6uM?c&qsEcV=Q%0V z`Hk;(lJ^@8)&J~YJkZQ8_GkXZ>32>@no5^%**-;CqAAh2RW8%(8z)66n-_CZB<5iZ z(aJPy&iGXFO*moge~j3St$z6^TFg0b^)$16AsNuj+L9=-0hbt>ki=#ky}MO?nQ{9! zH92vW6<0%$mTp>myK*y$GbM*5NZYX(LW}zEOFop`#wK;&s}$4J6pCvgGmP?-Alq=c zr-1O1+nxJ2c|$oXR?4OKh3MH?tI{D|x~Gip{gxX!D>AV&=f`Uej&`FwNS3YZ4zFKW zGA1r`M$*j5OH5NfGnJJ`2iF>g-#j6m&Bt~-#2Q>|DCP8qFAu5lxPuCSMs44o|~dcpv^yXl=qL@EN|sfmh*WxEklR!nkvAC6L!RRkw|l$lyt;O0(eh4c1P-L3b?z*GudjQrKI$8rn;~kV;!}P7 z#9keAXNmPF)~|}_;M^XIa#LYXHHUm;-okV++(&l?6uhR9TuMK(Z(*BcpvWj&`jNkE z<;qYi+hatGDCeU|Q0@Hs#F$&7gNB-hPFvcFYfj+5B>y(Upkg!Q6V>bNe5lll2B9Gr zuKDoeBXqpaZMINtDlIiFc>3v&o4|k|{cuK?3!5iIMryeZA@^&+3f<;W~P1thfXP zakMNSL~#OA?MWH2C&~ZKo-m65niH|U#hYNW=0D7#7O_qUBYC<+@$?Sz@g8MsUny-r z969ns8*v|E?NLKi&tJwNg7yKL5-^G+Ep8<)N#st-LP_tXzt5{r~G)o7{Hs;$$u>q&x2*Yi(YQ*VlzF z+>(%R8(nJ~H!ck>yNNXdGbXW*BFkd2L6>jHMIsu;tlB7DBD}8xB2#Q>| z6L-0wh^x0|Wj-)Xs;gf*S&G5sZa3uD)Qb^g<6??eE}S*Zz}Ay%gdjs6kxk@Z@xe-g_^cj9R#fE*^%_3{6IecauF!o~A)n+M4J< z=W#&xoh0noLTXbXUm~?-Z708QL5bzm)@l4_RXp}((3JhU+X3Fs3h*i zHPu;L>()=WppL@F%Bda9r;O-dt-(lmzf|SCe-E-+cNXX9)wVSY6m2sY?RH$v)GH&7 zsn<=4t?CjR1UKoYi6~6drva2Z8>(Hni)vLhWET{h(x#^;jk!JFVoJXIu7okS6I)hG zY*{9l!l$hxj%iV0)1JBd>J*YjJE?pA1}o98%P*>XkLG4t;p}`CLTb^*H%5eSu=RsOOu{;VFrb>b!nVLiD&Hq|-Dh z_x;E81>Nbn3nC1Biy?4E?NiLBi_hj;g%-B19_wazuYpDC&>_DVQa@;yuY+Q!RB9He z4>?tbw#;p-5yBhIrbVF}ES8a44-ASJVhmxI=7!eA<|Gu^oko@@*7nah!Kg zdOQ!t-)|v^D0kDn`#6g;0#fEmMAd_ZGxAfWHpNc{)KL8QiWu|P%WdrJ9c+XGEM@%WOC`ME=h9kspF`F}G1|9fub=(GtXVJ2&e<|+)|Q+! zlPQgSq>`+SGiGeeQvO!Vx%uWf^z;7#b_#P?0C?JCU}RumU}g@9_}7>m&u{aUL7JNZ z1a58h*#)J~e1Gt#Mkb2~#ARb(0#N{Z0}X%x0C?JCU}Rw6TJbl6fkC$6`-3lEWU_!F zD1h@d0IW|3;CR~QnGa-Z`$iS?_TIlFYwe^12}MM_iX40ac7OPo4->Bv?Z7*D3->VnvBszGKgQdZ@FT`j z^lzoPYWpI6{|w|+I;!4W!c>p3=*vXcZ|)>i-1ARnruykbcYow-$UxQW$cY!iy_}>s zYjm9l;x4S>Y7eZ{{2m%F`=j7# z+wDMu`#6Fkyn`y|vZ#xuuuEi zf6sH7ypDhHi5x|DpAwh8MoZHFh=%Grjwvxz3U36&ZsG5HDpBevy0pEukbf7WNkBRQ!e1-9~lY4Pr z;wA?B!f>b1KTSTuovIRbRiChJ_VNh7N))4C+ks4-3&|(OQ8!W3K2c5*KNr=1B(4U3 z3x97<@lB&g=)j4N(=qCYZ*`1`slg2_Y|Sg%GW{;xis2+yzl?UHJL7+qR0eHJ`y!|{JF{J+ix=1`q_S&wzmVmwEc7GJL@uyi8^TBDex=`d>)RCKjs&3PRtnX zsn2KyU(MmX#4rbH_ywHf8>2n-8Li-}B}a1pnY6fu&m70?PTT{TfFWumnGb(2 zxg*;@*4}-+*8|S_9(Ev|FNxcdl6%HA))cuWFKCzK;Qi1T<9s0(WDodN{hr(=&!w`qEfwqvb_pT<1zzfj;>+_}9-FqiZ=~q`!+ddVZ5UOYYZ&;+4qZvhweW+MKtF z`%9^KU7mMV>h2Z%PU=aKp~F0IVa=q*y=%A~=|JdanPZ=^fy{v4U`wbcv|aX^jMp3~ zCr8e?=4YZ>bPnanzLvbx!mdg~=d|vlsguRNWA27DoC=hQ$A+S<=O|>{SoWM#d^y>5 z-^#9&k-XYy)tSm^;v3fM(tpi9-%HtPV_(Xt^NzWOQpT>>6S;;1_zi43w=yu?{J+|3 zS&kE5OUc=1z60Wma_nql@8c)Ga0+saT}n6~4nH-PxbBh@xw6UGA^%g1P4B=jq?Ecs zD^gDXTB_s-$ElGVr1SU!sis3I`++>H)#c&M0v*ZGS|57A{U_!qS+jTa*(7V$m91y8 zZt3~G;k@5+etU4I*j?!-$kCR4fxIU+fVznMO5{UU3+aIGpsFZX|Wu*>H(UAMmeYGi%==cut&OK1sS$=Im(ZIgrD3xRhO&uZ@I3R^_8YJt@X7{V!-Xi{OmwB z;Y8%ofdg&-332kLg4SMNP2&F)70u-heSNQP=+YkgGYJ#;GuslnIxeqgia7n<&uXnF z8^m>KcT&`A*cWE5isriN_o*kb&#=$&kI9?IiTL}g>3$>HM{dsK{0o^n0r7x;2TtIO_@)`(MXynP2iS4&YkrE3mU$z6 zb`Xth*1*@vaL+8p!zS&P*5-)!GYW#ln;Iw03wm$zE)X}v=I)zO+uYZk4SprmL`qxG29Ncy~$r}dek zt!RCuak{?NPp00|vlMXVJHGB2+l~2a>>OH!IaF5v$1nS*qP1ShoR_|yTeVlXv7W&M z8qC##RqlA@(@(prZJt|E-&fEcdKvTnfSPwzqwC(at?2o)1N`8|XXkx_GXi~wIrW(& zdA@#!XLBt2TX~dP$Wi9K9Q~|^eTz@ez+4KM5zl1DoR4|@f2ghJdyn=l*Lp4eWgQ4> zMJbVol>C;cuZ-5Hm1_Dvn*C<=dYA8vxi;(`T1KmkUHF_S^{oY>*Lbb_gqlx`jSoi5 zc}h&1+TvUFJ9-}4a)Eu646K~Tyy{=p6j?du8v1TlPVJ18P|dx?&Pqw!iNM<6e(Wh) z4^RV*nQv~#_iKw#@#5#8?Fy=UIdo`4No&v=^vFnetn)Ykhw1APwf)TRaqEcUO^ zuEGUz6BufowiV(ViNM}Z2KGAW+%3lB@t2>1zh^ixYh6D_&x{>dyLS9t+NE7%?gH&A z!?$p0{QGEEQJXc}>R;_y$Eh#Q*B-ASWAeFz+A$v%3||e(O=r+0;uOlVwK4Wgt5Z}JxM!`Qf?E-cKj){AK9*jWX4ED?%d9Gmyb+blR zV+{vz3^i!N9A>a#d;_(a=e>!qta55tH`lzy+&>4_3P(=%4;{4`^BCVF5$sZ|k5l?) zieAGjeOoJ---j&rUlFT)r<|Md3UiJFxHD(}Ou_D~Ada(b<*-|?jakLTb%vgS$1;p) zk464-2KsCZ&{IrZq70w|O|^-?(d)wwjQ@`Ip8DZ@h3TspYH(ui?-_azj<#VRYR0GM zxr+AT0LrG;sHXy1c!5;(_Y*zVHS~ActgUBc8@7z@>UTNUeDI{EdP{u4#QKaoQlE{F z`*W2HWY^rA3~Uj5i`G@uPk#e@b*(6|pw~g)g1&q6+-7>_^}kmqYvmJD5v>jN`RE!v zgKWZ=ON;q5p4#yAe*ho;{D1%e0C?Jk!GTvA1mZYwbPgFJA}TY6h)9mmkTIvs7%@~* z=E#wvW5%4B=W%9?DWYHFj7&+%IYwk;3=x@;nVAt&V~(71<~VZ<9dkxZ$&Ad%`SyH1 z-|zl|-}?Xn0OJ4T14;lD03o0WAP1-bI=~>n0+<5K1C{~nfbAea5F{uz2p2>Oq6Xy# z6$X_B34@w~{;J!m@^5DW>94aNnNf~mo|!P4ONU}dm2*cfaM zo(^^e`+@@pf)79spbroZ&<|7{s6EhpKz?BA!2E&b1M3HNLg*p6Aq63wA?^@gNFZeY zAow8SVA4U!!Ip!HgO-DVgZn@*5COyjiNH)C6UYJbfnuNx*a_4CjldD06*voY0lmOY z;BF`|6dsBWC4{DjGDA6`{7^xtI8+we8LA02g|39Ihi--Lfk2>W5C%j9WrCO>4u}t` z1c^XWP&-HmngY#(+=ozyst!#YvLA9D@*MIXdIk;w!@yjy0sJg1Bn%dY3d4t`h0(+E z!z#jrVNGH3Fjbf?Y%t6c=7oSD(GU!T3K2j=5GkY`qK4=pLy$4ZG-Ls?0@;A0v`K2h0ug!8Tz#kYtSZ~#YD$o zVp3u#G1)N%F{Lq8F|{$xF^ZV(7(>i(%tVYm#u?*@@y9$vgdkuD6e0ydL1ZHe5T%GJ zL@lBTAxEeYdc-ioikL&V5$lL8#NOeM!;r(#hf#;|hxvzF4=WFA4?APQvG7=QY;~+A z))+eyYmJ?ab;WvPH)Hpo13y>zobtJ8WHb_kOhHnR*~kK9DY6P#i)==AA-jCLjA*u-_N2yRc)F8@& znnKN^mQm}d?KnUjBrY}%7e|Vt#^uHp#+AiY#~I=#;_PwGxLq_54M(HV1avx@fv!Z0 z&{A|eT8-ACEoe8|hYq0k zFenTjlZK&V@-ZbC38n?3z*rK13Gf7T0wEzYftkQb;3o(Y#0jzlWr8-rlweM&6*y!?+2Y9p}V(o<}{8f4=JZ z(dQ?hpL>2O36jK3>Q3?{1(NoUf{!AOVvmxKW*%i6l^$(Bx`fB!Nq8k*i#OrTcpKh< zcjJBd0Dk|4suv_LjJ#kaAP86jk&sDX5;z1tK|l}_WQ0zFhF~O&5Uhk*f}7wY1PJ@d z;ABKHHkp`AOJ*i>l6lFM$-?CBWLvT$*`4f5NlQ_tXj4on<`i3sBgLKKO9{M)coF*| z;l-*KdtO{2B8fDjkT^oL5@(4nqL;Wy+)V|h!c&o{NvY&iS}H4*n_8Y)liHZtnyO6I zrkYaCskT%{syo$}8c5wIfk_Bb3W-9>CKZrMNM)pIl7uus8YNAV=15M`GHLx7@EG|R z?HKDA_gML{nq!hJyvWP4rcak+^3)xHFB<~*2JkC7M zInF;WI4(ZkdR%#2d)#<@B`qn9lqN_Mr^(Vf(?-&)X@L_-Cu&aUPnb@aPuNa4PPk9_ zP6STur-RcG>Fjh~dS&`Z`c6i01~dbik(5Espk=T!xEbXcH5rW=tr^M;ZH6hsoMFpw zWVkbY8G(#_3YdbRU@2q@jl!aEDdm(JN+U%^>7-~VM#>1qN|~j&DBhFklSwCuC(}=ofn7&HiqVJssosK?@Ih}Hvayt98;I#O(?DXhqHv`T< zGYE`y27|$7@EDa05ktyoXQ&x^#t>tSG0j+DtS~khJ6XY5&@5zDQWiOjmc`2AX4Pa# zvRbmbvPQEevu3kgS>CM8tley2Hat5mo1UGYU6|dOZO*o3@8zWDFml*AyqwA$QI0gH zJx86R&oSkgb8I=YIj$T}jz8xaGlYp^;+ZU_n5kn9GA+z0<~(zmx&8|FmHbyqU#We? z`pVKP{#=Z4OWotr+l zaBk(?#FD@yrC>9ns70ZiN#k%6bVoUK<@qF=e z39O{FL{>6cGFP%xvU(nKo_}6;e&oFM{OozxdGGnn^SeAC56(mL2)uM2gU9Cac$GX6 zPs*FV0J*@p(0W06L3_b;!F<7X!EwQT!FM5WVZRhwiY_IV(n{H-{L-3IX=!Jvrqonw zE}ecI@H+eTme*CU54>)9eU%UAqxofg317}P@|}FoMbJh3Mb<^`#qx{I7Zn$c7e_8S zF7A{CmqnK)l~tDwl#Q0z%9bwyEc0x2xW6 zd3)?_w=i1B7IKAU!YZLqC=oUb<-#suw@@b>5RM4Pgf`)B#x zUv^$z5haO8B95q3BowuaR3fctL9~2@f2Hb*=t|R-)+=3CG*=8)ytS0t+*)p}pjKSl zQmd%d)DF~|Ypu1*b)Y j=a1S5_yetF4pP$?KGLJ$1&q;kvQ9sXBMvR^2l(Pz)EN z#RPGhm?mb6d18TBDprWQ#RFoCcuMRM@6-e9;q~bHlzK`%y*{_TpuVKOyuP}=wq9PZ ztvA)1>*wlMB>)LpLY9+I)xjPQ^Pt@7SfmQj(M{6-qm$ga1bV zyZhhk&A?`4GozW;JkmV>F8p1_yEX4>-<^MVTb3p(k%?tm*@SHNJ-~a|_t@`A-y3?* z(E@BqX<@fiw6wMuTV`8U--o@Ad!PM&=lg^2ds;EAX|1wWTdTJ%qz%!AZ)3C-v{kg# zv`N}zZHhK^o372&Hri%wv$rj@Ew}mFw%T^(A#$iZR*sdY$kXL?IZIwB=gX_)B6*X% zRo*4n$PMx#xkYZ1&&geKk9>IVfMNIn?(V7@)1o!(y9u4`Xz_qXqK z06M@O(H-axdz6r&2O!l77EY%2CYgno$pknmyVhpZ2IA5M1Wb_TApuJW!5 zt~Oq6zpA-9dUfjR+||I<{VrS=xhub`u&cVOyKA`1)3tXEbB%b7a*cV7d#&c0#0@wDGKqX9>q$DZxm0V?wQljis_9%_YVddEW&vn3c$o1IknCtlKY1c*9 z+pp`dk6m|P-&Mg?1QkP7rjn}Esv(s{WmEY+0)IsLsPd!ckJ>*P`e;QBQzO+lHBn7b zGt~KNuDVPuP}i!ZYPnje?okh`7t|j0rh4yV@W+^s(>`W>T=sG6$0OZ&h zJ=^X61o#Q&6VWFg4NaraSTvKGl}}-x;yz`5D(Qjs;Ckpir9I-F$7HS3BW^Iqwto7Ug-GJXf-DtgGxiNjidBb~S>&CtgqC@KNx^!K(j-xBn z)##dZ?YeHAQ8%iy>E?ASI=^nW7u1XB#r2YV>AmdU(q2KYq_?$K)vNCv?zQ&L^}2i4 zdw299dbl2=C+ewsmcB$^sjt<`^j&(beo#NAx9eT{Rehij&*G8#WBj z`hoq?{n&m|KdnE%pVwd2FYa&YSN7}rhx#Y_XZx4>ef`_UU?a?kHl`T4#&V;;C^Bk| zUgO41+)dI=>P^|r&YOcbEjOob&JRQn6b_UPCm!trnvu~F=g8JK^l!x941cpTnmelh zHsssNZ@a$j{#N(x#J5}KXfw)8GfT|FX5V*|?}XnOzZ>~(-KHHZOHA|+qm1L+vT^# zx4Uk;CgGDQlfp^!qz9mbvVJ1uv5?%3`;v(asG+td%hA22^;{!sP9 z@DzB8JJmDgx{JSCc(?R!o!Ok(x5Mpddy<`OXV_VG zj-6*Ow-4E${io?amjCR`!e@m);(k>8X!z0kqvyw+ANS`#bAmbb+}PagoO8}Qw{{^qn$V>#hL3YbBdfTPPNnIv^p1@`wxH*5D&5+G(Ko~pnNd!VCsSUf%k#m zg>cbbELVxE+|}e#xq4hC*Qm?tnse3+9GYSV6l8rwAi%Ry4bZixH!A$ zTwGs*EhR0{msm^urK%;-Qu9*Rl5WYgG`cjqwDl1Dkob`CF#jRbKUawi#tWU4|evADr{WsokqTf1yGyUe+ zz;4uTjBafIPWoN)yZLvYKiCiRWBgP<)6e%S{TBb`ACNzAf0X^9{lmXW+SLCE|C95l z@=yDpu0MCSs9UTp;a2Nb*H+J#b<4iB@K^9(xW5YilK!Rm%l4Ni01FTU6#-G8J1`b- z2X_Ca{ay99_HW1E%iG}X%bbyEz5Ji;J3I0@jhINH2d);zH58{2fSOx2hro5GCoY6Gd|M9N4*|z z$M_f)Vi|}%;2ho=d$ig?DV#9gM}qNwp5HM(fQi@-LL20U-@#)*1RmHr_rcGH7bd}a|+>(FS)>C?(f zStT`8UqzKLhVtZ);Aw-(d-4x3DRoWN=6I9l|JRC=MTtB~Efu=irphtD<5?M@^4(O1 zv|{?IHiv-!YqZud&HoLleN6Fhn)Yot-UjN~F-H&Xx6IH-O&z_Vl~;~?iW`t#lQN`D zI91eRiV~kmP1Lv9hp@V=v$VV);t8KN{g%j2S|UvFWf% z-n>IXQ*7?fDeq0Z6bD%2(`IH9^BJ>2J*T9(`HD5Aw~*!ibNWA_wW$gxsdkqCNlPZ% zKfGn6T8B2@qUD)#X1Z?Sec5F=+gWZ_)S2Hgsd-Fc2D5yw+ip+NX9aVNzJz5Y_;gJ> zJ=wO?YgEpFzobsTJDRdXnRZ@YtTM`N9jU@V)s@t7&h}zQ8LKT{)LU9T>Wzw)8+)Ic zWdlwdRaT8f^k^4*n)ds)zNBrQ=vz~M>%_Ju-4_3aYAMi4N_`WdRo_tNk@m02=9$y{ zr;wzwjOZI9<)i4M{{fvw?biSR0C?JcoCRPTNA~|~Te7t~i-E%NU72!Pl(xL2Bu$#M zfu>0zm2JgVEK9B+iSs)yGcz+DGcz+YGc(hFcjh}Q*~$G2{=D~Q=FOYgnc3OdwGS9R zfd2EJ;sNhVx%eO9m&uPI;jhBqgue^_5dJCrOZd0&AK|~^0pgH2ERKjdF)xk|5phf` zh=M4JM3h8XR76$OL|t4WE)|!F%ZHvl^qisR4n1$^`9m)ldg0KEh7KJ%Z0PWzBZiI? z4-^j)4<0&p=(wTdhgJ-|c&IpJ44Ffgc!>Bc@!8^Y#OI376Q3`>Kz!lQiQ( z;%TBU24W~iLtDgHtcWYcRpM&#ba9QiRy;#oC$1OI6wex}i5tX?;-;bc(9WTmp~lec zP;;m?G$(EzYKv!!Tf}q3t>QNET=6{deDMNtyLh2k701O1aZ;>_JH#n*TC9sZ#Tl_7 z&WcU3CC-T#iS40l#E#e%d*Uu}x41`~AG$@{J9L})f8tAq?i{*n=*OBi?0x0DZWa)SiD5MRJ=^QT)aZO zQoKsMTD(TQR=iHUUc5oPQM_sBT|@64de6{%hu$~z{-F;HeQ@YQLmwXc$k0c{o5fqi zTgBVN+r>M?JH@-iyTyCNd&T?2`^5*u2gQfPhs8(4N5#j)$HgbaC&j14r^RQ)SBtL^ zUn{;&e7*Pv@r~k}#5ap?8T#eWuf(^CZxi1xzC(Pc_%89?;(NsRitiKOFMdG$p!gy2 z!{SH8kBT1?KQ4Yk{G|9P@zdgG#LtSK8y*oqKb#l8AbwH&lK5ruE8USD*jFUyZ8_BpW?s7e~bSS|4R-aLu8nYkQ~XA z(cu$@PaHmJ_~hYJhEE+nZP*_U$QUUQfrx|hS4ABl_?eWC>YHmXYP;KynZ{ zm>fc$MV?KbL!L{XH@uZRpS*y)ki3W-N)983lOxEHHvIVT6T?pqKQ;U`X_F4=k{;Pbc9T8BuP5_l@9>+* z|B;uFmy(x}my=hJSCUtei^(PAQgRu&oLoV!Bv+BE$u+|tB-fJb$o1p~awEBk+)QpE zx02h)?c@$}C%KEGZ;T?QuRYfW=K*< zK}b|cdPqV@e#pC!?2zP;qWib^uM`<%=w+B?=wz5=7-U!mXa^Vv=m)69a_(dAv+h6K z7v4wQr{2fk=ibNMXWl2>7u-kP`|hb;@?3gf(p=g=9=WPgWGR<_%*a-*;H#mkTL-jLPH?PZ5Ap>)!wPUQ+ubO zqN<{)Xxx{>Nzk!F}B33&ohgfK!JAkQI&5W$J; z$7~t&Y+39;3NpNmBZ9csw204)h0J z1Mz@KKrP@5kPFxV^aP#)selDQE8r$j3fKn>1tJ*Ese|UmgH^UfE+0|}5<_$WvH)Fx zD!>$=2rvYA?EL`#01^Syfd;@upa8J0VpX*%(^}*b4RQ^nEEiGtPTS(_Qv%dMg(0Uv ziSj`8^Rz9lJ{3R{R2qT+Vw4l8)1*mrhAP6Vp?r`ZK$dc(v6?0=b!h<+K%UV!r&g5R zPaCQSPlGx_IDjSpT{dA!Q@GPh&L;@ICfsEp0htVQ*;i*u2h{r7!qkVlLYz#dnW% zl4mk=PXRo%Hw0$bL+b6lGO+!gJ^07o4>0j%0=U#;ywYPLz^naaywNgks)eP9wurTe zv52#XzKFeu`Ob&-oe$%f4^!ZWUj9z5K(Djj4OkbB&$=(^er?y!4Mi`0ld02jEpVmp z^~UT*Vz0V2R}ptp>guHP_^}UFP+v%8NLH`h7OQuf$dvPx#h&k8!=*6H63JL0u*X3? zAtjcXV_>Wx{l*E2J+>h8#wiIfc^BQ>q*fQx+yv=_XBR^txUg4ai|c%1GrdP7(B|x6 z1GNjomjFyXE0q>3cx!t0bAzah#a9PhI4hMN?0+WIwYqPe9UOXw*CjG}b!iRzy_Y@C zlWD^|U>O#3uMRWny4~B#54Jf&bP?=H=iH@)dmD-=+ZfmPQUXw z^X-~D=uf$Od8X0DbI_l5=XU1a)pXFGdgpXz(d9jrJ&`?SGHxojMD%uOn zyE8jG=(5=h%e^x?TkYE33(LPN2x&*kjfN1bGo3D(g9myWo^9G~)@{aZ&TabbygQw< z0T}9~0&M4ARXTg_K;_CFCT~5S5JbPtyv@B$x6QVlxq78>sc|)RIdz4xPcTXIQHJq% z{eA1z+yv6|>b<|Z;u#;{{at!r0voz~caWTNo^_sjo_U^rK1ahMLo357!zjZklO_UI z0gvsCfm!xgz*U#l4^Lo_d$mh}%R2Dtc+E~{L9Wg@2Tz7fqdlO^Z}mVvJWNq46w0FoxP$- zne=e(-|`O?_Z+a*OYgny$$|86p5Jm0W%n$wxl5b9fywan-`u|y9;)tnVB44Bd%xK+ zSQRFl`AhdQdiiS;+0c}96=U|i4a@JfVEM#mde4m(o?DrfavEi^O=Y5HMrA~0Dr7jb z%^4S#Nty%|UWS0tCUG)J+1|0gV|&M;!m7fq!luG8#yZA6#x};mkwMC#G@`3HqVF-H zXIW96L98PtC#EN+CT1q4BxWS0^)pizD^oQ-^L>lHSw+3Ew#f>sd!|5!|0Dpc3FdT+ zYSH^v?qNJ@+`)RlYLV$V*)x0x)Ana0(*)0~|%BDGjGk+Ucm-ZS4x+vH|jS^H)=O3HySreHflC1HX1g{HtII2Hku@hC95UN zCF>375uT&&l=7K-P1^ zt%_cYpyW$yaOmV+CIKsrp>%nODJWC7O>p8tEAs8Tk9hcNVIS5Y@L>e@(x3=?Wg@@gwUwPoFIYFu@NfJi_oAPvw0cn_!r z&TP}HVU)DinvbgNr66gD>Mt=2kMA1_@WX)9b8VU-DhP zTDn@sSvoz6aWkSaVOdgZuRPPOT5@e~JTr7&iWRRDUd|G)vM%pf{s1xxKH~Q8>{cl- zxvl+O)vp*@1Lwa6A8{<1)Hdn!81v}y81WeJm^A4&88+!R88_)Q88sO+nRx4Z8+z+| z8++?{8+jXeo1E*O8=mW*8=vc)8=V`Ro6zXe7}Ds|7}My{7||Hem=x(285Zdm85il< zH1sQnHo(QNua78~L~6bDx9j_rLhInd*QZAkOM$iL`r8ftDxpnq>1)Ih#u7m-jlN8M zm?EMY&UgLeh-FEqwg?%=4O2$c!^N(zj!2hyYHjof>cf-}wQ!;9<0FwJ@7itsfrc;@ zL?c}4`tFEeiKbRYKfL}y5m5sdxIQ@IS+c1e&<}5TP)0PsC9ZFeXqIGZ!}WjHKPVyU z;3C)OM>0#{wZHX$H$12yngZSmm*crJm}^hDmw|GO=bvaT#WB0KRJznwx^{OcTGVna zX1QayVYp(rzjK)b7B)z!1UKGDp29#lZKQ5IK>TI=Mf}wd^B$NZe9M+=)FaI@B#13K|<0 zR@|Ijj@zz5xgawTy62BICJ?h{Yd}Ybl7z~7t>@zG^6cX5D))Rx@}_9O;@XUTXX2)K z!1~&$eV_}en~|qw{ycMgUWWp5^;3Iyhe7@V1*m>y$sF`CAa!L$+}z~YwWnnrh2-Zz2nRccXr41R4P`fhs_bATWp+lnF8dErWzW?I3^9H3-kX=*8XA zTGg1ez|FT$b4j6LCph*tFYbVA*<=0uH_M-zTt(bOTt(bFT{_)5T|3{+#T?3O5 zE+=CkDNr9M6odewf}%hQpdkv>qC|9YHx&2k3k}B-fr8#{)SMMyT+S7dA+-^ zuS;RN&FwTK8}c=}D`Djb)4TYa#leXf1MDgiZH`}{xwazr0oLIdbvs8pBRl^c=pe;u zHmIr1#(jY8V-3RiuHYv4lmJA7<4oG|e3s3F%Y);ig=o{Ou${=ko57eEH#^I_^c&|> z9*|A@0C8pefcx+HhZ=;&UFQwW=>QxBo+4eJd?+T>lze0lkR$ceW9crR>MpJ8t~`c6 z3$5v|f91NEOw+5t zox;Jsm^K)@uXa)g%VNf`lSvC%C2M4C!XqB!5lZk9xLwRDv2_zoBaPl0 zgPoa}&gWa^Z}P*+!wh!{;0tg*_$T;l_)j=CVg#Tk;%Ct5XAy`^!xK_^F)>($UBn$y zdGT%V0K14Mq~u~`FdN&3JEY=bd2kimh9{)#VrH<@&x8l!xVfk^ufut-E2Ac3CZi-{ zB%^hEElY5%ntc7fU*D#pX+>vs_0auV0O}71AT$x2p;7&M+vVOXb1R*P2Zt8dp71Vs z5F7?ag9jkw`)ZSqiQwhdi-Cs*@HXq!z#{>GLeX+QK%;1p2e=MUIX{vL&Atc;?YxlR zQ5q~6v>V(RBpgf~)Pqy+knNc6i0-_xi@A7N!b%p&W*W&Q8p)9n-6Gv|POSZ0`w>Sit1lR;v1USi<$=JzQ$v8Tg zI@mf`IyiHfO(fO~y~b|}E&w}tgOo8MSl%RC^u0!J@-G5*s0Jls0qn80_&6esw|yRNkkxt`CZR zQVaQ;3)QD3)EIb6KU+|S!V>(ClO{kw6x62J=2*SXlp2-HiClqlJsIruu7uw0oczZ3 zQ0LBN4}V|)dFD%Us4NZcm#2we$m)5~9p_O)S8TEfq@LDF9Ql`-3aZDsyzIB~7Ca&X z1Xz8JA!f^#BY=K=g!>gUQI1+)w7WxGLfVY$7hlh`eOO{+opXDF98h36KHj{Q&`?SS0KfX3go@ey) zQt!xCuoTrW5niHb#;Ql6P8X@bb!0Nm?IvjLNjbEzCEu3a4U&#!P9AM*8WHuCBC$6f z7OZ;e{6lJM`wfrAh2qt#7`&4=dSr~13?C+a5^ZY)=w?Ag&SicXjx>I)Ydp-Fy#rW8 zJcYbJ`-#v^=4Qq=t$V~s=KPP6j13-Rj1K6bOU+}T@;+f0ZN>$JsOB&?OmmY6Bvdpu za*-Xu)G7K+C%BdS(?&BbaxMGs)y1=n@e?aD&7@tyitYg&lNk${(8;7m2UK^a9!3TZ z6SA_JGU8D(|MtNYjE@bx*c`5$9Jn>-fiWdt1eP9O6<{s}r&+xHJ=}(!ol$>u=P2bd zyj%P5-D;#qCY85+g56xKeczZ#kNvd(UfS(6@UxiNF=GXbyQh~uf*jzp@iDKFtC@m0 zknzkI=XKyKLV>Ab47ly1SlcI~wlRFruO6RTaGicm{?C`Rw=dZ1f=rt0I=UA`^~KZ%m#k*?cig5|mp%F$XZMef(5{Ru3$&6L3Akmw{C)JIm%04XGt}cyL!C1J z#XuV;dldCylo^eNI zDI4p5KO+M0lEdm+7T>mLk2pXAIcDNNX!Vxf@lQ-K%A`kXVhgZMmW!sd zTfU#n-E&MUQj3>K^FMxj!h8uyV5zXGY*WuXd7M!$6ooTE(UDSbCs8EyjiQga=it!2 z_Q&!pRI{&OW=Uu{)X6PO3#0}UTJGvPIy67hGM6x2Fc%J3y`)&u97OlO1 z6gK0IT|Ijt6(vqGcgQ2?{EEkvy>v$a@VOoS?K$^{Mti~r%0w5cB+LXgGt1S$ytudyt!=(G}8tSoib=^{`?huV4EkvdgI8_PvM(_yj94dFTZ>&*6Uh%}v17LIotacBF-1^P=egTyxGq$d@L3UG=MS#2~}~)M=j& z+RVtI`#E0e#xo#BrBjyw?Gzy31aSgo!)72qN_vA{HGc3MY=f zqU(;m&u?)5gx<^g72zFhjkRi_#5JE(2rs@(ocQMzPz|luSJ*k7jgapLEq$b+We%3W zhxZ8qJ2!{l1ocEE^50v)Ba*yIq*Xebg&c8`RW^VFUh#4Bvk=O;9kJ}j+J|H*2c{QT zRmZRfzjuB9KSP21BMrGd3k~)8olZucr!vhR6+g?wey%x5YU{rIsawLi;V4E;_Lk7p zF7Yo;0S(zS6_3!Y(rs7i~W(H41~gjktR;9-SHfB_)VvdL&jYGuf}b`_*7^1XD>~yL4u= zwvj-#y8q5h)B9Z`VX92G9%-S?f=1zha$nYSNpfD){ki^c1X)1;b}NLAZ^SnB{;dqldHsWuZuxyOV`!EWAP zHE1vO^Casv55I}7f605{z0q`60pTsr8K&vvDx-uS2(XhRrSFdfr;o(@EQiu> zUY4$UrNl?Dz~bwBCHda4``K1W3t4zV^On6D1Y{(()Ww^O^9kJ%c)N@}zxP-mRxW8V zG32(1+AZm26Ja6gW+CYa${R-ZWoFV%tXP)Y4_Yk(Wed@28?Xu3%95WK|2K$T2}hEh zVsgtO?x&UQcT2CF>poE_bM=TV-*lcs8Q+u!6@TZg>G(x$L@BCS%Z21fTflQE$JV}l%R zH_ezGh!xD0f(`MlI7+MBhds9oB3K9s#SdZM^$VZYy5d%6oc874l(`_RYE5PJudHfq zZ`0M86ml#0pl{QRO3|?BF3YOR-A6U*)b{e_%K&Z@ohn(Xs1|LGw8Qj|W+mjKM`T(4 z!kow7n(KKsey!X&GyAup7{#Dm8?MDa#UgF_<{bP?)ffBvL^Vj7=-siza)DY#fp(|4 z_k74p8x{$S4jBp8>KK@DHWvzlLwI8?w@3{&(+R!lH*U{^fX9GfdJ-_VzV%7~>h~!% znp4o}INjqG_$3mkdg*tSGUUVy{$X zAgC54?X72~YG0C;hNftgs;r=7POc7&tF9-Ajxi*m?ETqX-R&WlF^)Xzw9pkc_{MHT zO`b_cL&8<~R4)Euc+1Bx%ahRQZYW%M{ZQC!`$PF+SMH5R$+tB*EuU7s{8Et$KSDCk zmVPh%8-L#m)j^_s1a{uH5zm{Ro~}1+-e=RDhh1_w0%aq!c;-0BPkk22ES~H~%C?qx zAZQy-^@qvZaDfz}A}(B#BC<&N{ru05PVI1x*X}-8iZZ^tm=Pl`YBPIYL|}( zLi$Sb6FcNdgJT)l8qALHV>eFUZOkz1cMjnClX5AjaVM@VP!}k{ti=;9{Yv)$(3|+{ znlWun0Cc##^ZRi5JIXi71vyZXf*jegu#zU=hHfiSy0tKFFixYyr6UWopk-TaXS0#& zaJ-uLLcAK!akh0hIpk+MIz7GWNK9_?if*dJ>+m^@F;#F(qMl2rCjG()c*Hv3FoFP5x>my@_qGDQ!Pj~wC z#t-gc>T>X9n#R1S^Kj2y?~?VDjNvY_begFuPC>lLLX#o=#BsgS{qEzDTAopax+otxuXe;H^AmYgz)t4LL zia=$_M|gnO3Ar)?>Ghf|0uvLABFFtFvs$;>JUKe5w{~3b`(A;_VZU z1*2Zkb;&?b`KK!JO`Bbqj3|`mA8E}$_I#?vncLN;7RNC0I|ej(&hj6wMD3P2pl6y(G_6(|>-8|8LurPC|g;6TJB+R?UK- zVw)no^P1$g)>~iU!|#rEqUt)2k|ak|J3*AkpAvd;E$0ROQ}rUHUlA72yZq&2HBJOhrHCmW4K!?a8;oRfD9;PyUZu;-#(=hhGh!a_%C+>;&y7za` z_r`wF%y{^cUxP@tmlR2#GxqQVC($>Ff{Ce{vjb+jv(vlARZ^)Xv|Y{L1w+%3J!`<+ zBk6wpLKsb;Y^c*uj2AB(J~cPaSNKi8H_f-oc%IPiWbED0rPJr*d9lt}vGM}~ z0e$bbQhUCAK(lH)F9`9G>2z)H5A5DLHN>EFB|)W0^l7*5K^vJ0OefT(EU5DbqKV15 zJ5)-GwDc@b3mu&vnYL&9g|_nvZx(JZ*PC3;xVaS^8LclnSrxie+CFC^J<|-hSN9T*kMW}XnC9LE+tcd=&2$F)wwpKVd9KFn5$0I!$-}L_ ze1JEa^ACU;h@tb9DLKF&Qug%{n~fDbNdavDPd7Hdqu^>;@&{AS=%5OrcubZBrZ*Jg_!UI3pbOy#w4&1AG#fKAKM!1!8!>-}o5v8ypL}Np!FC95MBEKgojn zJ!5uk%(F}roO&PcR#mB=S!rOU5YLGk2%0M`&obXeHM*OyH&W&+@Ls&~U2L!XTqeEj zzRH}=otExA1mD{0FxHw&7=b20ep;959jgm+JZGxmcGWE#HT3UI9Zp#p_e(l*&E$P* zoU@|gHq%B=VlnWteCEc{I0HPjD_cgWx!vN&OTU)Ig^4o?#<7nwYMfo*`}n57Q)~YK zbp4GY*W-GWQiz%5?0}Yo^tv|vl-dLb>fG{$RZ_y)iu(&3k)<2Cnor-z1$*otQ~zHSI>oRD_|yoA9pmqjA3Lpk>+Ei}$V9%!)xBtB1@5 zygEYsX4^(Z^`G7YPY{Xb{$7onpvAx{^|(!#|kUFE183 zvky;_N2iJnBN4Z(j^0UoPi9%8dKV@M368~zRg0wD=DI&?PTXr znf~VUG16KR_Oy#Dw7#Gh4zq3?7n9h%+@EZSPX$zaOCL93ges4OamgEFdGcifNfZXTa1U#kBocqtX&ty?r2_ zzJM6?)W3E{t>fkT!kVIg3&`DAg(Z!-BW-ykF3Sq{RsxB@A^2Id9ZqMKjfqAuM6FEA#AP26^qw>|xLd%|syh&UM-~^vlT_98C z+!964(Tsd%D88VDsz_J?C`3!OQ$wxQEnQx`^}Y@4!``5EqibkD;!>GcOSn0pH>6)E zX-fpDcc`ezAvPhctyI2_D4j~Ni;$^6j<%|ku>`;Rb!J_Gu{RBIF5yEgXCad=Mx-hF zVx%a3?CT=aG$MX=JAQI{L;AihO#b6;qY2AHkucdAK#tdr3v1lt$_kvjJkK3cKT&?_ zX#s9+TPn%#ubYSL6li$roy3H=0|LjxxG`Q3+;DhcoGx}`J6Zl1Y~f$sS!r8oN| zhXC`C2uCc>yT?S|tUN`CZYMO_nboo@m6MF|f&%lhb*D!Cj#e?-d0|i4yhx-a4rp3h4#T82B6I(a!G{c(rrs9@H>i@4KJ_HW~dm zjM5~&SXM3M<(P?QJE)#HKpBfyN}Mh2i5i?*o(m1{ePZd$W$GMXSh4JW!d)kv=7H3t zc{MYwt8eBgbdpW-=uQv)aaN)Z4Ab4EQ&(DhwrU!R6u33_erM8ZuTZpeOEJ=Fmaj?_ zm7A=WXT=V?Wr3jf>Xob$T3l56LQdsB+zdh+We792EK8ff0#+4nS&7$4Ru3M_DTjDf z7F0S>sa^8EA7+{SulKRpfZeKPpu*ZuPA<@A^;)=Ov>NWvOl^Ky$eZ%cjsAx8{Sx7? zHedNQvE`U!a-Tcue^krVG|yG5<9GFEE+|xU=XdpFE=W~7=64NcF344Lb_B+1f^yXI z`CWaP3kuXM_#q!PL3wKHpBWcU>7N7GN5N-j)7-7041xiwqr~08(egUev{N1g6G9zH z(WBan#hj3$r#|VUI@n!ujwlY@g#|C1lwL)y&B-5=wXvS8adUi~Q*Dt=YZ!jhP@p|o zkEvZ(tbS7egwJt|$%THFGbOVik{0WLvifs4Nu>F!7mtlb8ZwXle7M@aj9* z;j7;(9isvXyfmFq3ZD6qykeU!XHDPLtaSiRYMN)N)d@hLn&#z zS;0w%AGsM>PQZ6lP7Gqb)jF6b`BB3ky~_ti1vYAl;Npd$vT5EGO}xOsn~tmVJ8;^0ndtep4qV?85V#cHWIE)b<*Qbik&J8a5G=qPnCCnKXQ& zujTKCkw-DCm_Sc5!fNzWtF8H~1C5Pr^}*l2azuUoGTZ;F%2A11j5*sfN+T;%Er3}p zch8AwdU}5Xs_`|nzr^QSlpN=p>iXf%A=JHTu{y9P$@~UevXyhTj*;!hHCrR~_|iz% zc%HUY`rOGBMuSsRTEh$_QRkv@l9^s!%lP# zSuyRBffvEOp}S8tJff zQDFPs-Z7|Ax;P2=HqkP;+mTikgEI<6+DJea$M4HC`{7gSI3K=Fl|(ttxw-brG~XYL z7v`n1DUzyjhQ;}B zBHlwDsPscgFPTJwvXZ66cvGc?n-gaM`^_tiob9RmjMYqH-y7pEy2>PY^j?dLd1~Bl zm|5|T*FW9rd7frlQhp71>L^$~%44&-D~m zrz4Bt8y8{t+bgD;N7JzFdfSBV6a%%=7m@mGsa^p9&YePG@2GRti58ckRK{+#SSO!Y zz71)pjXBsjJvUdIPAYfw>FHp|tB-K%mBXe>?~Z6@GS*>na#anVKuY7k5W}`Su&r9 z53k(l6K8~2!49WtaDmMwW>5<>)EqvB2L!RWK~)2N#6*CYwj)D!Cw~Q#>?<%Sim}X# z@x+U9vcB*iMo5#r{XREEsN;>y^)4`U6G`qBSm1u z#7)iC$CC>2%0z$nSu@~^1U`iZ?Ab9ahekM6FHxc5AxvR5-W}U%g7bq@E@n}Jwv=a zeNP?DTbr0EsAj|fvk8ncq;Rs4L@@O0oZeysejrIk`c?HD)zl5|4(Vaue#^|X^1Qph?e|C6q6i`LpWxhvcYKqaDr^PZ;H@$u#0R95&x0$w*} zdfh`j*~m$EH901X&KY;pCIJ55@95#7S^)Mq*LaLLY%)IMm!nSsPh$D}c-)EbK^^-r2ioTl3IscB`i6o(4K^o>azCac<^K+gAbQ*{Bck2+N7fRX*#$hWts`j z0x*0KA?B^h;`)`(xG{eH6|3fQp#PCov3MU$Ki-?@0{^AN=9u!QSlvSsslG+mZ#Mi< zW#C?6Q_>OM&yQK5M5qD5+8bOYUwQmS+m!J1T}JDLa=j@;FIA%=)DZ)*!V8kkzbm%C zm$uL2BqmUxx~~MzUq5WO{}8Kg5goJjPiTBzYw?T4hU9rAjC4%g)cLpim*(m#l5DC( zr`M}ICzW4o+fU{$Ux%a8gmt7}=ia=IXf&Sax3YOtV+>_3KlNP>xa@Mj1T-5&0W03O z6gXAd=U@A<92YBQ>lf^sl5N`3a8hB$e&9I5V4#ya*Y;ytJSK9z{|ug&|7BFPZz^t^ zW(!F(Y{MI!N9St(BVfccls{qS70-|BEK7?&41t6U5Sjh)Cp!+T^x=^T9Xm_Bum`>^LbB3D0#hu5gDVh7_h0#TyMg7>Z&7 zVr{2gkWFDbosqvx0sJR_0?L1M!asodnYlBN2oDNn9``4OrV?Dyaq_{LUCMr|Cpr=! zNK2%px!Et?-2^io(gDR7p2Av0k>vrYUc}@>*rPh+(ANc1#mS;l!&sZnZ3*1tcYIG6 zc+oi$mH!j)Mh3(Gi?yF#=l>f6{(As&(%K==rlc^oA?h!)t5VP=qbFKV!T0oK7~#|% z!}IAVXyJcy*7u)n$)R!?L!lFG^ogj{EIc#+&!PY!WHSP%{+eA2_Q*J%7Fi6=2x_w8aF2PV4J69A zP0<&&*8UmaXksQkXa*5uiz~7F<2oy$_%BTAHR5h!@b#k-A*|%3+a$hUNyvwCk0UPL z{QX`7`1WG4)Wy^^50bo(7!s@KT_S~dBV`DVGu(Mc6O|VR`+Ek-GGtNPWG&Bmm4k@D zFL)no6l1)Ud>+&n$5Bg5^?F#c53?u6hh$e!cIf~%p8WY2sk@mJYqI}x$CvR(TzkHH z186dYKo~;wZzvf5Ur<>8Urg+1ndY$t+?WDwqHnQfGxTLp76*_{lJ{>b*YxyMw^ zPXM$<1o)=%lKA8P1h}$o3>RM>CCaw(2>xX>?newAk|lnFQ0ErSD|%AvXMW(Z5ZCAc4po8w20RaYnR(xu6BFgZC4 z=L;t8f;1&8p&BVRc$KA?=8@z@s^^Eg3d^N>TiW-G>nj!T5uK7e=}==gyQ6lwDQ< zbM7*NK1=x*A4v{r8y{W!DBH$-ihk4g>v2mN4$2n(PpR^b~i8=P`%sy8-@lg0}QA17TSl z&WP%5jv*cLn@5SfG*r{K&n|z4Da)V>`z_^<7(|3G8GQPSeUEl-_4>mM$vDu*4^VV4 zIFMp1M0!_#AosrC9QhwoN+4MYXAk^}iazXveT1+ndg>Xe91e0~4*9Zzev@k^YtBFB zqt;9IBulg=?8fVEj#9>g+7XZ|;M~0Z_wP*Pae?D4w+On{~0oyXq6?GO66=IcmgO+^23Qf z>zVJeLG4D}d}2S361s;|l3l_;v&&`vN2=6Eq4@nV6(Mwff9ap0ex|=o%Ry82NOYG- z5|=3a!$_uo-6Gu52Y&chKRIY?OaQz$oIOzv4MOPXk)iit(SC1W)mCDj;jp^u`CGy= ztBmjO5JDQF_Slm6?1Tp2-F4-#d-c&u%v{p&`XZmcF|dlp-b}PrIgCZiLpmsl%&iii z5-QD`qXICMU8v||uH;5u7@i<^y2NIW9CV|cMn}8GXRp^+v_}7VL3ojsExQH$QxOX# z=RziO^B36U0+A}TM4AAqXM;I70Er}1%;Je~d1Ay1l=}0A!;avEV`N z{EU8so`L;b5j`dbBW6T&ekW}F(D0Q%GRYh~?E-%$YATA}w@|3Zr}-e>H0+XRODO0f zEMj}H5ThizBTgcl-$>#$-ePX1f1% z7M_gK9wq;qf49Zr{I|rRT88@{bbakh}kv2uKN2=PVV9l^1u1ItZp6+5) zq%U*50}j8@uZgp$nDGnyOwv70I%pkXt=#jb8w1X25-GFg^~)Y%{u(x9zwijP8Piyn zk~50C?CVreF;;9bT9zygSU1@WT?1KbTa4EI2WVMXmt2nyuO#ea7EluYmuiK|CE`Tc zc;i6Hv}lGyzj7!fllRd(*6fyduD3+lJ$o(C63pzE?I@6%lrQD*4;hui%2h0HQ@!4j z9P+}c4>hJggc8VCVV6YEp(K$_8^sRh3FPeJXNX`-Daa9FOsz+;Rea^g(Qn2peQy`R zq|SmVm(Is2fBO})EyYXL8EiFx8H|QYhWJBMN849E;oOcBuS@KehE@F=Qc{l_QN-&% zx-)E|SWP|>+W8TBj2w8$G|>~jI=v#ZjD4n%`_=w}{BdjwiqJ4FF?P?mEpHAk zNz}}D-p{y9vHYmsM!2OSC;u0a0{?%36qjA^n4UT?{QkYB$QPe4hjO=4qs7ByWAjsq zS@HMW_NI}2k2l}Z>~Rd8bD0WcYr=Vlt%L21iICz57Ow`^TnNyrpdT^ z>MbS@AO~|k{rOAU4+AEdG8Xmg2eu#1=_RrWUU^yAwk!a*pmPe)GH*q9=QkS zj+pM@+BNa!{h|9_LWxA87onis9~0v+iVjnzg8nda{5+S|ZyV|DfTQR!r8pze58tBL z??utY`4CeohC2Rw&8a*UHTy&4Z^IW^#wK@%`xGXHqbMfxhld`cMpNg}dcXT)chHA> zMBpDrjN81HUE>>Q7)RPdPKgPL5d^We(IF_~*VvP<2b5BdxslPL!4EJ8_(wwf@4PQN z9X|hGsId9(ssBqiTxL@+ml?%+y;V|feF7RMjp_|S6LfW{ zmXzy4W50k)^#@T-$X&3;BapoO*oqgOYyL?W4F(h`!lLfSH_@pQ-H9Md!z0HcvTIS8 zxG8g}UDi+Vc+sb5d2CREx(P0QA7dnb$yxa0QvOvs^pD)ZRHi-RL*n)C)d3udSt$SC z;8z^{56mu(znu9{eBSQ*OE69Tquc+9kHsOJJ|P|3_@7RHI=>G)_@^|hm-^qh%HQh` oc+vHe_5O=P{)esPmfZhWAZDKQHTUOIk)OXG1@oe3Blnm2f2ZwPs{jB1 literal 0 HcmV?d00001 diff --git a/hydrogen/assets/Inter-Regular.89d406b0.woff2 b/hydrogen/assets/Inter-Regular.89d406b0.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..d5ffd2a1f13064605a4ce314e8d445161bf6d4c6 GIT binary patch literal 100368 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�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 z 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

    BWYnUhRSHiyjJ<=~+j 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 `fz)4|( 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%0De074I4bOX>gF_YYLT>+xxE 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%0Dso&0ArNo%$OK<}KhqoP6We61 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

    ;B)46K|j23Pp? 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 literal 0 HcmV?d00001 diff --git a/hydrogen/assets/Inter-SemiBoldItalic.d376ade4.woff2 b/hydrogen/assets/Inter-SemiBoldItalic.d376ade4.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..ff8774ccb4d6698a1e3419f5d75fed70f6aced0d GIT binary patch literal 112768 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ž~Ql(OzBh;i_U1IcRVO$So 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 C(D4NT literal 0 HcmV?d00001 diff --git a/hydrogen/assets/Inter-Thin.5565b01e.woff b/hydrogen/assets/Inter-Thin.5565b01e.woff new file mode 100644 index 0000000000000000000000000000000000000000..9d2e3e54f0553763f53435652fc9f80bf0f3d354 GIT binary patch literal 137068 zcmcG#1yo#1v@O~MNN|VX?(QzZ-66OKcXxM(-~SrHKc2mk>1@Yw05U2zINDBY}MS)E>uTfb=Iz|A%R2BHe z?@gCBvD(+bQqKn12fU9u5&*Ej_iAH^Hnwmz0ss=f06Zv0Q-&s0Qge?fUML-?}M3zwE^(H=4Ai? z8Tebs3xfduMoT>x8vw|d6!3G{@1KYI064SKvor+unE)pu7XbLkUM_y_YGZBh005bU z0RTj_0DyV}VSl8bE{h~Rpb_aBC|@?(#(!VE-LZWqC>Xi6$5JQQyWlHjKUIrpCpxzDO&gQwOe#pIjki%aE<>wCkSE zcx%lK_hW6yHxc5QJrD>i7n zq0b)N@5eg2tzWTT&-pH*--yh{utm`H2&f`@OVJbS>{L4`bx}+F4ickM5<~0CSe>e9 z*{4J{!G8E$S@K#{(KL2Dt{v;^Lr@U~Yb zWmDKnL^vy)hKP{ld{<>C4jIi!T;Mc|w9Khr;5Cb0$-&*s(U!-ATu` zXk^w7!`g(+4t*BlZI^6C&b*Jg$LBSXqsGNFn4W;q2&!Koxb7;_BOQa(uyJ09bnoV! zw86*zwY9;X0aI`;#qJ;7jXc@WBoHzIa9KQA`Q(Ap`*#2KdnIK>k|Zk$OaL~0f(tBH zf`QOUA~z>QR9XH4Macp^8$UfqtuV`=fKnPl0o)e=CC{IufNJ$dhc>Y12j<^XasK4~ zZbe@#0v3I?C#Z5*oq$xooT-dWhEJ^5rI4&0$G0hlL5?wLEYyb z6UzW60W2eCdQ213J~M-|+whBoh#8qeUDVS4)SOWUH=>f_S@n+5L-V$L=i1w*_}AK! z(voK0xSK|Vdn5NO@LL202xVKPr?)2p+rC~srL_`Rf>Ze?COCMZvS8dxDfA|zQ z0!V@yfv?1mZoSX05Wfe_UxMUP_K!Fk_txc$M)MgmcL-{|E2`Uug51QJG{tn1=ddxF zhs3q)$>Tj-2T-|-9m*-2iX$jbU~&AW~Qu@y9A%- zaFD?J-l9ZR%STAqg>&)cab3m&>q5ULJk*j7Cg-C_L?pF~9y&{9<)DL$UQH#3+4^j7 z7g0GYvG$I<%SfQ@g`0|d`GY5h(Nn%`I)UCsX0VXX<2_wa&kVF+S8Dk5NOai#MV zwR9Nq5>$_~__An!zVmXjig=f;IGS+w?L6`|w$ z5*l&C4|+>d5GQCJcVVq_sp+loC0)nALb5KHJ4Zn@&xzt`BK))ZsL)!WuU1#{#3|>G z5z(+05SUti&%vU(y#Bx@+U^SPeauCYs^K(R$rftqwlcmL8-5gwL&A5)aNU~2cZcN6k_82JWc7r|I zagEe_w(l1?@jhLs)E@KnGE*fan(WaAZrrR&ZTu}k^NdVoLq`{v9&r{eAJg5qPSRGj&k7%| z#~#sF@}g(sZd6~WUQ}MhUvj-9@G3GHa(O4|Bi$aKLU1N1^_8b zE)pUGU;8Ahe|Yq%l4d4IMwHn#Et6~6)hv(Mx1fg&TW@=*3E;-B4VkzGWTiVRGeitU{st~O!A|IvpC8k3$v)NI?pUSb?9qx zlNrTQp;K{sgyM;^yKBK=F6Xe*A;GL*y-J(1^@ERH$?GLQiyUlx`iw4%s?%55q5{KK z%;JnVtr>b2g=1jI%;OD^*fakG9*e&?dAa#M14#h2P3x zkK2#e1;z6MeR)6l72U@dJ)qMCTUHk$NRM6nSGWr#(K%FWa+qmy6h?BW^EvHm_fvA< z?_~d`E)nl2{#hEhzt;fgEsKVi@ zL|)q<*C0hFfDncYAi(B`g>H)dMw(nH}#3Cl(g%K?+fM#+}PG?YWz zk;6rm`_~CDD~!S{3{@|ToZmsUBnguW)cx|GIl@oj-$Q-IQb(Mf_fc zx>Wf-)Rsyt9Rv8=O|0W?FYI6Z*j;)a;b%5rqOoCT9Enfs@*aVf3xRR$f%fe1nITD- z#2*j>bOQ)Kb;Uxv#(X~hBq6F;Df=UIAw>Ef=|>fKe5ZPV=R!27SSLR=KV{TbM2K_U z2SZd4PSND)3|`@*$5xyY(nTwl$al!(!tN zn5P-g!y%I)=pGbpAJR#etn8s$RsHf*jasJHIIi7>GhT-V_&UDlsb}+~vC!lACS6d9 zRF9bC8_=U6(<8pJFr|=lfNN8CDp1!TPp#Dz)<-%oMd2)jYAr-oRP}cV{p(|O$}dsf zNM_bBoh`$*ZM?Zw6bc{Zp47?wUiB_Uk!s0eV~qEEC~8!Ns_>>@Tr!_PI@z!Q$tOBz z)DElxr~hcc0D>HQk&d(grTwqtOMD$ui`r{%-!;`)qo(tW${P<|epJdx4|+Gje(I4v z?h#QWcHA3bsm}(GykHk2_;Zqr>BDWbSxU^AC3ufdQ|$T9_EKkPQ-e20!lCYthGhFq z2-Yo*hvIxeTlMo3mJNFA7*qeraOk#BTf^qhIYl;MiFHwsE=X6qOd>j$(8F!fqal++ z#FJ$>(CAG_!;Xj#X*1L-S^B$C9icMaH5PaLLOuuLQfr4fxJ<93gqV%^h<>zSJ%{L_tZ(I(%j(1xwc(B zU)e~w7M-T9WV`S3=`g7+f6eXq#o5tjPQV@!eYn(&^ z0r8b2JFKU zf^u#W!1Pjc4LGJv5xl&>do2X58h;S&jE#$?wvwg^o*%I1vDRA*$QvFUC$w+H2NsANnQNn>LWxpHA{#2%>5lRX5NgC(s+R zAXBq3QnzSp`&Sx2-EHzNM}IoU=ln^;nZ>kufzbSusyU0x?I)RA78`CK(Z0Xv9Oh7ggjC5+gyIMUE zG<`%g1IR>ujKnQakC5nd2Hwtsdl;%pq>@TZ^GZ12I%&j2lr6kl{+W$ZW1VgQJ_-jy zkj=Ib?Y0Q+wlMFuCZ zc5y~Lt;imHbq?7ugOBKg4@Lxh-YCrh|5ox3kFOGBo6O+-;VB`J3juUh7#d$(ONIY@ zB?@*AV(upU7(_z}DtS%f+1KXF`?ZArw{q^s28FkEWwCK-N7TzzsdAyIuH_jOB1uk~ z{^43CWd>onCoju4hbbm{WbZK0?a@xnZy}#X=mNZ@REM4!J;WY~^6{8n0uG=`dnil$ zioz|63WY;A>xx}8TxzS(gD;YOLX!gqlRwbq>!+T7qvlDQGDhl6n|h;2C6Rl)kI3t1 zWX}s$bSwQOQQBpeW_JtPpwvYKis&bH9y;Rh*Am1Yf!sy(f&3s(LAP9oTFb@OS|N)% zLBoA%_sRgf&)@^8J`$+`Fc3nGndA!K3m^>6j{38ng?F=eGP=HnlfDVZX;7yMnJQMT z$lSk4G7l1eCtjY36*62E-WV6^7 zg`FqslT5y9%&9`mRaM0~4UBO~F}PF=uxIO9tCwdOBu32;;Z$1 zhiS60u5C}=VIRf{bl0Zybz$f9iC7^e(%MyArk=2`Y+a8OWe=R4PlZ3-vMpji@Obq= z8bi0d%`e%mhL)uswB*f0o3667;iftF3Up|XimIH9<|YmNHk&7(<*QzEeZ6=o{}!ZB zkc9r*J@@{^*o(wb!ZqQg@VM?S=XmYv<1O!rM{4OA&wK|>IZny5 zRx5Vi8?xAhWB9q;sOfx zUxFXoRG#zh!eqTGXuKcW1s|O;gnucw<7~9snU*cS#W{(m)3_G| zB;Q)E(hMG-4n(eDbTUsgYyW=KoIL!tD*B2pGh%p%XJ7MH9=dn7!qQnJX*n}{n)Yp2 z3;EgQU`$*&pG6K!I;8-7=$4Cu;Z0Wi$?bu({WYOVxaFq8U-`xRifhH|&TVDBeg4Nm ziqNhx;%{%Q$fsZTSo5>Abtb3YyIflfJImdPNH;K*p25MS{95F!xX zu?j*|+Cbnka6=CSKa>0Tkq1BsWz&b@LkY{n^vZuAk%yWjk7OhdwBVakhuQem+$^1p|94;FXbBmRkUy)hRemU^A5$kSUdpY>&0)Q*@$w7$B zL4+Gu;Io4;n}aC)wGiEPU$+aG=Q;V~CPU*S{0jpBlmWv3f<5CG0!+6}tIy{PB$0Jg z7Y5X6dK{o9c(?xGI|k?)hEMhk@K><`;Hn|Qsu3irVTP(v@aF`)UH$i9nVU@iva3t^ z-Abh0cvy9z-*H?ODAxr}RM?a{y#PWOHiRI%9pPs?BKS)}yvrN_R5k)3LTDGcA32IJ z1BxhQyby&@4)f4Y>Y*%d%AbUk1RoRR!Dr=gSmcoFfgJHe9i?{2M$jN)9@yzgi)l zJ4^J1;LklVda)Yz?`GF)NoVOdF<^k(0%A4>$T)^SVfER1lz|a}Af(nn)jndUQ!lO3 zK&ZV#(a1RZdF1w4xygF8W#Vlm@b!%Ln(sNCludM8+MDb#u?hNQ*?F!=UVf}-Nt&>) z$&V|g=(8dNmOcIFD|$R}Ri8lBfZlhw8nkl{z}qD9h>$&};O&MgMPabRP1L0T0wHWf zhT_nxmn*PdovKE=Fmx4QC^ntRE-0NkOM0TA$eun+S-a;UxPx6~+LPJ~o1#dsdo3Di zKK#~ST<%ngT$KIK@PT=c1`_z06YruZ@nc6uelkQTwFk3Fq+Ie6M60Bp3K? z71u`~GSQLRiDq`abfyl~E5%f49Sv=lpIOfLbY{+r#l`BjX727m_%_j_w#c3%n4kT0 zF0f?Qf$PmYwodKUkM|yvJL|WkKwvpx#K@B?*98C{5P{hTKFr3zKP;N)sDmZpfG#A& zXSjpX(Xi}DT{_mCE(O9x%>jrlZNLUMji=Ec>M2kKyV`cRRQTP*ngE+fu41 z$KE0nw{?yXhE_ff?C7M-4XvpTGM57^eXG5Srl%za3)_k-EQ;&lz}DxJm22zM-F&>v zpOJqBBfxFE-$4aN2o^gt!q3%txlX^o1|44KTK5M?M@X6@wBp&nTT(^!HVSalKU+2{ zK?p$*TGE~E)o}wO@(hIeb)M-zZA~Zj&s`5Z(f;ks?@{e1`cmE8V89Bg5Fe*ZiO3DBX2i$1LrIZ+#WT?zVjn$czorIj8aheTuAt zazA$QKMJ+Da={2e5TeH$Y+r`dnq1ja=2^eZEA-kwlhn%$X?TA`R?iso*Zgk#_V|uR zaPUQWy<^>!imD`@igG&Pxtg=M8&Ak;5KO|qpy3>F^-ZVRO^XJs=D1VejQzk>7xd_# z@VLS{+#lHx2w-f6V`lPf<++JjTlKp@b;c#qDTJ8Fhj&!@0iI%dP~kOK)rexu={22F--5lJ2u(Ueu<}bnWlBBJxB4` z!0m1LTlW9>fa!o9BS){-83+I)gy@9eNAHS7{yTL3IDa<^93>Exr{HWolZFgdA@*y> z5E0=xgf zY3K^1|0vYWS{Vk7XI;pBnuhe&ytlW!ybdj>Bi|T zf)=)`Wn7YX03L`eEaS8@8RF1&^B39?WpC)d=FP>HOE=RKDpy_WVAdnXMn&<^id$rbW zSMS?jRFXOqs4|5qZwy&Xr2tOD?)590J!tD5l8*?sV_oGr2$?-pkv)=$J$&ur)7S>L zM}Q@G&y-~L3A>;J$JZ@GC5t8n&%K3(r%A_dt;@Q!H~+NUv+g>f2l zT8Dr8XWS+IUcruR_bTy)GM4&12E`tyVLVtuzcCSC{S>Qz_Zo!1o3_rf+Exx~85EBZ zi@7THeZxf?H9U3u-%dJKLpsVkR_UkCh-_*21J?Ev(D&%B?2YEFNuYLWU#xCly!PSE zL`_=9XowwSHYzp(ht9cVr%#w~qS8sF%;t04ex0e!ZB05srL!CS&6=|YeBYU?(P$ zO4ZWpn%_Bv4Pq8Mr~=!M#ur?#zc|u@;aQzC!T-5va@$|t{X;DC2eMf@l z%o&|>|Aqmz`>0${D>fXZ<^y;^nSh|R3IWfwYvOq)f(l5C0SH2%~y8mz9UpIm7_rj@UV!W)#Up&o!Gao<#^`l9M>R*^*G?UP!NvM?x z9G(f}wh1iwEyU~2oc-|rbrGPW1ir2k7s%KE z9f9G*$LH4~x$FAY>y|l+O^e63Ncv~{zzw|UKp8K;xC#n|?65%hwxPWAKQ;>FLZ z!8Z#&K=Q+qbMZLwN_e6-^4`4a|AFv$=VP1d`hIO~W;FFX7 zXQwUmuZoM^2btDG!S$6HZCM5B zBk}(y20kkf$|4V4C;!P&9{y$$0DHo2fZE6@N>!QuRky`PK1pEC@wSeAHpNsWKgo-3 zHTx9I7)>304}WY$t~1TXIQc4fyec@2&me=>TO_7>e&TB>A_!((@jH7dSEBM7jDhIh z=A8O`MvNW@Tp1vPjHXL~rpExxBog&Fcz*@oL%j1UVdIq_sH*xOzNT_@YtigQflfC| z?QK9zS+Lcy`7LhIf=ydVxp$8i90$L4dG4gsN6|J=;a&Qh$kuoVvC!-)&%}m_kT7pV zDf(0eyCWG3`F+F7gP|t*zWtGm(v9QpTN`yk+)+91T;~c{;$dIaIapAPQF@P5#pbh5 zWAd+N17(t#jW*1u*49t+k1kfkRk4d`dMa(AY~U)dd_LIZ){<8snZe_IXLnEcFJ75@ zLG$=MH39{_41WuB|L!xffF%i_8Gy?n1S0tUpZLr_b(W7NVr4dSd4Krd4Yv;IrqnG1 z*ttzf?GB80M)V$PiQTFGe_=dP(aJK!;dWkSVKq`)@VDYPuWOqTHm6`fnpQP-V<~No z!EJ?y%j2s6%0*3dCTw80b)lby�<)1t?NxLZQEza(i`oMnp^Q`Zw9#&G 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 literal 0 HcmV?d00001 diff --git a/hydrogen/assets/Inter-Thin.5d8e2ac4.woff2 b/hydrogen/assets/Inter-Thin.5d8e2ac4.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..5f7bc37cdf025fa5e664526f8f4928d27e53d29e GIT binary patch literal 101004 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

    ll0DyICBeJsz{-w(Q#Y{X= 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�>CTUX~5fMcj0q~!sUyc@}pAzQ4Ro% z$O$086>$-Gs4*Dv%UaRka0)zLMj&vBL_Uec zBa{6@q4=9hCDCYpqtpG#VECg=&-aOS>|+IoV=b3!36Ez!|M>hR5LnpZ6dfQcrGU6p z0FqJ_NXOhswvpv>szO0mDrqVeMXmF%Uhh|f!S6;#1OA(1jNdqO?5_2WbDSNHcf4Ir zaDvT!qGAgv5^!$>1Qie@gkcGSC{dJ)VKO{K_9c&8e2VhZv{;hQFyDj)7P!Mgi|w%V zETe7tS$?1E3I^wRaUvvPO)p|+HPkxclR4ssT3e&q2-V(oHAB>kzvhR zfn$(hP{;j9hBh3i25^x7A<#a({-Zt zl&%XzznB9QlRJ2bDO0c8Owl65ymTEP7DM;VSZ+RN#mZl8| z#!d($%*qrIx&{;tIS5cJOu)E3BWWe1$>WH)r}aS{4(FZ+q910?F8i&paxNgU<~DLU$;G>?&9$H}P^GD_o@kc@$_aMVe4TnNC!W z>ru3UH=;NKZ#v1%TlDGn)(_#%araZwfA@@1!2S0D+VwDs1MtyK8Xof)>U`okpX(`V z^ekc+_&kyWfG->)&6l+4RRjxInr7!H!|h(NB;tS$vPP$&{qJm6=)1MgD6t4G1?5FxIz)GFnTK- z(Tbp7krDI2-;qK9qaqf7(cknxrV$p2AqEj*iG@uZafr@%mfB_lRh0;-k{GCDD3wB8 zr9!PV>MI?ZGF%wVOvEaSL1jlQ0du|?C-==;ER#<@;Dk9c^m5~wvt1O$E)fA{E$|$flFdu+*QG@~38w=)Hlbhz*4ndP9QB9d5 zwV1ej26QK`mpP{e*B1ZrY zl#~TH_@5m8)^fN4mNX7MAZl>Sj15qo*fgV35*AHv*WLq_)}6caxS~ui$X+ z5eTo5NFPurZ`$f64I7&@c6I;e6DJQKAnfPN*+VW|9OlZ^I}nH-B&7FHQ1rQR zvjq+9D0l9@!@#h#cq8-=K`5Z8{}|>Fj@u##<|W+-+@CtIplLf8h9%1qW}T|qHO)wfL)Wz|A0bEx!#*L12t|FyFfk723m&f} z5FjE^pG1PmWFra%Po)~uXaqXlguy_WOj8z%$Yz^yI3zCDg2$us`IZ6!O(=9L5(&g& zeOY)@X#)>SuI1J9@qCjnM%=dpb($#Ttb;N<(l4 zVMdL>1wR|u0=my3%$S6AI`Zt~sT z^>}zF@btv+@>1yStrq}A5Sm5EeT>Z!qMcInjOpOqOCfZ|)#@~k>$BQ5sTheY2B~$ z>$pReDrIWae5X#GN^5j=7n(HPphb%WEm0_DhbGBYj^o1R#7Q{>1QX838A~o)lyN<-Q3(POLP8Qi zK`CyxRb>4E=%S07!3yIfJlF$5^q! z$Ce$gc5sb_BS#aQIAL?r`(F(QewQ1aVn&ZXG5^p|Mo1tVF)Bz8*H_(bd9b_0W z>);)WZ-^EDg$lJSOqkgYHw>F~#Eu1#B0>LF$`h!g2B&5ny<;9zjK3Z0$+8{iVS8`9 zRVxxCVoQ=_P4Y?kO@vgbW~50oEnT{a≥dooN`Fb=Ho_H``ip9nqQ9O3 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 VMogSA*vJ#H@%K6Zy?p<_9sp>6T`m9s literal 0 HcmV?d00001 diff --git a/hydrogen/assets/Inter-ThinItalic.6b3ded18.woff2 b/hydrogen/assets/Inter-ThinItalic.6b3ded18.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..2ceec604e5319aa4cffc47ed940b2a81144dc139 GIT binary patch literal 107584 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� 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 literal 0 HcmV?d00001 diff --git a/hydrogen/assets/Inter-ThinItalic.c413497b.woff b/hydrogen/assets/Inter-ThinItalic.c413497b.woff new file mode 100644 index 0000000000000000000000000000000000000000..885d8d5d0d5ed9aa9b7d91c8ef6a66e16f997059 GIT binary patch literal 144528 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 YiFN*v5iAGDYY5g;royYV;v^*h10(jIYybcN literal 0 HcmV?d00001 diff --git a/hydrogen/assets/cam-muted-1894081672.22150c2b.svg b/hydrogen/assets/cam-muted-1894081672.22150c2b.svg new file mode 100644 index 0000000..324822f --- /dev/null +++ b/hydrogen/assets/cam-muted-1894081672.22150c2b.svg @@ -0,0 +1 @@ + diff --git a/hydrogen/assets/cam-muted-2247331037.b0b2cf01.svg b/hydrogen/assets/cam-muted-2247331037.b0b2cf01.svg new file mode 100644 index 0000000..026699c --- /dev/null +++ b/hydrogen/assets/cam-muted-2247331037.b0b2cf01.svg @@ -0,0 +1 @@ + diff --git a/hydrogen/assets/cam-muted-3489740486.a882d986.svg b/hydrogen/assets/cam-muted-3489740486.a882d986.svg new file mode 100644 index 0000000..215b0e6 --- /dev/null +++ b/hydrogen/assets/cam-muted-3489740486.a882d986.svg @@ -0,0 +1 @@ + diff --git a/hydrogen/assets/cam-muted-711199923.069dcf2b.svg b/hydrogen/assets/cam-muted-711199923.069dcf2b.svg new file mode 100644 index 0000000..ce74486 --- /dev/null +++ b/hydrogen/assets/cam-muted-711199923.069dcf2b.svg @@ -0,0 +1 @@ + diff --git a/hydrogen/assets/cam-muted.9f690631.svg b/hydrogen/assets/cam-muted.9f690631.svg new file mode 100644 index 0000000..b59a1a1 --- /dev/null +++ b/hydrogen/assets/cam-muted.9f690631.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/hydrogen/assets/cam-unmuted-2215154474.a82b7bf1.svg b/hydrogen/assets/cam-unmuted-2215154474.a82b7bf1.svg new file mode 100644 index 0000000..f63c6fc --- /dev/null +++ b/hydrogen/assets/cam-unmuted-2215154474.a82b7bf1.svg @@ -0,0 +1 @@ + diff --git a/hydrogen/assets/cam-unmuted-2274150835.69bcdbc4.svg b/hydrogen/assets/cam-unmuted-2274150835.69bcdbc4.svg new file mode 100644 index 0000000..1de6c51 --- /dev/null +++ b/hydrogen/assets/cam-unmuted-2274150835.69bcdbc4.svg @@ -0,0 +1 @@ + diff --git a/hydrogen/assets/cam-unmuted.67e18332.svg b/hydrogen/assets/cam-unmuted.67e18332.svg new file mode 100644 index 0000000..4c96784 --- /dev/null +++ b/hydrogen/assets/cam-unmuted.67e18332.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/hydrogen/assets/chevron-down-1956489915.3389f17f.svg b/hydrogen/assets/chevron-down-1956489915.3389f17f.svg new file mode 100644 index 0000000..e0ceb18 --- /dev/null +++ b/hydrogen/assets/chevron-down-1956489915.3389f17f.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + diff --git a/hydrogen/assets/chevron-down-3300400168.d1a083a1.svg b/hydrogen/assets/chevron-down-3300400168.d1a083a1.svg new file mode 100644 index 0000000..c391861 --- /dev/null +++ b/hydrogen/assets/chevron-down-3300400168.d1a083a1.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + diff --git a/hydrogen/assets/chevron-down.9a7440b9.svg b/hydrogen/assets/chevron-down.9a7440b9.svg new file mode 100644 index 0000000..5435cc3 --- /dev/null +++ b/hydrogen/assets/chevron-down.9a7440b9.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/hydrogen/assets/chevron-left-2611498805.b5555a61.svg b/hydrogen/assets/chevron-left-2611498805.b5555a61.svg new file mode 100644 index 0000000..90d2ced --- /dev/null +++ b/hydrogen/assets/chevron-left-2611498805.b5555a61.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/hydrogen/assets/chevron-left-3506338632.4e437777.svg b/hydrogen/assets/chevron-left-3506338632.4e437777.svg new file mode 100644 index 0000000..2e0ed1b --- /dev/null +++ b/hydrogen/assets/chevron-left-3506338632.4e437777.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/hydrogen/assets/chevron-left.b8b2c5fc.svg b/hydrogen/assets/chevron-left.b8b2c5fc.svg new file mode 100644 index 0000000..dc01720 --- /dev/null +++ b/hydrogen/assets/chevron-left.b8b2c5fc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/hydrogen/assets/chevron-right-2390431650.ec9bf561.svg b/hydrogen/assets/chevron-right-2390431650.ec9bf561.svg new file mode 100644 index 0000000..7df4847 --- /dev/null +++ b/hydrogen/assets/chevron-right-2390431650.ec9bf561.svg @@ -0,0 +1,3 @@ + + + diff --git a/hydrogen/assets/chevron-right-847198822.23380c56.svg b/hydrogen/assets/chevron-right-847198822.23380c56.svg new file mode 100644 index 0000000..c78cdce --- /dev/null +++ b/hydrogen/assets/chevron-right-847198822.23380c56.svg @@ -0,0 +1,3 @@ + + + diff --git a/hydrogen/assets/chevron-right.885731d1.svg b/hydrogen/assets/chevron-right.885731d1.svg new file mode 100644 index 0000000..2f1e3e7 --- /dev/null +++ b/hydrogen/assets/chevron-right.885731d1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/hydrogen/assets/chevron-small-4098047679.489e66cc.svg b/hydrogen/assets/chevron-small-4098047679.489e66cc.svg new file mode 100644 index 0000000..95d9bdf --- /dev/null +++ b/hydrogen/assets/chevron-small-4098047679.489e66cc.svg @@ -0,0 +1,3 @@ + + + diff --git a/hydrogen/assets/chevron-small-781914114.936b4943.svg b/hydrogen/assets/chevron-small-781914114.936b4943.svg new file mode 100644 index 0000000..bec3492 --- /dev/null +++ b/hydrogen/assets/chevron-small-781914114.936b4943.svg @@ -0,0 +1,3 @@ + + + diff --git a/hydrogen/assets/chevron-small.dfd7e618.svg b/hydrogen/assets/chevron-small.dfd7e618.svg new file mode 100644 index 0000000..6c85b97 --- /dev/null +++ b/hydrogen/assets/chevron-small.dfd7e618.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/hydrogen/assets/chevron-thin-left-3078630092.d0d143e3.svg b/hydrogen/assets/chevron-thin-left-3078630092.d0d143e3.svg new file mode 100644 index 0000000..66a541a --- /dev/null +++ b/hydrogen/assets/chevron-thin-left-3078630092.d0d143e3.svg @@ -0,0 +1,3 @@ + + + diff --git a/hydrogen/assets/chevron-thin-left-3831175135.13f60c05.svg b/hydrogen/assets/chevron-thin-left-3831175135.13f60c05.svg new file mode 100644 index 0000000..cf2e7a2 --- /dev/null +++ b/hydrogen/assets/chevron-thin-left-3831175135.13f60c05.svg @@ -0,0 +1,3 @@ + + + diff --git a/hydrogen/assets/chevron-thin-left.d111869b.svg b/hydrogen/assets/chevron-thin-left.d111869b.svg new file mode 100644 index 0000000..3119aad --- /dev/null +++ b/hydrogen/assets/chevron-thin-left.d111869b.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/hydrogen/assets/clear-2203718389.37dd36a5.svg b/hydrogen/assets/clear-2203718389.37dd36a5.svg new file mode 100644 index 0000000..cc7ef45 --- /dev/null +++ b/hydrogen/assets/clear-2203718389.37dd36a5.svg @@ -0,0 +1,4 @@ + + + + diff --git a/hydrogen/assets/clear-2743697487.2f1a17f1.svg b/hydrogen/assets/clear-2743697487.2f1a17f1.svg new file mode 100644 index 0000000..a51940a --- /dev/null +++ b/hydrogen/assets/clear-2743697487.2f1a17f1.svg @@ -0,0 +1,4 @@ + + + + diff --git a/hydrogen/assets/clear-4137897294.7b90e8df.svg b/hydrogen/assets/clear-4137897294.7b90e8df.svg new file mode 100644 index 0000000..96d4672 --- /dev/null +++ b/hydrogen/assets/clear-4137897294.7b90e8df.svg @@ -0,0 +1,4 @@ + + + + diff --git a/hydrogen/assets/clear-426756705.361f7a30.svg b/hydrogen/assets/clear-426756705.361f7a30.svg new file mode 100644 index 0000000..2e470ef --- /dev/null +++ b/hydrogen/assets/clear-426756705.361f7a30.svg @@ -0,0 +1,4 @@ + + + + diff --git a/hydrogen/assets/clear.0d180c33.svg b/hydrogen/assets/clear.0d180c33.svg new file mode 100644 index 0000000..0f32a77 --- /dev/null +++ b/hydrogen/assets/clear.0d180c33.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/hydrogen/assets/disable-grid-3304422220.8a79cfcb.svg b/hydrogen/assets/disable-grid-3304422220.8a79cfcb.svg new file mode 100644 index 0000000..41d19bb --- /dev/null +++ b/hydrogen/assets/disable-grid-3304422220.8a79cfcb.svg @@ -0,0 +1,3 @@ + + + diff --git a/hydrogen/assets/disable-grid-4240599831.c8dc25a1.svg b/hydrogen/assets/disable-grid-4240599831.c8dc25a1.svg new file mode 100644 index 0000000..c87b7ce --- /dev/null +++ b/hydrogen/assets/disable-grid-4240599831.c8dc25a1.svg @@ -0,0 +1,3 @@ + + + diff --git a/hydrogen/assets/disable-grid.371ceaaa.svg b/hydrogen/assets/disable-grid.371ceaaa.svg new file mode 100644 index 0000000..571cecf --- /dev/null +++ b/hydrogen/assets/disable-grid.371ceaaa.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/hydrogen/assets/dismiss-2476348673.d0f98560.svg b/hydrogen/assets/dismiss-2476348673.d0f98560.svg new file mode 100644 index 0000000..f5b82e3 --- /dev/null +++ b/hydrogen/assets/dismiss-2476348673.d0f98560.svg @@ -0,0 +1,4 @@ + + + + diff --git a/hydrogen/assets/download-sandbox.48a866e9.html b/hydrogen/assets/download-sandbox.48a866e9.html new file mode 100644 index 0000000..9666cb9 --- /dev/null +++ b/hydrogen/assets/download-sandbox.48a866e9.html @@ -0,0 +1,46 @@ + + + + + + + Download + + + diff --git a/hydrogen/assets/e2ee-disabled-1470792300.6863c16d.svg b/hydrogen/assets/e2ee-disabled-1470792300.6863c16d.svg new file mode 100644 index 0000000..170ddb0 --- /dev/null +++ b/hydrogen/assets/e2ee-disabled-1470792300.6863c16d.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/hydrogen/assets/e2ee-disabled.8507165d.svg b/hydrogen/assets/e2ee-disabled.8507165d.svg new file mode 100644 index 0000000..a839e4e --- /dev/null +++ b/hydrogen/assets/e2ee-disabled.8507165d.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/hydrogen/assets/e2ee-normal-1448349558.af8f5484.svg b/hydrogen/assets/e2ee-normal-1448349558.af8f5484.svg new file mode 100644 index 0000000..0fd19d3 --- /dev/null +++ b/hydrogen/assets/e2ee-normal-1448349558.af8f5484.svg @@ -0,0 +1,3 @@ + + + diff --git a/hydrogen/assets/e2ee-normal-2713987956.215b3ddf.svg b/hydrogen/assets/e2ee-normal-2713987956.215b3ddf.svg new file mode 100644 index 0000000..0c6e1bc --- /dev/null +++ b/hydrogen/assets/e2ee-normal-2713987956.215b3ddf.svg @@ -0,0 +1,3 @@ + + + diff --git a/hydrogen/assets/e2ee-normal-3127337641.2624a9c9.svg b/hydrogen/assets/e2ee-normal-3127337641.2624a9c9.svg new file mode 100644 index 0000000..9dc9e1f --- /dev/null +++ b/hydrogen/assets/e2ee-normal-3127337641.2624a9c9.svg @@ -0,0 +1,3 @@ + + + diff --git a/hydrogen/assets/e2ee-normal-3652557173.2a97dccf.svg b/hydrogen/assets/e2ee-normal-3652557173.2a97dccf.svg new file mode 100644 index 0000000..430cea0 --- /dev/null +++ b/hydrogen/assets/e2ee-normal-3652557173.2a97dccf.svg @@ -0,0 +1,3 @@ + + + diff --git a/hydrogen/assets/e2ee-normal-3923817510.8737e7ee.svg b/hydrogen/assets/e2ee-normal-3923817510.8737e7ee.svg new file mode 100644 index 0000000..c025286 --- /dev/null +++ b/hydrogen/assets/e2ee-normal-3923817510.8737e7ee.svg @@ -0,0 +1,3 @@ + + + diff --git a/hydrogen/assets/e2ee-normal.bef76bd4.svg b/hydrogen/assets/e2ee-normal.bef76bd4.svg new file mode 100644 index 0000000..ca9802c --- /dev/null +++ b/hydrogen/assets/e2ee-normal.bef76bd4.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/hydrogen/assets/element-logo-1551909733.1d59f06a.svg b/hydrogen/assets/element-logo-1551909733.1d59f06a.svg new file mode 100644 index 0000000..0213265 --- /dev/null +++ b/hydrogen/assets/element-logo-1551909733.1d59f06a.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/hydrogen/assets/element-logo-703176763.fc54fc8d.svg b/hydrogen/assets/element-logo-703176763.fc54fc8d.svg new file mode 100644 index 0000000..8e576d4 --- /dev/null +++ b/hydrogen/assets/element-logo-703176763.fc54fc8d.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/hydrogen/assets/element-logo.86bc8565.svg b/hydrogen/assets/element-logo.86bc8565.svg new file mode 100644 index 0000000..31c3bca --- /dev/null +++ b/hydrogen/assets/element-logo.86bc8565.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/hydrogen/assets/enable-grid-2071838379.ab4f40c5.svg b/hydrogen/assets/enable-grid-2071838379.ab4f40c5.svg new file mode 100644 index 0000000..a8308bc --- /dev/null +++ b/hydrogen/assets/enable-grid-2071838379.ab4f40c5.svg @@ -0,0 +1,3 @@ + + + diff --git a/hydrogen/assets/enable-grid-2288309723.f83895c8.svg b/hydrogen/assets/enable-grid-2288309723.f83895c8.svg new file mode 100644 index 0000000..3ee085f --- /dev/null +++ b/hydrogen/assets/enable-grid-2288309723.f83895c8.svg @@ -0,0 +1,3 @@ + + + diff --git a/hydrogen/assets/enable-grid.eef43c65.svg b/hydrogen/assets/enable-grid.eef43c65.svg new file mode 100644 index 0000000..acf9a28 --- /dev/null +++ b/hydrogen/assets/enable-grid.eef43c65.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/hydrogen/assets/encryption-status-2100926911.a90232b4.svg b/hydrogen/assets/encryption-status-2100926911.a90232b4.svg new file mode 100644 index 0000000..b9fe5af --- /dev/null +++ b/hydrogen/assets/encryption-status-2100926911.a90232b4.svg @@ -0,0 +1,3 @@ + + + diff --git a/hydrogen/assets/encryption-status-3449529405.c200a9bb.svg b/hydrogen/assets/encryption-status-3449529405.c200a9bb.svg new file mode 100644 index 0000000..de513dd --- /dev/null +++ b/hydrogen/assets/encryption-status-3449529405.c200a9bb.svg @@ -0,0 +1,3 @@ + + + diff --git a/hydrogen/assets/encryption-status-475927392.2fedc0bd.svg b/hydrogen/assets/encryption-status-475927392.2fedc0bd.svg new file mode 100644 index 0000000..ded7df8 --- /dev/null +++ b/hydrogen/assets/encryption-status-475927392.2fedc0bd.svg @@ -0,0 +1,3 @@ + + + diff --git a/hydrogen/assets/encryption-status-689620003.8086e625.svg b/hydrogen/assets/encryption-status-689620003.8086e625.svg new file mode 100644 index 0000000..81c480f --- /dev/null +++ b/hydrogen/assets/encryption-status-689620003.8086e625.svg @@ -0,0 +1,3 @@ + + + diff --git a/hydrogen/assets/encryption-status.8054183e.svg b/hydrogen/assets/encryption-status.8054183e.svg new file mode 100644 index 0000000..0006bdf --- /dev/null +++ b/hydrogen/assets/encryption-status.8054183e.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/hydrogen/assets/hangup-1798659826.d0cb8438.svg b/hydrogen/assets/hangup-1798659826.d0cb8438.svg new file mode 100644 index 0000000..047ccad --- /dev/null +++ b/hydrogen/assets/hangup-1798659826.d0cb8438.svg @@ -0,0 +1,3 @@ + + + diff --git a/hydrogen/assets/hangup-581771896.279a6adf.svg b/hydrogen/assets/hangup-581771896.279a6adf.svg new file mode 100644 index 0000000..e6e2190 --- /dev/null +++ b/hydrogen/assets/hangup-581771896.279a6adf.svg @@ -0,0 +1,3 @@ + + + diff --git a/hydrogen/assets/hangup.8b163c30.svg b/hydrogen/assets/hangup.8b163c30.svg new file mode 100644 index 0000000..952b142 --- /dev/null +++ b/hydrogen/assets/hangup.8b163c30.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/hydrogen/assets/icon-maskable.965d12c4.png b/hydrogen/assets/icon-maskable.965d12c4.png new file mode 100644 index 0000000000000000000000000000000000000000..3d96b2d8238c8d524f82533586cb9f6f22c89e1d GIT binary patch literal 16599 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 T?96B2zL1K7rhJX8Mfm>!lo{VW literal 0 HcmV?d00001 diff --git a/hydrogen/assets/icon.8024c299.png b/hydrogen/assets/icon.8024c299.png new file mode 100644 index 0000000000000000000000000000000000000000..b6c70c00a4957f34bda8d23ef1dd258f074f8764 GIT binary patch literal 15862 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 literal 0 HcmV?d00001 diff --git a/hydrogen/assets/index.e65aa065.js b/hydrogen/assets/index.e65aa065.js new file mode 100644 index 0000000..7d73633 --- /dev/null +++ b/hydrogen/assets/index.e65aa065.js @@ -0,0 +1,31 @@ +var Gc=Object.defineProperty,Yc=Object.defineProperties;var Jc=Object.getOwnPropertyDescriptors;var Yi=Object.getOwnPropertySymbols;var jn=Object.prototype.hasOwnProperty,qn=Object.prototype.propertyIsEnumerable;var $n=(n,e,t)=>e in n?Gc(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,It=(n,e)=>{for(var t in e||(e={}))jn.call(e,t)&&$n(n,t,e[t]);if(Yi)for(var t of Yi(e))qn.call(e,t)&&$n(n,t,e[t]);return n},Fr=(n,e)=>Yc(n,Jc(e));var Hn=(n,e)=>{var t={};for(var s in n)jn.call(n,s)&&e.indexOf(s)<0&&(t[s]=n[s]);if(n!=null&&Yi)for(var s of Yi(n))e.indexOf(s)<0&&qn.call(n,s)&&(t[s]=n[s]);return t};function oi(...n){const e={};for(const t of n)e[t]=t;return Object.freeze(e)}function Wn(n){try{return new URL(n).origin}catch{return new URL(`https://${n}`).origin}}async function Qc(n,e){const t={format:"json",timeout:3e4,method:"GET"};try{const s=`${n}/.well-known/matrix/client`;return await e(s,t).response()}catch(s){if(s.name==="ConnectionError")return null;throw s}}async function Xc(n,e){var s;n=Wn(n);const t=await Qc(n,e);if(t&&t.status===200){const{body:i}=t,r=(s=i["m.homeserver"])==null?void 0:s.base_url;typeof r=="string"&&(n=Wn(r))}return n}class $t{constructor(){this._handlersByName={}}emit(e,t){const s=this._handlersByName[e];s&&s.forEach(i=>i(t))}disposableOn(e,t){return this.on(e,t),()=>{this.off(e,t)}}on(e,t){let s=this._handlersByName[e];s||(this.onFirstSubscriptionAdded(e),this._handlersByName[e]=s=new Set),s.add(t)}off(e,t){const s=this._handlersByName[e];s&&(s.delete(t),s.size===0&&(delete this._handlersByName[e],this.onLastSubscriptionRemoved(e)))}onFirstSubscriptionAdded(e){}onLastSubscriptionRemoved(e){}}class oa extends $t{constructor(e){super(),this._abortable=void 0;const t=i=>(this._abortable=i,i);this._progress=void 0;const s=i=>{this._progress=i,this.emit("change","progress")};this.result=e(t,s)}get progress(){return this._progress}abort(){var e;(e=this._abortable)==null||e.abort(),this._abortable=void 0}}class rt extends Error{get name(){return"AbortError"}}class xr{constructor(){this._handlers=new Set}onSubscribeFirst(){}onUnsubscribeLast(){}subscribe(e){return this._handlers.add(e),this._handlers.size===1&&this.onSubscribeFirst(),()=>this.unsubscribe(e)}unsubscribe(e){e&&(this._handlers.delete(e),this._handlers.size===0&&this.onUnsubscribeLast())}unsubscribeAll(){this._handlers.size!==0&&(this._handlers.clear(),this.onUnsubscribeLast())}get hasSubscriptions(){return this._handlers.size!==0}}class yt extends xr{emit(e){for(const t of this._handlers)t(e)}waitFor(e){return e(this.get())?new el(Promise.resolve(this.get())):new Zc(this,e)}flatMap(e){return new sl(this,e)}}class Zc{constructor(e,t){this._promise=new Promise((s,i)=>{this._reject=i,this._subscription=e.subscribe(r=>{t(r)&&(this._reject=null,s(r),this.dispose())})})}get promise(){return this._promise}dispose(){this._subscription&&(this._subscription(),this._subscription=null),this._reject&&(this._reject(new rt),this._reject=null)}}class el{constructor(e){this.promise=e}dispose(){}}class tl extends yt{constructor(e,t){super(),this.value=e,this.eventName=t}onSubscribeFirst(){this.eventSubscription=this.value.disposableOn(this.eventName,()=>{this.emit(this.value)}),super.onSubscribeFirst()}onUnsubscribeLast(){this.eventSubscription(),super.onUnsubscribeLast()}get(){return this.value}}class Vt extends yt{constructor(e){super(),this._value=e}get(){return this._value}set(e){e!==this._value&&(this._value=e,this.emit(this._value))}}class sl extends yt{constructor(e,t){super(),this.source=e,this.mapper=t}onUnsubscribeLast(){super.onUnsubscribeLast(),this.sourceSubscription=this.sourceSubscription(),this.targetSubscription&&(this.targetSubscription=this.targetSubscription())}onSubscribeFirst(){super.onSubscribeFirst(),this.sourceSubscription=this.source.subscribe(()=>{this.updateTargetSubscription(),this.emit(this.get())}),this.updateTargetSubscription()}updateTargetSubscription(){const e=this.source.get();if(e){const t=this.mapper(e);if(t){this.targetSubscription||(this.targetSubscription=t.subscribe(()=>this.emit(this.get())));return}}this.targetSubscription&&(this.targetSubscription=this.targetSubscription())}get(){const e=this.source.get();if(!e)return;const t=this.mapper(e);return t==null?void 0:t.get()}}function il(n,e){return e{}){super(e),this.freeCallback=t,this.startCallback=s}onSubscribeFirst(){this.startCallback()}onUnsubscribeLast(){super.onUnsubscribeLast(),this.freeCallback()}}class ai extends xr{emitReset(){for(let e of this._handlers)e.onReset(this)}emitAdd(e,t){for(let s of this._handlers)s.onAdd(e,t,this)}emitUpdate(e,t,s){for(let i of this._handlers)i.onUpdate(e,t,s,this)}emitRemove(e,t){for(let s of this._handlers)s.onRemove(e,t,this)}emitMove(e,t,s){for(let i of this._handlers)i.onMove(e,t,s,this)}}/** + * @license + * Based off baseSortedIndex function in Lodash + * Copyright JS Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */function Nt(n,e,t){let s=0,i=n.length;for(;s>>1,o=t(e,n[r]);o>0?s=r+1:o<0?i=r:s=i=r}return i}class gn extends ai{constructor(e=[]){super(),this._items=e}append(e){this._items.push(e),this.emitAdd(this._items.length-1,e)}remove(e){const[t]=this._items.splice(e,1);this.emitRemove(e,t)}insertMany(e,t){for(let s of t)this.insert(e,s),e+=1}insert(e,t){this._items.splice(e,0,t),this.emitAdd(e,t)}move(e,t){if(e=0&&e=this._items.length||this._comparator(this._items[s],e)!==0?(this._items.splice(s,0,e),this.emitAdd(s,e)):(this._items[s]=e,this.emitUpdate(s,e,t))}get(e){return this._items[e]}remove(e){const t=this._items[e];this._items.splice(e,1),this.emitRemove(e,t)}get array(){return this._items}get length(){return this._items.length}[Symbol.iterator](){return new nl(this)}}class nl{constructor(e){this._consumed=!1,this._sortedArray=e,this._current=null}next(){return this._consumed?{value:void 0,done:!0}:(this._current=this._current?this._sortedArray._getNext(this._current):this._sortedArray.get(0),this._current||(this._consumed=!0),{value:this._current,done:this._consumed})}}class ol extends ai{constructor(e,t,s,i){super(),this._sourceUnsubscribe=null,this._mappedValues=null,this._sourceList=e,this._mapper=t,this._updater=s,this._removeCallback=i}findAndUpdate(e,t){return aa(e,this._mappedValues,this,t)}get length(){return this._mappedValues.length}[Symbol.iterator](){return this._mappedValues.values()}}function al(n,e,t){n._mappedValues.splice(e,0,t),n.emitAdd(e,t)}function cl(n,e,t,s){const i=n._mappedValues[e];n._updater&&n._updater(i,s,t),n.emitUpdate(e,i,s)}function ll(n,e){const t=n._mappedValues[e];n._mappedValues.splice(e,1),n._removeCallback&&n._removeCallback(t),n.emitRemove(e,t)}function hl(n,e,t){const s=n._mappedValues[e];n._mappedValues.splice(e,1),n._mappedValues.splice(t,0,s),n.emitMove(e,t,s)}function dl(n){n._mappedValues=[],n.emitReset()}class ul extends ol{constructor(){super(...arguments),this._eventQueue=null,this._flushing=!1}onSubscribeFirst(){this._sourceUnsubscribe=this._sourceList.subscribe(this),this._eventQueue=[],this._mappedValues=[];let e=0;for(const t of this._sourceList)this._eventQueue.push(new zn(e,t)),e+=1;this._flush()}async _flush(){if(!this._flushing){this._flushing=!0;try{for(;this._eventQueue.length;)await this._eventQueue.shift().run(this)}finally{this._flushing=!1}}}onReset(){this._eventQueue&&(this._eventQueue.push(new gl),this._flush())}onAdd(e,t){this._eventQueue&&(this._eventQueue.push(new zn(e,t)),this._flush())}onUpdate(e,t,s){this._eventQueue&&(this._eventQueue.push(new ml(e,t,s)),this._flush())}onRemove(e){this._eventQueue&&(this._eventQueue.push(new _l(e)),this._flush())}onMove(e,t){this._eventQueue&&(this._eventQueue.push(new pl(e,t)),this._flush())}onUnsubscribeLast(){this._sourceUnsubscribe(),this._eventQueue=null,this._mappedValues=null}}class zn{constructor(e,t){this.index=e,this.value=t}async run(e){const t=await e._mapper(this.value);al(e,this.index,t)}}class ml{constructor(e,t,s){this.index=e,this.value=t,this.params=s}async run(e){cl(e,this.index,this.value,this.params)}}class _l{constructor(e){this.index=e}async run(e){ll(e,this.index)}}class pl{constructor(e,t){this.fromIdx=e,this.toIdx=t}async run(e){hl(e,this.fromIdx,this.toIdx)}}class gl{async run(e){dl(e)}}class ca extends ai{constructor(...e){super(),this._sourceUnsubscribes=null,this._sourceLists=e}_offsetForSource(e){const t=this._sourceLists.indexOf(e);let s=0;for(let i=0;ie.subscribe(this))}onUnsubscribeLast(){for(const e of this._sourceUnsubscribes)e()}onReset(){this.emitReset();let e=0;for(const t of this)this.emitAdd(e,t),e+=1}onAdd(e,t,s){this.emitAdd(this._offsetForSource(s)+e,t)}onUpdate(e,t,s,i){!this._sourceUnsubscribes||this.emitUpdate(this._offsetForSource(i)+e,t,s)}onRemove(e,t,s){this.emitRemove(this._offsetForSource(s)+e,t)}onMove(e,t,s,i){const r=this._offsetForSource(i);this.emitMove(r+e,r+t,s)}get length(){let e=0;for(let t=0;t{let s=t.next();for(;s.done;){if(e+=1,e>=this._sourceLists.length)return s;t=this._sourceLists[e][Symbol.iterator](),s=t.next()}return s}}}}class fl extends ai{constructor(e,t){super(),this._sourceMap=e,this._comparator=(s,i)=>t(s.value,i.value),this._sortedPairs=null,this._mapSubscription=null}onAdd(e,t){const s={key:e,value:t},i=Nt(this._sortedPairs,s,this._comparator);this._sortedPairs.splice(i,0,s),this.emitAdd(i,t)}onRemove(e,t){const s={key:e,value:t},i=Nt(this._sortedPairs,s,this._comparator);this._sortedPairs.splice(i,1),this.emitRemove(i,t)}onUpdate(e,t,s){if(!this._sortedPairs)return;const i=this._sortedPairs.findIndex(c=>c.key===e);this._sortedPairs.splice(i,1);const r={key:e,value:t},o=Nt(this._sortedPairs,r,this._comparator);this._sortedPairs.splice(o,0,r),i!==o&&this.emitMove(i,o,t),this.emitUpdate(o,t,s)}onReset(){this._sortedPairs=[],this.emitReset()}onSubscribeFirst(){this._mapSubscription=this._sourceMap.subscribe(this),this._sortedPairs=new Array(this._sourceMap.size);let e=0;for(let[t,s]of this._sourceMap)this._sortedPairs[e]={key:t,value:s},++e;this._sortedPairs.sort(this._comparator),super.onSubscribeFirst()}onUnsubscribeLast(){super.onUnsubscribeLast(),this._sortedPairs=null,this._mapSubscription=this._mapSubscription()}get(e){return this._sortedPairs[e].value}get length(){return this._sourceMap.size}[Symbol.iterator](){const e=this._sortedPairs.values();return{next(){const t=e.next();return t.value&&(t.value=t.value.value),t}}}}class ci extends xr{constructor(){super()}emitReset(){for(let e of this._handlers)e.onReset()}emitAdd(e,t){for(let s of this._handlers)s.onAdd(e,t)}emitUpdate(e,t,s){for(let i of this._handlers)i.onUpdate(e,t,s)}emitRemove(e,t){for(let s of this._handlers)s.onRemove(e,t)}join(...e){return new bl([this].concat(e))}mapValues(e,t){return new Il(this,e,t)}sortValues(e){return new fl(this,e)}filterValues(e){return new wl(this,e)}observeSize(){return new Cl(this)}}class yl extends ci{constructor(e,t){super(),this._source=e,this._apply=t}hasApply(){return!!this._apply}setApply(e){this._apply=e,this._apply&&this.applyOnce(this._apply)}applyOnce(e){for(const[t,s]of this._source)e(t,s)}onAdd(e,t){this._apply&&this._apply(e,t),this.emitAdd(e,t)}onRemove(e,t){this.emitRemove(e,t)}onUpdate(e,t,s){this._apply&&this._apply(e,t,s),this.emitUpdate(e,t,s)}onSubscribeFirst(){this._subscription=this._source.subscribe(this),this._apply&&this.applyOnce(this._apply),super.onSubscribeFirst()}onUnsubscribeLast(){super.onUnsubscribeLast(),this._subscription&&(this._subscription=this._subscription())}onReset(){this._apply&&this.applyOnce(this._apply),this.emitReset()}[Symbol.iterator](){return this._source[Symbol.iterator]()}get size(){return this._source.size}get(e){return this._source.get(e)}}class wl extends ci{constructor(e,t){super(),this._source=e,this._filter=t}setFilter(e){this._filter=e,this._subscription&&this._reapplyFilter()}_reapplyFilter(e=!1){if(this._filter){this._included=this._included||new Map;for(const[t,s]of this._source){const i=this._filter(s,t),r=this._included.get(t);if(this._included.set(t,i),!e){const o=r||!0;this._emitForUpdate(o,i,t,s)}}}else{if(this._included&&!e)for(const[t,s]of this._source)this._included.get(t)||this.emitAdd(t,s);this._included=void 0}}onAdd(e,t){if(this._filter)if(this._included){const s=this._filter(t,e);if(this._included.set(e,s),!s)return}else throw new Error("Internal logic error: FilteredMap._included used before initialized");this.emitAdd(e,t)}onRemove(e,t){var i;const s=!this._filter||((i=this._included)==null?void 0:i.get(e));if(this._included)this._included.delete(e),s&&this.emitRemove(e,t);else throw new Error("Internal logic error: FilteredMap._included used before initialized")}onUpdate(e,t,s){if(!!this._included)if(this._filter){const i=this._included.get(e),r=this._filter(t,e);this._included.set(e,r),this._emitForUpdate(i,r,e,t,s)}else this.emitUpdate(e,t,s)}_emitForUpdate(e,t,s,i,r=null){e&&!t?this.emitRemove(s,i):!e&&t?this.emitAdd(s,i):e&&t&&this.emitUpdate(s,i,r)}onSubscribeFirst(){this._subscription=this._source.subscribe(this),this._reapplyFilter(!0),super.onSubscribeFirst()}onUnsubscribeLast(){super.onUnsubscribeLast(),this._included=void 0,this._subscription&&(this._subscription=this._subscription())}onReset(){this._reapplyFilter(),this.emitReset()}[Symbol.iterator](){return new vl(this._source,this._included)}get size(){var t;let e=0;return(t=this._included)==null||t.forEach(s=>{s&&(e+=1)}),e}get(e){const t=this._source.get(e);if(t&&this._filter(t,e))return t}}class vl{constructor(e,t){this._included=t,this._sourceIterator=e[Symbol.iterator]()}next(){var e;for(;;){const t=this._sourceIterator.next();if(t.done)return t;const s=t.value[0];if((e=this._included)!=null&&e.get(s))return t}}}class bl extends ci{constructor(e){super(),this._sources=e}onAdd(e,t,s){if(!this._isKeyAtSourceOccluded(e,t)){const i=this._getValueFromOccludedSources(e,t);i!==void 0&&this.emitRemove(t,i),this.emitAdd(t,s)}}onRemove(e,t,s){if(!this._isKeyAtSourceOccluded(e,t)){this.emitRemove(t,s);const i=this._getValueFromOccludedSources(e,t);i!==void 0&&this.emitAdd(t,i)}}onUpdate(e,t,s,i){!this._subscriptions||this._isKeyAtSourceOccluded(e,t)||this.emitUpdate(t,s,i)}onReset(){this.emitReset()}onSubscribeFirst(){this._subscriptions=this._sources.map(e=>new kl(e,this).subscribe()),super.onSubscribeFirst()}_isKeyAtSourceOccluded(e,t){const s=this._sources.indexOf(e);for(let i=0;ie+t.size,0)}get(e){for(const t of this._sources){const s=t.get(e);if(s)return s}}}class Sl{constructor(e){this._sourceIndex=-1,this._encounteredKeys=new Set,this._sources=e}next(){var t;let e;for(;!e;){if(!this._currentIterator){if(this._sourceIndex+=1,this._sources.length<=this._sourceIndex)return{done:!0,value:null};this._currentIterator=this._sources[this._sourceIndex][Symbol.iterator]()}const s=(t=this._currentIterator)==null?void 0:t.next();if(!s||s.done){this._currentIterator=void 0;continue}else{const i=s.value[0];this._encounteredKeys.has(i)||(this._encounteredKeys.add(i),e=s)}}return e}}class kl{constructor(e,t){this._source=e,this._joinedMap=t,this._subscription=void 0}subscribe(){return this._subscription=this._source.subscribe(this),this}dispose(){this._subscription&&(this._subscription=this._subscription())}onAdd(e,t){this._joinedMap.onAdd(this._source,e,t)}onRemove(e,t){this._joinedMap.onRemove(this._source,e,t)}onUpdate(e,t,s){this._joinedMap.onUpdate(this._source,e,t,s)}onReset(){this._joinedMap.onReset()}}class Il extends ci{constructor(e,t,s){super(),this._source=e,this._mapper=t,this._updater=s,this._mappedValues=new Map}_emitSpontaneousUpdate(e,t){const s=this._mappedValues.get(e);s&&this.emitUpdate(e,s,t)}onAdd(e,t){const s=this._emitSpontaneousUpdate.bind(this,e),i=this._mapper(t,s);this._mappedValues.set(e,i),this.emitAdd(e,i)}onRemove(e){const t=this._mappedValues.get(e);this._mappedValues.delete(e)&&t&&this.emitRemove(e,t)}onUpdate(e,t,s){var r;if(!this._mappedValues)return;const i=this._mappedValues.get(e);i!==void 0&&((r=this._updater)==null||r.call(this,s,i,t),this.emitUpdate(e,i,s))}onSubscribeFirst(){this._subscription=this._source.subscribe(this);for(let[e,t]of this._source){const s=this._emitSpontaneousUpdate.bind(this,e),i=this._mapper(t,s);this._mappedValues.set(e,i)}super.onSubscribeFirst()}onUnsubscribeLast(){super.onUnsubscribeLast(),this._subscription&&(this._subscription=this._subscription()),this._mappedValues.clear()}onReset(){this._mappedValues.clear(),this.emitReset()}[Symbol.iterator](){return this._mappedValues.entries()}get size(){return this._mappedValues.size}get(e){return this._mappedValues.get(e)}}class Dt extends ci{constructor(e){super(),this._values=new Map(e)}update(e,t){const s=this._values.get(e);return s!==void 0?(this._values.set(e,s),this.emitUpdate(e,s,t),!0):!1}add(e,t){return this._values.has(e)?!1:(this._values.set(e,t),this.emitAdd(e,t),!0)}remove(e){const t=this._values.get(e);return t!==void 0?(this._values.delete(e),this.emitRemove(e,t),!0):!1}set(e,t){return this._values.has(e)?(this._values.set(e,t),this.update(e,void 0)):this.add(e,t)}reset(){this._values.clear(),this.emitReset()}get(e){return this._values.get(e)}get size(){return this._values.size}[Symbol.iterator](){return this._values.entries()}values(){return this._values.values()}keys(){return this._values.keys()}}class Ml extends ci{constructor(e,t){super(),this.key=e,this.observableValue=t}onSubscribeFirst(){this.subscription=this.observableValue.subscribe(e=>{this.emitUpdate(this.key,e,void 0)}),super.onSubscribeFirst()}onUnsubscribeLast(){this.subscription(),super.onUnsubscribeLast()}*[Symbol.iterator](){yield[this.key,this.observableValue.get()]}get size(){return 1}get(e){if(e==this.key)return this.observableValue.get()}}class Cl extends yt{constructor(e){super(),this.map=e}onSubscribeFirst(){this.subscription=this.map.subscribe({onAdd:(e,t)=>{this.emit(this.get())},onRemove:(e,t)=>{this.emit(this.get())},onUpdate:(e,t)=>{},onReset:()=>{this.emit(this.get())}})}onUnsubscribeLast(){var e;this.subscription=(e=this.subscription)==null?void 0:e.call(this)}get(){return this.map.size}}const El={"image/jpeg":!0,"image/gif":!0,"image/png":!0,"video/mp4":!0,"video/webm":!0,"video/ogg":!0,"video/quicktime":!0,"video/VP8":!0,"audio/mp4":!0,"audio/webm":!0,"audio/aac":!0,"audio/mpeg":!0,"audio/ogg":!0,"audio/wave":!0,"audio/wav":!0,"audio/x-wav":!0,"audio/x-pn-wav":!0,"audio/flac":!0,"audio/x-flac":!0},Gn="application/octet-stream";class Ts{constructor(e,t=null){this._blob=e,this._buffer=t,this._url=null}static fromBuffer(e,t){return t=t?t.split(";")[0].trim():"",El[t]||(t=Gn),new Ts(new Blob([e],{type:t}),e)}static fromBlobUnsafe(e){return new Ts(e)}get nativeBlob(){return this._blob}async readAsBuffer(){if(this._buffer)return this._buffer;{const e=new FileReader,t=new Promise((s,i)=>{e.addEventListener("load",r=>s(r.target.result)),e.addEventListener("error",r=>i(r.target.error))});return e.readAsArrayBuffer(this._blob),t}}get url(){return this._url||(this._url=URL.createObjectURL(this._blob)),this._url}get size(){return this._blob.size}get mimeType(){return this._blob.type||Gn}dispose(){this._url&&(URL.revokeObjectURL(this._url),this._url=null)}}function la(n){return Object.entries(n||{}).filter(([,e])=>e!==void 0).map(([e,t])=>(typeof t=="object"&&(t=JSON.stringify(t)),`${encodeURIComponent(e)}=${encodeURIComponent(t)}`)).join("&")}function Rl(n){if(n instanceof Ts){const e=n;return{mimeType:e.mimeType,body:e}}else{if(n instanceof Map)return{mimeType:"multipart/form-data",body:n};if(typeof n=="object"){const e=JSON.stringify(n);return{mimeType:"application/json",body:e}}else throw new Error("Unknown body type: "+n)}}class ha extends Error{constructor(e,t){super(`${e}: ${t.message}`),this.cause=t}get name(){return"WrappedError"}}class da extends Error{constructor(e,t,s,i){super(`${s?s.error:i} on ${e} ${t}`),this.errcode=s?s.errcode:null,this.retry_after_ms=s?s.retry_after_ms:0,this.statusCode=i}get name(){return"HomeServerError"}}class Ut extends Error{constructor(e,t){super(e||"ConnectionError"),this.isTimeout=t}get name(){return"ConnectionError"}}class Tl{constructor(e,t,s,i){let r;if(i!=null&&i.log){const o=i==null?void 0:i.log;r=o.child({t:"network",url:t,method:e},o.level.Info)}this._log=r,this._sourceRequest=s,this._promise=s.response().then(o=>{var c,l;if(r==null||r.set("status",o.status),o.status>=200&&o.status<300||((c=i==null?void 0:i.allowedStatusCodes)==null?void 0:c.includes(o.status)))return r==null||r.finish(),o.body;if(o.status>=500){const h=new Ut("Internal Server Error");throw r==null||r.catch(h),h}else if(o.status>=400&&!((l=o.body)!=null&&l.errcode)){const h=new Ut(`HTTP error status ${o.status} without errcode in body, assume this is a load balancer complaining the server is offline.`);throw r==null||r.catch(h),h}else{const h=new da(e,t,o.body,o.status);throw r==null||r.set("errcode",h.errcode),r==null||r.catch(h),h}},o=>{if(o.name==="AbortError"&&this._sourceRequest){const c=new Ut("Service worker aborted, either updating or hit #187.");throw r==null||r.catch(c),c}else throw o.name==="ConnectionError"&&(r==null||r.set("timeout",o.isTimeout)),r==null||r.catch(o),o})}abort(){var e;this._sourceRequest&&((e=this._log)==null||e.set("aborted",!0),this._sourceRequest.abort(),this._sourceRequest=void 0)}response(){return this._promise}async responseCode(){return(await this._sourceRequest.response()).status}}const Ji="/_matrix/client/r0",Yn="/_matrix/client/v3",Lr="/_matrix/client/unstable/org.matrix.msc2697.v2";class ws{constructor({homeserver:e,accessToken:t,request:s,reconnector:i}){this._homeserver=e,this._accessToken=t,this._requestFn=s,this._reconnector=i}_url(e,t=Ji){return this._homeserver+t+e}_baseRequest(e,t,s,i,r,o){const c=la(s);t=`${t}?${c}`;let l;const h=new Map;if(o&&h.set("Authorization",`Bearer ${o}`),h.set("Accept","application/json"),i){const p=Rl(i);h.set("Content-Type",p.mimeType),l=p.body}const a=this._requestFn(t,{method:e,headers:h,body:l,timeout:r==null?void 0:r.timeout,uploadProgress:r==null?void 0:r.uploadProgress,format:"json",cache:e!=="GET"}),u=new Tl(e,t,a,r);return this._reconnector&&u.response().catch(p=>{p.name==="ConnectionError"&&this._reconnector.onRequestFailed(this)}),u}_unauthedRequest(e,t,s,i,r){return this._baseRequest(e,t,s,i,r)}_authedRequest(e,t,s,i,r){return this._baseRequest(e,t,s,i,r,this._accessToken)}_post(e,t,s,i){return this._authedRequest("POST",this._url(e,(i==null?void 0:i.prefix)||Ji),t,s,i)}_put(e,t,s,i){return this._authedRequest("PUT",this._url(e,(i==null?void 0:i.prefix)||Ji),t,s,i)}_get(e,t,s,i){return this._authedRequest("GET",this._url(e,(i==null?void 0:i.prefix)||Ji),t,s,i)}updateAccessToken(e){this._accessToken=e}sync(e,t,s,i){return this._get("/sync",{since:e,timeout:s,filter:t},void 0,i)}context(e,t,s,i){return this._get(`/rooms/${encodeURIComponent(e)}/context/${encodeURIComponent(t)}`,{filter:i,limit:s})}messages(e,t,s){return this._get(`/rooms/${encodeURIComponent(e)}/messages`,t,void 0,s)}members(e,t,s){return this._get(`/rooms/${encodeURIComponent(e)}/members`,t,void 0,s)}send(e,t,s,i,r){return this._put(`/rooms/${encodeURIComponent(e)}/send/${encodeURIComponent(t)}/${encodeURIComponent(s)}`,{},i,r)}redact(e,t,s,i,r){return this._put(`/rooms/${encodeURIComponent(e)}/redact/${encodeURIComponent(t)}/${encodeURIComponent(s)}`,{},i,r)}receipt(e,t,s,i){return this._post(`/rooms/${encodeURIComponent(e)}/receipt/${encodeURIComponent(t)}/${encodeURIComponent(s)}`,{},{},i)}state(e,t,s,i){return this._get(`/rooms/${encodeURIComponent(e)}/state/${encodeURIComponent(t)}/${encodeURIComponent(s)}`,{},void 0,i)}sendState(e,t,s,i,r){return this._put(`/rooms/${encodeURIComponent(e)}/state/${encodeURIComponent(t)}/${encodeURIComponent(s)}`,{},i,r)}getLoginFlows(){return this._unauthedRequest("GET",this._url("/login"))}register(e,t,s,i,r=!1,o={}){o.allowedStatusCodes=[401];const c={auth:i,password:t,initial_device_displayname:s,inhibit_login:r};return e&&(c.username=e),this._unauthedRequest("POST",this._url("/register",Yn),void 0,c,o)}passwordLogin(e,t,s,i){return this._unauthedRequest("POST",this._url("/login"),void 0,{type:"m.login.password",identifier:{type:"m.id.user",user:e},password:t,initial_device_display_name:s},i)}tokenLogin(e,t,s,i){return this._unauthedRequest("POST",this._url("/login"),void 0,{type:"m.login.token",identifier:{type:"m.id.user"},token:e,txn_id:t,initial_device_display_name:s},i)}createFilter(e,t,s){return this._post(`/user/${encodeURIComponent(e)}/filter`,{},t,s)}versions(e){return this._unauthedRequest("GET",`${this._homeserver}/_matrix/client/versions`,void 0,void 0,e)}uploadKeys(e,t,s){let i="/keys/upload";return e&&(i=i+`/${encodeURIComponent(e)}`),this._post(i,{},t,s)}uploadSignatures(e,t){return this._post("/keys/signatures/upload",{},e,t)}queryKeys(e,t){return this._post("/keys/query",{},e,t)}claimKeys(e,t){return this._post("/keys/claim",{},e,t)}sendToDevice(e,t,s,i){return this._put(`/sendToDevice/${encodeURIComponent(e)}/${encodeURIComponent(s)}`,{},t,i)}roomKeysVersion(e,t){let s="";return e&&(s=`/${encodeURIComponent(e)}`),this._get(`/room_keys/version${s}`,void 0,void 0,t)}roomKeyForRoomAndSession(e,t,s,i){return this._get(`/room_keys/keys/${encodeURIComponent(t)}/${encodeURIComponent(s)}`,{version:e},void 0,i)}uploadRoomKeysToBackup(e,t,s={}){return s.prefix=Yn,this._put("/room_keys/keys",{version:e},t,s)}uploadAttachment(e,t,s){return this._authedRequest("POST",`${this._homeserver}/_matrix/media/r0/upload`,{filename:t},e,s)}setPusher(e,t){return this._post("/pushers/set",{},e,t)}getPushers(e){return this._get("/pushers",void 0,void 0,e)}invite(e,t,s,i){return this._post(`/rooms/${encodeURIComponent(e)}/invite`,{},{user_id:t,reason:s},i)}join(e,t){return this._post(`/rooms/${encodeURIComponent(e)}/join`,{},{},t)}joinIdOrAlias(e,t){return this._post(`/join/${encodeURIComponent(e)}`,{},{},t)}leave(e,t){return this._post(`/rooms/${encodeURIComponent(e)}/leave`,{},{},t)}forget(e,t){return this._post(`/rooms/${encodeURIComponent(e)}/forget`,{},{},t)}logout(e){return this._post("/logout",{},{},e)}getDehydratedDevice(e={}){return e.prefix=Lr,this._get("/dehydrated_device",void 0,void 0,e)}createDehydratedDevice(e,t={}){return t.prefix=Lr,this._put("/dehydrated_device",{},e,t)}claimDehydratedDevice(e,t={}){return t.prefix=Lr,this._post("/dehydrated_device/claim",{},{device_id:e},t)}profile(e,t){return this._get(`/profile/${encodeURIComponent(e)}`)}createRoom(e,t){return this._post("/createRoom",{},e,t)}setAccountData(e,t,s,i){return this._put(`/user/${encodeURIComponent(e)}/account_data/${encodeURIComponent(t)}`,{},s,i)}getTurnServer(e){return this._get("/voip/turnServer",void 0,void 0,e)}}class ua{constructor(e){this._start=2e3,this._current=2e3;const t=2e3;this._start=t,this._current=t,this._createTimeout=e,this._max=60*5*1e3}async waitForRetry(){this._timeout=this._createTimeout(this._current);try{await this._timeout.elapsed();const e=2*this._current;this._current=Math.min(this._max,e)}catch(e){if(!(e instanceof rt))throw e}finally{this._timeout=void 0}}abort(){this._timeout&&this._timeout.abort()}reset(){this._current=this._start,this.abort()}get nextValue(){return this._current}}var Ys=(n=>(n[n.Waiting=0]="Waiting",n[n.Reconnecting=1]="Reconnecting",n[n.Online=2]="Online",n))(Ys||{});class Al{constructor({retryDelay:e,createMeasure:t,onlineStatus:s}){this._onlineStatus=s,this._retryDelay=e,this._createTimeMeasure=t,this._state=new Vt(2),this._isReconnecting=!1}get lastVersionsResponse(){return this._versionsResponse}get connectionStatus(){return this._state}get retryIn(){return this._state.get()===0?this._retryDelay.nextValue-this._stateSince.measure():0}async onRequestFailed(e){if(!this._isReconnecting){this._isReconnecting=!0;const t=this._onlineStatus&&this._onlineStatus.subscribe(s=>{s&&this.tryNow()});try{await this._reconnectLoop(e)}catch(s){console.error(s)}finally{t&&t(),this._isReconnecting=!1}}}tryNow(){this._retryDelay&&this._retryDelay.abort()}_setState(e){e!==this._state.get()&&(e===0?this._stateSince=this._createTimeMeasure():this._stateSince=null,this._state.set(e))}async _reconnectLoop(e){for(this._versionsResponse=void 0,this._retryDelay.reset();!this._versionsResponse;)try{this._setState(1);const t=e.versions({timeout:3e4});this._versionsResponse=await t.response(),this._setState(2)}catch(t){if(t.name==="ConnectionError")this._setState(0),await this._retryDelay.waitForRetry();else throw t}}}async function xl(n,e,t){if(t===void 0||t.key===void 0||t.iv===void 0||t.hashes===void 0||t.hashes.sha256===void 0)throw new Error("Invalid info. Missing info.key, info.iv or info.hashes.sha256 key");const{crypto:s}=n,{base64:i}=n.encoding;var r=i.decode(t.iv),o=i.encode(i.decode(t.hashes.sha256));const c=await s.digest("SHA-256",e);if(i.encode(new Uint8Array(c))!=o)throw new Error("Mismatched SHA-256 digest");var l;return t.v=="v1"||t.v=="v2"?l=64:l=128,await s.aes.decryptCTR({jwkKey:t.key,iv:r,data:e,counterLength:l})}async function Vl(n,e){const{crypto:t}=n,{base64:s}=n.encoding,i=await t.aes.generateIV(),r=await t.aes.generateKey("jwk",256),o=await e.readAsBuffer(),c=await t.aes.encryptCTR({jwkKey:r,iv:i,data:o}),l=await t.digest("SHA-256",c);return{blob:n.createBlob(c,"application/octet-stream"),info:{v:"v2",key:r,iv:s.encodeUnpadded(i),hashes:{sha256:s.encodeUnpadded(l)}}}}class Nl{constructor(e){this.homeserver=e.homeserver,this.platform=e.platform,this.generateMediaUrl(e.serverVersions)}generateMediaUrl(e){const t="v1.11";e.includes(t)?this.mediaUrlPart="_matrix/client/v1/media":this.mediaUrlPart="_matrix/media/v3"}mxcUrlThumbnail(e,t,s,i){const r=this.parseMxcUrl(e);if(r){const[o,c]=r;return`${this.homeserver}/${this.mediaUrlPart}/thumbnail/${encodeURIComponent(o)}/${encodeURIComponent(c)}`+"?"+la({width:Math.round(t),height:Math.round(s),method:i})}}mxcUrl(e){const t=this.parseMxcUrl(e);if(t){const[s,i]=t;return`${this.homeserver}/${this.mediaUrlPart}/download/${encodeURIComponent(s)}/${encodeURIComponent(i)}`}}parseMxcUrl(e){const t="mxc://";if(e.startsWith(t))return e.slice(t.length).split("/",2)}async downloadEncryptedFile(e,t=!1){const s=this.mxcUrl(e.url),{body:i}=await this.platform.request(s,{method:"GET",format:"buffer",cache:t}).response(),r=await xl(this.platform,i,e);return this.platform.createBlob(r,e.mimetype)}async downloadPlaintextFile(e,t,s=!1){const i=this.mxcUrl(e),{body:r}=await this.platform.request(i,{method:"GET",format:"buffer",cache:s}).response();return this.platform.createBlob(r,t)}async downloadAttachment(e,t=!1){var s;return e.file?this.downloadEncryptedFile(e.file,t):this.downloadPlaintextFile(e.url,(s=e.info)==null?void 0:s.mimetype,t)}}class Dl{constructor(e,t){this.methodName=e,this.args=t,this._responsePromise=new Promise((s,i)=>{this.responseResolve=s,this.responseReject=i})}abort(){var e;this._requestResult?this._requestResult.abort():(this.responseReject(new rt),(e=this.responseCodeReject)==null||e.call(this,new rt))}response(){return this._responsePromise}responseCode(){return this.requestResult?this.requestResult.responseCode():(this._responseCodePromise||(this._responseCodePromise=new Promise((e,t)=>{this.responseCodeResolve=e,this.responseCodeReject=t})),this._responseCodePromise)}async setRequestResult(e){var i,r,o;this._requestResult=e;const t=await((i=this._requestResult)==null?void 0:i.response());this.responseResolve(t);const s=await((r=this._requestResult)==null?void 0:r.responseCode());(o=this.responseCodeResolve)==null||o.call(this,s)}get requestResult(){return this._requestResult}}class ma{constructor(e){this._scheduler=e}}for(const n of Object.getOwnPropertyNames(ws.prototype))n!=="constructor"&&!n.startsWith("_")&&(ma.prototype[n]=function(...e){return this._scheduler._hsApiRequest(n,e)});class Ul{constructor({hsApi:e,clock:t}){this._requests=new Set,this._stopped=!1,this._wrapper=new ma(this),this._hsApi=e,this._clock=t}get hsApi(){return this._wrapper}stop(){this._stopped=!0;for(const e of this._requests)e.abort();this._requests.clear()}start(){this._stopped=!1}_hsApiRequest(e,t){const s=new Dl(e,t);return this._doSend(s),s}async _doSend(e){this._requests.add(e);try{let t;for(;!this._stopped;)try{const s=this._hsApi[e.methodName].apply(this._hsApi,e.args);await e.setRequestResult(s);return}catch(s){if(s instanceof da&&s.errcode==="M_LIMIT_EXCEEDED")Number.isSafeInteger(s.retry_after_ms)?await this._clock.createTimeout(s.retry_after_ms).elapsed():(t||(t=new ua(this._clock.createTimeout)),await t.waitForRetry());else{e.responseReject(s);return}}this._stopped&&e.abort()}finally{this._requests.delete(e)}}}const Ol=3e4,te=oi("InitialSync","CatchupSync","Syncing","Stopped");function Pl(n){var e;try{const t=(e=n==null?void 0:n.timeline)==null?void 0:e.events;return Array.isArray(t)&&t.length===0}catch{return!0}}class Fl{constructor({hsApi:e,session:t,storage:s,logger:i}){this._hsApi=e,this._logger=i,this._session=t,this._storage=s,this._currentRequest=null,this._status=new Vt(te.Stopped),this._error=null}get status(){return this._status}get error(){return this._error}start(){if(this._status.get()!==te.Stopped)return;this._error=null;let e=this._session.syncToken;e?this._status.set(te.CatchupSync):this._status.set(te.InitialSync),this._syncLoop(e)}async _syncLoop(e){for(;this._status.get()!==te.Stopped;){let t,s,i=this._status.get()===te.CatchupSync||this._status.get()===te.InitialSync;await this._logger.run("sync",async r=>{r.set("token",e),r.set("status",this._status.get());try{const o=this._status.get()===te.Syncing?Ol:0,c=await this._syncRequest(e,o,r);e=c.syncToken,t=c.roomStates,s=c.sessionChanges,this._status.get()!==te.Syncing&&c.hadToDeviceMessages?this._status.set(te.CatchupSync):this._status.set(te.Syncing)}catch(o){if(o.name==="ConnectionError"&&o.isTimeout)return;this._error=o,o.name!=="AbortError"&&(r.error=o,r.logLevel=r.level.Fatal),r.set("stopping",!0),this._status.set(te.Stopped)}this._status.get()!==te.Stopped&&await r.wrap("afterSyncCompleted",o=>this._runAfterSyncCompleted(s,t,o))},this._logger.level.Info,(r,o)=>o.durationWithoutType("network")>=2e3||o.error||i?r.minLevel(o.level.Detail):r.minLevel(o.level.Info))}}async _runAfterSyncCompleted(e,t,s){const i=this._status.get()===te.CatchupSync,r=(async()=>{try{await s.wrap("session",c=>this._session.afterSyncCompleted(e,i,c))}catch{}})(),o=t.map(async c=>{try{await c.room.afterSyncCompleted(c.changes,s)}catch{}});await Promise.all(o.concat(r))}async _syncRequest(e,t,s){var g;let{syncFilterId:i}=this._session;typeof i!="string"&&(this._currentRequest=this._hsApi.createFilter(this._session.user.id,{room:{state:{lazy_load_members:!0}}},{log:s}),i=(await this._currentRequest.response()).filter_id);const r=t+80*1e3;this._currentRequest=this._hsApi.sync(e,i,t,{timeout:r,log:s});const o=await this._currentRequest.response(),c=!e,l=new Ll,h=this._parseInvites(o.rooms),{roomStates:a,archivedRoomStates:u}=await this._parseRoomsResponse(o.rooms,h,c,s);try{l.lock=await s.wrap("obtainSyncLock",()=>this._session.obtainSyncLock(o)),await s.wrap("prepare",f=>this._prepareSync(l,a,o,f)),await s.wrap("afterPrepareSync",f=>Promise.all(a.map(v=>v.room.afterPrepareSync(v.preparation,f)))),await s.wrap("write",async f=>this._writeSync(l,h,a,u,o,i,c,f))}finally{l.dispose()}s.wrap("after",f=>this._afterSync(l,h,a,u,f));const p=(g=o.to_device)==null?void 0:g.events;return{syncToken:o.next_batch,roomStates:a,sessionChanges:l.changes,hadToDeviceMessages:Array.isArray(p)&&p.length>0}}_openPrepareSyncTxn(){const e=this._storage.storeNames;return this._storage.readTxn([e.deviceKeys,e.olmSessions,e.inboundGroupSessions,e.timelineFragments,e.timelineEvents])}async _prepareSync(e,t,s,i){var c,l;const r=await this._openPrepareSyncTxn();e.preparation=await i.wrap("session",h=>this._session.prepareSync(s,e.lock,r,h));const o=(c=e.preparation)==null?void 0:c.newKeysByRoom;if(o){const{hasOwnProperty:h}=Object.prototype;for(const a of o.keys())if(!(((l=s.rooms)==null?void 0:l.join)&&h.call(s.rooms.join,a))){let p=this._session.rooms.get(a);p&&t.push(new Jn(p,!1,{},p.membership))}}await Promise.all(t.map(async h=>{const a=o==null?void 0:o.get(h.room.id);h.preparation=await i.wrap("room",async u=>(h.isNewRoom&&await h.room.load(null,r,u),h.room.prepareSync(h.roomResponse,h.membership,a,r,u)),i.level.Detail)})),await r.complete()}async _writeSync(e,t,s,i,r,o,c,l){const h=await this._openSyncTxn();try{e.changes=await l.wrap("session",a=>this._session.writeSync(r,o,e.preparation,h,a)),await Promise.all(t.map(async a=>{a.changes=await l.wrap("invite",u=>a.invite.writeSync(a.membership,a.roomResponse,h,u))})),await Promise.all(s.map(async a=>{a.changes=await l.wrap("room",u=>a.room.writeSync(a.roomResponse,c,a.preparation,h,u))})),await Promise.all(i.map(async a=>{var p;const u=(p=a.roomState)==null?void 0:p.summaryChanges;a.changes=await l.wrap("archivedRoom",g=>a.archivedRoom.writeSync(u,a.roomResponse,a.membership,h,g))}))}catch(a){throw h.abort(l),h.getCause(a)}await h.complete(l)}_afterSync(e,t,s,i,r){r.wrap("session",o=>this._session.afterSync(e.changes,o),r.level.Detail);for(let o of i)r.wrap("archivedRoom",c=>{o.archivedRoom.afterSync(o.changes,c),o.archivedRoom.release()},r.level.Detail);for(let o of s)r.wrap("room",c=>o.room.afterSync(o.changes,c),r.level.Detail);for(let o of t)r.wrap("invite",c=>o.invite.afterSync(o.changes,c),r.level.Detail);this._session.applyRoomCollectionChangesAfterSync(t,s,i,r)}_openSyncTxn(){const e=this._storage.storeNames;return this._storage.readWriteTxn([e.session,e.roomSummary,e.archivedRoomSummary,e.invites,e.roomState,e.roomMembers,e.timelineEvents,e.timelineRelations,e.timelineFragments,e.pendingEvents,e.userIdentities,e.groupSessionDecryptions,e.deviceKeys,e.outboundGroupSessions,e.operations,e.accountData,e.olmSessions,e.inboundGroupSessions,e.calls])}async _parseRoomsResponse(e,t,s,i){const r=[],o=[];if(e){const c=["join","leave"];for(const l of c){const h=e[l];if(h)for(const[a,u]of Object.entries(h)){if(s&&Pl(u))continue;const p=this._session.invites.get(a);p&&t.push(new Qn(p,!1,null,l));const g=this._createRoomSyncState(a,u,l,s);g&&r.push(g);const f=await this._createArchivedRoomSyncState(a,g,u,l,s,i);f&&o.push(f)}}}return{roomStates:r,archivedRoomStates:o}}_createRoomSyncState(e,t,s,i){let r=!1,o=this._session.rooms.get(e);if(!o&&(s==="join"||i&&s==="leave")&&(o=this._session.createJoinedRoom(e),r=!0),o)return new Jn(o,r,t,s)}async _createArchivedRoomSyncState(e,t,s,i,r,o){let c;if((t==null?void 0:t.shouldAdd)&&!r?c=this._session.createOrGetArchivedRoomForSync(e):i==="leave"&&(t?c=this._session.createOrGetArchivedRoomForSync(e):c=await this._session.loadArchivedRoom(e,o)),c)return new Kl(c,t,s,i)}_parseInvites(e){const t=[];if(e!=null&&e.invite)for(const[s,i]of Object.entries(e.invite)){let r=this._session.invites.get(s),o=!1;r||(r=this._session.createInvite(s),o=!0),t.push(new Qn(r,o,i,"invite"))}return t}stop(){this._status.get()!==te.Stopped&&(this._status.set(te.Stopped),this._currentRequest&&(this._currentRequest.abort(),this._currentRequest=null))}}class Ll{constructor(){this.lock=null,this.preparation=null,this.changes=null}dispose(){var e;(e=this.lock)==null||e.release()}}class Jn{constructor(e,t,s,i){this.room=e,this.isNewRoom=t,this.roomResponse=s,this.membership=i,this.preparation=null,this.changes=null}get id(){return this.room.id}get shouldAdd(){return this.isNewRoom&&this.membership==="join"}get shouldRemove(){return!this.isNewRoom&&this.membership!=="join"}get summaryChanges(){var e;return(e=this.changes)==null?void 0:e.summaryChanges}}class Kl{constructor(e,t,s,i,r){this.archivedRoom=e,this.roomState=t,this.roomResponse=s,this.membership=i,this.isInitialSync=r,this.changes=null}get id(){return this.archivedRoom.id}get shouldAdd(){return(this.roomState||this.isInitialSync)&&this.membership==="leave"}get shouldRemove(){return this.membership==="join"}}class Qn{constructor(e,t,s,i){this.invite=e,this.isNewInvite=t,this.membership=i,this.roomResponse=s,this.changes=null}get id(){return this.invite.id}get shouldAdd(){return this.isNewInvite}get shouldRemove(){return this.membership!=="invite"}}function _a(n){if(n.__esModule)return n;var e=Object.defineProperty({},"__esModule",{value:!0});return Object.keys(n).forEach(function(t){var s=Object.getOwnPropertyDescriptor(n,t);Object.defineProperty(e,t,s.get?s:{enumerable:!0,get:function(){return n[t]}})}),e}var Xn=/[\\\"\x00-\x1F]/g,jt={};for(var Qi=0;Qi<32;++Qi)jt[String.fromCharCode(Qi)]="\\U"+("0000"+Qi.toString(16)).slice(-4).toUpperCase();jt["\b"]="\\b";jt[" "]="\\t";jt[` +`]="\\n";jt["\f"]="\\f";jt["\r"]="\\r";jt['"']='\\"';jt["\\"]="\\\\";function pa(n){return Xn.lastIndex=0,n.replace(Xn,function(e){return jt[e]})}function yn(n){switch(typeof n){case"string":return'"'+pa(n)+'"';case"number":return isFinite(n)?n:"null";case"boolean":return n;case"object":return n===null?"null":Array.isArray(n)?Bl(n):$l(n);default:throw new Error("Cannot stringify: "+typeof n)}}function Bl(n){for(var e="[",t="",s=0;s(n[n.Sync=0]="Sync",n[n.Timeline=1]="Timeline",n[n.Retry=2]="Retry",n))(ts||{});const Oe="e2ee:",wn="m.olm.v1.curve25519-aes-sha2",ft="m.megolm.v1.aes-sha2";class fe extends Error{constructor(e,t,s){super(`Decryption error ${e}${s?": "+JSON.stringify(s):""}`),this.code=e,this.event=t,this.detailsObj=s}}const jl="ed25519";function ks(n){return n.keys[`ed25519:${n.device_id}`]}function _t(n){return n.keys[`curve25519:${n.device_id}`]}function ql(n,e,t){var s,i;return(i=(s=n==null?void 0:n.signatures)==null?void 0:s[e])==null?void 0:i[`${jl}:${t}`]}var ne=(n=>(n[n.Valid=0]="Valid",n[n.Invalid=1]="Invalid",n[n.NotSigned=2]="NotSigned",n))(ne||{});function vn(n,e,t,s,i,r){const o=ql(i,e,t);if(!o)return r==null||r.set("no_signature",!0),2;const c=Object.assign({},i);delete c.unsigned,delete c.signatures;const l=qi.stringify(c);try{return n.ed25519_verify(s,l,o),0}catch(h){if(r){const a=r.log({l:"Invalid signature, ignoring.",ed25519Key:s,canonicalJson:l,signature:o});a.error=h,a.logLevel=r.level.Warn}return 1}}function Hl(){return{type:"m.room.encryption",state_key:"",content:{algorithm:ft,rotation_period_ms:6048e5,rotation_period_msgs:100}}}function Xi(n,e){switch(e){case"world_readable":return!0;case"shared":return n!==void 0;case"joined":return n==="join";case"invited":return n==="invite"||n==="join";default:return!1}}function Qr(n){var e;return((e=n.unsigned)==null?void 0:e.prev_content)||n.prev_content}const gt="m.room.redaction";function Xr(n){var e;return!!((e=n==null?void 0:n.unsigned)!=null&&e.redacted_because)}var se=(n=>(n[n.None=1]="None",n[n.BeingCreated=2]="BeingCreated",n[n.Invited=4]="Invited",n[n.Joined=8]="Joined",n[n.Replaced=16]="Replaced",n[n.Archived=32]="Archived",n))(se||{}),Le=(n=>(n[n.DirectMessage=0]="DirectMessage",n[n.Private=1]="Private",n[n.Public=2]="Public",n))(Le||{});function Js(n,e){var o,c;let t;const s=l=>{const h=e(l);h instanceof Promise&&(t=t!=null?t:[],t.push(h))},i=(o=n.state)==null?void 0:o.events;if(i)for(let l=0;l{})}function Wl(n,e,t,s,i){return e.length&&(n=e.reduce((r,o)=>Jl(r,o,t,s,i),n)),n}function zl(n,e,t,s){e.summary&&(n=Ql(n,e.summary)),t!==n.membership&&(n=n.cloneIfNeeded(),n.membership=t),e.account_data&&(n=e.account_data.events.reduce(Yl,n)),Js(e,r=>{n=ga(n,r,s)});const i=e.unread_notifications;return i&&(n=Gl(n,i)),n}function Gl(n,e){const t=e.highlight_count||0;t!==n.highlightCount&&(n=n.cloneIfNeeded(),n.highlightCount=t);const s=e.notification_count;return s!==n.notificationCount&&(n=n.cloneIfNeeded(),n.notificationCount=s),n}function Yl(n,e){var t;if((e==null?void 0:e.type)==="m.tag"){let s=(t=e==null?void 0:e.content)==null?void 0:t.tags;(!s||Array.isArray(s)||typeof s!="object")&&(s=null),n=n.cloneIfNeeded(),n.tags=s}return n}function ga(n,e,t){var s,i,r;if(e.type==="m.room.create")n=n.cloneIfNeeded(),n.lastMessageTimestamp=e.origin_server_ts;else if(e.type==="m.room.encryption"){const o=(s=e.content)==null?void 0:s.algorithm;!n.encryption&&o===ft&&(n=n.cloneIfNeeded(),n.encryption=e.content)}else if(e.type==="m.room.name"){const o=(i=e.content)==null?void 0:i.name;o!==n.name&&(n=n.cloneIfNeeded(),n.name=o)}else if(e.type==="m.room.avatar"){const o=(r=e.content)==null?void 0:r.url;o!==n.avatarUrl&&(n=n.cloneIfNeeded(),n.avatarUrl=o)}else if(e.type==="m.room.canonical_alias"){const o=e.content;n=n.cloneIfNeeded(),n.canonicalAlias=o.alias}else if(e.type==="m.room.member"){const o=e.content;if(o.is_direct===!0&&o.membership==="invite"&&!n.isDirectMessage){let c;e.sender===t?c=e.state_key:e.state_key===t&&(c=e.sender),c&&(n=n.cloneIfNeeded(),n.isDirectMessage=!0,n.dmUserId=c)}else o.membership==="leave"&&n.isDirectMessage&&n.dmUserId===e.state_key&&(n=n.cloneIfNeeded(),n.isDirectMessage=!1,n.dmUserId=null)}return n}function Jl(n,e,t,s,i){return e.eventType==="m.room.message"&&((!n.lastMessageTimestamp||e.timestamp>n.lastMessageTimestamp)&&(n=n.cloneIfNeeded(),n.lastMessageTimestamp=e.timestamp),!t&&e.sender!==i&&s&&(n=n.cloneIfNeeded(),n.isUnread=!0)),n}function Ql(n,e){const t=e["m.heroes"],s=e["m.joined_member_count"],i=e["m.invited_member_count"];return t&&Array.isArray(t)&&(n=n.cloneIfNeeded(),n.heroes=t),Number.isInteger(i)&&(n=n.cloneIfNeeded(),n.inviteCount=i),Number.isInteger(s)&&(n=n.cloneIfNeeded(),n.joinCount=s),n}class Rt{constructor(e,t){this.roomId=e?e.roomId:t,this.name=e?e.name:null,this.lastMessageTimestamp=e?e.lastMessageTimestamp:null,this.isUnread=e?e.isUnread:!1,this.encryption=e?e.encryption:null,this.membership=e?e.membership:null,this.inviteCount=e?e.inviteCount:0,this.joinCount=e?e.joinCount:0,this.heroes=e?e.heroes:null,this.canonicalAlias=e?e.canonicalAlias:null,this.hasFetchedMembers=e?e.hasFetchedMembers:!1,this.isTrackingMembers=e?e.isTrackingMembers:!1,this.avatarUrl=e?e.avatarUrl:null,this.notificationCount=e?e.notificationCount:0,this.highlightCount=e?e.highlightCount:0,this.tags=e?e.tags:null,this.isDirectMessage=e?e.isDirectMessage:!1,this.dmUserId=e?e.dmUserId:null,this.cloned=!!e}changedKeys(e){return Object.getOwnPropertyNames(this).filter(s=>s!=="cloned"&&this[s]!==e[s])}cloneIfNeeded(){return this.cloned?this:new Rt(this)}serialize(){return Object.entries(this).reduce((e,[t,s])=>(t!=="cloned"&&s!==null&&(e[t]=s),e),{})}applyTimelineEntries(e,t,s,i){return Wl(this,e,t,s,i)}applySyncResponse(e,t,s){return zl(this,e,t,s)}get needsHeroes(){return!this.name&&!this.canonicalAlias&&this.heroes&&this.heroes.length>0}isNewJoin(e){return this.membership==="join"&&e.membership!=="join"}}class Xl{constructor(e){this._data=null,this.applyChanges(new Rt(null,e))}get data(){return this._data}writeClearUnread(e){const t=new Rt(this._data);return t.isUnread=!1,t.notificationCount=0,t.highlightCount=0,e.roomSummary.set(t.serialize()),t}writeHasFetchedMembers(e,t){const s=new Rt(this._data);return s.hasFetchedMembers=e,t.roomSummary.set(s.serialize()),s}writeIsTrackingMembers(e,t){const s=new Rt(this._data);return s.isTrackingMembers=e,t.roomSummary.set(s.serialize()),s}writeData(e,t){if(e!==this._data)return t.roomSummary.set(e.serialize()),e}writeArchivedData(e,t){if(e!==this._data)return t.archivedRoomSummary.set(e.serialize()),e}async writeAndApplyData(e,t){if(e===this._data)return!1;const s=await t.readWriteTxn([t.storeNames.roomSummary]);try{s.roomSummary.set(e.serialize())}catch(i){throw s.abort(),i}return await s.complete(),this.applyChanges(e),!0}applyChanges(e){this._data=e,this._data.cloned=!1}async load(e){this.applyChanges(new Rt(e))}}var J=(n=>(n.session="session",n.roomState="roomState",n.roomSummary="roomSummary",n.archivedRoomSummary="archivedRoomSummary",n.invites="invites",n.roomMembers="roomMembers",n.timelineEvents="timelineEvents",n.timelineRelations="timelineRelations",n.timelineFragments="timelineFragments",n.pendingEvents="pendingEvents",n.userIdentities="userIdentities",n.deviceKeys="deviceKeys",n.olmSessions="olmSessions",n.inboundGroupSessions="inboundGroupSessions",n.outboundGroupSessions="outboundGroupSessions",n.groupSessionDecryptions="groupSessionDecryptions",n.operations="operations",n.accountData="accountData",n.calls="calls",n.crossSigningKeys="crossSigningKeys",n.sharedSecrets="sharedSecrets",n))(J||{});const Oi=Object.values(J);class Ot extends Error{constructor(e,t=null){super(e),t&&(this.errcode=t.name),this.cause=t}get name(){return"StorageError"}}const ce={get minStorageKey(){return 0},get middleStorageKey(){return 2147483647},get maxStorageKey(){return 4294967295}};class pe{constructor(e,t){this.fragmentId=e,this.eventIndex=t}nextFragmentKey(){return new pe(this.fragmentId+1,ce.middleStorageKey)}nextKeyForDirection(e){return e.isForward?this.nextKey():this.previousKey()}previousKey(){return new pe(this.fragmentId,this.eventIndex-1)}nextKey(){return new pe(this.fragmentId,this.eventIndex+1)}static get maxKey(){return new pe(ce.maxStorageKey,ce.maxStorageKey)}static get minKey(){return new pe(ce.minStorageKey,ce.minStorageKey)}static get defaultLiveKey(){return pe.defaultFragmentKey(ce.minStorageKey)}static defaultFragmentKey(e){return new pe(e,ce.middleStorageKey)}toString(){return`[${this.fragmentId}/${this.eventIndex}]`}equals(e){return this.fragmentId===(e==null?void 0:e.fragmentId)&&this.eventIndex===(e==null?void 0:e.eventIndex)}}const Zr=Number.MAX_SAFE_INTEGER;class fa{constructor(e){this._fragmentIdComparer=e}compare(e){return this.fragmentId===e.fragmentId?this.entryIndex-e.entryIndex:this.fragmentId===Zr?1:e.fragmentId===Zr?-1:this._fragmentIdComparer.compare(this.fragmentId,e.fragmentId)}asEventKey(){return new pe(this.fragmentId,this.entryIndex)}}const Zl="m.reaction",ss="m.annotation",ya="m.reference";function eh(n,e){return{"m.relates_to":{event_id:n,key:e,rel_type:ss}}}function th(n){return{"m.relates_to":{event_id:n,rel_type:ya}}}function bn(n){var e;return n.event_id||((e=n["m.in_reply_to"])==null?void 0:e.event_id)}function wa(n,e){n.event_id!==void 0?n.event_id=e:n["m.in_reply_to"]&&(n["m.in_reply_to"].event_id=e)}function va(n){if(n.type===gt)return n.redacts;{const e=Xt(n);if(e)return bn(e)}return null}function rs(n){return n==null?void 0:n["m.relates_to"]}function Xt(n){return rs(n.content)}class sh{constructor(){this._entries=[]}get firstTimestamp(){return this._entries.reduce((e,t)=>t.isRedaction?e:Math.min(t.timestamp,e),Number.MAX_SAFE_INTEGER)}get annotationEntry(){return this._entries.find(e=>!e.isRedaction)}get redactionEntry(){return this._entries.find(e=>e.isRedaction)}get count(){return this._entries.reduce((e,t)=>e+(t.isRedaction?-1:1),0)}add(e){this._entries.push(e)}remove(e){const t=this._entries.indexOf(e);return t===-1?!1:(this._entries.splice(t,1),!0)}get willAnnotate(){const e=this._entries.reduce((t,s)=>!t||s.pendingEvent.queueIndex>t.pendingEvent.queueIndex?s:t,null);return e?!e.isRedaction:!1}get isEmpty(){return this._entries.length===0}}function Zn(n){return n.replace(/&/g,"&").replace(//g,">")}function ih(n){switch(n){case"m.file":return"sent a file.";case"m.image":return"sent an image.";case"m.video":return"sent a video.";case"m.audio":return"sent an audio file."}return null}function rh(n){return n==="m.emote"?"* ":""}function nh(n,e,t,s){return{msgtype:e,body:t,format:"org.matrix.custom.html",formatted_body:s,"m.relates_to":{"m.in_reply_to":{event_id:n}}}}function oh(n,e,t){const s=ih(n.content.msgtype),i=rh(n.content.msgtype),r=n.sender,o=n.displayName||r,c=s||n.content.formatted_body||n.content.body&&Zn(n.content.body)||"",l=`

    In reply to ${i}${o}
    ${c}
    `,a=(s||n.content.body||"").split(` +`);a[0]=`> ${i}<${r}> ${a[0]}`;const p=a.join(` +> `)+` + +`+t,g=l+Zn(t);return nh(n.id,e,p,g)}class ba extends fa{constructor(e){super(e),this._pendingRedactions=null,this._pendingAnnotations=null,this._contextEntry=null,this._contextForEntries=null}get isReply(){var e;return!!((e=this.relation)!=null&&e["m.in_reply_to"])}get isReference(){var e;return((e=this.relation)==null?void 0:e.rel_type)===ya}get isRedacting(){return!!this._pendingRedactions}get isRedacted(){return this.isRedacting}get isRedaction(){return this.eventType===gt}get redactionReason(){var e;return this._pendingRedactions?(e=this._pendingRedactions[0].content)==null?void 0:e.reason:null}setContextEntry(e){this._contextEntry=e,e._setAsContextOf(this)}_setAsContextOf(e){this._contextForEntries||(this._contextForEntries=[]),this._contextForEntries.push(e)}get contextForEntries(){return this._contextForEntries}get contextEntry(){return this._contextEntry}addLocalRelation(e){if(e.eventType===gt&&e.isRelatedToId(this.id)){if(this._pendingRedactions||(this._pendingRedactions=[]),this._pendingRedactions.push(e),this._pendingRedactions.length===1)return"isRedacted"}else{const t=e.redactingEntry||e;if(t.isRelatedToId(this.id)&&t.relation.rel_type===ss&&this._addPendingAnnotation(e))return"pendingAnnotations"}}removeLocalRelation(e){var t;if(e.eventType===gt&&e.isRelatedToId(this.id)&&this._pendingRedactions){const s=this._pendingRedactions.length;if(this._pendingRedactions=this._pendingRedactions.filter(i=>i!==e),this._pendingRedactions.length===0&&(this._pendingRedactions=null,s!==0))return"isRedacted"}else{const s=e.redactingEntry||e;if(s.isRelatedToId(this.id)&&((t=s.relation)==null?void 0:t.rel_type)===ss&&this._pendingAnnotations&&this._removePendingAnnotation(e))return"pendingAnnotations"}}_addPendingAnnotation(e){this._pendingAnnotations||(this._pendingAnnotations=new Map);const{key:t}=(e.redactingEntry||e).relation;if(t){let s=this._pendingAnnotations.get(t);return s||(s=new sh,this._pendingAnnotations.set(t,s)),s.add(e),!0}return!1}_removePendingAnnotation(e){const{key:t}=(e.redactingEntry||e).relation;if(t){let s=this._pendingAnnotations.get(t);return s.remove(e)&&s.isEmpty&&this._pendingAnnotations.delete(t),this._pendingAnnotations.size===0&&(this._pendingAnnotations=null),!0}return!1}async abortPendingRedaction(){if(this._pendingRedactions)for(const e of this._pendingRedactions)await e.pendingEvent.abort()}get pendingRedaction(){return this._pendingRedactions?this._pendingRedactions[0]:null}annotate(e){return eh(this.id,e)}createReplyContent(e,t){return oh(this,e,t)}isRelatedToId(e){return e&&this.relatedEventId===e}haveAnnotation(e){var r,o,c;const t=((o=(r=this.annotations)==null?void 0:r[e])==null?void 0:o.me)||!1,s=(c=this.pendingAnnotations)==null?void 0:c.get(e),i=(s==null?void 0:s.willAnnotate)||!1;return t&&(!s||i)||!t&&i}get relation(){return rs(this.content)}get pendingAnnotations(){return this._pendingAnnotations}get annotations(){return null}}class ah extends ba{constructor({pendingEvent:e,member:t,clock:s,redactingEntry:i}){super(null),this._pendingEvent=e,this._member=t,this._timestamp=s.now()-(100-e.queueIndex),this._redactingEntry=i}get fragmentId(){return Zr}get entryIndex(){return this._pendingEvent.queueIndex}get content(){return this._pendingEvent.content}get event(){return null}get eventType(){return this._pendingEvent.eventType}get stateKey(){return null}get sender(){var e;return(e=this._member)==null?void 0:e.userId}get displayName(){var e;return(e=this._member)==null?void 0:e.name}get avatarUrl(){var e;return(e=this._member)==null?void 0:e.avatarUrl}get timestamp(){return this._timestamp}get isPending(){return!0}get id(){return this._pendingEvent.txnId}get pendingEvent(){return this._pendingEvent}notifyUpdate(){}isRelatedToId(e){return e&&e===this._pendingEvent.relatedTxnId?!0:super.isRelatedToId(e)}get relatedEventId(){return this._pendingEvent.relatedEventId}get redactingEntry(){return this._redactingEntry}get contextEventId(){var e;return this.isReply?(e=this._pendingEvent.relatedEventId)!=null?e:this._pendingEvent.relatedTxnId:null}}class As{constructor(){let e,t;this.promise=new Promise((s,i)=>{e=s,t=i}),this.resolve=s=>{this._value=s,e(s)},this.reject=t}get value(){return this._value}}const X=oi("Waiting","EncryptingAttachments","UploadingAttachments","Encrypting","Sending","Sent","Error"),eo=["m.relates_to"];class ch{constructor({data:e,remove:t,emitUpdate:s,attachments:i}){this._data=e,this._attachments=i,this._emitUpdate=s,this._removeFromQueueCallback=t,this._aborted=!1,this._status=X.Waiting,this._sendRequest=null,this._attachmentsTotalBytes=0,this._deferred=new As,this._attachments&&(this._attachmentsTotalBytes=Object.values(this._attachments).reduce((r,o)=>r+o.size,0))}get roomId(){return this._data.roomId}get queueIndex(){return this._data.queueIndex}get eventType(){return this._data.eventType}get txnId(){return this._data.txnId}get remoteId(){return this._data.remoteId}get content(){return this._data.content}get relatedTxnId(){return this._data.relatedTxnId}get relatedEventId(){const e=rs(this.content);return e?bn(e):this._data.relatedEventId}setRelatedEventId(e){const t=rs(this.content);t?wa(t,e):this._data.relatedEventId=e}get data(){return this._data}getAttachment(e){return this._attachments&&this._attachments[e]}get needsSending(){return!this.remoteId&&!this.aborted}get needsEncryption(){return this._data.needsEncryption&&!this.aborted}get needsUpload(){return this._data.needsUpload&&!this.aborted}get isMissingAttachments(){return this.needsUpload&&!this._attachments}setEncrypting(){this._status=X.Encrypting,this._emitUpdate("status")}get contentForEncryption(){const e=Object.assign({},this._data.content);for(const t of eo)delete e[t];return e}_preserveContentFields(e){const t=this._data.content;for(const s of eo)t[s]!==void 0&&(e[s]=t[s])}setEncrypted(e,t){this._preserveContentFields(t),this._data.encryptedEventType=e,this._data.encryptedContent=t,this._data.needsEncryption=!1}setError(e){this._status=X.Error,this._error=e,this._emitUpdate("status")}setWaiting(){this._status=X.Waiting,this._emitUpdate("status")}get status(){return this._status}get error(){return this._error}get hasStartedSending(){return this._status===X.Sending||this._status===X.Sent}get attachmentsTotalBytes(){return this._attachmentsTotalBytes}get attachmentsSentBytes(){return this._attachments&&Object.values(this._attachments).reduce((e,t)=>e+t.sentBytes,0)}async uploadAttachments(e,t){if(!this.needsUpload)return;if(!this._attachments)throw new Error("attachments missing");if(this.needsEncryption){this._status=X.EncryptingAttachments,this._emitUpdate("status");for(const i of Object.values(this._attachments))if(await t.wrap("encrypt",()=>(t.set("size",i.size),i.encrypt())),this.aborted)throw new rt}this._status=X.UploadingAttachments,this._emitUpdate("status");const s=Object.entries(this._attachments);s.sort(([,i],[,r])=>i.size-r.size);for(const[i,r]of s)await t.wrap("upload",o=>(o.set("size",r.size),r.upload(e,()=>{this._emitUpdate("attachmentsSentBytes")},o))),r.applyToContent(i,this.content);this._data.needsUpload=!1}async abort(){var e;if(!this._aborted){if(this._aborted=!0,this._attachments)for(const t of Object.values(this._attachments))t.abort();(e=this._sendRequest)==null||e.abort(),await this._removeFromQueueCallback()}}get aborted(){return this._aborted}async send(e,t){this._status=X.Sending,this._emitUpdate("status");const s=this._data.encryptedEventType||this._data.eventType,i=this._data.encryptedContent||this._data.content;s===gt?this._sendRequest=e.redact(this.roomId,this._data.relatedEventId,this.txnId,i,{log:t}):this._sendRequest=e.send(this.roomId,s,this.txnId,i,{log:t});const r=await this._sendRequest.response();this._sendRequest=null,this._data.remoteId=r.event_id,this._deferred.resolve(r.event_id),t.set("id",this._data.remoteId),this._status=X.Sent,this._emitUpdate("status")}getRemoteId(){return this._deferred.promise}dispose(){if(this._attachments)for(const e of Object.values(this._attachments))e.dispose()}}class Ye extends ba{constructor(e,t){super(t),this._eventEntry=e,this._decryptionError=null,this._decryptionResult=null}clone(){const e=new Ye(this._eventEntry,this._fragmentIdComparer);return e.updateFrom(this),e}updateFrom(e){e._decryptionResult&&(this._decryptionResult=e._decryptionResult),e._decryptionError&&(this._decryptionError=e._decryptionError),this._contextForEntries=e.contextForEntries,this._contextEntry=e.contextEntry}get event(){return this._eventEntry.event}get fragmentId(){return this._eventEntry.fragmentId}get entryIndex(){return this._eventEntry.eventIndex}get content(){var e,t;return((t=(e=this._decryptionResult)==null?void 0:e.event)==null?void 0:t.content)||this._eventEntry.event.content}get prevContent(){return Qr(this._eventEntry.event)}get eventType(){var e,t;return((t=(e=this._decryptionResult)==null?void 0:e.event)==null?void 0:t.type)||this._eventEntry.event.type}get stateKey(){return this._eventEntry.event.state_key}get sender(){return this._eventEntry.event.sender}get displayName(){return this._eventEntry.displayName}get avatarUrl(){return this._eventEntry.avatarUrl}get timestamp(){return this._eventEntry.event.origin_server_ts}get id(){return this._eventEntry.event.event_id}setDecryptionResult(e){this._decryptionResult=e}get isEncrypted(){return this._eventEntry.event.type==="m.room.encrypted"}get isDecrypted(){var e;return!!((e=this._decryptionResult)!=null&&e.event)}get isVerified(){var e;return this.isEncrypted&&((e=this._decryptionResult)==null?void 0:e.isVerified)}get isUnverified(){var e;return this.isEncrypted&&((e=this._decryptionResult)==null?void 0:e.isUnverified)}setDecryptionError(e){this._decryptionError=e}get decryptionError(){return this._decryptionError}get relatedEventId(){return va(this.event)}get isRedacted(){return super.isRedacted||Xr(this._eventEntry.event)}get redactionReason(){var t,s;const e=(t=this._eventEntry.event.unsigned)==null?void 0:t.redacted_because;return e?(s=e.content)==null?void 0:s.reason:super.redactionReason}get annotations(){return this._eventEntry.annotations}get relation(){const e=this._eventEntry.event.content;return e&&rs(e)||rs(this.content)}get contextEventId(){return this.isReply||this.isReference?this.relatedEventId:null}}function Sa(n,e,t){return{fragmentId:n.fragmentId,eventIndex:n.eventIndex,roomId:e,event:t}}function Vi(n,e,t){t.isForward?n.push(e):n.unshift(e)}function lh(n,e,t){return t.isForward?n.concat(e):e.concat(n)}const Ke="m.room.member";class Q{constructor(e){this._data=e}static fromUserId(e,t,s){return new Q({roomId:e,userId:t,membership:s})}static fromMemberEvent(e,t){const s=t==null?void 0:t.state_key;if(typeof s!="string")return;const i=t.content,r=Qr(t),o=i==null?void 0:i.membership,c=(i==null?void 0:i.displayname)||(r==null?void 0:r.displayname),l=(i==null?void 0:i.avatar_url)||(r==null?void 0:r.avatar_url);return this._validateAndCreateMember(e,s,o,c,l)}static fromReplacingMemberEvent(e,t){const s=t&&t.state_key;if(typeof s!="string")return;const i=Qr(t);return this._validateAndCreateMember(e,s,i==null?void 0:i.membership,i==null?void 0:i.displayname,i==null?void 0:i.avatar_url)}static _validateAndCreateMember(e,t,s,i,r){if(typeof s=="string")return new Q({roomId:e,userId:t,membership:s,avatarUrl:r,displayName:i})}get membership(){return this._data.membership}get displayName(){return this._data.displayName}get name(){return this._data.displayName||this._data.userId}get avatarUrl(){return this._data.avatarUrl}get roomId(){return this._data.roomId}get userId(){return this._data.userId}serialize(){return this._data}equals(e){const t=this._data,s=e._data;return t.roomId===s.roomId&&t.userId===s.userId&&t.membership===s.membership&&t.displayName===s.displayName&&t.avatarUrl===s.avatarUrl}}class ka{constructor(e,t){this.member=e,this.previousMembership=t}get roomId(){return this.member.roomId}get userId(){return this.member.userId}get membership(){return this.member.membership}get wasInvited(){return this.previousMembership==="invite"&&this.membership!=="invite"}get hasLeft(){return this.previousMembership==="join"&&this.membership!=="join"}get hasJoined(){return this.previousMembership!=="join"&&this.membership==="join"}}function Sn(n){return typeof n=="number"}const hh=["event_id","type","room_id","user_id","sender","state_key","prev_state","content","unsigned","origin_server_ts"].reduce(function(n,e){return n[e]=1,n},{}),dh={"m.room.member":{membership:1},"m.room.create":{creator:1},"m.room.join_rules":{join_rule:1},"m.room.power_levels":{ban:1,events:1,events_default:1,kick:1,redact:1,state_default:1,users:1,users_default:1},"m.room.aliases":{aliases:1}};function uh(n,e){for(const i of Object.keys(e))hh[i]||delete e[i];const{content:t}=e,s=dh[e.type];for(const i of Object.keys(t))s!=null&&s[i]||delete t[i];e.unsigned=e.unsigned||{},e.unsigned.redacted_because=n}function mh(n,e){const t=[];for(;Sn(n.previousId);){const s=e.get(n.previousId);if(!s)break;if(s.nextId!==n.id)throw new Error(`Previous fragment ${s.id} doesn't point back to ${n.id}`);e.delete(n.previousId),t.unshift(s),n=s}return t}function _h(n,e){const t=[];for(;Sn(n.nextId);){const s=e.get(n.nextId);if(!s)break;if(s.previousId!==n.id)throw new Error(`Next fragment ${s.id} doesn't point back to ${n.id}`);e.delete(n.nextId),t.push(s),n=s}return t}function ph(n){const e=new Map;for(let s of n)e.set(s.id,s);const t=[];for(;e.size;){const s=e.values().next().value;e.delete(s.id);const i=mh(s,e),r=_h(s,e),o=i.concat(s,r);t.push(o)}return t.map(s=>new gh(s))}class Kr{constructor(e,t,s){this.id=e,this.previousId=t,this.nextId=s}}class gh{constructor(e){this._idToSortIndex=new Map,e.forEach((t,s)=>{this._idToSortIndex.set(t.id,s)})}compare(e,t){const s=this._idToSortIndex.get(e);if(s===void 0)throw new Error(`first id ${e} isn't part of this island`);const i=this._idToSortIndex.get(t);if(i===void 0)throw new Error(`second id ${t} isn't part of this island`);return s-i}get fragmentIds(){return this._idToSortIndex.keys()}}class to extends Error{get name(){return"CompareError"}}class fh{constructor(e){this._fragmentsById=e.reduce((t,s)=>(t.set(s.id,s),t),new Map),this.rebuild(e)}_getIsland(e){const t=this._idToIsland.get(e);if(t===void 0)throw new to(`Unknown fragment id ${e}`);return t}compare(e,t){if(e===t)return 0;const s=this._getIsland(e),i=this._getIsland(t);if(s!==i)throw new to(`${e} and ${t} are on different islands, can't tell order`);return s.compare(e,t)}rebuild(e){const t=ph(e);this._idToIsland=new Map;for(let s of t)for(let i of s.fragmentIds)this._idToIsland.set(i,s)}add(e){const t=new Kr(e.id,e.previousId,e.nextId);this._fragmentsById.set(e.id,t),this.rebuild(this._fragmentsById.values())}append(e,t){const s=new Kr(e,t,null),i=this._fragmentsById.get(t);i&&(i.nextId=e),this._fragmentsById.set(e,s),this.rebuild(this._fragmentsById.values())}prepend(e,t){const s=new Kr(e,null,t),i=this._fragmentsById.get(t);i&&(i.previousId=e),this._fragmentsById.set(e,s),this.rebuild(this._fragmentsById.values())}}(function(){const e=document.createElement("link").relList;return e&&e.supports&&e.supports("modulepreload")?"modulepreload":"preload"})();function yh(n){return"objectStore"in n?`${n.objectStore.name}.${n.name}`:n.name}function wh(n){var e,t,s,i,r;return"objectStore"in n?(s=(t=(e=n.objectStore)==null?void 0:e.transaction)==null?void 0:t.db)==null?void 0:s.name:(r=(i=n.transaction)==null?void 0:i.db)==null?void 0:r.name}class Ia extends Ot{constructor(e,t,s=null){const i=t&&"source"in t?t.source:t,r=i?yh(i):"",o=i?wh(i):"";let c=`${e} on ${o}.${r}`;s&&(c+=": ",typeof s.name=="string"&&(c+=`(name: ${s.name}) `),typeof s.code=="number"&&(c+=`(code: ${s.code}) `)),s&&(c+=s.message),super(c,s),this.storeName=r,this.databaseName=o}}class kn extends Ia{constructor(e){const t=e.target,s=t.source,i=t.error;super("IDBRequest failed",s,i),this.errorEvent=e}preventTransactionAbort(){this.errorEvent.preventDefault()}}class lt extends Ia{constructor(e,t,s,i){super(`${e}(${i.map(r=>JSON.stringify(r)).join(", ")}) failed`,t,s)}}const so={done:!0},Lt={done:!1};function vr(n){const e=n.toString(16);return"0".repeat(8-e.length)+e}function en(n){return parseInt(n,16)}function In(n,e,t,s=window.indexedDB){const i=s.open(n,t);return i.onupgradeneeded=async r=>{const o=r.target,c=o.result,l=o.transaction,h=r.oldVersion;try{await e(c,l,h,t)}catch{try{l.abort()}catch{}}},Me(i)}function Me(n){return new Promise((e,t)=>{n.addEventListener("success",s=>{e(s.target.result)}),n.addEventListener("error",s=>{const i=new kn(s);t(i)})})}function Pi(n){return new Promise((e,t)=>{n.addEventListener("complete",()=>{e()}),n.addEventListener("abort",s=>{t(new rt)})})}function _e(n,e){return new Promise((t,s)=>{n.onerror=i=>{s(new kn(i))},n.onsuccess=i=>{const r=i.target.result;if(!r){t(!1);return}const o=e(r.value,r.key,r),c=o==null?void 0:o.done,l=o==null?void 0:o.jumpTo;c?t(!0):l?r.continue(l):r.continue()}}).catch(t=>{throw new Ot("iterateCursor failed",t)})}async function vh(n,e){const t=[];return await _e(n,s=>(t.push(s),{done:e(t)})),t}class io{constructor(e,t){this._target=e,this._transaction=t}get idbFactory(){return this._transaction.idbFactory}get IDBKeyRange(){return this._transaction.IDBKeyRange}get databaseName(){return this._transaction.databaseName}_openCursor(e,t){return e&&t?this._target.openCursor(e,t):e?this._target.openCursor(e):t?this._target.openCursor(null,t):this._target.openCursor()}supports(e){return this._target.supports(e)}count(e){return Me(this._target.count(e))}get(e){return Me(this._target.get(e))}getKey(e){return this._target.supports("getKey")?Me(this._target.getKey(e)):Me(this._target.get(e)).then(t=>{if(t){let s=this._target.keyPath;return typeof s=="string"&&(s=[s]),s.reduce((i,r)=>i[r],t)}})}reduce(e,t,s){return this._reduce(e,t,s,"next")}reduceReverse(e,t,s){return this._reduce(e,t,s,"prev")}selectLimit(e,t){return this._selectLimit(e,t,"next")}selectLimitReverse(e,t){return this._selectLimit(e,t,"prev")}selectWhile(e,t){return this._selectWhile(e,t,"next")}selectWhileReverse(e,t){return this._selectWhile(e,t,"prev")}async selectAll(e,t){const s=this._openCursor(e,t),i=[];return await _e(s,r=>(i.push(r),Lt)),i}selectFirst(e){return this._find(e,()=>!0,"next")}selectLast(e){return this._find(e,()=>!0,"prev")}find(e,t){return this._find(e,t,"next")}findReverse(e,t){return this._find(e,t,"prev")}async findMaxKey(e){const t=this._target.openKeyCursor(e,"prev");let s;return await _e(t,(i,r)=>(s=r,so)),s}async iterateValues(e,t){const s=this._target.openCursor(e,"next");await _e(s,(i,r,o)=>({done:t(i,r,o)}))}async iterateKeys(e,t){const s=this._target.openKeyCursor(e,"next");await _e(s,(i,r,o)=>({done:t(r,o)}))}async findExistingKeys(e,t,s){const i=(u,p)=>t?-this.idbFactory.cmp(u,p):this.idbFactory.cmp(u,p),r=e.slice().sort(i),o=r[0],c=r[r.length-1],l=t?"prev":"next",h=this._target.openKeyCursor(this.IDBKeyRange.bound(o,c),l);let a=0;await _e(h,(u,p,g)=>{for(;a=r.length?so:{done:!1,jumpTo:r[a]}})}_reduce(e,t,s,i){let r=s;const o=this._openCursor(e,i);return _e(o,c=>(r=t(r,c),Lt))}_selectLimit(e,t,s){return this._selectUntil(e,i=>i.length===t,s)}async _selectUntil(e,t,s){const i=this._openCursor(e,s),r=[];return await _e(i,o=>(r.push(o),{done:t(r,o)})),r}async _selectWhile(e,t,s){const i=this._openCursor(e,s),r=[];return await _e(i,o=>{const c=t(o);return c&&r.push(o),{done:!c}}),r}async iterateWhile(e,t){const s=this._openCursor(e,"next");await _e(s,i=>({done:!t(i)}))}async _find(e,t,s){const i=this._openCursor(e,s);let r;if(await _e(i,c=>{const l=t(c);return l&&(r=c),{done:l}}))return r}}const Mt=!1;function Ct(n,e,t){var r,o;const s=t==null?void 0:t.name,i=(o=(r=t==null?void 0:t.transaction)==null?void 0:r.db)==null?void 0:o.name;console.info(`${i}.${s}.${n}(${e.map(c=>JSON.stringify(c)).join(", ")})`)}class ro{constructor(e){this._qt=e}get keyPath(){return this._qtStore.keyPath}get _qtStore(){return"objectStore"in this._qt?this._qt.objectStore:this._qt}supports(e){return!!this._qt[e]}openKeyCursor(e,t){try{return this._qt.openKeyCursor?(Mt&&Ct("openKeyCursor",[e,t],this._qt),this._qt.openKeyCursor(e,t)):(Mt&&Ct("openCursor",[e,t],this._qt),this.openCursor(e,t))}catch(s){throw new lt("openKeyCursor",this._qt,s,[e,t])}}openCursor(e,t){try{return Mt&&Ct("openCursor",[],this._qt),this._qt.openCursor(e,t)}catch(s){throw new lt("openCursor",this._qt,s,[e,t])}}put(e,t){try{return Mt&&Ct("put",[e,t],this._qt),this._qtStore.put(e,t)}catch(s){throw new lt("put",this._qt,s,[e,t])}}add(e,t){try{return Mt&&Ct("add",[e,t],this._qt),this._qtStore.add(e,t)}catch(s){throw new lt("add",this._qt,s,[e,t])}}get(e){try{return Mt&&Ct("get",[e],this._qt),this._qt.get(e)}catch(t){throw new lt("get",this._qt,t,[e])}}getKey(e){try{return Mt&&Ct("getKey",[e],this._qt),this._qt.getKey(e)}catch(t){throw new lt("getKey",this._qt,t,[e])}}delete(e){try{return Mt&&Ct("delete",[e],this._qt),this._qtStore.delete(e)}catch(t){throw new lt("delete",this._qt,t,[e])}}clear(){try{return Mt&&Ct("clear",[],this._qt),this._qtStore.clear()}catch(e){throw new lt("delete",this._qt,e,[])}}count(e){try{return this._qt.count(e)}catch(t){throw new lt("count",this._qt,t,[e])}}index(e){try{return this._qtStore.index(e)}catch(t){throw new lt("index",this._qt,t,[e])}}get indexNames(){return Array.from(this._qtStore.indexNames)}}class Ma extends io{constructor(e,t){super(new ro(e),t)}get _idbStore(){return this._target}index(e){return new io(new ro(this._idbStore.index(e)),this._transaction)}put(e,t){const s=this._idbStore.put(e);this._prepareErrorLog(s,t,"put",void 0,e)}add(e,t){const s=this._idbStore.add(e);this._prepareErrorLog(s,t,"add",void 0,e)}async tryAdd(e,t){try{return await Me(this._idbStore.add(e)),!0}catch(s){if(s instanceof kn)return t.log({l:"could not write",id:this._getKeys(e),e:s},t.level.Warn),s.preventTransactionAbort(),!1;throw s}}delete(e,t){const s=this._idbStore.delete(e);this._prepareErrorLog(s,t,"delete",e,void 0)}clear(e){const t=this._idbStore.clear();this._prepareErrorLog(t,e,"delete",void 0,void 0)}_prepareErrorLog(e,t,s,i,r){t&&t.ensureRefId(),Me(e).catch(o=>{let c;r?c=this._getKeys(r):i&&(c=[i]),this._transaction.addWriteError(o,t,s,c)})}_getKeys(e){const t=[],{keyPath:s}=this._idbStore;try{t.push(this._readKeyPath(e,s))}catch{console.warn("could not read keyPath",s)}for(const i of this._idbStore.indexNames)try{const r=this._idbStore.index(i);t.push(this._readKeyPath(e,r.keyPath))}catch{console.warn("could not read index",i)}return t}_readKeyPath(e,t){if(Array.isArray(t)){let s=e;for(const i of t)if(typeof s=="object")s=s[i];else break;return s}else return e[t]}}function bh(n){return JSON.stringify(Ca(n))}function Sh(n){return Ea(JSON.parse(n))}function Ca(n){if(typeof n=="object"&&n!==null&&!Array.isArray(n)){if(n.byteLength)return{_type:n.constructor.name,value:Array.from(n)};let e={};for(const t in n)n.hasOwnProperty(t)&&(e[t]=Ca(n[t]));return e}else return n}function Ea(n){if(typeof n=="object"&&n!==null&&!Array.isArray(n)){if(typeof n._type=="string")switch(n._type){case"Int8Array":return Int8Array.from(n.value);case"Uint8Array":return Uint8Array.from(n.value);case"Uint8ClampedArray":return Uint8ClampedArray.from(n.value);case"Int16Array":return Int16Array.from(n.value);case"Uint16Array":return Uint16Array.from(n.value);case"Int32Array":return Int32Array.from(n.value);case"Uint32Array":return Uint32Array.from(n.value);case"Float32Array":return Float32Array.from(n.value);case"Float64Array":return Float64Array.from(n.value);case"BigInt64Array":return BigInt64Array.from(n.value);case"BigUint64Array":return BigUint64Array.from(n.value);default:return n.value}let e={};for(const t in n)n.hasOwnProperty(t)&&(e[t]=Ea(n[t]));return e}else return n}function Ra(n){return`${n}.session.`}function kh(n,e){const t=[];for(let s=0;s(t.startsWith(Oe)&&this._writeKeyToLocalStorage(t,e.value),!1))}async tryRestoreE2EEIdentityFromLocalStorage(e){let t=!1;const s=this._localStorageKeyPrefix,i=s+Oe;for(let r=0;r(n[n.All=1]="All",n[n.Debug=2]="Debug",n[n.Detail=3]="Detail",n[n.Info=4]="Info",n[n.Warn=5]="Warn",n[n.Error=6]="Error",n[n.Fatal=7]="Fatal",n[n.Off=8]="Off",n))(Ge||{});class br{constructor(e){this._parentFilter=e}filter(e,t){return!(this._parentFilter&&!this._parentFilter.filter(e,t)||this._min!==void 0&&!Array.isArray(t)&&e.logLevels(t(this.item))).then(Sr,Sr),this.item}get level(){return Ge}}class Ch{constructor(e){this.logger=e}discard(){}wrap(e,t){return this.run(t)}run(e){return e(this)}log(e){return this}set(e){return this}runDetached(e,t){return new Promise(s=>s(t(this))).then(Sr,Sr),this}wrapDetached(e,t){return this.refDetached()}refDetached(){}ensureRefId(){}get level(){return Ge}get duration(){return 0}catch(e){return e}child(){return this}finish(){}forceFinish(){}serialize(){}}const Eh=new Mh;function tt(n,e,t){return`${n}|${vr(e)}|${vr(t)}`}function Rh(n){const[e,t,s]=n.split("|");return{roomId:e,eventKey:new pe(en(t),en(s))}}function Zi(n,e){return`${n}|${e}`}function oo(n){const[e,t]=n.split("|");return{roomId:e,eventId:t}}class er{constructor(e,t,s,i,r=!1,o=!1){this._IDBKeyRange=e,this._only=t,this._lower=s,this._upper=i,this._lowerOpen=r,this._upperOpen=o}asIDBKeyRange(e){try{if(this._only)return this._IDBKeyRange.only(tt(e,this._only.fragmentId,this._only.eventIndex));if(this._lower&&!this._upper)return this._IDBKeyRange.bound(tt(e,this._lower.fragmentId,this._lower.eventIndex),tt(e,this._lower.fragmentId,ce.maxStorageKey),this._lowerOpen,!1);if(!this._lower&&this._upper)return this._IDBKeyRange.bound(tt(e,this._upper.fragmentId,ce.minStorageKey),tt(e,this._upper.fragmentId,this._upper.eventIndex),!1,this._upperOpen);if(this._lower&&this._upper)return this._IDBKeyRange.bound(tt(e,this._lower.fragmentId,this._lower.eventIndex),tt(e,this._upper.fragmentId,this._upper.eventIndex),this._lowerOpen,this._upperOpen)}catch(t){throw new Ot("IDBKeyRange failed with data: "+JSON.stringify(this),t)}}}class Th{constructor(e){this._timelineStore=e}onlyRange(e){return new er(this._timelineStore.IDBKeyRange,e)}upperBoundRange(e,t=!1){return new er(this._timelineStore.IDBKeyRange,void 0,void 0,e,void 0,t)}lowerBoundRange(e,t=!1){return new er(this._timelineStore.IDBKeyRange,void 0,e,void 0,t)}boundRange(e,t,s=!1,i=!1){return new er(this._timelineStore.IDBKeyRange,void 0,e,t,s,i)}async lastEvents(e,t,s){const i=pe.maxKey;return i.fragmentId=t,this.eventsBefore(e,i,s)}async firstEvents(e,t,s){const i=pe.minKey;return i.fragmentId=t,this.eventsAfter(e,i,s)}eventsAfter(e,t,s){const i=this.lowerBoundRange(t,!0).asIDBKeyRange(e);return this._timelineStore.selectLimit(i,s)}async eventsBefore(e,t,s){const i=this.upperBoundRange(t,!0).asIDBKeyRange(e),r=await this._timelineStore.selectLimitReverse(i,s);return r.reverse(),r}async getEventKeysForIds(e,t){const s=this._timelineStore.index("byEventId"),i=t.map(o=>Zi(e,o)),r=new Map;return await s.findExistingKeys(i,!1,(o,c)=>{const{eventId:l}=oo(o),{eventKey:h}=Rh(c);return r.set(l,h),!1}),r}async findFirstOccurringEventId(e,t){const s=this._timelineStore.index("byEventId"),i=t.map(l=>Zi(e,l)),r=new Array(i.length);let o;function c(){for(let l=0;l{const a=i.indexOf(l);return r[a]=h,o=c(),!!o}),o&&oo(o).eventId}tryInsert(e,t){return e.key=tt(e.roomId,e.fragmentId,e.eventIndex),e.eventIdKey=Zi(e.roomId,e.event.event_id),this._timelineStore.tryAdd(e,t)}update(e){this._timelineStore.put(e)}get(e,t){return this._timelineStore.get(tt(e,t.fragmentId,t.eventIndex))}getByEventId(e,t){return this._timelineStore.index("byEventId").get(Zi(e,t))}removeAllForRoom(e){const t=tt(e,ce.minStorageKey,ce.minStorageKey),s=tt(e,ce.maxStorageKey,ce.maxStorageKey),i=this._timelineStore.IDBKeyRange.bound(t,s);this._timelineStore.delete(i)}}const de="\0",ae="\u{10FFFF}";function ht(n,e,t,s){return`${n}|${e}|${t}|${s}`}function ao(n){const[e,t,s,i]=n.split("|");return{roomId:e,targetEventId:t,relType:s,sourceEventId:i}}class Ah{constructor(e){this._store=e}add(e,t,s,i){this._store.add({key:ht(e,t,s,i)})}remove(e,t,s,i){this._store.delete(ht(e,t,s,i))}removeAllForTarget(e,t){const s=this._store.IDBKeyRange.bound(ht(e,t,de,de),ht(e,t,ae,ae),!0,!0);this._store.delete(s)}removeAllForRoom(e){const t=this._store.IDBKeyRange.bound(ht(e,de,de,de),ht(e,ae,ae,ae),!0,!0);this._store.delete(t)}async getForTargetAndType(e,t,s){const i=this._store.IDBKeyRange.bound(ht(e,t,s,de),ht(e,t,s,ae),!0,!0);return(await this._store.selectAll(i)).map(o=>ao(o.key))}async getAllForTarget(e,t){const s=this._store.IDBKeyRange.bound(ht(e,t,de,de),ht(e,t,ae,ae),!0,!0);return(await this._store.selectAll(s)).map(r=>ao(r.key))}}function tr(n,e,t){return`${n}|${e}|${t}`}class xh{constructor(e){this._roomStateStore=e}get(e,t,s){const i=tr(e,t,s);return this._roomStateStore.get(i)}getAllForType(e,t){const s=this._roomStateStore.IDBKeyRange.bound(tr(e,t,""),tr(e,t,ae),!1,!0);return this._roomStateStore.selectAll(s)}set(e,t){const s=tr(e,t.type,t.state_key),i={roomId:e,event:t,key:s};this._roomStateStore.put(i)}removeAllForRoom(e){const t=this._roomStateStore.IDBKeyRange.bound(e,`${e}|${ae}`,!0,!0);this._roomStateStore.delete(t)}}function sr(n,e){return`${n}|${e}`}function Vh(n){const[e,t]=n.split("|");return{roomId:e,userId:t}}class Ta{constructor(e){this._roomMembersStore=e}get(e,t){return this._roomMembersStore.get(sr(e,t))}set(e){e.key=sr(e.roomId,e.userId),this._roomMembersStore.put(e)}getAll(e){const t=this._roomMembersStore.IDBKeyRange.lowerBound(sr(e,""));return this._roomMembersStore.selectWhile(t,s=>s.roomId===e)}async getAllUserIds(e){const t=[],s=this._roomMembersStore.IDBKeyRange.lowerBound(sr(e,""));return await this._roomMembersStore.iterateKeys(s,i=>{const r=Vh(i);return r.roomId===e?(t.push(r.userId),!1):!0}),t}removeAllForRoom(e){const t=this._roomMembersStore.IDBKeyRange.bound(e,`${e}|${ae}`,!0,!0);this._roomMembersStore.delete(t)}}function ir(n,e){return`${n}|${vr(e)}`}class Nh{constructor(e){this._store=e}_allRange(e){try{return this._store.IDBKeyRange.bound(ir(e,ce.minStorageKey),ir(e,ce.maxStorageKey))}catch(t){throw new Ot(`error from IDBKeyRange with roomId ${e}`,t)}}all(e){return this._store.selectAll(this._allRange(e))}liveFragment(e){return this._store.findReverse(this._allRange(e),t=>typeof t.nextId!="number"&&typeof t.nextToken!="string")}add(e){e.key=ir(e.roomId,e.id),this._store.add(e)}update(e){this._store.put(e)}get(e,t){return this._store.get(ir(e,t))}removeAllForRoom(e){this._store.delete(this._allRange(e))}}function ps(n,e){return`${n}|${vr(e)}`}function Dh(n){const[e,t]=n.split("|"),s=en(t);return{roomId:e,queueIndex:s}}class Uh{constructor(e){this._eventStore=e}async getMaxQueueIndex(e){const t=this._eventStore.IDBKeyRange.bound(ps(e,ce.minStorageKey),ps(e,ce.maxStorageKey),!1,!1),s=await this._eventStore.findMaxKey(t);if(s)return Dh(s).queueIndex}remove(e,t){const s=this._eventStore.IDBKeyRange.only(ps(e,t));this._eventStore.delete(s)}async exists(e,t){const s=this._eventStore.IDBKeyRange.only(ps(e,t));return!!await this._eventStore.getKey(s)}add(e){e.key=ps(e.roomId,e.queueIndex),this._eventStore.add(e)}update(e){this._eventStore.put(e)}getAll(){return this._eventStore.selectAll()}removeAllForRoom(e){const t=ps(e,ce.minStorageKey),s=ps(e,ce.maxStorageKey),i=this._eventStore.IDBKeyRange.bound(t,s);this._eventStore.delete(i)}}class Oh{constructor(e){this._store=e}get(e){return this._store.get(e)}set(e){this._store.put(e)}remove(e){this._store.delete(e)}}function gs(n,e){return`${n}|${e}`}function Ph(n){const[e,t]=n.split("|");return{userId:e,deviceId:t}}class Fh{constructor(e){this._store=e}async getAllForUserId(e){const t=this._store.IDBKeyRange.lowerBound(gs(e,de));return(await this._store.selectWhile(t,i=>i.deviceKey.user_id===e)).map(i=>i.deviceKey)}async getAllDeviceIds(e){const t=[],s=this._store.IDBKeyRange.lowerBound(gs(e,de));return await this._store.iterateKeys(s,i=>{const r=Ph(i);return r.userId===e?(t.push(r.deviceId),!1):!0}),t}async get(e,t){var s;return(s=await this._store.get(gs(e,t)))==null?void 0:s.deviceKey}set(e){this._store.put({key:gs(e.user_id,e.device_id),curve25519Key:_t(e),deviceKey:e})}async getByCurve25519Key(e){const t=await this._store.index("byCurve25519Key").get(e);return t==null?void 0:t.deviceKey}remove(e,t){this._store.delete(gs(e,t))}removeAllForUser(e){const t=this._store.IDBKeyRange.bound(gs(e,de),gs(e,ae),!0,!0);this._store.delete(t)}}function yi(n,e){return`${n}|${e}`}class Lh{constructor(e){this._store=e}async get(e,t){var s;return(s=await this._store.get(yi(e,t)))==null?void 0:s.crossSigningKey}set(e){this._store.put({key:yi(e.user_id,e.usage[0]),crossSigningKey:e})}remove(e,t){this._store.delete(yi(e,t))}removeAllForUser(e){const t=this._store.IDBKeyRange.bound(yi(e,de),yi(e,ae),!0,!0);this._store.delete(t)}}function wi(n,e){return`${n}|${e}`}function Kh(n){const[e,t]=n.split("|");return{senderKey:e,sessionId:t}}class Bh{constructor(e){this._store=e}async getSessionIds(e){const t=[],s=this._store.IDBKeyRange.lowerBound(wi(e,""));return await this._store.iterateKeys(s,i=>{const r=Kh(i);return r.senderKey===e?(t.push(r.sessionId),!1):!0}),t}getAll(e){const t=this._store.IDBKeyRange.lowerBound(wi(e,""));return this._store.selectWhile(t,s=>s.senderKey===e)}get(e,t){return this._store.get(wi(e,t))}set(e){e.key=wi(e.senderKey,e.sessionId),this._store.put(e)}remove(e,t){this._store.delete(wi(e,t))}}var Vr=(n=>(n[n.NotBackedUp=0]="NotBackedUp",n[n.BackedUp=1]="BackedUp",n))(Vr||{}),Hi=(n=>(n[n.DeviceMessage=1]="DeviceMessage",n[n.Backup=2]="Backup",n[n.Outbound=3]="Outbound",n))(Hi||{});function qs(n,e,t){return`${n}|${e}|${t}`}class $h{constructor(e){this._store=e}async has(e,t,s){const i=qs(e,t,s),r=await this._store.getKey(i);return i===r}get(e,t,s){return this._store.get(qs(e,t,s))}set(e){const t=e;t.key=qs(e.roomId,e.senderKey,e.sessionId),this._store.put(t)}removeAllForRoom(e){const t=this._store.IDBKeyRange.bound(qs(e,de,de),qs(e,ae,ae));this._store.delete(t)}countNonBackedUpSessions(){return this._store.index("byBackup").count(this._store.IDBKeyRange.only(0))}getFirstNonBackedUpSessions(e){return this._store.index("byBackup").selectLimit(this._store.IDBKeyRange.only(0),e)}async markAsBackedUp(e,t,s){const i=await this._store.get(qs(e,t,s));i&&(i.backup=1,this._store.put(i))}async markAllAsNotBackedUp(){const e=this._store.IDBKeyRange.only(1);let t=0;return await this._store.index("byBackup").iterateValues(e,(s,i,r)=>(s.backup=0,r.update(s),t+=1,!1)),t}}class jh{constructor(e){this._store=e}remove(e){this._store.delete(e)}get(e){return this._store.get(e)}set(e){this._store.put(e)}}function rr(n,e,t){return`${n}|${e}|${t}`}class qh{constructor(e){this._store=e}get(e,t,s){return this._store.get(rr(e,t,s))}set(e,t,s,i){i.key=rr(e,t,s),this._store.put(i)}removeAllForRoom(e){const t=this._store.IDBKeyRange.bound(rr(e,de,de),rr(e,ae,ae));this._store.delete(t)}}function Ci(n,e){return`${n}|${e}`}class Hh{constructor(e){this._store=e}getAll(){return this._store.selectAll()}async getAllByTypeAndScope(e,t){const s=Ci(t,e),i=[];return await this._store.index("byScopeAndType").iterateWhile(s,r=>r.scopeTypeKey!==s?!1:(i.push(r),!0)),i}add(e){e.scopeTypeKey=Ci(e.scope,e.type),this._store.add(e)}update(e){this._store.put(e)}remove(e){this._store.delete(e)}async removeAllForScope(e){const t=this._store.IDBKeyRange.bound(Ci(e,de),Ci(e,ae));await this._store.index("byScopeAndType").iterateValues(t,(i,r,o)=>(o.delete(),!0))}}class Wh{constructor(e){this._store=e}async get(e){return await this._store.get(e)}set(e){this._store.put(e)}async getAll(){return await this._store.selectAll()}}function Hs(n,e,t){return`${n}|${e}|${t}`}function co(n){const[e,t,s]=n.key.split("|");return{intent:e,roomId:t,callId:s,timestamp:n.timestamp}}class zh{constructor(e){this._callStore=e}async getByIntent(e){const t=this._callStore.IDBKeyRange.bound(Hs(e,de,de),Hs(e,ae,ae),!0,!0);return(await this._callStore.selectAll(t)).map(i=>co(i))}async getByIntentAndRoom(e,t){const s=this._callStore.IDBKeyRange.bound(Hs(e,t,de),Hs(e,t,ae),!0,!0);return(await this._callStore.selectAll(s)).map(r=>co(r))}add(e){const t={key:Hs(e.intent,e.roomId,e.callId),timestamp:e.timestamp};this._callStore.add(t)}remove(e,t,s){this._callStore.delete(Hs(e,t,s))}}class Gh{constructor(e){this._store=e}get(e){return this._store.get(e)}set(e,t){t.key=e,this._store.put(t)}remove(e){this._store.delete(e)}deleteAllSecrets(){this._store.clear()}}class Yh{constructor(e,t,s,i){this.error=e,this.refItem=t,this.operationName=s,this.keys=i}}class lo{constructor(e,t,s){this._txn=e,this._allowedStoreNames=t,this._stores={},this._storage=s,this._writeErrors=[]}get idbFactory(){return this._storage.idbFactory}get IDBKeyRange(){return this._storage.IDBKeyRange}get databaseName(){return this._storage.databaseName}get logger(){return this._storage.logger}_idbStore(e){if(!this._allowedStoreNames.includes(e))throw new Ot(`Invalid store for transaction: ${e}, only ${this._allowedStoreNames.join(", ")} are allowed.`);return new Ma(this._txn.objectStore(e),this)}_store(e,t){if(!this._stores[e]){const s=this._idbStore(e);this._stores[e]=t(s)}return this._stores[e]}get session(){return this._store(J.session,e=>new Mn(e,this._storage.localStorage))}get roomSummary(){return this._store(J.roomSummary,e=>new no(e))}get archivedRoomSummary(){return this._store(J.archivedRoomSummary,e=>new no(e))}get invites(){return this._store(J.invites,e=>new Ih(e))}get timelineFragments(){return this._store(J.timelineFragments,e=>new Nh(e))}get timelineEvents(){return this._store(J.timelineEvents,e=>new Th(e))}get timelineRelations(){return this._store(J.timelineRelations,e=>new Ah(e))}get roomState(){return this._store(J.roomState,e=>new xh(e))}get roomMembers(){return this._store(J.roomMembers,e=>new Ta(e))}get pendingEvents(){return this._store(J.pendingEvents,e=>new Uh(e))}get userIdentities(){return this._store(J.userIdentities,e=>new Oh(e))}get deviceKeys(){return this._store(J.deviceKeys,e=>new Fh(e))}get crossSigningKeys(){return this._store(J.crossSigningKeys,e=>new Lh(e))}get olmSessions(){return this._store(J.olmSessions,e=>new Bh(e))}get inboundGroupSessions(){return this._store(J.inboundGroupSessions,e=>new $h(e))}get outboundGroupSessions(){return this._store(J.outboundGroupSessions,e=>new jh(e))}get groupSessionDecryptions(){return this._store(J.groupSessionDecryptions,e=>new qh(e))}get operations(){return this._store(J.operations,e=>new Hh(e))}get accountData(){return this._store(J.accountData,e=>new Wh(e))}get calls(){return this._store(J.calls,e=>new zh(e))}get sharedSecrets(){return this._store(J.sharedSecrets,e=>new Gh(e))}async complete(e){try{await Pi(this._txn)}catch(t){throw this._writeErrors.length?(this._logWriteErrors(e),this._writeErrors[0].error):t}}getCause(e){return e instanceof Ot&&e.errcode==="AbortError"&&this._writeErrors.length?this._writeErrors[0].error:e}abort(e){try{this._txn.abort()}catch{e==null||e.set("couldNotAbortTxn",!0)}this._writeErrors.length&&this._logWriteErrors(e)}addWriteError(e,t,s,i){(e.errcode!=="AbortError"||this._writeErrors.length===0)&&this._writeErrors.push(new Yh(e,t,s,i))}_logWriteErrors(e){const t=i=>{e||i.set("allowedStoreNames",this._allowedStoreNames);for(const r of this._writeErrors)i.wrap({l:r.operationName,id:r.keys},o=>{r.refItem&&o.refDetached(r.refItem),o.catch(r.error)})},s=`${this._writeErrors.length} storage write operation(s) failed`;e?e.wrap(s,t):this.logger.run(s,t)}}const ho="782rh281re38-boguskey";class Jh{constructor(e,t,s,i,r,o){this._db=e,this.idbFactory=t,this.IDBKeyRange=s,this._hasWebkitEarlyCloseTxnBug=i,this.storeNames=J,this.localStorage=r,this.logger=o}_validateStoreNames(e){const t=e.findIndex(s=>!Oi.includes(s));if(t!==-1)throw new Ot(`Tried top, a transaction unknown store ${e[t]}`)}async readTxn(e){this._validateStoreNames(e);try{const t=this._db.transaction(e,"readonly");return this._hasWebkitEarlyCloseTxnBug&&await Me(t.objectStore(e[0]).get(ho)),new lo(t,e,this)}catch(t){throw new Ot("readTxn failed",t)}}async readWriteTxn(e){this._validateStoreNames(e);try{const t=this._db.transaction(e,"readwrite");return this._hasWebkitEarlyCloseTxnBug&&await Me(t.objectStore(e[0]).get(ho)),new lo(t,e,this)}catch(t){throw new Ot("readWriteTxn failed",t)}}close(){this._db.close()}get databaseName(){return this._db.name}}async function Qh(n){const e=n.transaction(Oi,"readonly"),t={};return await Promise.all(Oi.map(async s=>{const i=t[s]=[],r=e.objectStore(s);await _e(r.openCursor(),o=>(i.push(o),Lt))})),t}async function Xh(n,e){const t=n.transaction(Oi,"readwrite");for(const s of Oi){const i=t.objectStore(s);for(const r of e[s])i.add(r)}await Pi(t)}function Zh(n,e,t,s,i){let r=!1;if(t instanceof Uint8Array){const l=new n.PkSigning;i=l.init_with_seed(t),t=l,r=!0}const o=e.signatures||{};delete e.signatures;const c=e.unsigned;e.unsigned&&delete e.unsigned;try{const l=o[s]||{};return o[s]=l,l["ed25519:"+i]=t.sign(qi.stringify(e))}finally{e.signatures=o,c&&(e.unsigned=c),r&&t.free()}}class qt{constructor(e){this.options=e,this.ourUserId=e.ourUserId,this.ourUserDeviceId=e.ourUserDeviceId,this.otherUserId=e.otherUserId,this.log=e.log,this.olmSAS=e.olmSas,this.olmUtil=e.olmUtil,this.channel=e.channel,this.e2eeAccount=e.e2eeAccount,this.deviceTracker=e.deviceTracker,this.hsApi=e.hsApi,this.eventEmitter=e.eventEmitter}setNextStage(e){this._nextStage=e}get nextStage(){return this._nextStage}get otherUserDeviceId(){const e=this.channel.otherUserDeviceId;if(!e)throw new Error("Accessed otherUserDeviceId before it was set in channel!");return e}}var P=(n=>(n.Request="m.key.verification.request",n.Ready="m.key.verification.ready",n.Start="m.key.verification.start",n.Accept="m.key.verification.accept",n.Key="m.key.verification.key",n.Cancel="m.key.verification.cancel",n.Mac="m.key.verification.mac",n.Done="m.key.verification.done",n))(P||{}),A=(n=>(n.UserCancelled="m.user",n.TimedOut="m.timeout",n.UnknownTransaction="m.unknown_transaction",n.UnknownMethod="m.unknown_method",n.UnexpectedMessage="m.unexpected_message",n.KeyMismatch="m.key_mismatch",n.UserMismatch="m.user_mismatch",n.InvalidMessage="m.invalid_message",n.OtherDeviceAccepted="m.accepted",n.MismatchedCommitment="m.mismatched_commitment",n.MismatchedSAS="m.mismatched_sas",n))(A||{});const Aa=["curve25519-hkdf-sha256","curve25519"],xa=["sha256"],Va=["hkdf-hmac-sha256.v2","org.matrix.msc3783.hkdf-hmac-sha256","hkdf-hmac-sha256","hmac-sha256"],Na=["decimal","emoji"],ed=new Set(Na),td=[["\u{1F436}","dog"],["\u{1F431}","cat"],["\u{1F981}","lion"],["\u{1F40E}","horse"],["\u{1F984}","unicorn"],["\u{1F437}","pig"],["\u{1F418}","elephant"],["\u{1F430}","rabbit"],["\u{1F43C}","panda"],["\u{1F413}","rooster"],["\u{1F427}","penguin"],["\u{1F422}","turtle"],["\u{1F41F}","fish"],["\u{1F419}","octopus"],["\u{1F98B}","butterfly"],["\u{1F337}","flower"],["\u{1F333}","tree"],["\u{1F335}","cactus"],["\u{1F344}","mushroom"],["\u{1F30F}","globe"],["\u{1F319}","moon"],["\u2601\uFE0F","cloud"],["\u{1F525}","fire"],["\u{1F34C}","banana"],["\u{1F34E}","apple"],["\u{1F353}","strawberry"],["\u{1F33D}","corn"],["\u{1F355}","pizza"],["\u{1F382}","cake"],["\u2764\uFE0F","heart"],["\u{1F642}","smiley"],["\u{1F916}","robot"],["\u{1F3A9}","hat"],["\u{1F453}","glasses"],["\u{1F527}","spanner"],["\u{1F385}","santa"],["\u{1F44D}","thumbs up"],["\u2602\uFE0F","umbrella"],["\u231B","hourglass"],["\u23F0","clock"],["\u{1F381}","gift"],["\u{1F4A1}","light bulb"],["\u{1F4D5}","book"],["\u270F\uFE0F","pencil"],["\u{1F4CE}","paperclip"],["\u2702\uFE0F","scissors"],["\u{1F512}","lock"],["\u{1F511}","key"],["\u{1F528}","hammer"],["\u260E\uFE0F","telephone"],["\u{1F3C1}","flag"],["\u{1F682}","train"],["\u{1F6B2}","bicycle"],["\u2708\uFE0F","aeroplane"],["\u{1F680}","rocket"],["\u{1F3C6}","trophy"],["\u26BD","ball"],["\u{1F3B8}","guitar"],["\u{1F3BA}","trumpet"],["\u{1F514}","bell"],["\u2693\uFE0F","anchor"],["\u{1F3A7}","headphones"],["\u{1F4C1}","folder"],["\u{1F4CC}","pin"]];function sd(n){return[n[0]>>2,(n[0]&3)<<4|n[1]>>4,(n[1]&15)<<2|n[2]>>6,n[2]&63,n[3]>>2,(n[3]&3)<<4|n[4]>>4,(n[4]&15)<<2|n[5]>>6].map(t=>td[t])}const id={"hkdf-hmac-sha256":"calculate_mac","org.matrix.msc3783.hkdf-hmac-sha256":"calculate_mac_fixed_base64","hkdf-hmac-sha256.v2":"calculate_mac_fixed_base64","hmac-sha256":"calculate_mac_long_kdf"};function Da(n,e){return function(t,s,i){return i.wrap({l:"calculate MAC",method:e},()=>n[id[e]](t,s))}}class rd extends qt{async completeStage(){await this.log.wrap("SendDoneStage.completeStage",async e=>{await this.channel.send(P.Done,{},e),await this.channel.waitForEvent(P.Done),this.eventEmitter.emit("VerificationCompleted",this.otherUserDeviceId)})}}class nd extends qt{async completeStage(){await this.log.wrap("VerifyMacStage.completeStage",async e=>{const s=this.channel.acceptMessage.content.message_authentication_code,i=Da(this.olmSAS,s);await this.checkMAC(i,e),this.setNextStage(new rd(this.options))})}async checkMAC(e,t){const{content:s}=this.channel.getReceivedMessage(P.Mac),i="MATRIX_KEY_VERIFICATION_MAC"+this.otherUserId+this.otherUserDeviceId+this.ourUserId+this.ourUserDeviceId+this.channel.id,r=e(Object.keys(s.mac).sort().join(","),i+"KEY_IDS",t);if(s.keys!==r){t.log({l:"MAC verification failed for keys field",keys:s.keys,calculated:r}),this.channel.cancelVerification(A.KeyMismatch);return}await this.verifyKeys(s.mac,(o,c,l)=>{const h=e(c,i+o,t),a=l===h;return a||(t.log({l:"Mac verification failed for key",keyMac:l,calculatedMAC:h,keyId:o,key:c}),this.channel.cancelVerification(A.KeyMismatch)),a},t)}async verifyKeys(e,t,s){const i=this.otherUserId;for(const[r,o]of Object.entries(e)){const c=r.split(":",2)[1],l=await this.deviceTracker.deviceForId(i,c,this.hsApi,s);if(l){if(!t(r,ks(l),o))throw new Error(`MAC verification failed for key ${o}`)}else{const h=await this.deviceTracker.getCrossSigningKeyForUser(i,Et.Master,this.hsApi,s);if(!h)throw s.log({l:"Fetching msk failed",userId:i}),new Error("Fetching MSK for user failed!");const a=Qs(h);if(!(a&&t(r,a,o)))throw new Error(`MAC verification failed for key ${o}`)}}}}class od extends qt{async completeStage(){await this.log.wrap("SendMacStage.completeStage",async e=>{const s=this.channel.acceptMessage.content.message_authentication_code,i=Da(this.olmSAS,s);await this.sendMAC(i,e),await this.channel.waitForEvent(P.Mac),this.setNextStage(new nd(this.options))})}async sendMAC(e,t){const s={},i=[],r="MATRIX_KEY_VERIFICATION_MAC"+this.ourUserId+this.ourUserDeviceId+this.otherUserId+this.otherUserDeviceId+this.channel.id,o=`ed25519:${this.ourUserDeviceId}`,c=this.e2eeAccount.getUnsignedDeviceKey();s[o]=e(c.keys[o],r+o,t),i.push(o);const l=await this.deviceTracker.getCrossSigningKeyForUser(this.ourUserId,Et.Master,this.hsApi,t);if(!l)throw t.log({l:"Fetching msk failed",userId:this.ourUserId}),new Error("Fetching MSK for user failed!");const h=Qs(l);if(h){const u=`ed25519:${h}`;s[u]=e(h,r+u,t),i.push(u)}const a=e(i.sort().join(","),r+"KEY_IDS",t);await this.channel.send(P.Mac,{mac:s,keys:a},t)}}class pt extends Error{get name(){return"VerificationCancelledError"}get message(){return"Verification is cancelled!"}}const ad={"curve25519-hkdf-sha256":function(n,e,t){const s=`${n.our.userId}|${n.our.deviceId}|${n.our.publicKey}|`,i=`${n.their.userId}|${n.their.deviceId}|${n.their.publicKey}|`,r="MATRIX_KEY_VERIFICATION_SAS|"+(n.initiatedByMe?s+i:i+s)+n.id;return e.generate_bytes(r,t)},curve25519:function(n,e,t){const s=`${n.our.userId}${n.our.deviceId}`,i=`${n.their.userId}${n.their.deviceId}`,r="MATRIX_KEY_VERIFICATION_SAS"+(n.initiatedByMe?s+i:i+s)+n.id;return e.generate_bytes(r,t)}};class cd extends qt{async completeStage(){await this.log.wrap("CalculateSASStage.completeStage",async e=>{if(this.channel.initiatedByUs&&!await this.verifyHashCommitment(e))return;const t=new Promise((r,o)=>{this.resolve=r,this.reject=o});this.olmSAS.set_their_key(this.theirKey);const s=this.generateSASBytes();this.emoji=sd(Array.from(s)),this.eventEmitter.emit("EmojiGenerated",this);const i=this.channel.waitForEvent(P.Cancel);await Promise.race([t,i]),this.setNextStage(new od(this.options))})}async verifyHashCommitment(e){return await e.wrap("CalculateSASStage.verifyHashCommitment",async()=>{const t=this.channel.getReceivedMessage(P.Accept).content,i=this.channel.getReceivedMessage(P.Key).content.key+qi.stringify(this.channel.startMessage.content),r=t.commitment,o=this.olmUtil.sha256(i);return o!==r?(e.log({l:"Commitment mismatched!",received:r,calculated:o}),await this.channel.cancelVerification(A.MismatchedCommitment),!1):!0})}generateSASBytes(){const e=this.channel.acceptMessage.content.key_agreement_protocol,t=this.otherUserDeviceId;return ad[e]({our:{userId:this.ourUserId,deviceId:this.ourUserDeviceId,publicKey:this.olmSAS.get_pubkey()},their:{userId:this.otherUserId,deviceId:t,publicKey:this.theirKey},id:this.channel.id,initiatedByMe:this.channel.initiatedByUs},this.olmSAS,6)}async setEmojiMatch(e){e?this.resolve():(await this.channel.cancelVerification(A.MismatchedSAS),this.reject(new pt))}get theirKey(){const{content:e}=this.channel.getReceivedMessage(P.Key);return e.key}}class Ua extends qt{async completeStage(){await this.log.wrap("SendKeyStage.completeStage",async e=>{const t=this.olmSAS.get_pubkey();await this.channel.send(P.Key,{key:t},e),await this.channel.waitForEvent(P.Key),this.setNextStage(new cd(this.options))})}}function nr(n,e){return Array.isArray(n)?n.filter(t=>e.has(t)):[]}class ld extends qt{async completeStage(){await this.log.wrap("SendAcceptVerificationStage.completeStage",async e=>{const{content:t}=this.channel.startMessage,s=nr(Aa,new Set(t.key_agreement_protocols))[0],i=nr(xa,new Set(t.hashes))[0],r=nr(Va,new Set(t.message_authentication_codes))[0],o=nr(t.short_authentication_string,ed);if(!s||!i||!r||!o.length){await this.channel.cancelVerification(A.UnknownMethod);return}const l=this.olmSAS.get_pubkey()+qi.stringify(t),h={key_agreement_protocol:s,hash:i,message_authentication_code:r,short_authentication_string:o,commitment:this.olmUtil.sha256(l)};await this.channel.send(P.Accept,h,e),await this.channel.waitForEvent(P.Key),this.setNextStage(new Ua(this.options))})}}class Cn extends qt{constructor(){super(...arguments),this.allowSelection=!0}async completeStage(){await this.log.wrap("SelectVerificationMethodStage.completeStage",async e=>{await this.findDeviceName(e),this.eventEmitter.emit("SelectVerificationStage",this);const t=this.channel.waitForEvent(P.Start),s=this.channel.waitForEvent(P.Accept),{content:i}=await Promise.race([t,s]);i.method?(this.allowSelection=!1,this.hasSentStartMessage?(await this.hasSentStartMessage,await this.resolveStartConflict(e)):this.channel.setStartMessage(this.channel.getReceivedMessage(P.Start))):this.channel.setStartMessage(this.channel.getSentMessage(P.Start)),this.channel.initiatedByUs?(await s,this.setNextStage(new Ua(this.options))):this.setNextStage(new ld(this.options))})}async resolveStartConflict(e){await e.wrap("resolveStartConflict",async()=>{const t=this.channel.getReceivedMessage(P.Start),s=this.channel.getSentMessage(P.Start);if(t.content.method!==s.content.method){e.log({l:"Methods don't match for the start messages",received:t.content.method,sent:s.content.method}),await this.channel.cancelVerification(A.UnexpectedMessage);return}const i=this.ourUserId===this.otherUserId?this.ourUserDeviceId:this.ourUserId,r=this.ourUserId===this.otherUserId?this.otherUserDeviceId:this.otherUserId,o=i{var s;const t=await this.options.deviceTracker.deviceForId(this.otherUserId,this.otherUserDeviceId,this.options.hsApi,e);if(!t)throw e.log({l:"Cannot find device",userId:this.otherUserId,deviceId:this.otherUserDeviceId}),new Error("Cannot find device");this.otherDeviceName=(s=t.unsigned.device_display_name)!=null?s:t.device_id})}async selectEmojiMethod(e){if(!this.allowSelection)return;const t=new As;this.hasSentStartMessage=t.promise;const s={method:"m.sas.v1",from_device:this.ourUserDeviceId,key_agreement_protocols:Aa,hashes:xa,message_authentication_codes:Va,short_authentication_string:Na};await this.channel.send(P.Start,s,e),t.resolve()}}class hd extends qt{async completeStage(){await this.log.wrap("SendRequestVerificationStage.completeStage",async e=>{const t={from_device:this.ourUserDeviceId,methods:["m.sas.v1"]};await this.channel.send(P.Request,t,e),this.setNextStage(new Cn(this.options)),await this.channel.waitForEvent(P.Ready)})}}class dd extends qt{async completeStage(){await this.log.wrap("SendReadyStage.completeStage",async e=>{const t={from_device:this.ourUserDeviceId,methods:["m.sas.v1"]};await this.channel.send(P.Ready,t,e),this.setNextStage(new Cn(this.options))})}}var ud={exports:{}},md={},_d=Object.freeze(Object.defineProperty({__proto__:null,default:md},Symbol.toStringTag,{value:"Module"})),or=_a(_d);(function(n,e){// @license magnet:?xt=urn:btih:8e4f440f4c65981c5bf93c76d35135ba5064d8b7&dn=apache-2.0.txt Apache-2.0 +var t=function(){var s={},i,r,o=(()=>{var l=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(l=l||__filename),function(h){h=h||{};var a;a||(a=typeof h!="undefined"?h:{});var u,p;a.ready=new Promise(function(d,m){u=d,p=m});var g;if(typeof window!="undefined")g=function(d){window.crypto.getRandomValues(d)};else if(n.exports){var f=or;g=function(d){var m=f.randomBytes(d.length);d.set(m)}}else throw Error("Cannot find global to attach library to");if(typeof OLM_OPTIONS!="undefined")for(var v in OLM_OPTIONS)OLM_OPTIONS.hasOwnProperty(v)&&(a[v]=OLM_OPTIONS[v]);a.onRuntimeInitialized=function(){le=a._olm_error(),s.PRIVATE_KEY_LENGTH=a._olm_pk_private_key_length(),i&&i()},a.onAbort=function(d){r&&r(d)};var M=Object.assign({},a),R=typeof window=="object",N=typeof importScripts=="function",F=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",T="",D,B,G,$e,Ns,di;F?(T=N?or.dirname(T)+"/":__dirname+"/",di=()=>{Ns||($e=or,Ns=or)},D=function(d,m){return di(),d=Ns.normalize(d),$e.readFileSync(d,m?void 0:"utf8")},G=d=>(d=D(d,!0),d.buffer||(d=new Uint8Array(d)),d),B=(d,m,_)=>{di(),d=Ns.normalize(d),$e.readFile(d,function(w,k){w?_(w):m(k.buffer)})},1{var m=new XMLHttpRequest;return m.open("GET",d,!1),m.send(null),m.responseText},N&&(G=d=>{var m=new XMLHttpRequest;return m.open("GET",d,!1),m.responseType="arraybuffer",m.send(null),new Uint8Array(m.response)}),B=(d,m,_)=>{var w=new XMLHttpRequest;w.open("GET",d,!0),w.responseType="arraybuffer",w.onload=()=>{w.status==200||w.status==0&&w.response?m(w.response):_()},w.onerror=_,w.send(null)}),a.print||console.log.bind(console);var as=a.printErr||console.warn.bind(console);Object.assign(a,M),M=null;var cs;a.wasmBinary&&(cs=a.wasmBinary),a.noExitRuntime,typeof WebAssembly!="object"&&je("no native wasm support detected");var Ds,Ue=!1,Us=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):void 0;function U(d,m){if(d){var _=re,w=d+m;for(m=d;_[m]&&!(m>=w);)++m;if(16k?w+=String.fromCharCode(k):(k-=65536,w+=String.fromCharCode(55296|k>>10,56320|k&1023))}}else w+=String.fromCharCode(k)}d=w}}else d="";return d}function zi(d,m,_,w){if(!(0=z){var Se=d.charCodeAt(++V);z=65536+((z&1023)<<10)|Se&1023}if(127>=z){if(_>=w)break;m[_++]=z}else{if(2047>=z){if(_+1>=w)break;m[_++]=192|z>>6}else{if(65535>=z){if(_+2>=w)break;m[_++]=224|z>>12}else{if(_+3>=w)break;m[_++]=240|z>>18,m[_++]=128|z>>12&63}m[_++]=128|z>>6&63}m[_++]=128|z&63}}return m[_]=0,_-k}function Ht(d,m,_){return zi(d,re,m,_)}function Wt(d){for(var m=0,_=0;_=w?m++:2047>=w?m+=2:55296<=w&&57343>=w?(m+=4,++_):m+=3}return m}var ui,Je,re,Os,ie,Ps,ls,hs;function mi(){var d=Ds.buffer;ui=d,a.HEAP8=Je=new Int8Array(d),a.HEAP16=Os=new Int16Array(d),a.HEAP32=ie=new Int32Array(d),a.HEAPU8=re=new Uint8Array(d),a.HEAPU16=new Uint16Array(d),a.HEAPU32=Ps=new Uint32Array(d),a.HEAPF32=ls=new Float32Array(d),a.HEAPF64=hs=new Float64Array(d)}var Fs=[],_i=[],vt=[];function zt(){var d=a.preRun.shift();Fs.unshift(d)}var Qe=0,bt=null;function je(d){throw a.onAbort&&a.onAbort(d),d="Aborted("+d+")",as(d),Ue=!0,d=new WebAssembly.RuntimeError(d+". Build with -sASSERTIONS for more info."),p(d),d}function ds(){return we.startsWith("data:application/octet-stream;base64,")}var we;if(we="olm.wasm",!ds()){var us=we;we=a.locateFile?a.locateFile(us,T):T+us}function pi(){var d=we;try{if(d==we&&cs)return new Uint8Array(cs);if(G)return G(d);throw"both async and sync fetching of the wasm failed"}catch(m){je(m)}}function gi(){if(!cs&&(R||N)){if(typeof fetch=="function"&&!we.startsWith("file://"))return fetch(we,{credentials:"same-origin"}).then(function(d){if(!d.ok)throw"failed to load wasm binary file at '"+we+"'";return d.arrayBuffer()}).catch(function(){return pi()});if(B)return new Promise(function(d,m){B(we,function(_){d(new Uint8Array(_))},m)})}return Promise.resolve().then(function(){return pi()})}var St;function at(d){for(;0>0];case"i8":return Je[d>>0];case"i16":return Os[d>>1];case"i32":return ie[d>>2];case"i64":return ie[d>>2];case"float":return ls[d>>2];case"double":return hs[d>>3];case"*":return Ps[d>>2];default:je("invalid type for getValue: "+m)}return null}function Xe(d){var m="i8";switch(m.endsWith("*")&&(m="*"),m){case"i1":Je[d>>0]=0;break;case"i8":Je[d>>0]=0;break;case"i16":Os[d>>1]=0;break;case"i32":ie[d>>2]=0;break;case"i64":St=[0,0],ie[d>>2]=St[0],ie[d+4>>2]=St[1];break;case"float":ls[d>>2]=0;break;case"double":hs[d>>3]=0;break;case"*":Ps[d>>2]=0;break;default:je("invalid type for setValue: "+m)}}function Gt(d,m,_){for(var w=0;w>0]=d.charCodeAt(w);_||(Je[m>>0]=0)}function Ks(d,m,_){return _=Array(0<_?_:Wt(d)+1),d=zi(d,_,0,_.length),m&&(_.length=d),_}var Gi={b:function(d,m,_){re.copyWithin(d,m,m+_)},a:function(d){var m=re.length;if(d>>>=0,2147483648=_;_*=2){var w=m*(1+.2/_);w=Math.min(w,d+100663296);var k=Math;w=Math.max(d,w),k=k.min.call(k,2147483648,w+(65536-w%65536)%65536);e:{try{Ds.grow(k-ui.byteLength+65535>>>16),mi();var V=1;break e}catch{}V=void 0}if(V)return!0}return!1}};(function(){function d(k){a.asm=k.exports,Ds=a.asm.c,mi(),_i.unshift(a.asm.d),Qe--,a.monitorRunDependencies&&a.monitorRunDependencies(Qe),Qe==0&&bt&&(k=bt,bt=null,k())}function m(k){d(k.instance)}function _(k){return gi().then(function(V){return WebAssembly.instantiate(V,w)}).then(function(V){return V}).then(k,function(V){as("failed to asynchronously prepare wasm: "+V),je(V)})}var w={a:Gi};if(Qe++,a.monitorRunDependencies&&a.monitorRunDependencies(Qe),a.instantiateWasm)try{return a.instantiateWasm(w,d)}catch(k){return as("Module.instantiateWasm callback failed with error: "+k),!1}return function(){return cs||typeof WebAssembly.instantiateStreaming!="function"||ds()||we.startsWith("file://")||F||typeof fetch!="function"?_(m):fetch(we,{credentials:"same-origin"}).then(function(k){return WebAssembly.instantiateStreaming(k,w).then(m,function(V){return as("wasm streaming compile failed: "+V),as("falling back to ArrayBuffer instantiation"),_(m)})})}().catch(p),{}})(),a.___wasm_call_ctors=function(){return(a.___wasm_call_ctors=a.asm.d).apply(null,arguments)},a._olm_get_library_version=function(){return(a._olm_get_library_version=a.asm.f).apply(null,arguments)},a._olm_error=function(){return(a._olm_error=a.asm.g).apply(null,arguments)},a._olm_account_last_error=function(){return(a._olm_account_last_error=a.asm.h).apply(null,arguments)},a.__olm_error_to_string=function(){return(a.__olm_error_to_string=a.asm.i).apply(null,arguments)},a._olm_account_last_error_code=function(){return(a._olm_account_last_error_code=a.asm.j).apply(null,arguments)},a._olm_session_last_error=function(){return(a._olm_session_last_error=a.asm.k).apply(null,arguments)},a._olm_session_last_error_code=function(){return(a._olm_session_last_error_code=a.asm.l).apply(null,arguments)},a._olm_utility_last_error=function(){return(a._olm_utility_last_error=a.asm.m).apply(null,arguments)},a._olm_utility_last_error_code=function(){return(a._olm_utility_last_error_code=a.asm.n).apply(null,arguments)},a._olm_account_size=function(){return(a._olm_account_size=a.asm.o).apply(null,arguments)},a._olm_session_size=function(){return(a._olm_session_size=a.asm.p).apply(null,arguments)},a._olm_utility_size=function(){return(a._olm_utility_size=a.asm.q).apply(null,arguments)},a._olm_account=function(){return(a._olm_account=a.asm.r).apply(null,arguments)},a._olm_session=function(){return(a._olm_session=a.asm.s).apply(null,arguments)},a._olm_utility=function(){return(a._olm_utility=a.asm.t).apply(null,arguments)},a._olm_clear_account=function(){return(a._olm_clear_account=a.asm.u).apply(null,arguments)},a._olm_clear_session=function(){return(a._olm_clear_session=a.asm.v).apply(null,arguments)},a._olm_clear_utility=function(){return(a._olm_clear_utility=a.asm.w).apply(null,arguments)},a._olm_pickle_account_length=function(){return(a._olm_pickle_account_length=a.asm.x).apply(null,arguments)},a._olm_pickle_session_length=function(){return(a._olm_pickle_session_length=a.asm.y).apply(null,arguments)},a._olm_pickle_account=function(){return(a._olm_pickle_account=a.asm.z).apply(null,arguments)},a._olm_pickle_session=function(){return(a._olm_pickle_session=a.asm.A).apply(null,arguments)},a._olm_unpickle_account=function(){return(a._olm_unpickle_account=a.asm.B).apply(null,arguments)},a._olm_unpickle_session=function(){return(a._olm_unpickle_session=a.asm.C).apply(null,arguments)},a._olm_create_account_random_length=function(){return(a._olm_create_account_random_length=a.asm.D).apply(null,arguments)},a._olm_create_account=function(){return(a._olm_create_account=a.asm.E).apply(null,arguments)},a._olm_account_identity_keys_length=function(){return(a._olm_account_identity_keys_length=a.asm.F).apply(null,arguments)},a._olm_account_identity_keys=function(){return(a._olm_account_identity_keys=a.asm.G).apply(null,arguments)},a._olm_account_signature_length=function(){return(a._olm_account_signature_length=a.asm.H).apply(null,arguments)},a._olm_account_sign=function(){return(a._olm_account_sign=a.asm.I).apply(null,arguments)},a._olm_account_one_time_keys_length=function(){return(a._olm_account_one_time_keys_length=a.asm.J).apply(null,arguments)},a._olm_account_one_time_keys=function(){return(a._olm_account_one_time_keys=a.asm.K).apply(null,arguments)},a._olm_account_mark_keys_as_published=function(){return(a._olm_account_mark_keys_as_published=a.asm.L).apply(null,arguments)},a._olm_account_max_number_of_one_time_keys=function(){return(a._olm_account_max_number_of_one_time_keys=a.asm.M).apply(null,arguments)},a._olm_account_generate_one_time_keys_random_length=function(){return(a._olm_account_generate_one_time_keys_random_length=a.asm.N).apply(null,arguments)},a._olm_account_generate_one_time_keys=function(){return(a._olm_account_generate_one_time_keys=a.asm.O).apply(null,arguments)},a._olm_account_generate_fallback_key_random_length=function(){return(a._olm_account_generate_fallback_key_random_length=a.asm.P).apply(null,arguments)},a._olm_account_generate_fallback_key=function(){return(a._olm_account_generate_fallback_key=a.asm.Q).apply(null,arguments)},a._olm_account_fallback_key_length=function(){return(a._olm_account_fallback_key_length=a.asm.R).apply(null,arguments)},a._olm_account_fallback_key=function(){return(a._olm_account_fallback_key=a.asm.S).apply(null,arguments)},a._olm_account_unpublished_fallback_key_length=function(){return(a._olm_account_unpublished_fallback_key_length=a.asm.T).apply(null,arguments)},a._olm_account_unpublished_fallback_key=function(){return(a._olm_account_unpublished_fallback_key=a.asm.U).apply(null,arguments)},a._olm_account_forget_old_fallback_key=function(){return(a._olm_account_forget_old_fallback_key=a.asm.V).apply(null,arguments)},a._olm_create_outbound_session_random_length=function(){return(a._olm_create_outbound_session_random_length=a.asm.W).apply(null,arguments)},a._olm_create_outbound_session=function(){return(a._olm_create_outbound_session=a.asm.X).apply(null,arguments)},a._olm_create_inbound_session=function(){return(a._olm_create_inbound_session=a.asm.Y).apply(null,arguments)},a._olm_create_inbound_session_from=function(){return(a._olm_create_inbound_session_from=a.asm.Z).apply(null,arguments)},a._olm_session_id_length=function(){return(a._olm_session_id_length=a.asm._).apply(null,arguments)},a._olm_session_id=function(){return(a._olm_session_id=a.asm.$).apply(null,arguments)},a._olm_session_has_received_message=function(){return(a._olm_session_has_received_message=a.asm.aa).apply(null,arguments)},a._olm_session_describe=function(){return(a._olm_session_describe=a.asm.ba).apply(null,arguments)},a._olm_matches_inbound_session=function(){return(a._olm_matches_inbound_session=a.asm.ca).apply(null,arguments)},a._olm_matches_inbound_session_from=function(){return(a._olm_matches_inbound_session_from=a.asm.da).apply(null,arguments)},a._olm_remove_one_time_keys=function(){return(a._olm_remove_one_time_keys=a.asm.ea).apply(null,arguments)},a._olm_encrypt_message_type=function(){return(a._olm_encrypt_message_type=a.asm.fa).apply(null,arguments)},a._olm_encrypt_random_length=function(){return(a._olm_encrypt_random_length=a.asm.ga).apply(null,arguments)},a._olm_encrypt_message_length=function(){return(a._olm_encrypt_message_length=a.asm.ha).apply(null,arguments)},a._olm_encrypt=function(){return(a._olm_encrypt=a.asm.ia).apply(null,arguments)},a._olm_decrypt_max_plaintext_length=function(){return(a._olm_decrypt_max_plaintext_length=a.asm.ja).apply(null,arguments)},a._olm_decrypt=function(){return(a._olm_decrypt=a.asm.ka).apply(null,arguments)},a._olm_sha256_length=function(){return(a._olm_sha256_length=a.asm.la).apply(null,arguments)},a._olm_sha256=function(){return(a._olm_sha256=a.asm.ma).apply(null,arguments)},a._olm_ed25519_verify=function(){return(a._olm_ed25519_verify=a.asm.na).apply(null,arguments)},a._olm_pk_encryption_last_error=function(){return(a._olm_pk_encryption_last_error=a.asm.oa).apply(null,arguments)},a._olm_pk_encryption_last_error_code=function(){return(a._olm_pk_encryption_last_error_code=a.asm.pa).apply(null,arguments)},a._olm_pk_encryption_size=function(){return(a._olm_pk_encryption_size=a.asm.qa).apply(null,arguments)},a._olm_pk_encryption=function(){return(a._olm_pk_encryption=a.asm.ra).apply(null,arguments)},a._olm_clear_pk_encryption=function(){return(a._olm_clear_pk_encryption=a.asm.sa).apply(null,arguments)},a._olm_pk_encryption_set_recipient_key=function(){return(a._olm_pk_encryption_set_recipient_key=a.asm.ta).apply(null,arguments)},a._olm_pk_key_length=function(){return(a._olm_pk_key_length=a.asm.ua).apply(null,arguments)},a._olm_pk_ciphertext_length=function(){return(a._olm_pk_ciphertext_length=a.asm.va).apply(null,arguments)},a._olm_pk_mac_length=function(){return(a._olm_pk_mac_length=a.asm.wa).apply(null,arguments)},a._olm_pk_encrypt_random_length=function(){return(a._olm_pk_encrypt_random_length=a.asm.xa).apply(null,arguments)},a._olm_pk_encrypt=function(){return(a._olm_pk_encrypt=a.asm.ya).apply(null,arguments)},a._olm_pk_decryption_last_error=function(){return(a._olm_pk_decryption_last_error=a.asm.za).apply(null,arguments)},a._olm_pk_decryption_last_error_code=function(){return(a._olm_pk_decryption_last_error_code=a.asm.Aa).apply(null,arguments)},a._olm_pk_decryption_size=function(){return(a._olm_pk_decryption_size=a.asm.Ba).apply(null,arguments)},a._olm_pk_decryption=function(){return(a._olm_pk_decryption=a.asm.Ca).apply(null,arguments)},a._olm_clear_pk_decryption=function(){return(a._olm_clear_pk_decryption=a.asm.Da).apply(null,arguments)},a._olm_pk_private_key_length=function(){return(a._olm_pk_private_key_length=a.asm.Ea).apply(null,arguments)},a._olm_pk_generate_key_random_length=function(){return(a._olm_pk_generate_key_random_length=a.asm.Fa).apply(null,arguments)},a._olm_pk_key_from_private=function(){return(a._olm_pk_key_from_private=a.asm.Ga).apply(null,arguments)},a._olm_pk_generate_key=function(){return(a._olm_pk_generate_key=a.asm.Ha).apply(null,arguments)},a._olm_pickle_pk_decryption_length=function(){return(a._olm_pickle_pk_decryption_length=a.asm.Ia).apply(null,arguments)},a._olm_pickle_pk_decryption=function(){return(a._olm_pickle_pk_decryption=a.asm.Ja).apply(null,arguments)},a._olm_unpickle_pk_decryption=function(){return(a._olm_unpickle_pk_decryption=a.asm.Ka).apply(null,arguments)},a._olm_pk_max_plaintext_length=function(){return(a._olm_pk_max_plaintext_length=a.asm.La).apply(null,arguments)},a._olm_pk_decrypt=function(){return(a._olm_pk_decrypt=a.asm.Ma).apply(null,arguments)},a._olm_pk_get_private_key=function(){return(a._olm_pk_get_private_key=a.asm.Na).apply(null,arguments)},a._olm_pk_signing_size=function(){return(a._olm_pk_signing_size=a.asm.Oa).apply(null,arguments)},a._olm_pk_signing=function(){return(a._olm_pk_signing=a.asm.Pa).apply(null,arguments)},a._olm_pk_signing_last_error=function(){return(a._olm_pk_signing_last_error=a.asm.Qa).apply(null,arguments)},a._olm_pk_signing_last_error_code=function(){return(a._olm_pk_signing_last_error_code=a.asm.Ra).apply(null,arguments)},a._olm_clear_pk_signing=function(){return(a._olm_clear_pk_signing=a.asm.Sa).apply(null,arguments)},a._olm_pk_signing_seed_length=function(){return(a._olm_pk_signing_seed_length=a.asm.Ta).apply(null,arguments)},a._olm_pk_signing_public_key_length=function(){return(a._olm_pk_signing_public_key_length=a.asm.Ua).apply(null,arguments)},a._olm_pk_signing_key_from_seed=function(){return(a._olm_pk_signing_key_from_seed=a.asm.Va).apply(null,arguments)},a._olm_pk_signature_length=function(){return(a._olm_pk_signature_length=a.asm.Wa).apply(null,arguments)},a._olm_pk_sign=function(){return(a._olm_pk_sign=a.asm.Xa).apply(null,arguments)},a._olm_inbound_group_session_size=function(){return(a._olm_inbound_group_session_size=a.asm.Ya).apply(null,arguments)},a._olm_inbound_group_session=function(){return(a._olm_inbound_group_session=a.asm.Za).apply(null,arguments)},a._olm_clear_inbound_group_session=function(){return(a._olm_clear_inbound_group_session=a.asm._a).apply(null,arguments)},a._olm_inbound_group_session_last_error=function(){return(a._olm_inbound_group_session_last_error=a.asm.$a).apply(null,arguments)},a._olm_inbound_group_session_last_error_code=function(){return(a._olm_inbound_group_session_last_error_code=a.asm.ab).apply(null,arguments)},a._olm_init_inbound_group_session=function(){return(a._olm_init_inbound_group_session=a.asm.bb).apply(null,arguments)},a._olm_import_inbound_group_session=function(){return(a._olm_import_inbound_group_session=a.asm.cb).apply(null,arguments)},a._olm_pickle_inbound_group_session_length=function(){return(a._olm_pickle_inbound_group_session_length=a.asm.db).apply(null,arguments)},a._olm_pickle_inbound_group_session=function(){return(a._olm_pickle_inbound_group_session=a.asm.eb).apply(null,arguments)},a._olm_unpickle_inbound_group_session=function(){return(a._olm_unpickle_inbound_group_session=a.asm.fb).apply(null,arguments)},a._olm_group_decrypt_max_plaintext_length=function(){return(a._olm_group_decrypt_max_plaintext_length=a.asm.gb).apply(null,arguments)},a._olm_group_decrypt=function(){return(a._olm_group_decrypt=a.asm.hb).apply(null,arguments)},a._olm_inbound_group_session_id_length=function(){return(a._olm_inbound_group_session_id_length=a.asm.ib).apply(null,arguments)},a._olm_inbound_group_session_id=function(){return(a._olm_inbound_group_session_id=a.asm.jb).apply(null,arguments)},a._olm_inbound_group_session_first_known_index=function(){return(a._olm_inbound_group_session_first_known_index=a.asm.kb).apply(null,arguments)},a._olm_inbound_group_session_is_verified=function(){return(a._olm_inbound_group_session_is_verified=a.asm.lb).apply(null,arguments)},a._olm_export_inbound_group_session_length=function(){return(a._olm_export_inbound_group_session_length=a.asm.mb).apply(null,arguments)},a._olm_export_inbound_group_session=function(){return(a._olm_export_inbound_group_session=a.asm.nb).apply(null,arguments)},a._olm_outbound_group_session_size=function(){return(a._olm_outbound_group_session_size=a.asm.ob).apply(null,arguments)},a._olm_outbound_group_session=function(){return(a._olm_outbound_group_session=a.asm.pb).apply(null,arguments)},a._olm_clear_outbound_group_session=function(){return(a._olm_clear_outbound_group_session=a.asm.qb).apply(null,arguments)},a._olm_outbound_group_session_last_error=function(){return(a._olm_outbound_group_session_last_error=a.asm.rb).apply(null,arguments)},a._olm_outbound_group_session_last_error_code=function(){return(a._olm_outbound_group_session_last_error_code=a.asm.sb).apply(null,arguments)},a._olm_pickle_outbound_group_session_length=function(){return(a._olm_pickle_outbound_group_session_length=a.asm.tb).apply(null,arguments)},a._olm_pickle_outbound_group_session=function(){return(a._olm_pickle_outbound_group_session=a.asm.ub).apply(null,arguments)},a._olm_unpickle_outbound_group_session=function(){return(a._olm_unpickle_outbound_group_session=a.asm.vb).apply(null,arguments)},a._olm_init_outbound_group_session_random_length=function(){return(a._olm_init_outbound_group_session_random_length=a.asm.wb).apply(null,arguments)},a._olm_init_outbound_group_session=function(){return(a._olm_init_outbound_group_session=a.asm.xb).apply(null,arguments)},a._olm_group_encrypt_message_length=function(){return(a._olm_group_encrypt_message_length=a.asm.yb).apply(null,arguments)},a._olm_group_encrypt=function(){return(a._olm_group_encrypt=a.asm.zb).apply(null,arguments)},a._olm_outbound_group_session_id_length=function(){return(a._olm_outbound_group_session_id_length=a.asm.Ab).apply(null,arguments)},a._olm_outbound_group_session_id=function(){return(a._olm_outbound_group_session_id=a.asm.Bb).apply(null,arguments)},a._olm_outbound_group_session_message_index=function(){return(a._olm_outbound_group_session_message_index=a.asm.Cb).apply(null,arguments)},a._olm_outbound_group_session_key_length=function(){return(a._olm_outbound_group_session_key_length=a.asm.Db).apply(null,arguments)},a._olm_outbound_group_session_key=function(){return(a._olm_outbound_group_session_key=a.asm.Eb).apply(null,arguments)},a._olm_sas_last_error=function(){return(a._olm_sas_last_error=a.asm.Fb).apply(null,arguments)},a._olm_sas_last_error_code=function(){return(a._olm_sas_last_error_code=a.asm.Gb).apply(null,arguments)},a._olm_sas_size=function(){return(a._olm_sas_size=a.asm.Hb).apply(null,arguments)},a._olm_sas=function(){return(a._olm_sas=a.asm.Ib).apply(null,arguments)},a._olm_clear_sas=function(){return(a._olm_clear_sas=a.asm.Jb).apply(null,arguments)},a._olm_create_sas_random_length=function(){return(a._olm_create_sas_random_length=a.asm.Kb).apply(null,arguments)},a._olm_create_sas=function(){return(a._olm_create_sas=a.asm.Lb).apply(null,arguments)},a._olm_sas_pubkey_length=function(){return(a._olm_sas_pubkey_length=a.asm.Mb).apply(null,arguments)},a._olm_sas_get_pubkey=function(){return(a._olm_sas_get_pubkey=a.asm.Nb).apply(null,arguments)},a._olm_sas_set_their_key=function(){return(a._olm_sas_set_their_key=a.asm.Ob).apply(null,arguments)},a._olm_sas_is_their_key_set=function(){return(a._olm_sas_is_their_key_set=a.asm.Pb).apply(null,arguments)},a._olm_sas_generate_bytes=function(){return(a._olm_sas_generate_bytes=a.asm.Qb).apply(null,arguments)},a._olm_sas_mac_length=function(){return(a._olm_sas_mac_length=a.asm.Rb).apply(null,arguments)},a._olm_sas_calculate_mac_fixed_base64=function(){return(a._olm_sas_calculate_mac_fixed_base64=a.asm.Sb).apply(null,arguments)},a._olm_sas_calculate_mac=function(){return(a._olm_sas_calculate_mac=a.asm.Tb).apply(null,arguments)},a._olm_sas_calculate_mac_long_kdf=function(){return(a._olm_sas_calculate_mac_long_kdf=a.asm.Ub).apply(null,arguments)},a._malloc=function(){return(a._malloc=a.asm.Vb).apply(null,arguments)},a._free=function(){return(a._free=a.asm.Wb).apply(null,arguments)};var Bs=a.stackSave=function(){return(Bs=a.stackSave=a.asm.Xb).apply(null,arguments)},$s=a.stackRestore=function(){return($s=a.stackRestore=a.asm.Yb).apply(null,arguments)},Ze=a.stackAlloc=function(){return(Ze=a.stackAlloc=a.asm.Zb).apply(null,arguments)};a.UTF8ToString=U,a.stringToUTF8=Ht,a.intArrayFromString=Ks,a.writeAsciiToMemory=Gt,a.ALLOC_STACK=1;var kt;bt=function d(){kt||js(),kt||(bt=d)};function js(){function d(){if(!kt&&(kt=!0,a.calledRun=!0,!Ue)){if(at(_i),u(a),a.onRuntimeInitialized&&a.onRuntimeInitialized(),a.postRun)for(typeof a.postRun=="function"&&(a.postRun=[a.postRun]);a.postRun.length;){var m=a.postRun.shift();vt.unshift(m)}at(vt)}}if(!(0[],(t,s)=>t.push(s))}function En(n,e,t,s){return n.reduce((i,r)=>{const o=e(r);let c=i.get(o);return c||(c=t(),i.set(o,c)),s(c,r),i},new Map)}function uo(n,e){return n.reduce((t,s)=>{const i=e(s);return t[i]?t[i]+=1:t[i]=1,t},{})}function Pe(){return Ir("t")}function Ir(n){const t=Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16);return n+"0".repeat(14-t.length)+t}function mo(n){return n.startsWith("t")&&n.length===15}function Fi(n){const e=ti(n,s=>s.device.user_id);return{messages:Array.from(e.entries()).reduce((s,[i,r])=>(s[i]=r.reduce((o,c)=>(o[c.device.device_id]=c.content,o),{}),s),{})}}function Br(n){typeof n=="function"?n():n.dispose()}function gd(n){return n&&(typeof n=="function"||typeof n.dispose=="function")}class li{constructor(){this._disposables=[]}track(e){if(!gd(e))throw new Error("Not a disposable");return this.isDisposed?(console.warn("Disposables already disposed, disposing new value"),Br(e),e):(this._disposables.push(e),e)}untrack(e){if(!this._disposables)return;const t=this._disposables.indexOf(e);t>=0&&this._disposables.splice(t,1)}dispose(){if(this._disposables){for(const e of this._disposables)Br(e);this._disposables=void 0}}get isDisposed(){return this._disposables===void 0}disposeTracked(e){if(e==null||this.isDisposed)return;const t=this._disposables.indexOf(e);if(t!==-1){const[s]=this._disposables.splice(t,1);Br(s)}else console.warn("disposable not found, did it leak?",e)}}class fd extends li{constructor(e,t){super(),this.sentMessages=new Map,this.receivedMessages=new Map,this.waitMap=new Map,this.hsApi=e.hsApi,this.deviceTracker=e.deviceTracker,this.otherUserId=e.otherUserId,this.ourDeviceId=e.ourUserDeviceId,this.clock=e.clock,this.log=e.log,this.deviceMessageHandler=e.deviceMessageHandler,this.track(this.deviceMessageHandler.disposableOn("message",async({unencrypted:s})=>{!s||await this.handleDeviceMessage(s)})),this.track(()=>{this.waitMap.forEach(s=>{s.reject(new pt)})}),t&&(this.id=t.content.transaction_id,this.receivedMessages.set(t.type,t),this.otherUserDeviceId=t.content.from_device)}get cancellation(){return this._cancellation}get isCancelled(){return!!this._cancellation}async send(e,t,s){await s.wrap("ToDeviceChannel.send",async()=>{if(this.isCancelled)throw new pt;if(e===P.Request){await this.handleRequestEventSpecially(e,t,s);return}Object.assign(t,{transaction_id:this.id});const i={messages:{[this.otherUserId]:{[this.otherUserDeviceId]:t}}};await this.hsApi.sendToDevice(e,i,Pe(),{log:s}).response(),this.sentMessages.set(e,{content:t})})}async handleRequestEventSpecially(e,t,s){await s.wrap("ToDeviceChannel.handleRequestEventSpecially",async()=>{const i=this.clock.now(),r=Pe();this.id=r,Object.assign(t,{timestamp:i,transaction_id:r});const o={messages:{[this.otherUserId]:{"*":t}}};await this.hsApi.sendToDevice(e,o,Pe(),{log:s}).response(),this.sentMessages.set(e,{content:t})})}getReceivedMessage(e){return this.receivedMessages.get(e)}getSentMessage(e){return this.sentMessages.get(e)}get acceptMessage(){var e;return(e=this.receivedMessages.get(P.Accept))!=null?e:this.sentMessages.get(P.Accept)}async handleDeviceMessage(e){await this.log.wrap("ToDeviceChannel.handleDeviceMessage",async t=>{if(!!e.type.startsWith("m.key.verification.")){if(e.content.transaction_id!==this.id){await this.cancelVerification(A.UnknownTransaction);return}if(this.resolveAnyWaits(e),this.receivedMessages.set(e.type,e),e.type===P.Ready){this.handleReadyMessage(e,t);return}if(e.type===P.Cancel){this._cancellation={code:e.content.code,cancelledByUs:!1},this.dispose();return}}})}async handleReadyMessage(e,t){const s=e.content.from_device;this.otherUserDeviceId=s;const r=(await this.deviceTracker.devicesForUsers([this.otherUserId],this.hsApi,t)).filter(h=>h.device_id!==s&&h.device_id!==this.ourDeviceId),o={code:A.OtherDeviceAccepted,reason:kr[A.OtherDeviceAccepted],transaction_id:this.id},c=r.reduce((h,a)=>(h[a.device_id]=o,h),{}),l={messages:{[this.otherUserId]:c}};await this.hsApi.sendToDevice(P.Cancel,l,Pe(),{log:t}).response()}async cancelVerification(e){await this.log.wrap("Channel.cancelVerification",async t=>{var i;if(this.isCancelled)throw new pt;const s={messages:{[this.otherUserId]:{[(i=this.otherUserDeviceId)!=null?i:"*"]:{code:e,reason:kr[e],transaction_id:this.id}}}};await this.hsApi.sendToDevice(P.Cancel,s,Pe(),{log:t}).response(),this._cancellation={code:e,cancelledByUs:!0},this.dispose()})}resolveAnyWaits(e){const{type:t}=e,s=this.waitMap.get(t);s&&(s.resolve(e),this.waitMap.delete(t))}waitForEvent(e){if(this.isCancelled)throw new pt;const t=this.receivedMessages.get(e);if(t)return Promise.resolve(t);const s=this.waitMap.get(e);if(s)return s.promise;const i=new As;return this.waitMap.set(e,i),i.promise}setStartMessage(e){this.startMessage=e,this._initiatedByUs=e.content.from_device===this.ourDeviceId}get initiatedByUs(){return this._initiatedByUs}}class yd extends li{constructor(e,t){var s,i;if(super(),this.sentMessages=new Map,this.receivedMessages=new Map,this.waitMap=new Map,this.otherUserId=e.otherUserId,this.ourUserId=e.ourUserId,this.ourDeviceId=e.ourUserDeviceId,this.log=e.log,this.room=e.room,this.subscribeToTimeline(),this.track(()=>{this.waitMap.forEach(r=>{r.reject(new pt)})}),t){this.id=t.id;const r=(i=(s=t.content)==null?void 0:s.msgtype)!=null?i:t.eventType;this.receivedMessages.set(r,t),this.otherUserDeviceId=t.content.from_device}}async subscribeToTimeline(){const e=await this.room.openTimeline();this.track(()=>e.release()),this.track(e.entries.subscribe({onAdd:async(t,s)=>{this.handleRoomMessage(s)},onRemove:()=>{},onUpdate:()=>{}}))}get cancellation(){return this._cancellation}get isCancelled(){return!!this._cancellation}async send(e,t,s){await s.wrap("RoomChannel.send",async i=>{if(this.isCancelled)throw new pt;if(e===P.Request){await this.handleRequestEventSpecially(e,t,s);return}!this.id||(await this.room.ensureMessageKeyIsShared(i),Object.assign(t,th(this.id)),await this.room.sendEvent(e,t,void 0,s),this.sentMessages.set(e,{content:t}))})}async handleRequestEventSpecially(e,t,s){await s.wrap("RoomChannel.handleRequestEventSpecially",async()=>{Object.assign(t,{body:`${this.otherUserId} is requesting to verify your key, but your client does not support in-chat key verification. You will need to use legacy key verification to verify keys.`,msgtype:P.Request,to:this.otherUserId});const i=await this.room.sendEvent("m.room.message",t,void 0,s);this.id=await i.getRemoteId(),this.sentMessages.set(e,{content:t})})}getReceivedMessage(e){return this.receivedMessages.get(e)}getSentMessage(e){return this.sentMessages.get(e)}get acceptMessage(){var e;return(e=this.receivedMessages.get(P.Accept))!=null?e:this.sentMessages.get(P.Accept)}async handleRoomMessage(e){var s,i;const t=(i=(s=e.content)==null?void 0:s.msgtype)!=null?i:e.eventType;!(t!=null&&t.startsWith("m.key.verification"))||e.sender===this.ourUserId||e.isLoadedFromStorage||await this.log.wrap("RoomChannel.handleRoomMessage",async r=>{if(!this.id)throw new Error("Couldn't find event-id of request message!");if(va(e.event)!==this.id){await this.cancelVerification(A.UnknownTransaction);return}if(this.resolveAnyWaits(e),this.receivedMessages.set(e.eventType,e),e.eventType===P.Ready){const o=e.content.from_device;this.otherUserDeviceId=o;return}if(e.eventType===P.Cancel){this._cancellation={code:e.content.code,cancelledByUs:!1},this.dispose();return}})}async cancelVerification(e){await this.log.wrap("RoomChannel.cancelVerification",async t=>{if(t.log({reason:kr[e]}),this.isCancelled)throw new pt;const s={code:e,reason:kr[e]};await this.send(P.Cancel,s,t),this._cancellation={code:e,cancelledByUs:!0},this.dispose()})}resolveAnyWaits(e){const{eventType:t}=e,s=this.waitMap.get(t);s&&(s.resolve(e),this.waitMap.delete(t))}waitForEvent(e){if(this.isCancelled)throw new pt;const t=this.receivedMessages.get(e);if(t)return Promise.resolve(t);const s=this.waitMap.get(e);if(s)return s.promise;const i=new As;return this.waitMap.set(e,i),i.promise}setStartMessage(e){if(e.content["m.relates_to"])this.startMessage=e;else{const t=e.clone();t.content["m.relates_to"]=t.event.content["m.relates_to"],this.startMessage=t}this._initiatedByUs=e.content.from_device===this.ourDeviceId}get initiatedByUs(){return this._initiatedByUs}}class pr{constructor(e){this.startingMessage=e}get deviceId(){return this.startingMessage.content.from_device}get sender(){return this.startingMessage.sender}get id(){var e;return(e=this.startingMessage.content.transaction_id)!=null?e:this.startingMessage.eventId}async reject(e,t,s){const i=e.startVerification(this,t,s);await(i==null?void 0:i.abort())}}var Et=(n=>(n.Master="master",n.SelfSigning="self_signing",n.UserSigning="user_signing",n))(Et||{}),et=(n=>(n[n.Trusted=1]="Trusted",n[n.UserNotSigned=2]="UserNotSigned",n[n.UserSignatureMismatch=3]="UserSignatureMismatch",n[n.UserDeviceNotSigned=4]="UserDeviceNotSigned",n[n.UserDeviceSignatureMismatch=5]="UserDeviceSignatureMismatch",n[n.UserSetupError=6]="UserSetupError",n[n.OwnSetupError=7]="OwnSetupError",n))(et||{});class wd{constructor(e){this._isMasterKeyTrusted=!1,this.observedUsers=new Map,this.receivedSASVerifications=new Dt,this.storage=e.storage,this.secretFetcher=e.secretFetcher,this.platform=e.platform,this.deviceTracker=e.deviceTracker,this.olm=e.olm,this.olmUtil=e.olmUtil,this.hsApi=e.hsApi,this.ownUserId=e.ownUserId,this.deviceId=e.deviceId,this.e2eeAccount=e.e2eeAccount,this.deviceMessageHandler=e.deviceMessageHandler,this.handleSASDeviceMessage=this.handleSASDeviceMessage.bind(this),this.deviceMessageHandler.on("message",this.handleSASDeviceMessage)}async load(e){return await this.verifyMSKFrom4S(!1,e)!==0}async start(e){this.isMasterKeyTrusted||await this.verifyMSKFrom4S(!0,e)}async verifyMSKFrom4S(e,t){return await t.wrap("CrossSigning.verifyMSKFrom4S",async s=>{const i=await this.getSigningKey("master");if(!i)return s.set("failure","no_priv_msk"),0;const r=new this.olm.PkSigning;let o;try{o=r.init_with_seed(i)}finally{r.free()}const c=await this.deviceTracker.getCrossSigningKeyForUser(this.ownUserId,"master",e?this.hsApi:void 0,s);if(!c)return s.set("failure","no_pub_msk"),1;const l=c&&Qs(c);return s.set({publishedMasterKey:l,derivedPublicKey:o}),this._isMasterKeyTrusted=!!l&&l===o,this._isMasterKeyTrusted?3:(s.set("failure","mismatch"),2)})}get isMasterKeyTrusted(){return this._isMasterKeyTrusted}startVerification(e,t,s){const i=s!=null?s:t;if(this.sasVerificationInProgress&&!this.sasVerificationInProgress.finished){i.log({sasVerificationAlreadyInProgress:!0});return}const r=e instanceof pr?e.sender:e,o=e instanceof pr?e.startingMessage:void 0;let c;return r===this.ownUserId?c=new fd({deviceTracker:this.deviceTracker,hsApi:this.hsApi,otherUserId:r,clock:this.platform.clock,deviceMessageHandler:this.deviceMessageHandler,ourUserDeviceId:this.deviceId,log:i},o):c=new yd({room:t,otherUserId:r,ourUserId:this.ownUserId,ourUserDeviceId:this.deviceId,log:i},o),this.sasVerificationInProgress=new pd({olm:this.olm,olmUtil:this.olmUtil,ourUserId:this.ownUserId,ourUserDeviceId:this.deviceId,otherUserId:r,log:i,channel:c,e2eeAccount:this.e2eeAccount,deviceTracker:this.deviceTracker,hsApi:this.hsApi,clock:this.platform.clock}),this.sasVerificationInProgress}async handleSASDeviceMessage({unencrypted:e}){!e||e.type!==P.Request&&e.type!==P.Start||await this.platform.logger.run("CrossSigning.handleSASDeviceMessage",async t=>{var c;const s=e.content.transaction_id,i=e.content.from_device,r=e.sender;if(!i||r!==this.ownUserId)return;if(!await this.areWeVerified(t)){const l=await this.deviceTracker.deviceForId(this.ownUserId,i,this.hsApi,t);if(!l||!await this.isOurUserDeviceTrusted(l,t))return}if(((c=this.sasVerificationInProgress)==null?void 0:c.channel.id)!==s)switch(e.type){case P.Cancel:this.receivedSASVerifications.remove(s);return;case P.Request:case P.Start:this.platform.logger.run("Create SASRequest",()=>{this.receivedSASVerifications.set(s,new pr(e))});return;default:return}})}async signOwnDevice(e){return e.wrap("CrossSigning.signOwnDevice",async t=>{if(!this._isMasterKeyTrusted){t.set("mskNotTrusted",!0);return}const s=this.e2eeAccount.getUnsignedDeviceKey();return this.signDeviceKey(s,t)})}async signDevice(e,t){return t.wrap("CrossSigning.signDevice",async s=>{this._isMasterKeyTrusted||s.set("mskNotTrusted",!0);const i=await e.verify()&&this._isMasterKeyTrusted;if(s.set("shouldSign",i),!i)return;const r=e.otherDeviceId;s.set("id",r);const o=await this.deviceTracker.deviceForId(this.ownUserId,r,this.hsApi,s);if(!!o)return delete o.signatures,this.signDeviceKey(o,s)})}async signUser(e,t){return t.wrap("CrossSigning.signUser",async s=>{const i=e.otherUserId;if(s.set("id",i),!this._isMasterKeyTrusted){s.set("mskNotTrusted",!0);return}if(i===this.ownUserId)return;const r=await e.verify();if(s.set("shouldSign",r),!r)return;const o=await this.deviceTracker.getCrossSigningKeyForUser(i,"master",this.hsApi,s);if(!o)return;const c=await this.getSigningKey("user_signing");if(!c)return;delete o.signatures,this.signKey(o,c);const l={[o.user_id]:{[Qs(o)]:o}};return await this.hsApi.uploadSignatures(l,{log:s}).response(),await this.deviceTracker.invalidateUserKeys(i),this.emitUserTrustUpdate(i,s),o})}async isOurUserDeviceTrusted(e,t){return await this.platform.logger.wrapOrRun(t,"CrossSigning.isOurUserDeviceTrusted",async s=>{const i=await this.deviceTracker.getCrossSigningKeyForUser(this.ownUserId,"self_signing",this.hsApi,s);return i?this.hasValidSignatureFrom(e,i,s)===ne.Valid:!1})}areWeVerified(e){return this.platform.logger.wrapOrRun(e,"CrossSigning.areWeVerified",async t=>{const s=await this.deviceTracker.deviceForId(this.ownUserId,this.deviceId,this.hsApi,t);return this.isOurUserDeviceTrusted(s,e)})}getUserTrust(e,t){return t.wrap("CrossSigning.getUserTrust",async s=>{s.set("id",e);const i=f=>(s.set("result",f),f);if(!this.isMasterKeyTrusted)return i(7);const r=await s.wrap("get our msk",f=>this.deviceTracker.getCrossSigningKeyForUser(this.ownUserId,"master",this.hsApi,f));if(!r)return i(7);const o=await s.wrap("get our usk",f=>this.deviceTracker.getCrossSigningKeyForUser(this.ownUserId,"user_signing",this.hsApi,f));if(!o||s.wrap("verify our usk",f=>this.hasValidSignatureFrom(o,r,f))!==ne.Valid)return i(7);const l=await s.wrap("get their msk",f=>this.deviceTracker.getCrossSigningKeyForUser(e,"master",this.hsApi,f));if(!l)return i(2);const h=s.wrap("verify their msk",f=>this.hasValidSignatureFrom(l,o,f));if(h!==ne.Valid)return h===ne.NotSigned?i(2):i(3);const a=await s.wrap("get their ssk",f=>this.deviceTracker.getCrossSigningKeyForUser(e,"self_signing",this.hsApi,f));if(!a||s.wrap("verify their ssk",f=>this.hasValidSignatureFrom(a,l,f))!==ne.Valid)return i(6);const g=(await s.wrap("get their devices",f=>this.deviceTracker.devicesForUsers([e],this.hsApi,f))).reduce((f,v)=>s.wrap({l:"verify device",id:v.device_id},M=>{const R=this.hasValidSignatureFrom(v,a,M);return f===ne.Invalid||R===ne.Invalid?ne.Invalid:f===ne.NotSigned||R===ne.NotSigned?ne.NotSigned:f===ne.Valid||R===ne.Valid?ne.Valid:ne.Invalid}),ne.Valid);return g!==ne.Valid?g===ne.NotSigned?i(4):i(5):i(1)})}dispose(){this.deviceMessageHandler.off("message",this.handleSASDeviceMessage)}observeUserTrust(e,t){const s=this.observedUsers.get(e);if(s)return s;const i=new Ui(void 0,()=>{this.observedUsers.delete(e)});return this.observedUsers.set(e,i),t.wrapDetached("get user trust",async r=>{i.get()===void 0&&i.set(await this.getUserTrust(e,r))}),i}async signDeviceKey(e,t){const s=await this.getSigningKey("self_signing");if(!s)return;this.signKey(e,s);const i={[e.user_id]:{[e.device_id]:e}};return await this.hsApi.uploadSignatures(i,{log:t}).response(),await this.deviceTracker.invalidateUserKeys(this.ownUserId),this.emitUserTrustUpdate(this.ownUserId,t),e}async getSigningKey(e){const t=await this.secretFetcher.getSecret(`m.cross_signing.${e}`);if(t)return new Uint8Array(this.platform.encoding.base64.decode(t))}signKey(e,t){Zh(this.olm,e,t,this.ownUserId,"")}hasValidSignatureFrom(e,t,s){const i=Qs(t);return i?vn(this.olmUtil,t.user_id,i,i,e,s):ne.NotSigned}emitUserTrustUpdate(e,t){const s=this.observedUsers.get(e);s&&s.get()!==void 0&&(s.set(void 0),t.wrapDetached("update user trust",async i=>{s.set(await this.getUserTrust(e,i))}))}}function vd(n){if(!Array.isArray(n.usage)||n.usage.length!==1)return;const e=n.usage[0];if(!(e!=="master"&&e!=="self_signing"&&e!=="user_signing"))return e}const bd="ed25519",Sd=`${bd}:`;function Qs(n){const e=Object.keys(n.keys).filter(i=>i.startsWith(Sd));if(e.length!==1)return;const t=e[0];return n.keys[t]}function _o(n){return n.user_id}var Oa=(n=>(n[n.Outdated=0]="Outdated",n[n.UpToDate=1]="UpToDate",n))(Oa||{});function Pa(n,e){return{userId:n,roomIds:e?[e]:[],keysTrackingStatus:0}}function kd(n,e,t){if(n){if(!n.roomIds.includes(t))return n.roomIds.push(t),n}else return n=Pa(e,t),n}class Id{constructor(e){this._storage=e.storage,this._getSyncToken=e.getSyncToken,this._olmUtil=e.olmUtil,this._ownUserId=e.ownUserId,this._ownDeviceId=e.ownDeviceId}async writeDeviceChanges(e,t,s){const{userIdentities:i}=t;s.set("changed",e.length),await Promise.all(e.map(async r=>{const o=await i.get(r);o&&(s.log({l:"outdated",id:r}),o.keysTrackingStatus=0,i.set(o))}))}async writeMemberChanges(e,t,s,i){const r=[],o=[];return await Promise.all(Array.from(t.values()).map(async c=>{if(Xi(c.membership,s))await this._addRoomToUserIdentity(c.roomId,c.userId,i)&&r.push(c.userId);else if(Xi(c.previousMembership,s)){const{roomId:l}=c;if(c.userId===this._ownUserId){const h=await i.roomMembers.getAllUserIds(l);await Promise.all(h.map(a=>this._removeRoomFromUserIdentity(l,a,i)))}else await this._removeRoomFromUserIdentity(l,c.userId,i);o.push(c.userId)}})),{added:r,removed:o}}async trackRoom(e,t,s){if(e.isTrackingMembers||!e.isEncrypted)return;const i=await e.loadMemberList(void 0,s),r=await this._storage.readWriteTxn([this._storage.storeNames.roomSummary,this._storage.storeNames.userIdentities,this._storage.storeNames.deviceKeys]);try{let o;try{o=e.writeIsTrackingMembers(!0,r);const c=Array.from(i.members.values());s.set("members",c.length),await Promise.all(c.map(async l=>{Xi(l.membership,t)?await this._addRoomToUserIdentity(l.roomId,l.userId,r):await this._removeRoomFromUserIdentity(l.roomId,l.userId,r)}))}catch(c){throw r.abort(),c}await r.complete(),e.applyIsTrackingMembersChanges(o)}finally{i.release()}}async invalidateUserKeys(e){const t=await this._storage.readWriteTxn([this._storage.storeNames.userIdentities]),s=await t.userIdentities.get(e);s&&(s.keysTrackingStatus=0,t.userIdentities.set(s)),await t.complete()}async getCrossSigningKeyForUser(e,t,s,i){return await i.wrap({l:"DeviceTracker.getCrossSigningKeyForUser",id:e,usage:t},async r=>{const o=await this._storage.readTxn([this._storage.storeNames.userIdentities,this._storage.storeNames.crossSigningKeys]),c=await o.userIdentities.get(e);if(c&&c.keysTrackingStatus!==0)return await o.crossSigningKeys.get(e,t);if(!s)return;const l=await this._queryKeys([e],s,r);switch(t){case Et.Master:return l.masterKeys.get(e);case Et.SelfSigning:return l.selfSigningKeys.get(e);case Et.UserSigning:return l.userSigningKeys.get(e)}})}async writeHistoryVisibility(e,t,s,i){const r=[],o=[];return e.isTrackingMembers&&e.isEncrypted&&await i.wrap("rewriting userIdentities",async c=>{const l=await e.loadMemberList(s,c);try{const h=Array.from(l.members.values());c.set("members",h.length),await Promise.all(h.map(async a=>{Xi(a.membership,t)?await this._addRoomToUserIdentity(a.roomId,a.userId,s)&&r.push(a.userId):await this._removeRoomFromUserIdentity(a.roomId,a.userId,s)&&o.push(a.userId)}))}finally{l.release()}}),{added:r,removed:o}}async _addRoomToUserIdentity(e,t,s){const{userIdentities:i}=s,r=await i.get(t),o=kd(r,t,e);return o?(i.set(o),!0):!1}async _removeRoomFromUserIdentity(e,t,s){const{userIdentities:i,deviceKeys:r}=s,o=await i.get(t);return o?(o.roomIds=o.roomIds.filter(c=>c!==e),o.roomIds.length===0?(i.remove(t),r.removeAllForUser(t)):i.set(o),!0):!1}async _queryKeys(e,t,s){const i=await t.queryKeys({timeout:1e4,device_keys:e.reduce((a,u)=>(a[u]=[],a),{}),token:this._getSyncToken()},{log:s}).response(),r=s.wrap("master keys",a=>this._filterVerifiedCrossSigningKeys(i.master_keys,Et.Master,a)),o=s.wrap("self-signing keys",a=>this._filterVerifiedCrossSigningKeys(i.self_signing_keys,Et.SelfSigning,a)),c=s.wrap("user-signing keys",a=>this._filterVerifiedCrossSigningKeys(i.user_signing_keys,Et.UserSigning,a)),l=s.wrap("device keys",a=>this._filterVerifiedDeviceKeys(i.device_keys,a)),h=await this._storage.readWriteTxn([this._storage.storeNames.userIdentities,this._storage.storeNames.deviceKeys,this._storage.storeNames.crossSigningKeys]);try{for(const u of r.values())h.crossSigningKeys.set(u);for(const u of o.values())h.crossSigningKeys.set(u);for(const u of c.values())h.crossSigningKeys.set(u);let a=0;await Promise.all(Array.from(l.keys()).map(async u=>{let p=l.get(u);a+=p.length,p=await this._storeQueriedDevicesForUserId(u,p,h),l.set(u,p)})),s.set("devices",a)}catch(a){throw h.abort(),a}return await h.complete(),{deviceKeys:l,masterKeys:r,selfSigningKeys:o,userSigningKeys:c}}async _storeQueriedDevicesForUserId(e,t,s){const i=await s.deviceKeys.getAllDeviceIds(e);for(const l of i)t.every(h=>h.device_id!==l)&&s.deviceKeys.remove(e,l);const r=[],o=[];await Promise.all(t.map(async l=>{if(i.includes(l.device_id)){const h=await s.deviceKeys.get(l.user_id,l.device_id);if(h&&ks(h)!==ks(l)){r.push(h);return}}r.push(l),o.push(l)}));for(const l of o)s.deviceKeys.set(l);let c=await s.userIdentities.get(e);return c||(c=Pa(e)),c.keysTrackingStatus=1,s.userIdentities.set(c),r}_filterVerifiedCrossSigningKeys(e,t,s){const i=new Map;if(!e)return i;for(const[r,o]of Object.entries(e))s.wrap({l:r},c=>{this._validateCrossSigningKey(r,o,t,c)&&i.set(_o(o),o)});return i}_validateCrossSigningKey(e,t,s,i){return _o(t)!==e?(i.log({l:"user_id mismatch",userId:t.user_id}),!1):vd(t)!==s?(i.log({l:"usage mismatch",usage:t.usage}),!1):Qs(t)?!0:(i.log({l:"no ed25519 key",keys:t.keys}),!1)}_filterVerifiedDeviceKeys(e,t){const s=new Set,i=new Map;if(!e)return i;for(const[r,o]of Object.entries(e))t.wrap(r,c=>{const h=Object.entries(o).filter(([a,u])=>c.wrap(a,p=>{if(this._validateDeviceKey(r,a,u,p)){const g=_t(u);return s.has(g)?(t.log({l:"ignore device with duplicate curve25519 key",keys:u},t.level.Warn),!1):(s.add(g),!0)}else return!1})).map(([,a])=>a);i.set(r,h)});return i}_validateDeviceKey(e,t,s,i){const r=s.device_id,o=s.user_id;if(o!==e)return i.log("user_id mismatch"),!1;if(r!==t)return i.log("device_id mismatch"),!1;const c=ks(s),l=_t(s);if(typeof c!="string"||typeof l!="string")return i.log("ed25519 and/or curve25519 key invalid").set({deviceKey:s}),!1;const h=vn(this._olmUtil,o,r,c,s,i)===ne.Valid;return h||i.log({l:"ignore device with invalid signature",keys:s},i.level.Warn),h}async devicesForTrackedRoom(e,t,s){const i=await this._storage.readTxn([this._storage.storeNames.roomMembers,this._storage.storeNames.userIdentities]),r=await i.roomMembers.getAllUserIds(e);return await this._devicesForUserIdsInTrackedRoom(e,r,i,t,s)}async devicesForRoomMembers(e,t,s,i){const r=await this._storage.readTxn([this._storage.storeNames.userIdentities]);return await this._devicesForUserIdsInTrackedRoom(e,t,r,s,i)}async devicesForUsers(e,t,s){const i=await this._storage.readTxn([this._storage.storeNames.userIdentities]),r=[],o=[];return await Promise.all(e.map(async c=>{const l=await i.userIdentities.get(c);l&&l.keysTrackingStatus===1?r.push(l):(!l||l.keysTrackingStatus===0)&&o.push(c)})),this._devicesForUserIdentities(r,o,t,s)}async deviceForId(e,t,s,i){var h;const o=await(await this._storage.readTxn([this._storage.storeNames.userIdentities])).userIdentities.get(e);if((o==null?void 0:o.keysTrackingStatus)!==1){const{deviceKeys:a}=await this._queryKeys([e],s,i);return a.get(e).find(g=>g.device_id===t)}let l=await(await this._storage.readTxn([this._storage.storeNames.deviceKeys])).deviceKeys.get(e,t);if(l)i.set("existingDevice",!0);else{const a=await s.queryKeys({timeout:1e4,device_keys:{[e]:[t]},token:this._getSyncToken()},{log:i}).response(),p=(h=i.wrap("verify",v=>this._filterVerifiedDeviceKeys(a.device_keys,v)).get(e))==null?void 0:h.find(v=>v.device_id===t);if(!p)return;const g=await this._storage.readWriteTxn([this._storage.storeNames.deviceKeys]),f=await g.deviceKeys.get(e,t);if(f)l=f,i.set("existingDeviceAfterFetch",!0);else{try{g.deviceKeys.set(p),l=p,i.set("newDevice",!0)}catch(v){throw g.abort(),v}await g.complete()}}return l}async deviceForCurveKey(e,t,s,i){const r=await this._storage.readTxn([this._storage.storeNames.deviceKeys,this._storage.storeNames.userIdentities]),o=await r.userIdentities.get(e);if((o==null?void 0:o.keysTrackingStatus)!==1){const{deviceKeys:l}=await this._queryKeys([e],s,i);return l.get(e).find(u=>_t(u)===t)}return await r.deviceKeys.getByCurve25519Key(t)}async _devicesForUserIdsInTrackedRoom(e,t,s,i,r){const c=(await Promise.all(t.map(u=>s.userIdentities.get(u)))).filter(u=>u&&u.roomIds.includes(e)),l=c.filter(u=>u.keysTrackingStatus===1),h=c.filter(u=>u.keysTrackingStatus===0).map(u=>u.userId);let a=await this._devicesForUserIdentities(l,h,i,r);return a=a.filter(u=>!(u.user_id===this._ownUserId&&u.device_id===this._ownDeviceId)),a}async _devicesForUserIdentities(e,t,s,i){i.set("uptodate",e.length),i.set("outdated",t.length);let r;if(t.length){const{deviceKeys:h}=await this._queryKeys(t,s,i);r=h}const o=await this._storage.readTxn([this._storage.storeNames.deviceKeys]);let l=(await Promise.all(e.map(h=>o.deviceKeys.getAllForUserId(h.userId)))).reduce((h,a)=>h.concat(a),[]);if(r&&r.size)for(const h of r.values())l=l.concat(h);return l}async getDeviceByCurve25519Key(e,t){return await t.deviceKeys.getByCurve25519Key(e)}get ownDeviceId(){return this._ownDeviceId}}const Fa=[Cd,Ed,Rd,Td,Ad,xd,Vd,Nd,Dd,Ud,Od,Pd,Fd,Ld,Kd,Bd,$d,jd,qd];function Md(n){return{databaseName:n.name,get idbFactory(){throw new Error("unused")},get IDBKeyRange(){throw new Error("unused")},addWriteError(){}}}function Cd(n){n.createObjectStore("session",{keyPath:"key"}),n.createObjectStore("roomSummary",{keyPath:"roomId"}),n.createObjectStore("timelineFragments",{keyPath:"key"}),n.createObjectStore("timelineEvents",{keyPath:"key"}).createIndex("byEventId","eventIdKey",{unique:!0}),n.createObjectStore("roomState",{keyPath:"key"}),n.createObjectStore("pendingEvents",{keyPath:"key"})}async function Ed(n,e){const t=new Ta(n.createObjectStore("roomMembers",{keyPath:"key"})),s=e.objectStore("roomState");await _e(s.openCursor(),i=>{if(i.event.type===Ke){s.delete(i.key);const r=Q.fromMemberEvent(i.roomId,i.event);r&&t.set(r.serialize())}return Lt})}async function Rd(n,e,t){const s=e.objectStore("session");try{const r=await Me(s.get(1));if(r){s.delete(1);const{syncToken:o,syncFilterId:c,serverVersions:l}=r.value,h=new Mn(s,t);h.set("sync",{token:o,filterId:c}),h.set("serverVersions",l)}}catch(i){e.abort(),console.error("could not migrate session",i.stack)}}function Td(n){n.createObjectStore("userIdentities",{keyPath:"userId"}),n.createObjectStore("deviceIdentities",{keyPath:"key"}).createIndex("byCurve25519Key","curve25519Key",{unique:!0}),n.createObjectStore("olmSessions",{keyPath:"key"}),n.createObjectStore("inboundGroupSessions",{keyPath:"key"}),n.createObjectStore("outboundGroupSessions",{keyPath:"roomId"}),n.createObjectStore("groupSessionDecryptions",{keyPath:"key"}),n.createObjectStore("operations",{keyPath:"id"}).createIndex("byTypeAndScope","typeScopeKey",{unique:!1})}async function Ad(n,e){var r;const t=e.objectStore("roomSummary"),s=e.objectStore("roomState"),i=[];await _e(t.openCursor(),o=>(i.push(o),Lt));for(const o of i){const c=await Me(s.get(`${o.roomId}|m.room.encryption|`));c&&(o.encryption=(r=c==null?void 0:c.event)==null?void 0:r.content,delete o.isEncrypted,t.put(o))}}function xd(n){n.createObjectStore("accountData",{keyPath:"type"})}function Vd(n){n.createObjectStore("invites",{keyPath:"roomId"})}function Nd(n){n.createObjectStore("archivedRoomSummary",{keyPath:"summary.roomId"})}async function Dd(n,e){try{const t=e.objectStore("operations");t.deleteIndex("byTypeAndScope"),await _e(t.openCursor(),(s,i,r)=>{const{typeScopeKey:o}=s;delete s.typeScopeKey;const[c,l]=o.split("|");return s.scopeTypeKey=Ci(l,c),r.update(s),Lt}),t.createIndex("byScopeAndType","scopeTypeKey",{unique:!1})}catch(t){e.abort(),console.error("could not migrate operations",t.stack)}}function Ud(n){n.createObjectStore("timelineRelations",{keyPath:"key"})}function Od(){}async function Pd(n,e){const t=e.objectStore("session"),s=await Me(t.get("ssssKey"));s&&t.put({key:`${Oe}ssssKey`,value:s.value})}async function Fd(n,e,t,s){const i=e.objectStore("session"),r=new Mn(new Ma(i,Md(n)),t);r.writeE2EEIdentityToLocalStorage();const o=await r.tryRestoreE2EEIdentityFromLocalStorage(s);s.set("restored",o)}async function Ld(n,e){for(const t of n.objectStoreNames){const s=e.objectStore(t);switch(t){case"inboundGroupSessions":case"outboundGroupSessions":case"olmSessions":case"operations":continue;case"session":{await _e(s.openCursor(),(i,r,o)=>(r.startsWith(Oe)||o.delete(),Lt));break}default:{s.clear();break}}}}async function Kd(n,e,t,s){e.objectStore("inboundGroupSessions").createIndex("byBackup","backup",{unique:!1})}async function Bd(n,e,t,s){const i=e.objectStore("inboundGroupSessions");let r=0,o=0;await _e(i.openCursor(),(c,l,h)=>(c.session?(c.backup=Vr.NotBackedUp,c.source=Hi.DeviceMessage,h.update(c),r+=1):o+=1,Lt)),s.set("countWithoutSession",o),s.set("countWithSession",r)}function $d(n){n.createObjectStore("calls",{keyPath:"key"})}async function jd(n,e,t,s){n.createObjectStore("crossSigningKeys",{keyPath:"key"}),n.deleteObjectStore("deviceIdentities"),n.createObjectStore("deviceKeys",{keyPath:"key"}).createIndex("byCurve25519Key","curve25519Key",{unique:!0});const r=e.objectStore("userIdentities");let o=0;await _e(r.openCursor(),(c,l,h)=>(delete c.deviceTrackingStatus,delete c.crossSigningKeys,c.keysTrackingStatus=Oa.Outdated,h.update(c),o+=1,Lt)),s.set("marked_outdated",o)}function qd(n){n.createObjectStore("sharedSecrets",{keyPath:"key"})}async function Hd(n){const e="hydrogen_webkit_test_inactive_txn_bug";try{const t=await In(e,r=>{r.createObjectStore("test",{keyPath:"key"})},1,n),s=t.transaction(["test"],"readonly");await Me(s.objectStore("test").get("somekey")),await new Promise(r=>setTimeout(r,0));const i=t.transaction(["test"],"readwrite");await Promise.resolve(),i.objectStore("test").add({key:"somekey",value:"foo"}),await Pi(i),t.close()}catch(t){if(t.name==="TransactionInactiveError")return!0}return!1}const La=n=>`hydrogen_session_${n}`,$r=function(n,e,t,s){const i=(r,o,c,l)=>Gd(r,o,c,l,t,s);return In(La(n),i,Fa.length,e)};async function Wd(){var e,t;const n=this;if((t=(e=n==null?void 0:n.navigator)==null?void 0:e.storage)!=null&&t.persist)return await n.navigator.storage.persist();if(n!=null&&n.document.requestStorageAccess)try{return await n.document.requestStorageAccess(),!0}catch(s){return console.warn("requestStorageAccess threw an error:",s),!1}else return!1}class zd{constructor(e,t=window.indexedDB,s=window.IDBKeyRange,i=window.localStorage){this._serviceWorkerHandler=e,this._idbFactory=t,this._IDBKeyRange=s,this._localStorage=i}async create(e,t){var r;await((r=this._serviceWorkerHandler)==null?void 0:r.preventConcurrentSessionAccess(e)),Wd().then(o=>{o||t.log("no persisted storage, database can be evicted by browser",t.level.Warn)});const s=await Hd(this._idbFactory),i=await $r(e,this._idbFactory,this._localStorage,t);return new Jh(i,this._idbFactory,this._IDBKeyRange,s,this._localStorage,t.logger)}async delete(e){const t=La(e);try{kh(this._localStorage,t)}catch{}try{const s=this._idbFactory.deleteDatabase(t);await Me(s)}catch{}}async export(e,t){const s=await $r(e,this._idbFactory,this._localStorage,t);return await Qh(s)}async import(e,t,s){const i=await $r(e,this._idbFactory,this._localStorage,s);return await Xh(i,t)}}async function Gd(n,e,t,s,i,r){const o=t||0;return r.wrap({l:"storage migration",oldVersion:t,version:s},async c=>{for(let l=o;lh(n,e,i,a))}})}class Ka{constructor({roomId:e,ownUserId:t,fragmentIdComparer:s}){this._roomId=e,this._ownUserId=t,this._fragmentIdComparer=s}async writeRelation(e,t,s){const{relatedEventId:i}=e;if(i){const r=Xt(e.event);r&&r.rel_type&&t.timelineRelations.add(this._roomId,r.event_id,r.rel_type,e.id);const o=await t.timelineEvents.getByEventId(this._roomId,i);if(o){const c=await this._applyRelation(e,o,t,s);if(c)return c.map(l=>(t.timelineEvents.update(l),new Ye(l,this._fragmentIdComparer)))}}return null}async writeGapRelation(e,t,s,i){const r=new Ye(e,this._fragmentIdComparer),o=await this.writeRelation(r,s,i);if(t.isBackward&&!Xr(e.event)){const c=await s.timelineRelations.getAllForTarget(this._roomId,r.id);if(c.length)for(const l of c){const h=await s.timelineEvents.getByEventId(this._roomId,l.sourceEventId);if(h){const a=new Ye(h,this._fragmentIdComparer);await this._applyRelation(a,e,s,i)}}}return o}async _applyRelation(e,t,s,i){if(e.eventType===gt)return i.wrap("redact",async r=>{const o=t.event,c=Xt(o);if(this._applyRedaction(e.event,t,s,r)){const h=[t];if(c){const a=await this._reaggregateRelation(o,c,s,r);a&&h.push(a)}return h}return null});{const r=Xt(e.event);if(r&&!Xr(t.event)&&r.rel_type===ss&&i.wrap("react",l=>this._aggregateAnnotation(e.event,t,l)))return[t]}return null}_applyRedaction(e,t,s,i){const r=t.event;i.set("redactionId",e.event_id),i.set("id",r.event_id);const o=Xt(r);return o&&o.rel_type&&s.timelineRelations.remove(this._roomId,o.event_id,o.rel_type,r.event_id),s.timelineRelations.removeAllForTarget(this._roomId,r.event_id),uh(e,r),delete t.annotations,!0}_aggregateAnnotation(e,t){const s=Xt(e);if(!s)return!1;let{annotations:i}=t;i||(t.annotations=i={});let r=i[s.key];r||(i[s.key]=r={count:0,me:!1,firstTimestamp:Number.MAX_SAFE_INTEGER});const o=e.sender===this._ownUserId;return r.me=r.me||o,r.count+=1,r.firstTimestamp=Math.min(r.firstTimestamp,e.origin_server_ts),!0}async _reaggregateRelation(e,t,s,i){return t.rel_type===ss?i.wrap("reaggregate annotations",r=>this._reaggregateAnnotation(t.event_id,t.key,s,r)):null}async _reaggregateAnnotation(e,t,s,i){const r=await s.timelineEvents.getByEventId(this._roomId,e);if(!r||!r.annotations)return null;i.set("id",e);const o=await s.timelineRelations.getForTargetAndType(this._roomId,e,ss);return i.set("relations",o.length),delete r.annotations[t],Yd(r.annotations)&&delete r.annotations,await Promise.all(o.map(async c=>{const l=await s.timelineEvents.getByEventId(this._roomId,c.sourceEventId);l||i.log({l:"missing annotation",id:c.sourceEventId}),Xt(l.event).key===t&&this._aggregateAnnotation(l.event,r,i)})),r}}function Yd(n){for(const e in n)if(n.hasOwnProperty(e))return!1;return!0}class Kt{constructor(e){this.isForward=e}get isBackward(){return!this.isForward}asApiString(){return this.isForward?"f":"b"}reverse(){return this.isForward?Kt.Backward:Kt.Forward}static get Forward(){return Jd}static get Backward(){return Qd}}const Jd=new Kt(!0),Qd=new Kt(!1);class it extends fa{constructor(e,t,s){super(s),this._fragment=e,this._isFragmentStart=t}static start(e,t){return new it(e,!0,t)}static end(e,t){return new it(e,!1,t)}get started(){return this._isFragmentStart}get hasEnded(){return!this.started}get fragment(){return this._fragment}get fragmentId(){return this._fragment.id}get entryIndex(){return this.started?ce.minStorageKey:ce.maxStorageKey}get isGap(){return!!this.token&&!this.edgeReached}get token(){return this.started?this.fragment.previousToken:this.fragment.nextToken}set token(e){this.started?this.fragment.previousToken=e:this.fragment.nextToken=e}get edgeReached(){return this.started?this.fragment.startReached:this.fragment.endReached}set edgeReached(e){this.started?this.fragment.startReached=e:this.fragment.endReached=e}get linkedFragmentId(){return this.started?this.fragment.previousId:this.fragment.nextId}set linkedFragmentId(e){this.started?this.fragment.previousId=e:this.fragment.nextId=e}get hasLinkedFragment(){return Sn(this.linkedFragmentId)}get direction(){return this.started?Kt.Backward:Kt.Forward}withUpdatedFragment(e){return new it(e,this._isFragmentStart,this._fragmentIdComparer)}createNeighbourEntry(e){return new it(e,!this._isFragmentStart,this._fragmentIdComparer)}addLocalRelation(){}removeLocalRelation(){}}function Xd(n){const e=new Set;return n.filter(t=>e.has(t.event_id)?!1:(e.add(t.event_id),!0))}class Zd{constructor({roomId:e,fragmentIdComparer:t,memberWriter:s,relationWriter:i}){this._roomId=e,this._memberWriter=s,this._relationWriter=i,this._fragmentIdComparer=t,this._lastLiveKey=null}async load(e,t){const s=await e.timelineFragments.liveFragment(this._roomId);if(s){const[i]=await e.timelineEvents.lastEvents(this._roomId,s.id,1),r=i?i.eventIndex:pe.defaultLiveKey.eventIndex;this._lastLiveKey=new pe(s.id,r)}this._lastLiveKey&&t.set("live key",this._lastLiveKey.toString())}async _createLiveFragment(e,t){const s=await e.timelineFragments.liveFragment(this._roomId);if(s)return s;{t||(t=null);const i={roomId:this._roomId,id:pe.defaultLiveKey.fragmentId,previousId:null,nextId:null,previousToken:t,nextToken:null};return e.timelineFragments.add(i),this._fragmentIdComparer.add(i),i}}async _replaceLiveFragment(e,t,s,i){const r=await i.timelineFragments.get(this._roomId,e);if(!r)throw new Error(`old live fragment doesn't exist: ${e}`);r.nextId=t,i.timelineFragments.update(r);const o={roomId:this._roomId,id:t,previousId:e,nextId:null,previousToken:s,nextToken:null};return i.timelineFragments.add(o),this._fragmentIdComparer.append(t,e),{oldFragment:r,newFragment:o}}async _ensureLiveFragment(e,t,s,i,r){if(e){if(s.limited){const o=e.fragmentId;e=e.nextFragmentKey();const{oldFragment:c,newFragment:l}=await this._replaceLiveFragment(o,e.fragmentId,s.prev_batch,i);t.push(it.end(c,this._fragmentIdComparer)),t.push(it.start(l,this._fragmentIdComparer)),r.log({l:"live fragment",limited:!0,id:e.fragmentId})}}else{let o=await this._createLiveFragment(i,s.prev_batch);e=new pe(o.id,pe.defaultLiveKey.eventIndex),t.push(it.start(o,this._fragmentIdComparer)),r.log({l:"live fragment",first:!0,id:e.fragmentId})}return e}async _writeStateEvents(e,t,s){let i=0;for(const r of e)r.type!==Ke&&(t.roomState.set(this._roomId,r),i+=1);s.set("stateEvents",i)}async _writeTimeline(e,t,s,i,r,o){const c=[],l=[];if(e!=null&&e.length){i=await this._ensureLiveFragment(i,c,t,r,o),o.set("timelineEvents",e.length);let h=0;for(const a of e){i=i.nextKey();const u=Sa(i,this._roomId,a);let p=await s.lookupMemberAtEvent(a.sender,a,r);if(p&&(u.displayName=p.displayName,u.avatarUrl=p.avatarUrl),!await r.timelineEvents.tryInsert(u,o))continue;const f=new Ye(u,this._fragmentIdComparer);c.push(f);const v=await this._relationWriter.writeRelation(f,r,o);v&&l.push(...v),typeof a.state_key=="string"&&a.type!==Ke&&(h+=1,r.roomState.set(this._roomId,a))}o.set("timelineStateEventCount",h)}return{currentKey:i,entries:c,updatedEntries:l}}async _handleRejoinOverlap(e,t,s){if(this._lastLiveKey){const{fragmentId:i}=this._lastLiveKey,[r]=await t.timelineEvents.lastEvents(this._roomId,i,1);if(r){const o=r.event.event_id,{events:c}=e,l=c.findIndex(h=>h.event_id===o);if(l!==-1)return s.set("overlap_event_id",o),Object.assign({},e,{limited:!1,events:c.slice(l+1)})}}return e.limited?e:(s.set("force_limited_without_overlap",!0),Object.assign({},e,{limited:!0}))}async writeSync(e,t,s,i,r){let{timeline:o}=e;r.set("isRejoin",t),t&&(o=await this._handleRejoinOverlap(o,i,r));let c;Array.isArray(o==null?void 0:o.events)&&(c=Xd(o.events));const{state:l}=e;let h;Array.isArray(l==null?void 0:l.events)&&(h=l.events);const a=this._memberWriter.prepareMemberSync(h,c,s);h&&await this._writeStateEvents(h,i,r);const{currentKey:u,entries:p,updatedEntries:g}=await this._writeTimeline(c,o,a,this._lastLiveKey,i,r),f=await a.write(i);return{entries:p,updatedEntries:g,newLiveKey:u,memberChanges:f,memberSync:a}}afterSync(e){this._lastLiveKey=e}get lastMessageKey(){return this._lastLiveKey}}class Ba{constructor(e){this.limit=e,this._entries=[]}get size(){return this._entries.length}_get(e){return this._getByIndexAndMoveUp(this._entries.findIndex(e))}_getByIndexAndMoveUp(e){if(e!==-1){const t=this._entries[e];return e>0&&(this._entries.splice(e,1),this._entries.unshift(t)),t}}_set(e,t){let s=t?this._entries.findIndex(t):-1;this._entries.unshift(e),s===-1?this._entries.length>this.limit&&(s=this._entries.length-1):s+=1,s!==-1&&(this.onEvictEntry(this._entries[s]),this._entries.splice(s,1))}onEvictEntry(e){}}class $a extends Ba{constructor(e,t){super(e),this._keyFn=t}get(e){return this._get(t=>this._keyFn(t)===e)}set(e){const t=this._keyFn(e);this._set(e,s=>this._keyFn(s)===t)}}class eu{constructor(e){this._roomId=e,this._cache=new $a(5,t=>t.userId)}prepareMemberSync(e,t,s){return new tu(this,e,t,s)}async _writeMember(e,t){let s=this._cache.get(e.userId);if(!s){const i=await t.roomMembers.get(this._roomId,e.userId);i&&(s=new Q(i))}if(!s||!s.equals(e))return t.roomMembers.set(e.serialize()),this._cache.set(e),new ka(e,s==null?void 0:s.membership)}async lookupMember(e,t){let s=this._cache.get(e);if(!s){const i=await t.roomMembers.get(this._roomId,e);i&&(s=new Q(i),this._cache.set(s))}return s}}class tu{constructor(e,t,s,i){this._memberWriter=e,this._timelineEvents=s,this._hasFetchedMembers=i,this._newStateMembers=null,t&&(this._newStateMembers=this._stateEventsToMembers(t))}get _roomId(){return this._memberWriter._roomId}_stateEventsToMembers(e){let t;for(const s of e)if(s.type===Ke){const i=Q.fromMemberEvent(this._roomId,s);i&&(t||(t=new Map),t.set(i.userId,i))}return t}_timelineEventsToMembers(e){let t;for(let s=e.length-1;s>=0;s--){const i=e[s],r=i.state_key;if(i.type===Ke&&!(t!=null&&t.has(r))){const o=Q.fromMemberEvent(this._roomId,i);o&&(t||(t=new Map),t.set(o.userId,o))}}return t}async lookupMemberAtEvent(e,t,s){var r;let i;return this._timelineEvents&&(i=this._findPrecedingMemberEventInTimeline(e,t),i)||(i=(r=this._newStateMembers)==null?void 0:r.get(e),i)?i:await this._memberWriter.lookupMember(e,s)}async write(e){const t=new Map;let s;if(this._timelineEvents&&(s=this._timelineEventsToMembers(this._timelineEvents)),this._newStateMembers){for(const i of this._newStateMembers.values())if(!(s!=null&&s.has(i.userId))){const r=await this._memberWriter._writeMember(i,e);r&&(!this._hasFetchedMembers&&!r.previousMembership&&(r.previousMembership=i.membership),t.set(r.userId,r))}}if(s)for(const i of s.values()){const r=await this._memberWriter._writeMember(i,e);r&&t.set(r.userId,r)}return t}_findPrecedingMemberEventInTimeline(e,t){let s=-1;for(let i=this._timelineEvents.length-1;i>=0;i--)if(this._timelineEvents[i].event_id===t.event_id){s=i;break}for(let i=s-1;i>=0;i--){const r=this._timelineEvents[i];if(r.type===Ke&&r.state_key===e){const o=Q.fromMemberEvent(this._roomId,r);if(o)return o}}}}class su{constructor({roomId:e,storage:t,fragmentIdComparer:s,relationWriter:i}){this._roomId=e,this._storage=t,this._fragmentIdComparer=s,this._relationWriter=i}async _findOverlappingEvents(e,t,s,i){const r=t.map(h=>h.event_id),o=await s.timelineEvents.getEventKeysForIds(this._roomId,r);i.set("existingEvents",o.size);const c=t.filter(h=>!o.has(h.event_id));i.set("nonOverlappingEvents",c.length);let l;if(e.hasLinkedFragment){i.set("linkedFragmentId",e.linkedFragmentId);for(const h of o.values())if(h.fragmentId===e.linkedFragmentId){i.set("foundLinkedFragment",!0);const a=await s.timelineFragments.get(this._roomId,e.linkedFragmentId);l=e.createNeighbourEntry(a);break}}return{nonOverlappingEvents:c,neighbourFragmentEntry:l}}async _findFragmentEdgeEventKey(e,t){const{fragmentId:s,direction:i}=e,r=await this._findFragmentEdgeEvent(s,i,t);return r?new pe(r.fragmentId,r.eventIndex):pe.defaultFragmentKey(e.fragmentId)}async _findFragmentEdgeEvent(e,t,s){if(t.isBackward){const[i]=await s.timelineEvents.firstEvents(this._roomId,e,1);return i}else{const[i]=await s.timelineEvents.lastEvents(this._roomId,e,1);return i}}async _storeEvents(e,t,s,i,r,o){const c=[],l=[];let h=t;for(let a=0;a=0&&h=0&&hnew Ye(u,i));if(o=lh(o,a,t),o.length{const c=await this._storage.readTxn(this.readTxnStores);return await this._readFrom(e,t,s,r,c,o)},i)}readFromEnd(e,t=null,s){return new po(async(i,r)=>{const o=t||await this._storage.readTxn(this.readTxnStores),c=await o.timelineFragments.liveFragment(this._roomId);let l;if(!c)l=[];else{this._fragmentIdComparer.add(c);const h=it.end(c,this._fragmentIdComparer),a=h.asEventKey();l=await this._readFrom(a,Kt.Backward,e,i,o,r),l.unshift(h)}return l},s)}async readById(e,t){let s=[this._storage.storeNames.timelineEvents];this._decryptEntries&&s.push(this._storage.storeNames.inboundGroupSessions);const i=await this._storage.readTxn(s),r=await i.timelineEvents.getByEventId(this._roomId,e);if(r){const o=new Ye(r,this._fragmentIdComparer);return this._decryptEntries&&await this._decryptEntries([o],i,t).complete(),o}}async _readFrom(e,t,s,i,r,o){const c=await iu(this._roomId,e,t,s,this._fragmentIdComparer,r);if(this._decryptEntries){i.decryptRequest=this._decryptEntries(c,r,o);try{await i.decryptRequest.complete()}finally{i.decryptRequest=null}}return c}}class ru extends Ye{get fragmentId(){throw new Error("Cannot access fragmentId for non-persisted EventEntry")}get entryIndex(){throw new Error("Cannot access entryIndex for non-persisted EventEntry")}get isNonPersisted(){return!0}get isRedacting(){return!1}get isRedacted(){return super.isRedacting}}class qa{constructor(e){this._retentionCount=1,this._freeCallback=e}retain(){this._retentionCount+=1}release(){this._retentionCount-=1,this._retentionCount===0&&this._freeCallback()}}class nu{constructor(e){this._userId=e}get id(){return this._userId}}class Mr extends qa{constructor({roomId:e,storage:t,closeCallback:s,fragmentIdComparer:i,pendingEvents:r,clock:o,powerLevelsObservable:c,hsApi:l}){super(()=>{this.dispose()}),this._roomId=e,this._storage=t,this._closeCallback=s,this._fragmentIdComparer=i,this._disposables=new li,this._pendingEvents=r,this._clock=o,this._remoteEntries=new fn((h,a)=>h.compare(a)),this._ownMember=null,this._timelineReader=new ja({roomId:this._roomId,storage:this._storage,fragmentIdComparer:this._fragmentIdComparer}),this._readerRequest=null,this._allEntries=null,this._contextEntriesNotInTimeline=new Map,this._decryptEntries=null,this._hsApi=l,this.initializePowerLevels(c)}initializePowerLevels(e){e&&(this._powerLevels=e.get(),this._disposables.track(e.subscribe(t=>this._powerLevels=t)))}async load(e,t,s){const i=await this._storage.readTxn(this._timelineReader.readTxnStores.concat(this._storage.storeNames.roomMembers,this._storage.storeNames.roomState)),r=await i.roomMembers.get(this._roomId,e.id);r?this._ownMember=new Q(r):this._ownMember=Q.fromUserId(this._roomId,e.id,t);const o=this._disposables.track(this._timelineReader.readFromEnd(20,i,s));try{const c=await o.complete();this._loadContextEntriesWhereNeeded(c),this._setupEntries(c)}finally{this._disposables.disposeTracked(o)}}_setupEntries(e){this._remoteEntries.setManySorted(e),this._pendingEvents?this._localEntries=new ul(this._pendingEvents,t=>this._mapPendingEventToEntry(t),(t,s)=>{t.notifyUpdate(s)},t=>this._applyAndEmitLocalRelationChange(t,s=>s.removeLocalRelation(t))):this._localEntries=new gn,this._allEntries=new ca(this._remoteEntries,this._localEntries)}async _mapPendingEventToEntry(e){let t;e.eventType===gt&&(t=await this._getOrLoadEntry(e.relatedTxnId,e.relatedEventId));const s=new ah({pendingEvent:e,member:this._ownMember,clock:this._clock,redactingEntry:t});return this._loadContextEntriesWhereNeeded([s]),this._applyAndEmitLocalRelationChange(s,i=>i.addLocalRelation(s)),s}_applyAndEmitLocalRelationChange(e,t){var i,r;const s=o=>{const c=t(o);return c||!1};if(this._findAndUpdateEntryById(e.pendingEvent.relatedTxnId,e.relatedEventId,s),e.redactingEntry){const o=(i=e.redactingEntry.pendingEvent)==null?void 0:i.relatedTxnId;this._findAndUpdateEntryById(o,e.redactingEntry.relatedEventId,s),(r=e.redactingEntry.contextForEntries)==null||r.forEach(c=>this._emitUpdateForEntry(c,"contextEntry"))}}_findAndUpdateEntryById(e,t,s){let i=!1;e&&(i=this._localEntries.findAndUpdate(r=>r.id===e,s)),!i&&t&&this._remoteEntries.findAndUpdate(r=>r.id===t,s)}async getOwnAnnotationEntry(e,t){const s=await this._storage.readWriteTxn([this._storage.storeNames.timelineEvents,this._storage.storeNames.timelineRelations]),i=await s.timelineRelations.getForTargetAndType(this._roomId,e,ss);for(const r of i){const o=await s.timelineEvents.getByEventId(this._roomId,r.sourceEventId);if(o&&o.event.sender===this._ownMember.userId&&Xt(o.event).key===t){const c=new Ye(o,this._fragmentIdComparer);return this._addLocalRelationsToNewRemoteEntries([c]),c}}return null}updateOwnMember(e){this._ownMember=e}_addLocalRelationsToNewRemoteEntries(e){var t;if(!!((t=this._localEntries)!=null&&t.hasSubscriptions))for(const s of this._localEntries){if(s.relatedEventId){const i=e.find(r=>r.id===s.relatedEventId);i==null||i.addLocalRelation(s)}if(s.redactingEntry){const i=s.redactingEntry.relatedEventId,r=e.find(o=>o.id===i);r==null||r.addLocalRelation(s)}}}static _entryUpdater(e,t){var s;return(s=e.contextForEntries)==null||s.forEach(i=>i.setContextEntry(t)),t.updateFrom(e),t}replaceEntries(e){var t;this._addLocalRelationsToNewRemoteEntries(e);for(const s of e)try{this._remoteEntries.getAndUpdate(s,Mr._entryUpdater);const i=this._contextEntriesNotInTimeline.get(s.id);i&&(Mr._entryUpdater(i,s),this._contextEntriesNotInTimeline.set(s.id,s)),(t=s.contextForEntries)==null||t.forEach(r=>this._emitUpdateForEntry(r,"contextEntry"))}catch(i){if(i.name==="CompareError")continue;throw i}}addEntries(e){this._addLocalRelationsToNewRemoteEntries(e),this._updateEntriesFetchedFromHomeserver(e),this._moveEntryToRemoteEntries(e),this._loadContextEntriesWhereNeeded(e),this._remoteEntries.setManySorted(e)}_updateEntriesFetchedFromHomeserver(e){var t;for(const s of e){const i=this._contextEntriesNotInTimeline.get(s.relatedEventId);(i==null?void 0:i.isNonPersisted)&&(i==null?void 0:i.addLocalRelation(s))&&((t=i.contextForEntries)==null||t.forEach(r=>this._emitUpdateForEntry(r,"contextEntry")))}}_moveEntryToRemoteEntries(e){for(const t of e){const s=this._contextEntriesNotInTimeline.get(t.id);s&&(s.contextForEntries.forEach(i=>{i.setContextEntry(t),this._emitUpdateForEntry(i,"contextEntry")}),this._contextEntriesNotInTimeline.delete(t.id))}}_emitUpdateForEntry(e,t){const s=e.isPending?e.id:null,i=e.isPending?null:e.id;this._findAndUpdateEntryById(s,i,()=>t)}async _loadContextEntriesWhereNeeded(e){for(const t of e){if(!t.contextEventId)continue;const s=t.contextEventId;let i=e.find(r=>r.id===s);i||(i=this._findLoadedEventById(s)),i?(t.setContextEntry(i),this._emitUpdateForEntry(i,"context-added")):this._loadContextEntryNotInTimeline(t)}}async _loadContextEntryNotInTimeline(e){const t=e.contextEventId;let s=await this._getEventFromStorage(t);s||(s=await this._getEventFromHomeserver(t)),s&&(this._contextEntriesNotInTimeline.set(t,s),e.setContextEntry(s),this._emitUpdateForEntry(e,"contextEntry"))}_findLoadedEventById(e){var t;return(t=this.getByEventId(e))!=null?t:this._contextEntriesNotInTimeline.get(e)}async _getEventFromStorage(e){return await this._timelineReader.readById(e)}async _getEventFromHomeserver(e){const t=await this._hsApi.context(this._roomId,e,0).response(),s=t.event.sender,i=t.state.find(c=>c.type===Ke&&c.user_id===s),r={event:t.event,displayName:i.content.displayname,avatarUrl:i.content.avatar_url},o=new ru(r,this._fragmentIdComparer);return this._decryptEntries&&await this._decryptEntries([o]).complete(),o}async loadAtTop(e){if(this._disposables.isDisposed)return!0;const t=this._remoteEntries.array.find(i=>!!i.eventType);if(!t)return!0;const s=this._disposables.track(this._timelineReader.readFrom(t.asEventKey(),Kt.Backward,e));try{const i=await s.complete();return this.addEntries(i),i.lengthnew Q(i))}async function au({summary:n,syncToken:e,roomId:t,hsApi:s,storage:i,setChangedMembersMap:r},o){const c=new Map;r(c);const l=await s.members(t,{at:e},{log:o}).response(),h=await i.readWriteTxn([i.storeNames.roomSummary,i.storeNames.roomMembers]);let a,u;try{a=n.writeHasFetchedMembers(!0,h);const{roomMembers:p}=h,g=l.chunk;if(!Array.isArray(g))throw new Error("malformed");o.set("members",g.length),u=await Promise.all(g.map(async f=>{const v=f==null?void 0:f.state_key;if(!v)throw new Error("malformed");const M=c.get(v);if(M)return M;{const R=Q.fromMemberEvent(t,f);return R&&p.set(R.serialize()),R}}))}catch(p){throw h.abort(),p}finally{r(null)}return await h.complete(),n.applyChanges(a),u}async function cu(n,e){const{summary:t}=n;return t.data.hasFetchedMembers?ou(n):e.wrapOrRun(n.log,"fetchMembers",s=>au(n,s))}async function lu(n,e){const t=await hu(n),{summary:s}=n;return!s.data.hasFetchedMembers&&!t?e.wrapOrRun(n.log,"fetchMember",i=>du(n,i)):t}async function hu({roomId:n,userId:e,storage:t}){const i=await(await t.readTxn([t.storeNames.roomMembers])).roomMembers.get(n,e);return i?new Q(i):null}async function du({roomId:n,userId:e,hsApi:t,storage:s},i){let r;try{r=await t.state(n,"m.room.member",e,{log:i}).response()}catch(l){if(l.name==="HomeServerError"&&l.errcode==="M_NOT_FOUND")return null;throw l}const o=new Q({roomId:n,userId:e,membership:r.membership,avatarUrl:r.avatar_url,displayName:r.displayname}),c=await s.readWriteTxn([s.storeNames.roomMembers]);try{c.roomMembers.set(o.serialize())}catch(l){throw c.abort(),l}return await c.complete(),o}class uu extends qa{constructor({members:e,closeCallback:t}){super(t),this._members=new Dt;for(const s of e)this._members.add(s.userId,s)}afterSync(e){for(const[t,s]of e.entries())this._members.set(t,s.member)}get members(){return this._members}}function tn(n,e,t){const s=e.joinCount+e.inviteCount-1;if(n.length>=s)if(n.length>1){const i=n[n.length-1];return n.slice(0,n.length-1).map(o=>o.name).join(", ")+" and "+i.name}else{const i=n[0];return i?i.name:(t.log({l:"could get get other member name",length:n.length,otherMember:!!i,otherMemberMembership:i==null?void 0:i.membership}),"Unknown DM Name")}else return n.lengthi.name).join(", ")+` and ${s} others`:null}class Rn{constructor(e){this._roomId=e,this._members=new Map}async calculateChanges(e,t,s){const i=new Map,r=[];for(const o of this._members.keys())e.indexOf(o)===-1&&r.push(o);for(const[o,c]of t.entries())(this._members.has(o)||e.indexOf(o)!==-1)&&i.set(o,c.member);for(const o of e)if(!this._members.has(o)&&!i.has(o)){const c=await s.roomMembers.get(this._roomId,o);if(c){const l=new Q(c);i.set(l.userId,l)}}return{updatedHeroMembers:i.values(),removedUserIds:r}}applyChanges({updatedHeroMembers:e,removedUserIds:t},s,i){for(const o of t)this._members.delete(o);for(const o of e)t.includes(o.userId)||this._members.set(o.userId,o);const r=Array.from(this._members.values()).sort((o,c)=>o.name.localeCompare(c.name));this._roomName=tn(r,s,i)}get roomName(){return this._roomName}get roomAvatarUrl(){if(this._members.size===1)for(const e of this._members.values())return e.avatarUrl;return null}get roomAvatarColorId(){if(this._members.size===1)for(const e of this._members.keys())return e;return null}}class mu{constructor(e){this._map=new Map,this._notifyEmpty=e}observe(e,t=null){let s=this._map.get(e);return s||(s=new _u(this,t,e),this._map.set(e,s)),s}updateEvents(e){for(let t=0;t{this.hasSubscriptions||(this._eventMap._remove(this._id),this._eventMap=null)})}subscribe(e){if(!this._eventMap)throw new Error("ObservedEvent expired, subscribe right after calling room.observeEvent()");return super.subscribe(e)}onUnsubscribeLast(){this._eventMap._remove(this._id),this._eventMap=null,super.onUnsubscribeLast()}update(e){this._entry=e,this.emit(this._entry)}get(){return this._entry}}function pu(n){return n||Eh.item}const gu="m.room.power_levels",fu=50;class gr{constructor({powerLevelEvent:e,createEvent:t,ownUserId:s,membership:i}){this._plEvent=e,this._createEvent=t,this._ownUserId=s,this._membership=i}canRedactFromSender(e){return e===this._ownUserId&&this._membership==="join"?!0:this.canRedact}canSendType(e){return this._myLevel>=this._getEventTypeLevel(e)}get canRedact(){return this._myLevel>=this._getActionLevel("redact")}get _myLevel(){return this._membership!=="join"?Number.MIN_SAFE_INTEGER:this.getUserLevel(this._ownUserId)}getUserLevel(e){var t,s,i,r;if(this._plEvent){let o=(s=(t=this._plEvent.content)==null?void 0:t.users)==null?void 0:s[e];if(typeof o!="number"&&(o=(i=this._plEvent.content)==null?void 0:i.users_default),typeof o=="number")return o}else if(this._createEvent&&e===((r=this._createEvent.content)==null?void 0:r.creator))return 100;return 0}_getActionLevel(e){var s,i;const t=(i=(s=this._plEvent)==null?void 0:s.content)==null?void 0:i[e];return typeof t=="number"?t:fu}_getEventTypeLevel(e){var s,i,r,o,c;const t=(r=(i=(s=this._plEvent)==null?void 0:s.content)==null?void 0:i.events)==null?void 0:r[e];if(typeof t=="number")return t;{const l=(c=(o=this._plEvent)==null?void 0:o.content)==null?void 0:c.events_default;return typeof l=="number"?l:0}}}class yu extends Dt{constructor(e){super(),this.type=e}async load(e,t){const s=await t.roomState.getAllForType(e,this.type);for(let i=0;i{this._roomStateObservers.delete(e)})}async _eventIdsToEntries(e,t){const s=[];return await Promise.all(e.map(async i=>{const r=await t.timelineEvents.getByEventId(this._roomId,i);r&&s.push(new Ye(r,this._fragmentIdComparer))})),s}_getAdditionalTimelineRetryEntries(e,t){let s=this._roomEncryption.filterUndecryptedEventEntriesForKeys(this._timeline.remoteEntries,t);const i=e.reduce((r,o)=>(r.add(o.id),r),new Set);return s=s.filter(r=>!i.has(r.id)),s}async notifyRoomKey(e,t,s){var o;if(!this._roomEncryption)return;const i=await this._storage.readTxn([this._storage.storeNames.timelineEvents,this._storage.storeNames.inboundGroupSessions]);let r=await this._eventIdsToEntries(t,i);if(this._timeline){const c=this._getAdditionalTimelineRetryEntries(r,[e]);r=r.concat(c)}if(r.length){await this._decryptEntries(ts.Retry,r,i,s).complete(),(o=this._timeline)==null||o.replaceEntries(r);const l=this._summary.data.applyTimelineEntries(r,!1,!1);await this._summary.writeAndApplyData(l,this._storage)&&this._emitUpdate()}}_setEncryption(e){return e&&!this._roomEncryption?(this._roomEncryption=e,this._timeline&&this._timeline.enableEncryption(this._decryptEntries.bind(this,ts.Timeline)),!0):!1}_decryptEntries(e,t,s,i=null){return new bu(async(o,c)=>{if(s||(s=await this._storage.readTxn([this._storage.storeNames.inboundGroupSessions])),o.cancelled)return;const l=t.filter(f=>f.eventType===vu).map(f=>f.event);if(o.preparation=await this._roomEncryption.prepareDecryptAll(l,null,e,s),o.cancelled)return;const h=await o.preparation.decrypt();if(o.preparation=null,o.cancelled)return;const a=[this._storage.storeNames.groupSessionDecryptions],u=this._isTimelineOpen;u&&a.push(this._storage.storeNames.deviceKeys);const p=await this._storage.readWriteTxn(a);let g;try{g=await h.write(p,c),u&&await g.verifyKnownSenders(p)}catch(f){throw p.abort(),f}await p.complete(),g.applyToEntries(t),this._observedEvents&&this._observedEvents.updateEvents(t),u&&g.hasUnverifiedSenders&&c.wrapDetached("fetch unknown senders keys",async f=>{var R,N;const v=await g.fetchAndVerifyRemainingSenders(this._hsApi,f),M=[];v.applyToEntries(t,F=>M.push(F)),(R=this._timeline)==null||R.replaceEntries(M),(N=this._observedEvents)==null||N.updateEvents(M)})},pu(i))}async _getSyncRetryDecryptEntries(e,t,s){let r=(await Promise.all(e.map(async o=>{const c=await t.getEventIdsForMissingKey(o,s);if(c)return this._eventIdsToEntries(c,s)}))).reduce((o,c)=>c?o.concat(c):o,[]);if(this._timeline){const c=this._getAdditionalTimelineRetryEntries(r,e).map(l=>l.clone());r=r.concat(c)}return r}async load(e,t,s){s.set("id",this.id);try{if(e&&this._summary.load(e),this._summary.data.encryption){const i=this._createRoomEncryption(this,this._summary.data.encryption);this._setEncryption(i)}if(this._summary.data.needsHeroes){this._heroes=new Rn(this._roomId);const i=await this._heroes.calculateChanges(this._summary.data.heroes,[],t);this._heroes.applyChanges(i,this._summary.data,s)}}catch(i){throw new ha(`Could not load room ${this._roomId}`,i)}}async observeMember(e){this._observedMembers||(this._observedMembers=new Map);const t=this._observedMembers.get(e);if(t)return t;const s=await lu({summary:this._summary,roomId:this._roomId,userId:e,storage:this._storage,hsApi:this._hsApi},this._platform.logger);if(!s)return null;const i=new Ui(s,()=>this._observedMembers.delete(e));return this._observedMembers.set(e,i),i}async loadMemberList(e=void 0,t=null){if(this._memberList)return this._memberList.retain(),this._memberList;{const s=await cu({summary:this._summary,roomId:this._roomId,hsApi:this._hsApi,storage:this._storage,txn:e,syncToken:this._getSyncToken(),setChangedMembersMap:i=>this._changedMembersDuringSync=i,log:t},this._platform.logger);return this._memberList=new uu({members:s,closeCallback:()=>{this._memberList=null}}),this._memberList}}fillGap(e,t,s=null){return this._platform.logger.wrapOrRun(s,"fillGap",async i=>{if(i.set("id",this.id),i.set("fragment",e.fragmentId),i.set("dir",e.direction.asApiString()),e.edgeReached){i.set("edgeReached",!0);return}const r=await this._hsApi.messages(this._roomId,{from:e.token,dir:e.direction.asApiString(),limit:t,filter:{lazy_load_members:!0,include_redundant_members:!0}},{log:i}).response(),o=await this._storage.readWriteTxn([this._storage.storeNames.pendingEvents,this._storage.storeNames.timelineEvents,this._storage.storeNames.timelineRelations,this._storage.storeNames.timelineFragments]);let c,l;try{c=await this._writeGapFill(r.chunk,o,i);const h=new Ka({roomId:this._roomId,fragmentIdComparer:this._fragmentIdComparer,ownUserId:this._user.id});l=await new su({roomId:this._roomId,storage:this._storage,fragmentIdComparer:this._fragmentIdComparer,relationWriter:h}).writeFragmentFill(e,r,e.token,o,i)}catch(h){throw o.abort(),h}await o.complete(),this._roomEncryption&&await this._decryptEntries(ts.Timeline,l.entries,null,i).complete();for(const h of l.fragments)this._fragmentIdComparer.add(h);c&&this._applyGapFill(c),this._timeline&&(this._timeline.replaceEntries(l.updatedEntries),this._timeline.addEntries(l.entries))})}async _writeGapFill(e,t,s){}_applyGapFill(){}get name(){if(this._heroes)return this._heroes.roomName;const e=this._summary.data;return e.name?e.name:e.canonicalAlias?e.canonicalAlias:null}get id(){return this._roomId}get avatarUrl(){return this._summary.data.avatarUrl?this._summary.data.avatarUrl:this._heroes?this._heroes.roomAvatarUrl:null}get avatarColorId(){return this._roomId}get lastMessageTimestamp(){return this._summary.data.lastMessageTimestamp}get isLowPriority(){const e=this._summary.data.tags;return!!(e&&e["m.lowpriority"])}get isEncrypted(){return!!this._summary.data.encryption}get isJoined(){return this.membership==="join"}get isLeft(){return this.membership==="leave"}get canonicalAlias(){return this._summary.data.canonicalAlias}get joinedMemberCount(){return this._summary.data.joinCount}get mediaRepository(){return this._mediaRepository}get membership(){return this._summary.data.membership}get user(){return this._user}isDirectMessageForUserId(e){if(this._summary.data.dmUserId===e)return!0;{const{heroes:t,joinCount:s,inviteCount:i}=this._summary.data;if(t&&t.includes(e)&&s+i===2)return!0}return!1}async _loadPowerLevels(){const e=await this._storage.readTxn([this._storage.storeNames.roomState]),t=await e.roomState.get(this._roomId,"m.room.power_levels","");if(t)return new gr({powerLevelEvent:t.event,ownUserId:this._user.id,membership:this.membership});const s=await e.roomState.get(this._roomId,"m.room.create","");if(s)return new gr({createEvent:s.event,ownUserId:this._user.id,membership:this.membership});{const i=this.membership;return new gr({ownUserId:this._user.id,membership:i})}}async observePowerLevels(){this._powerLevelLoading&&await this._powerLevelLoading;let e=this._powerLevels;if(!e){this._powerLevelLoading=this._loadPowerLevels();const t=await this._powerLevelLoading;e=new Ui(t,()=>{this._powerLevels=null}),this._powerLevels=e,this._powerLevelLoading=null}return e}enableKeyBackup(e){var t;(t=this._roomEncryption)==null||t.enableKeyBackup(e),this._timeline&&e&&this._platform.logger.run("enableKeyBackup",s=>this._roomEncryption.restoreMissingSessionsFromBackup(this._timeline.remoteEntries,s))}get _isTimelineOpen(){return!!this._timeline}_emitUpdate(){this.emit("change"),this._emitCollectionChange(this)}async openTimeline(e=null){return await this._platform.logger.wrapOrRun(e,"open timeline",async t=>{this._timelineLoadPromise&&await this._timelineLoadPromise;let s;if(this._timelineLoadPromise=new Promise(i=>{s=()=>{this._timelineLoadPromise=null,i()}}),t.set("id",this.id),this._timeline)return t.log({l:"Returning existing timeline"}),s(),this._timeline.retain(),this._timeline;this._timeline=new Mr({roomId:this.id,storage:this._storage,fragmentIdComparer:this._fragmentIdComparer,pendingEvents:this._getPendingEvents(),closeCallback:()=>{this._timeline=null,this._roomEncryption&&this._roomEncryption.notifyTimelineClosed()},clock:this._platform.clock,logger:this._platform.logger,powerLevelsObservable:await this.observePowerLevels(),hsApi:this._hsApi});try{this._roomEncryption&&this._timeline.enableEncryption(this._decryptEntries.bind(this,ts.Timeline)),await this._timeline.load(this._user,this.membership,t)}catch(i){throw this._timeline.dispose(),i}finally{s()}return this._timeline.retain(),this._timeline})}_getPendingEvents(){return null}observeEvent(e){this._observedEvents||(this._observedEvents=new mu(()=>{this._observedEvents=null}));let t=null;this._timeline&&(t=this._timeline.getByEventId(e));const s=this._observedEvents.observe(e,t);return t||this._readEventById(e).then(i=>{s.update(i)}).catch(i=>{console.warn(`could not load event ${e} from storage`,i)}),s}async _readEventById(e){return await new ja({roomId:this._roomId,storage:this._storage,fragmentIdComparer:this._fragmentIdComparer}).readById(e)}dispose(){var e;(e=this._roomEncryption)==null||e.dispose()}}class bu{constructor(e,t){this._cancelled=!1,this.preparation=null,this._promise=t.wrap("decryptEntries",s=>e(this,s))}complete(){return this._promise}get cancelled(){return this._cancelled}dispose(){this._cancelled=!0,this.preparation&&this.preparation.dispose()}}class Su{constructor({roomId:e,storage:t,hsApi:s,pendingEvents:i}){i=i||[],this._roomId=e,this._storage=t,this._hsApi=s,this._pendingEvents=new fn((r,o)=>r.queueIndex-o.queueIndex),this._pendingEvents.setManyUnsorted(i.map(r=>this._createPendingEvent(r))),this._isSending=!1,this._offline=!1,this._roomEncryption=null,this._currentQueueIndex=0}_createPendingEvent(e,t=null){const s=new ch({data:e,remove:()=>this._removeEvent(s),emitUpdate:i=>this._pendingEvents.update(s,i),attachments:t});return s}enableEncryption(e){this._roomEncryption=e}_sendLoop(e){this._isSending=!0,this._sendLoopLogItem=e.runDetached("send queue flush",async t=>{try{for(const s of this._pendingEvents)await t.wrap("send event",async i=>{i.set("queueIndex",s.queueIndex);try{this._currentQueueIndex=s.queueIndex,await this._sendEvent(s,i)}catch(r){r instanceof Ut?(this._offline=!0,i.set("offline",!0),s.setWaiting()):(i.catch(r),r.name==="HomeServerError"&&(r.statusCode===400||r.statusCode===403||r.statusCode===404)?(i.set("remove",!0),await s.abort()):s.setError(r))}finally{this._currentQueueIndex=0}})}finally{this._isSending=!1,this._sendLoopLogItem=null}})}async _sendEvent(e,t){if(e.needsUpload&&(await t.wrap("upload attachments",s=>e.uploadAttachments(this._hsApi,s)),await this._tryUpdateEvent(e)),e.needsEncryption){e.setEncrypting();const s=e.contentForEncryption,{type:i,content:r}=await t.wrap("encrypt",o=>this._roomEncryption.encrypt(e.eventType,s,this._hsApi,o));e.setEncrypted(i,r),await this._tryUpdateEvent(e)}if(e.needsSending){await e.send(this._hsApi,t);const s=await this._storage.readWriteTxn([this._storage.storeNames.pendingEvents]);try{await this._tryUpdateEventWithTxn(e,s),await this._resolveRemoteIdInPendingRelations(e.txnId,e.remoteId,s)}catch(i){throw s.abort(),i}await s.complete()}}async _resolveRemoteIdInPendingRelations(e,t,s){const i=this._pendingEvents.array.filter(r=>r.relatedTxnId===e&&r.relatedEventId!==t);for(const r of i)r.setRelatedEventId(t),await this._tryUpdateEventWithTxn(r,s);return i}async removeRemoteEchos(e,t,s){const i=[];for(const r of e){const o=r.unsigned&&r.unsigned.transaction_id;let c;if(o?c=this._pendingEvents.array.findIndex(l=>l.txnId===o):c=this._pendingEvents.array.findIndex(l=>l.remoteId===r.event_id),c!==-1){const l=this._pendingEvents.get(c),h=r.event_id;s.log({l:"removeRemoteEcho",queueIndex:l.queueIndex,remoteId:h,txnId:o}),t.pendingEvents.remove(l.roomId,l.queueIndex),i.push(l),await this._resolveRemoteIdInPendingRelations(o,h,t)}}return i}async _removeEvent(e){if(this._pendingEvents.array.indexOf(e)!==-1){const s=await this._storage.readWriteTxn([this._storage.storeNames.pendingEvents]);try{s.pendingEvents.remove(e.roomId,e.queueIndex)}catch{s.abort()}await s.complete();const i=this._pendingEvents.array.indexOf(e);i!==-1&&this._pendingEvents.remove(i)}e.dispose()}emitRemovals(e){for(const t of e){const s=this._pendingEvents.array.indexOf(t);s!==-1&&this._pendingEvents.remove(s),t.dispose()}}resumeSending(e){this._offline=!1,this._pendingEvents.length&&e.wrap("resumeSending",t=>{t.set("id",this._roomId),t.set("pendingEvents",this._pendingEvents.length),this._isSending||this._sendLoop(t),this._sendLoopLogItem&&t.refDetached(this._sendLoopLogItem)})}async enqueueEvent(e,t,s,i){const r=rs(t);let o=null;if(r){const c=bn(r);if(mo(c)&&(o=c,wa(r,null)),r.rel_type===ss&&this._pendingEvents.array.some(h=>{const a=rs(h.content);return h.eventType===e&&a&&a.key===r.key&&(h.relatedTxnId===o||a.event_id===r.event_id)})){i.set("already_annotating",!0);return}}return await this._enqueueEvent(e,t,s,o,null,i)}async _enqueueEvent(e,t,s,i,r,o){const c=await this._createAndStoreEvent(e,t,i,r,s);return this._pendingEvents.set(c),o.set("queueIndex",c.queueIndex),o.set("pendingEvents",this._pendingEvents.length),!this._isSending&&!this._offline&&this._sendLoop(o),this._sendLoopLogItem&&o.refDetached(this._sendLoopLogItem),c}async enqueueRedaction(e,t,s){if(this._pendingEvents.array.some(c=>c.eventType===gt&&(c.relatedTxnId===e||c.relatedEventId===e))){s.set("already_redacting",!0);return}let r,o;if(mo(e)){r=e;const c=e,l=this._pendingEvents.array.find(h=>h.txnId===c);if(l&&!l.remoteId&&l.status!==X.Sending){s.set("remove",r),await l.abort();return}else if(l)o=l.remoteId;else return}else{o=e;const c=this._pendingEvents.array.find(l=>l.remoteId===o);c&&(r=c.txnId)}s.set("relatedTxnId",r),s.set("relatedEventId",o),await this._enqueueEvent(gt,{reason:t},null,r,o,s)}get pendingEvents(){return this._pendingEvents}async _tryUpdateEvent(e){const t=await this._storage.readWriteTxn([this._storage.storeNames.pendingEvents]);try{this._tryUpdateEventWithTxn(e,t)}catch(s){throw t.abort(),s}await t.complete()}async _tryUpdateEventWithTxn(e,t){await t.pendingEvents.exists(e.roomId,e.queueIndex)&&t.pendingEvents.update(e.data)}async _createAndStoreEvent(e,t,s,i,r){const o=await this._storage.readWriteTxn([this._storage.storeNames.pendingEvents]);let c;try{const l=o.pendingEvents,h=await l.getMaxQueueIndex(this._roomId)||0,u=Math.max(h,this._currentQueueIndex)+1,p=e!==gt&&e!==Zl&&!!this._roomEncryption;c=this._createPendingEvent({roomId:this._roomId,queueIndex:u,eventType:e,content:t,relatedTxnId:s,relatedEventId:i,txnId:Pe(),needsEncryption:p,needsUpload:!!r},r),l.add(c.data)}catch(l){throw o.abort(),l}return await o.complete(),c}dispose(){for(const e of this._pendingEvents)e.dispose()}}class Wa{constructor({filename:e,blob:t,platform:s}){this._filename=e,this._unencryptedBlob=t,this._transferredBlob=this._unencryptedBlob,this._platform=s,this._mxcUrl=null,this._encryptionInfo=null,this._uploadRequest=null,this._aborted=!1,this._error=null,this._sentBytes=0}get size(){return this._transferredBlob.size}get sentBytes(){return this._sentBytes}abort(){var e;(e=this._uploadRequest)==null||e.abort()}get localPreview(){return this._unencryptedBlob}async encrypt(){if(this._encryptionInfo)throw new Error("already encrypted");const{info:e,blob:t}=await Vl(this._platform,this._transferredBlob);this._transferredBlob=t,this._encryptionInfo=e}async upload(e,t,s){this._uploadRequest=e.uploadAttachment(this._transferredBlob,this._filename,{uploadProgress:r=>{this._sentBytes=r,t()},log:s});const{content_uri:i}=await this._uploadRequest.response();this._mxcUrl=i}applyToContent(e,t){if(!this._mxcUrl)throw new Error("upload has not finished");let s=e.substr(0,e.lastIndexOf("url"));ar(`${s}info.size`,t,this._transferredBlob.size),ar(`${s}info.mimetype`,t,this._unencryptedBlob.mimeType),this._encryptionInfo?ar(`${s}file`,t,Object.assign(this._encryptionInfo,{mimetype:this._unencryptedBlob.mimeType,url:this._mxcUrl})):ar(`${s}url`,t,this._mxcUrl)}dispose(){this._unencryptedBlob.dispose(),this._transferredBlob.dispose()}}function ar(n,e,t){const s=n.split(".");let i=e;for(let o=0;op.event)))),u=u.filter(p=>(p==null?void 0:p.type)===ku),u.length&&(h=await c.prepareDecryptAll(u,s,ts.Sync,i))}return{roomEncryption:c,summaryChanges:o,decryptPreparation:h,decryptChanges:null,retryEntries:l}}async afterPrepareSync(e,t){e.decryptPreparation&&await t.wrap("decrypt",async s=>{s.set("id",this.id),e.decryptChanges=await e.decryptPreparation.decrypt(),e.decryptPreparation=null},t.level.Detail)}async writeSync(e,t,{summaryChanges:s,decryptChanges:i,roomEncryption:r,retryEntries:o},c,l){var D;l.set("id",this.id);const h=s.isNewJoin(this._summary.data);h&&(c.roomState.removeAllForRoom(this.id),c.roomMembers.removeAllForRoom(this.id));const{entries:a,updatedEntries:u,newLiveKey:p,memberChanges:g,memberSync:f}=await l.wrap("syncWriter",B=>this._syncWriter.writeSync(e,h,s.hasFetchedMembers,c,B),l.level.Detail);let v;i&&(v=await l.wrap("decryptChanges",B=>i.write(c,B)),l.set("decryptionResults",v.results.size),l.set("decryptionErrors",v.errors.size),this._isTimelineOpen&&await v.verifyKnownSenders(c),v.applyToEntries(a),o!=null&&o.length&&(v.applyToEntries(o),u.push(...o))),l.set("newEntries",a.length),l.set("updatedEntries",u.length);let M;r&&(M=await r.writeSync(e,g,c,l),l.set("shouldFlushKeyShares",M.shouldFlush));const R=a.concat(u);s=s.applyTimelineEntries(R,t,!this._isTimelineOpen,this._user.id),s.membership!=="join"?c.roomSummary.remove(this.id):s=this._summary.writeData(s,c),s&&l.set("summaryChanges",s.changedKeys(this._summary.data));let N;s!=null&&s.needsHeroes&&(this._heroes||(this._heroes=new Rn(this._roomId)),N=await this._heroes.calculateChanges(s.heroes,g,c));let F;Array.isArray((D=e.timeline)==null?void 0:D.events)&&(F=await this._sendQueue.removeRemoteEchos(e.timeline.events,c,l));const T=this._getPowerLevelsEvent(e);return await this._runRoomStateHandlers(e,f,c,l),{roomResponse:e,summaryChanges:s,roomEncryption:r,newEntries:a,updatedEntries:u,newLiveKey:p,removedPendingEvents:F,memberChanges:g,heroChanges:N,powerLevelsEvent:T,encryptionChanges:M,decryption:v}}afterSync(e,t){const{summaryChanges:s,newEntries:i,updatedEntries:r,newLiveKey:o,removedPendingEvents:c,memberChanges:l,powerLevelsEvent:h,heroChanges:a,roomEncryption:u,roomResponse:p,encryptionChanges:g}=e;if(t.set("id",this.id),this._syncWriter.afterSync(o),this._setEncryption(u),this._roomEncryption&&this._roomEncryption.afterSync(g),l.size){if(this._changedMembersDuringSync)for(const[v,M]of l.entries())this._changedMembersDuringSync.set(v,M.member);if(this._memberList&&this._memberList.afterSync(l),this._roomStateHandler.updateRoomMembers(this,l),this._observedMembers&&this._updateObservedMembers(l),this._timeline){for(const[v,M]of l.entries())if(v===this._user.id){this._timeline.updateOwnMember(M.member);break}}}let f=!1;if(s&&(this._summary.applyChanges(s),this._summary.data.needsHeroes||(this._heroes=null),f=!0),this._heroes&&a){const v=this.name;this._heroes.applyChanges(a,this._summary.data,t),v!==this.name&&(f=!0)}h&&this._updatePowerLevels(h),f&&this._emitUpdate(),this._timeline&&(this._timeline.replaceEntries(r),this._timeline.addEntries(i)),this._observedEvents&&(this._observedEvents.updateEvents(r),this._observedEvents.updateEvents(i)),c&&this._sendQueue.emitRemovals(c),this._emitSyncRoomState(p)}_updateObservedMembers(e){for(const[t,s]of e){const i=this._observedMembers.get(t);i&&i.set(s.member)}}_getPowerLevelsEvent(e){let t;return Js(e,s=>{s.state_key===""&&s.type===gu&&(t=s)}),t}_updatePowerLevels(e){if(this._powerLevels){const t=new gr({powerLevelEvent:e,ownUserId:this._user.id,membership:this.membership});this._powerLevels.set(t)}}async afterSyncCompleted({encryptionChanges:e,decryption:t,newEntries:s,updatedEntries:i},r){const o=e==null?void 0:e.shouldFlush,c=this._isTimelineOpen&&(t==null?void 0:t.hasUnverifiedSenders);(o||c)&&await r.wrap({l:"room",id:this.id},async l=>{const h=[];if(o&&h.push(this._roomEncryption.flushPendingRoomKeyShares(this._hsApi,null,l)),c){const a=l.wrap("verify senders",async u=>{var v,M;const p=await t.fetchAndVerifyRemainingSenders(this._hsApi,u),g=[],f=R=>g.push(R);p.applyToEntries(s,f),p.applyToEntries(i,f),u.set("verifiedEntries",g.length),(v=this._timeline)==null||v.replaceEntries(g),(M=this._observedEvents)==null||M.updateEvents(g)});h.push(a)}await Promise.all(h)})}start(e,t){if(this._roomEncryption){const s=e==null?void 0:e.get("share_room_key");s&&t.wrapDetached("flush room keys",i=>(i.set("id",this.id),this._roomEncryption.flushPendingRoomKeyShares(this._hsApi,s,i)))}this._sendQueue.resumeSending(t)}async load(e,t,s){try{await super.load(e,t,s),await this._syncWriter.load(t,s)}catch(i){throw new ha(`Could not load room ${this._roomId}`,i)}}async _writeGapFill(e,t,s){return await this._sendQueue.removeRemoteEchos(e,t,s)}_applyGapFill(e){this._sendQueue.emitRemovals(e)}sendEvent(e,t,s,i=null){return this._platform.logger.wrapOrRun(i,"send",r=>(r.set("id",this.id),this._sendQueue.enqueueEvent(e,t,s,r)))}sendRedaction(e,t,s=null){return this._platform.logger.wrapOrRun(s,"redact",i=>(i.set("id",this.id),this._sendQueue.enqueueRedaction(e,t,i)))}async ensureMessageKeyIsShared(e=null){if(!!this._roomEncryption)return this._platform.logger.wrapOrRun(e,"ensureMessageKeyIsShared",t=>(t.set("id",this.id),this._roomEncryption.ensureMessageKeyIsShared(this._hsApi,t)))}get avatarColorId(){var e;return((e=this._heroes)==null?void 0:e.roomAvatarColorId)||this._roomId}get isUnread(){return this._summary.data.isUnread}get notificationCount(){return this._summary.data.notificationCount}get highlightCount(){return this._summary.data.highlightCount}get isTrackingMembers(){return this._summary.data.isTrackingMembers}async _getLastEventId(){var t;const e=this._syncWriter.lastMessageKey;if(e){const i=await(await this._storage.readTxn([this._storage.storeNames.timelineEvents])).timelineEvents.get(this._roomId,e);return(t=i==null?void 0:i.event)==null?void 0:t.event_id}}async clearUnread(e=null,t=!0){if(this.isUnread||this.notificationCount)return await this._platform.logger.wrapOrRun(e,"clearUnread",async s=>{s.set("id",this.id);const i=await this._storage.readWriteTxn([this._storage.storeNames.roomSummary]);let r;try{r=this._summary.writeClearUnread(i)}catch(o){throw i.abort(),o}await i.complete(),this._summary.applyChanges(r),this._emitUpdate();try{const o=t&&await this._getLastEventId();o&&await this._hsApi.receipt(this._roomId,"m.read",o)}catch(o){if(o.name!=="ConnectionError")throw o}})}leave(e=null){return this._platform.logger.wrapOrRun(e,"leave room",async t=>{t.set("id",this.id),await this._hsApi.leave(this.id,{log:t}).response()})}async inviteUser(e,t){if(!e)throw new Error("userId is null/undefined");await this._hsApi.invite(this.id,e,t).response()}_getPendingEvents(){return this._sendQueue.pendingEvents}_runRoomStateHandlers(e,t,s,i){const r=[];return Js(e,o=>{r.push(this._roomStateHandler.handleRoomState(this,o,t,s,i))}),Promise.all(r)}_emitSyncRoomState(e){Js(e,t=>{for(const s of this._roomStateObservers)s.handleStateEvent(t)})}writeIsTrackingMembers(e,t){return this._summary.writeIsTrackingMembers(e,t)}applyIsTrackingMembersChanges(e){this._summary.applyChanges(e)}createAttachment(e,t){return new Wa({blob:e,filename:t,platform:this._platform})}dispose(){super.dispose(),this._sendQueue.dispose()}}class Mu extends Ha{constructor(e){super(e),this._releaseCallback=e.releaseCallback,this._forgetCallback=e.forgetCallback,this._retentionCount=1,this._kickDetails=null,this._kickedBy=null}retain(){this._retentionCount+=1}release(){this._retentionCount-=1,this._retentionCount===0&&this._releaseCallback()}async _getKickAuthor(e,t){const s=await t.roomMembers.get(this.id,e);return s?new Q(s):Q.fromUserId(this.id,e,"join")}async load(e,t,s){const{summary:i,kickDetails:r}=e;return this._kickDetails=r,this._kickDetails&&(this._kickedBy=await this._getKickAuthor(this._kickDetails.sender,t)),super.load(i,t,s)}async writeSync(e,t,s,i,r){if(r.set("id",this.id),s==="leave"){const o=Cu(t,this._user.id);if(o||e){const c=o||this._kickDetails;let l;o&&(l=await this._getKickAuthor(o.sender,i));const h=e||this._summary.data;return i.archivedRoomSummary.set({summary:h.serialize(),kickDetails:c}),{kickDetails:c,kickedBy:l,summaryData:h}}}else s==="join"&&i.archivedRoomSummary.remove(this.id);return{}}afterSync({summaryData:e,kickDetails:t,kickedBy:s},i){i.set("id",this.id),e&&this._summary.applyChanges(e),t&&(this._kickDetails=t),s&&(this._kickedBy=s),this._emitUpdate()}get isKicked(){var e;return((e=this._kickDetails)==null?void 0:e.membership)==="leave"}get isBanned(){var e;return((e=this._kickDetails)==null?void 0:e.membership)==="ban"}get kickedBy(){return this._kickedBy}get kickReason(){var e;return(e=this._kickDetails)==null?void 0:e.reason}isArchived(){return!0}forget(e=null){return this._platform.logger.wrapOrRun(e,"forget room",async t=>{t.set("id",this.id),await this._hsApi.forget(this.id,{log:t}).response();const s=this._storage.storeNames,i=await this._storage.readWriteTxn([s.roomState,s.archivedRoomSummary,s.roomMembers,s.timelineEvents,s.timelineFragments,s.timelineRelations,s.pendingEvents,s.inboundGroupSessions,s.groupSessionDecryptions,s.operations]);i.roomState.removeAllForRoom(this.id),i.archivedRoomSummary.remove(this.id),i.roomMembers.removeAllForRoom(this.id),i.timelineEvents.removeAllForRoom(this.id),i.timelineFragments.removeAllForRoom(this.id),i.timelineRelations.removeAllForRoom(this.id),i.pendingEvents.removeAllForRoom(this.id),i.inboundGroupSessions.removeAllForRoom(this.id),i.groupSessionDecryptions.removeAllForRoom(this.id),await i.operations.removeAllForScope(this.id),await i.complete(),this._retentionCount=0,this._releaseCallback(),this._forgetCallback(this.id)})}join(e=null){return this._platform.logger.wrapOrRun(e,"rejoin archived room",async t=>{await this._hsApi.join(this.id,{log:t}).response()})}}function Cu(n,e){var s,i;let t;if(Js(n,r=>{r.type===Ke&&r.state_key===e&&r.sender!==r.state_key&&(t=r)}),t)return{membership:(s=t.content)==null?void 0:s.membership,reason:(i=t.content)==null?void 0:i.reason,sender:t.sender}}async function Eu(n,e,t){const s=await Promise.all(n.map(async i=>{const r=await e.profile(i,{log:t}).response();return new Ru(i,r.displayname,r.avatar_url)}));return s.sort((i,r)=>i.name.localeCompare(r.name)),s}class Ru{constructor(e,t,s){this.userId=e,this.displayName=t,this.avatarUrl=s}get name(){return this.displayName||this.userId}}class Tu{constructor(e){this.userId=e}get displayName(){}get name(){return this.userId}get avatarUrl(){}}function Au(n){switch(n){case Le.DirectMessage:case Le.Private:return!0;case Le.Public:return!1}}function xu(n){switch(n){case Le.DirectMessage:return"trusted_private_chat";case Le.Private:return"private_chat";case Le.Public:return"public_chat"}}class Vu extends $t{constructor(e,t,s,i,r,o){var c;if(super(),this.id=e,this.options=t,this.updateCallback=s,this.mediaRepository=i,this.platform=r,this.profiles=[],this._isCancelled=!1,this.isEncrypted=t.isEncrypted===void 0?Au(t.type):t.isEncrypted,t.name)this._calculatedName=t.name;else{const l={joinCount:1,inviteCount:((c=t.invites)==null?void 0:c.length)||0},h=(t.invites||[]).map(a=>new Tu(a));this._calculatedName=tn(h,l,o)}}async create(e,t){try{let s;if(this.options.avatar){const{avatar:o}=this.options,c=new Wa({filename:o.name,blob:o.blob,platform:this.platform});await c.upload(e,()=>{},t),s={info:o.info},c.applyToContent("url",s)}const i={is_direct:this.options.type===Le.DirectMessage,preset:xu(this.options.type),initial_state:[]};this.options.name&&(i.name=this.options.name),this.options.topic&&(i.topic=this.options.topic),this.options.invites&&(i.invite=this.options.invites),this.options.alias&&(i.room_alias_name=this.options.alias),this.options.isFederationDisabled===!0&&(i.creation_content={"m.federate":!1}),this.options.powerLevelContentOverride&&(i.power_level_content_override=this.options.powerLevelContentOverride),this.isEncrypted&&i.initial_state.push(Hl()),s&&i.initial_state.push({type:"m.room.avatar",state_key:"",content:s});const r=await e.createRoom(i,{log:t}).response();this._roomId=r.room_id}catch(s){this._error=s}this.emitChange()}async loadProfiles(e,t){try{if(!this.options.name&&this.options.invites){this.profiles=await Eu(this.options.invites,e,t);const s={joinCount:1,inviteCount:this.options.invites.length};this._calculatedName=tn(this.profiles,s,t),this.emitChange()}}catch{}}emitChange(e){this.updateCallback(this,e),this.emit("change")}get avatarColorId(){var e,t,s;return(s=(t=(e=this.options.invites)==null?void 0:e[0])!=null?t:this._roomId)!=null?s:this.id}get avatarUrl(){var e,t;return(t=(e=this.profiles)==null?void 0:e[0])==null?void 0:t.avatarUrl}get avatarBlobUrl(){var e,t;return(t=(e=this.options.avatar)==null?void 0:e.blob)==null?void 0:t.url}get roomId(){return this._roomId}get name(){return this._calculatedName}get isBeingCreated(){return!0}get error(){return this._error}cancel(){this._isCancelled||(this.dispose(),this._isCancelled=!0,this.emitChange("isCancelled"))}get isCancelled(){return this._isCancelled}dispose(){this.options.avatar&&this.options.avatar.blob.dispose()}async adjustDirectMessageMapIfNeeded(e,t,s,i){if(!this.options.invites||this.options.type!==Le.DirectMessage)return;const r=this.options.invites[0],o="m.direct";await i.wrap("set "+o,async c=>{try{const l=await t.readWriteTxn([t.storeNames.accountData]);let h;try{h=await l.accountData.get(o),h||(h={type:o,content:{}});const a=h.content;let u=a[r];u||(a[r]=u=[]),u.push(this._roomId),l.accountData.set(h),await l.complete()}catch(a){throw l.abort(),a}await s.setAccountData(e.id,o,h.content,{log:c}).response()}catch(l){c.catch(l)}})}}class Nu extends $t{constructor({roomId:e,user:t,hsApi:s,mediaRepository:i,emitCollectionRemove:r,emitCollectionUpdate:o,platform:c}){super(),this._roomId=e,this._user=t,this._hsApi=s,this._emitCollectionRemove=r,this._emitCollectionUpdate=o,this._mediaRepository=i,this._platform=c,this._inviteData=null,this._accepting=!1,this._rejecting=!1,this._accepted=!1,this._rejected=!1}get isInvite(){return!0}get id(){return this._roomId}get name(){return this._inviteData.name||this._inviteData.canonicalAlias}get isDirectMessage(){return this._inviteData.isDirectMessage}get avatarUrl(){return this._inviteData.avatarUrl}get avatarColorId(){return this._inviteData.avatarColorId||this.id}get timestamp(){return this._inviteData.timestamp}get isEncrypted(){return this._inviteData.isEncrypted}get inviter(){return this._inviter}isDirectMessageForUserId(e){return this.isDirectMessage&&this._inviter.userId===e}get isPublic(){return this._inviteData.joinRule==="public"}get canonicalAlias(){return this._inviteData.canonicalAlias}async accept(e=null){await this._platform.logger.wrapOrRun(e,"acceptInvite",async t=>{this._accepting=!0,this._emitChange("accepting"),await this._hsApi.join(this._roomId,{log:t}).response()})}async reject(e=null){await this._platform.logger.wrapOrRun(e,"rejectInvite",async t=>{this._rejecting=!0,this._emitChange("rejecting"),await this._hsApi.leave(this._roomId,{log:t}).response()})}get accepting(){return this._accepting}get accepted(){return this._accepted}get rejecting(){return this._rejecting}get rejected(){return this._rejected}get mediaRepository(){return this._mediaRepository}_emitChange(e){this.emit("change"),this._emitCollectionUpdate(this,e)}load(e,t){t.set("id",this.id),this._inviteData=e,this._inviter=e.inviter?new Q(e.inviter):null}async writeSync(e,t,s,i){var r;if(e==="invite"){i.set("id",this.id),i.set("add",!0);const o=(r=t.invite_state)==null?void 0:r.events;if(!Array.isArray(o))return null;const c=this._createSummaryData(o);let l;!c.name&&!c.canonicalAlias&&(l=await this._createHeroes(o,i));const h=this._getMyInvite(o);if(!h)return null;const a=this._getInviter(h,o),u=this._createData(o,h,a,c,l);return s.invites.set(u),{inviteData:u,inviter:a}}else return i.set("id",this.id),i.set("membership",e),s.invites.remove(this.id),{removed:!0,membership:e}}afterSync(e,t){t.set("id",this.id),e&&(e.removed?(this._accepting=!1,this._rejecting=!1,e.membership==="join"?this._accepted=!0:this._rejected=!0,this.emit("change")):(this._inviteData=e.inviteData,this._inviter=e.inviter))}_createData(e,t,s,i,r){const o=r?r.roomName:i.name,c=r?r.roomAvatarUrl:i.avatarUrl,l=(r==null?void 0:r.roomAvatarColorId)||this.id;return{roomId:this.id,isEncrypted:!!i.encryption,isDirectMessage:i.isDirectMessage,name:o,avatarUrl:c,avatarColorId:l,canonicalAlias:i.canonicalAlias,timestamp:this._platform.clock.now(),joinRule:this._getJoinRule(e),inviter:s==null?void 0:s.serialize()}}_createSummaryData(e){return e.reduce((t,s)=>ga(t,s,this._user.id),new Rt(null,this.id))}async _createHeroes(e,t){const s=e.filter(a=>a.type===Ke),i=s.filter(a=>a.state_key!==this._user.id),r=i.reduce((a,u)=>{const p=Q.fromMemberEvent(this.id,u);return a.set(p.userId,new ka(p,null)),a},new Map),o=i.map(a=>a.state_key),c=new Rn(this.id),l=await c.calculateChanges(o,r,null),h=new Rt(null,this.id);return h.joinCount=s.reduce((a,u)=>{var p;return a+(((p=u.content)==null?void 0:p.membership)==="join"?1:0)},0),h.inviteCount=s.reduce((a,u)=>{var p;return a+(((p=u.content)==null?void 0:p.membership)==="invite"?1:0)},0),c.applyChanges(l,h,t),c}_getMyInvite(e){return e.find(t=>t.type===Ke&&t.state_key===this._user.id)}_getInviter(e,t){const s=t.find(i=>i.type===Ke&&i.state_key===e.sender);if(s)return Q.fromMemberEvent(this.id,s)}_getJoinRule(e){var s;const t=e.find(i=>i.type==="m.room.join_rules");return t?(s=t.content)==null?void 0:s.join_rule:null}}class bs{constructor(e){this._description=e}static httpPusher(e,t,s,i){return new bs({kind:"http",append:!0,data:Object.assign({},i,{url:e+"/_matrix/push/v1/notify"}),pushkey:s,app_id:t,app_display_name:"Hydrogen",device_display_name:"Hydrogen",lang:"en"})}static createDefaultPayload(e){return{session_id:e}}async enable(e,t){try{t.set("endpoint",new URL(this._description.data.endpoint).host)}catch{t.set("endpoint",null)}await e.setPusher(this._description,{log:t}).response()}async disable(e,t){const s=Object.assign({},this._description,{kind:null});await e.setPusher(s,{log:t}).response()}serialize(){return this._description}equals(e){return this._description.app_id!==e._description.app_id||this._description.pushkey!==e._description.pushkey?!1:JSON.stringify(this._description.data)===JSON.stringify(e._description.data)}}class Du extends $t{constructor({storage:e,callHandler:t}){super(),this._storage=e,this._olmDecryption=null,this._megolmDecryption=null,this._callHandler=t,this._senderDeviceCache=new $a(10,s=>s.curve25519Key)}enableEncryption({olmDecryption:e,megolmDecryption:t}){this._olmDecryption=e,this._megolmDecryption=t}obtainSyncLock(e){var t;return(t=this._olmDecryption)==null?void 0:t.obtainDecryptionLock(e)}async prepareSync(e,t,s,i){i.set("messageTypes",uo(e,c=>c.type));const r=e.filter(c=>c.type==="m.room.encrypted");if(this._emitUnencryptedEvents(e),!this._olmDecryption){i.log("can't decrypt, encryption not enabled",i.level.Warn);return}const o=r.filter(c=>{var l;return((l=c.content)==null?void 0:l.algorithm)===wn});if(o.length){const c=await this._olmDecryption.decryptAll(o,t,s);i.set("decryptedTypes",uo(c.results,h=>{var a;return(a=h.event)==null?void 0:a.type}));for(const h of c.errors)i.child("decrypt_error").catch(h);const l=this._megolmDecryption.roomKeysFromDeviceMessages(c.results,i);return new Uu(c,l)}}async writeSync(e,t){return e.olmDecryptChanges.write(t),{hasNewRoomKeys:(await Promise.all(e.newRoomKeys.map(r=>this._megolmDecryption.writeRoomKey(r,t)))).some(r=>!!r),decryptionResults:e.olmDecryptChanges.results}}async afterSyncCompleted(e,t,s,i){if(await i.wrap("Verifying fingerprint of encrypted toDevice messages",async r=>{for(const o of e){const c=o.event.sender,l=await t.deviceForCurveKey(c,o.senderCurve25519Key,s,r);o.setDevice(l),o.isVerified?this.emit("message",{encrypted:o}):r.log({l:"could not verify olm fingerprint key matches, ignoring",ed25519Key:o.device.ed25519Key,claimedEd25519Key:o.claimedEd25519Key,deviceId:l.deviceId,userId:l.userId})}}),this._callHandler){const r=e.filter(o=>{var c;return this._callHandler.handlesDeviceMessageEventType((c=o.event)==null?void 0:c.type)});r.length&&await i.wrap("process call signalling messages",async o=>{for(const c of r){const l=await t.deviceForId(c.event.sender,c.event.content.device_id,s,o);c.setDevice(l),c.isVerified?this._callHandler.handleDeviceMessage(c.event,c.userId,c.deviceId,o):o.log({l:"could not verify olm fingerprint key matches, ignoring",ed25519Key:c.device.ed25519Key,claimedEd25519Key:c.claimedEd25519Key,deviceId:l.deviceId,userId:l.userId})}})}}_emitUnencryptedEvents(e){const t=e.filter(s=>s.type!=="m.room.encrypted");for(const s of t)this.emit("message",{unencrypted:s})}}class Uu{constructor(e,t){this.olmDecryptChanges=e,this.newRoomKeys=t,this.newKeysByRoom=ti(t,s=>s.roomId)}}const Ei=Oe+"olmAccount",sn=Oe+"areDeviceKeysUploaded",fr=Oe+"serverOTKCount";async function go(n,e,t,s,i){const r=n.pickle(e),o=await i.readWriteTxn([i.storeNames.session]);try{o.session.add(Ei,r),o.session.add(sn,t),o.session.add(fr,s)}catch(c){throw o.abort(),c}await o.complete()}class Is{static async load({olm:e,pickleKey:t,hsApi:s,userId:i,deviceId:r,olmWorker:o,txn:c}){const l=await c.session.get(Ei);if(l){const h=new e.Account,a=await c.session.get(sn);h.unpickle(t,l);const u=await c.session.get(fr);return new Is({pickleKey:t,hsApi:s,account:h,userId:i,deviceId:r,areDeviceKeysUploaded:a,serverOTKCount:u,olm:e,olmWorker:o})}}static async adoptDehydratedDevice({olm:e,dehydratedDevice:t,pickleKey:s,hsApi:i,userId:r,olmWorker:o,storage:c}){const l=t.adoptUnpickledOlmAccount(),h=JSON.parse(l.one_time_keys()),u=Object.entries(h.curve25519).length,p=!0;return await go(l,s,p,u,c),new Is({pickleKey:s,hsApi:i,account:l,userId:r,deviceId:t.deviceId,areDeviceKeysUploaded:p,serverOTKCount:u,olm:e,olmWorker:o})}static async create({olm:e,pickleKey:t,hsApi:s,userId:i,deviceId:r,olmWorker:o,storage:c}){const l=new e.Account;o?await o.createAccountAndOTKs(l,l.max_number_of_one_time_keys()):(l.create(),l.generate_one_time_keys(l.max_number_of_one_time_keys()));const h=!1,a=0;return c&&await go(l,t,h,a,c),new Is({pickleKey:t,hsApi:s,account:l,userId:i,deviceId:r,areDeviceKeysUploaded:h,serverOTKCount:a,olm:e,olmWorker:o})}constructor({pickleKey:e,hsApi:t,account:s,userId:i,deviceId:r,areDeviceKeysUploaded:o,serverOTKCount:c,olm:l,olmWorker:h}){this._olm=l,this._pickleKey=e,this._hsApi=t,this._account=s,this._userId=i,this._deviceId=r,this._areDeviceKeysUploaded=o,this._serverOTKCount=c,this._olmWorker=h,this._identityKeys=JSON.parse(this._account.identity_keys())}get identityKeys(){return this._identityKeys}setDeviceId(e){this._deviceId=e}async uploadKeys(e,t,s){var o;const i=JSON.parse(this._account.one_time_keys()),r=Object.entries(i.curve25519);if(r.length||!this._areDeviceKeysUploaded){const c={};if(!this._areDeviceKeysUploaded){s.set("identity",!0);const a=JSON.parse(this._account.identity_keys());c.device_keys=this._deviceKeysPayload(a)}r.length&&(s.set("otks",!0),c.one_time_keys=this._oneTimeKeysPayload(r));const l=t?this._deviceId:void 0,h=await this._hsApi.uploadKeys(l,c,{log:s}).response();this._serverOTKCount=(o=h==null?void 0:h.one_time_key_counts)==null?void 0:o.signed_curve25519,s.set("serverOTKCount",this._serverOTKCount),await this._updateSessionStorage(e,a=>{r.length&&(this._account.mark_keys_as_published(),a==null||a.set(Ei,this._account.pickle(this._pickleKey)),a==null||a.set(fr,this._serverOTKCount)),this._areDeviceKeysUploaded||(this._areDeviceKeysUploaded=!0,a==null||a.set(sn,this._areDeviceKeysUploaded))})}}async generateOTKsIfNeeded(e,t){const s=this._account.max_number_of_one_time_keys(),i=Math.floor(s/2);if(this._serverOTKCount0&&await t.wrap("generate otks",h=>{h.set("max",s),h.set("server",this._serverOTKCount),h.set("unpublished",c),h.set("new",l),h.set("limit",i),this._account.generate_one_time_keys(l),this._updateSessionStorage(e,a=>{a.set(Ei,this._account.pickle(this._pickleKey))})}),!0}return!1}createInboundOlmSession(e,t){const s=new this._olm.Session;try{return s.create_inbound_from(this._account,e,t),s}catch(i){throw s.free(),i}}async createOutboundOlmSession(e,t){const s=new this._olm.Session;try{return this._olmWorker?await this._olmWorker.createOutboundOlmSession(this._account,s,e,t):s.create_outbound(this._account,e,t),s}catch(i){throw s.free(),i}}writeRemoveOneTimeKey(e,t){this._account.remove_one_time_keys(e),t.session.set(Ei,this._account.pickle(this._pickleKey))}writeSync(e,t,s){const i=e.signed_curve25519;if(Number.isSafeInteger(i)&&i!==this._serverOTKCount)return t.session.set(fr,i),s.set("otkCount",i),i}afterSync(e){Number.isSafeInteger(e)&&(this._serverOTKCount=e)}_keysAsSignableObject(e){const t={user_id:this._userId,device_id:this._deviceId,algorithms:[wn,ft],keys:{}};for(const[s,i]of Object.entries(e))t.keys[`${s}:${this._deviceId}`]=i;return t}getUnsignedDeviceKey(){const e=JSON.parse(this._account.identity_keys());return this._keysAsSignableObject(e)}_deviceKeysPayload(e){const t=this._keysAsSignableObject(e);return this.signObject(t),t}_oneTimeKeysPayload(e){const t={};for(const[s,i]of e){const r={key:i};this.signObject(r),t[`signed_curve25519:${s}`]=r}return t}async _updateSessionStorage(e,t){if(e){const s=await e.readWriteTxn([e.storeNames.session]);try{await t(s.session)}catch(i){throw s.abort(),i}await s.complete()}else await t(void 0)}signObject(e){const t=e.signatures||{},s=e.unsigned;delete e.signatures,delete e.unsigned,t[this._userId]=t[this._userId]||{},t[this._userId]["ed25519:"+this._deviceId]=this._account.sign(qi.stringify(e)),e.signatures=t,s!==void 0&&(e.unsigned=s)}pickleWithKey(e){return this._account.pickle(e)}dispose(){this._account.free(),this._account=void 0}}class Tn{constructor(e,t){this._id=e,this._keyDescription=t}get id(){return this._id}get passphraseParams(){var e;return(e=this._keyDescription)==null?void 0:e.passphrase}get algorithm(){var e;return(e=this._keyDescription)==null?void 0:e.algorithm}async isCompatible(e,t){if(this.algorithm==="m.secret_storage.v1.aes-hmac-sha2"){const s=this._keyDescription;if(s.mac){const i=await Ou(e.binaryKey,s.iv,t);return s.mac===i}else if(s.passphrase){const i=e.description._keyDescription;return i.passphrase?s.passphrase.algorithm===i.passphrase.algorithm&&s.passphrase.iterations===i.passphrase.iterations&&s.passphrase.salt===i.passphrase.salt:!1}}return!1}}class Wi{constructor(e,t){this._keyDescription=e,this._binaryKey=t}withDescription(e){return new Wi(e,this._binaryKey)}get description(){return this._keyDescription}get id(){return this._keyDescription.id}get binaryKey(){return this._binaryKey}get algorithm(){return this._keyDescription.algorithm}}async function Ou(n,e,t){const{crypto:s,encoding:i}=t,{utf8:r,base64:o}=i,{derive:c,aes:l,hmac:h}=s,a=o.decode(e),u=new Uint8Array(8),p="\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",g=r.encode(""),f=await c.hkdf(n,u,g,"SHA-256",512),v=f.slice(0,32),M=f.slice(32),R=await l.encryptCTR({key:v,iv:a,data:r.encode(p)}),N=await h.compute(M,R,"SHA-256");return o.encode(N)}const Pu=5e5,Fu=256;async function Lu(n,e,t){const{passphraseParams:s}=n;if(!s)throw new Error("not a passphrase key");if(s.algorithm!=="m.pbkdf2")throw new Error(`Unsupported passphrase algorithm: ${s.algorithm}`);const{utf8:i}=t.encoding,r=await t.crypto.derive.pbkdf2(i.encode(e),s.iterations||Pu,i.encode(s.salt),"SHA-512",s.bits||Fu);return new Wi(n,r)}const vi=[139,1];function Ku(n,e,t,s){const i=s.encoding.base58.decode(e.replace(/ /g,""));let r=0;for(const c of i)r^=c;if(r!==0)throw new Error("Incorrect parity");for(let c=0;c{switch(e==null?void 0:e.event.type){case"m.secret.request":{await this._respondToRequest(e);break}case"m.secret.send":{const{secret:s}=e.event.content,i=await this.shouldAcceptSecret(e);i&&this.writeSecretToStorage(i,s);break}}}),await this.aesEncryption.load()}async _respondToRequest(e){await this.logger.run("SharedSecret.respondToRequest",async t=>{if(!await this.shouldRespondToRequest(e,t))return;const s=e.event.content,i=s.request_id,r=s.requesting_device_id,o=s.name,c=await this.secretFetcher.getSecret(o);if(!c){t.log({l:"Secret not available to share"});return}const l={secret:c,request_id:i},h=await this.deviceTracker.deviceForId(this.ourUserId,r,this.hsApi,t);if(!h){t.log({l:"Cannot find device",deviceId:r});return}const a=await t.wrap("olm encrypt",p=>this.olmEncryption.encrypt("m.secret.send",l,[h],this.hsApi,p)),u=Fi(a);await this.hsApi.sendToDevice("m.room.encrypted",u,Pe(),{log:t}).response()})}async shouldRespondToRequest(e,t){return t.wrap("SecretSharing.shouldRespondToRequest",async()=>{if(e.event.content.requesting_device_id===this.deviceTracker.ownDeviceId)return!1;const s=this.crossSigning.get();if(!s)return t.log({crossSigningNotAvailable:!0}),!1;const i=e.event.content;if(e.event.sender!==this.ourUserId||!(i.name&&i.action&&i.requesting_device_id&&i.request_id)||i.action==="request_cancellation")return!1;const r=i.requesting_device_id,o=await this.deviceTracker.deviceForId(this.ourUserId,r,this.hsApi,t);return o?await s.isOurUserDeviceTrusted(o,t)?!0:(t.log({l:"Device not trusted, returning"}),!1):(t.log({l:"Device could not be acquired",deviceId:r}),!1)})}async shouldAcceptSecret(e){const t=this.crossSigning.get();if(!t)return;const s=e.device;if(!s||!await t.isOurUserDeviceTrusted(s))return;const r=e.event.content.request_id,o=this.waitMap.get(r);if(o){const{name:a,deferred:u}=o;return u.resolve(e),this.waitMap.delete(r),await this.removeStoredRequestId(r),a}const l=await(await this.storage.readTxn([this.storage.storeNames.session])).session.get(bi),h=l==null?void 0:l[r];if(h)return await this.removeStoredRequestId(r),h}async removeStoredRequestId(e){const t=await this.storage.readWriteTxn([this.storage.storeNames.session]),s=await t.session.get(bi);s&&(delete s[e],t.session.set(bi,s))}async checkSecretValidity(e){const t=this.crossSigning.get();!await(t==null?void 0:t.areWeVerified(e))&&(await this.storage.readWriteTxn([this.storage.storeNames.sharedSecrets])).sharedSecrets.deleteAllSecrets()}async getLocallyStoredSecret(e){const s=await(await this.storage.readTxn([this.storage.storeNames.sharedSecrets])).sharedSecrets.get(e);if(s)return await this.aesEncryption.decrypt(s.encrypted)}requestSecret(e,t){return t.wrap("SharedSecret.requestSecret",async s=>{const i=Pe(),r=this.trackSecretRequest(i,e);return await this.sendRequestForSecret(e,i,s),await this.writeRequestIdToStorage(i,e),new ju(r)})}async writeRequestIdToStorage(e,t){var r;const s=await this.storage.readWriteTxn([this.storage.storeNames.session]),i=(r=await s.session.get(bi))!=null?r:{};i[e]=t,s.session.set(bi,i)}async writeSecretToStorage(e,t){const s=await this.aesEncryption.encrypt(t);(await this.storage.readWriteTxn([J.sharedSecrets])).sharedSecrets.set(e,{encrypted:s})}trackSecretRequest(e,t){const s=new As;return this.waitMap.set(e,{deferred:s,name:t}),s.promise}async sendRequestForSecret(e,t,s){const i={action:"request",name:e,request_id:t,requesting_device_id:this.deviceTracker.ownDeviceId};let r=await this.deviceTracker.devicesForUsers([this.ourUserId],this.hsApi,s);r=r.filter(l=>l.device_id!==this.deviceTracker.ownDeviceId);const o=await s.wrap("olm encrypt",l=>this.olmEncryption.encrypt("m.secret.request",i,r,this.hsApi,l)),c=Fi(o);await this.hsApi.sendToDevice("m.room.encrypted",c,Pe(),{log:s}).response()}setSecretFetcher(e){this.secretFetcher=e}}class ju{constructor(e){this.receivedSecretPromise=e}async waitForResponse(e=30){const t=new Promise((i,r)=>{setTimeout(r,e*1e3)});return(await Promise.race([this.receivedSecretPromise,t])).event.content.secret}}class qu{constructor(e,t,s){this.storage=e,this.crypto=t,this.encoding=s}async load(){var r;const e=`${Oe}localAESKey`,t=await this.storage.readTxn([J.session]);let{key:s,iv:i}=(r=await t.session.get(e))!=null?r:{};s||(s=await this.crypto.aes.generateKey("jwk"),i=await this.crypto.aes.generateIV(),(await this.storage.readWriteTxn([J.session])).session.set(e,{key:s,iv:i})),this.key=s,this.iv=i}async encrypt(e){const t=this.encoding.utf8.encode(e);return await this.crypto.aes.encryptCTR({jwkKey:this.key,iv:this.iv,data:t})}async decrypt(e){const t=await this.crypto.aes.decryptCTR({jwkKey:this.key,iv:this.iv,data:e});return this.encoding.utf8.decode(t)}}class cr extends Error{constructor(e,t){super(e),this.reason=t}}class Hu{constructor({key:e,platform:t,storage:s}){this._key=e,this._platform=t,this._storage=s}async hasValidKeyForAnyAccountData(){const t=await(await this._storage.readTxn([this._storage.storeNames.accountData])).accountData.getAll();for(const s of t)try{const i=await this._decryptAccountData(s);return!0}catch(i){if(i instanceof cr&&i.reason!==0)throw i;continue}return!1}async readSecret(e){const s=await(await this._storage.readTxn([this._storage.storeNames.accountData])).accountData.get(e);if(!!s)return await this._decryptAccountData(s)}async _decryptAccountData(e){var s,i;const t=(i=(s=e==null?void 0:e.content)==null?void 0:s.encrypted)==null?void 0:i[this._key.id];if(!t)throw new cr(`Secret ${e.type} is not encrypted for key ${this._key.id}`,0);if(this._key.algorithm==="m.secret_storage.v1.aes-hmac-sha2")return await this._decryptAESSecret(e.type,t);throw new cr(`Unsupported algorithm for key ${this._key.id}: ${this._key.algorithm}`,2)}async _decryptAESSecret(e,t){const{base64:s,utf8:i}=this._platform.encoding,r=await this._platform.crypto.derive.hkdf(this._key.binaryKey,new Uint8Array(8).buffer,i.encode(e),"SHA-256",512),o=r.slice(0,32),c=r.slice(32),l=s.decode(t.ciphertext);if(!await this._platform.crypto.hmac.verify(c,s.decode(t.mac),l,"SHA-256"))throw new cr("Bad MAC",1);const a=await this._platform.crypto.aes.decryptCTR({key:o,iv:s.decode(t.iv),data:l});return i.decode(a)}}const An=`${Oe}ssssKey`,fo=`${Oe}keyBackupVersion`;var mt=(n=>(n[n.RecoveryKey=0]="RecoveryKey",n[n.Passphrase=1]="Passphrase",n))(mt||{});async function za(n){var r;const e=await n.readTxn([n.storeNames.accountData]),t=await e.accountData.get("m.secret_storage.default_key"),s=(r=t==null?void 0:t.content)==null?void 0:r.key;if(!s)return;const i=await e.accountData.get(`m.secret_storage.key.${s}`);if(!!i)return new Tn(s,i.content)}async function Wu(n,e,t){const s=await t.session.get(fo);return t.session.set(fo,e),t.session.set(An,{id:n.id,binaryKey:n.binaryKey}),s}async function zu(n){const e=await n.session.get(An);if(!e)return;const t=await n.accountData.get(`m.secret_storage.key.${e.id}`);if(t)return new Wi(new Tn(e.id,t.content),e.binaryKey)}async function Gu(n){n.session.remove(An)}async function Yu(n,e,t,s,i){const r=await za(t);if(!r)throw new Error("Could not find a default secret storage key in account data");return await Ga(n,e,r,s,i)}async function Ga(n,e,t,s,i){let r;if(n===1)r=await Lu(t,e,s);else if(n===0)r=Ku(t,e,i,s);else throw new Error(`Invalid type: ${n}`);return r}async function Ju(n,e,t){const s=await za(e);if(await(s==null?void 0:s.isCompatible(n,t)))return n.withDescription(s)}const Ya="org.matrix.msc2697.v1.olm.libolm_pickle";async function Qu(n,e,t,s){try{const i=await n.getDehydratedDevice({log:s}).response();if(i.device_data.algorithm===Ya)return new Zu(i,e,t)}catch(i){i.name!=="HomeServerError"&&(s.error=i);return}}async function Xu(n,e,t,s,i){var c;const o=(await e.createDehydratedDevice({device_data:{algorithm:Ya,account:n.pickleWithKey(t.binaryKey.slice()),passphrase:((c=t.description)==null?void 0:c.passphraseParams)||{}},initial_device_display_name:s}).response()).device_id;return n.setDeviceId(o),await n.uploadKeys(void 0,!0,i),o}class Zu{constructor(e,t,s){this._dehydratedDevice=e,this._olm=t,this._platform=s}async decrypt(e,t){const s=new Tn("dehydrated_device",this._dehydratedDevice.device_data.passphrase),i=await Ga(e,t,s,this._platform,this._olm),r=new this._olm.Account;try{const o=this._dehydratedDevice.device_data.account;return r.unpickle(i.binaryKey.slice(),o),new em(this._dehydratedDevice,r,i)}catch(o){if(r.free(),o.message==="OLM.BAD_ACCOUNT_KEY")return;throw o}}get deviceId(){return this._dehydratedDevice.device_id}}class em{constructor(e,t,s){this._dehydratedDevice=e,this._account=t,this._key=s}async claim(e,t){try{return(await e.claimDehydratedDevice(this.deviceId,{log:t}).response()).success}catch{return!1}}adoptUnpickledOlmAccount(){const e=this._account;return this._account=void 0,e}get deviceId(){return this._dehydratedDevice.device_id}get key(){return this._key}dispose(){var e;(e=this._account)==null||e.free(),this._account=void 0}}class Ja{tryTake(){return this._promise?!1:(this._promise=new Promise(e=>{this._resolve=e}),!0)}async take(){for(;!this.tryTake();)await this.released()}get isTaken(){return!!this._promise}release(){if(this._resolve){this._promise=void 0;const e=this._resolve;this._resolve=void 0,e()}}released(){return this._promise}}class Qa{constructor(e){this.locks=e}release(){for(const e of this.locks)e.release()}}function Xa(n,e,t,s){return{session:n.pickle(s),sessionId:n.session_id(),senderKey:e,lastUsed:t}}class Cr{constructor(e,t,s,i=!1){this.data=e,this.pickleKey=t,this.olm=s,this.isNew=i,this.isModified=i}static create(e,t,s,i,r){const o=Xa(t,e,r,i);return new Cr(o,i,s,!0)}get id(){return this.data.sessionId}load(){const e=new this.olm.Session;return e.unpickle(this.pickleKey,this.data.session),e}unload(e){e.free()}save(e){this.data.session=e.pickle(this.pickleKey),this.isModified=!0}}class Za{constructor(e,t,s,i){this.event=e,this.senderCurve25519Key=t,this.claimedEd25519Key=s,this.encryptedEvent=i}setDevice(e){this.device=e}get isVerified(){return this.device?ks(this.device)===this.claimedEd25519Key:!1}get isUnverified(){return this.device?!this.isVerified:!0}get userId(){var e;return(e=this.device)==null?void 0:e.user_id}get deviceId(){var e;return(e=this.device)==null?void 0:e.device_id}get isVerificationUnknown(){return!this.device}}var Er=(n=>(n[n.PreKey=0]="PreKey",n[n.Normal=1]="Normal",n))(Er||{});const yo=4;function ec(n){n.sort((e,t)=>t.data.lastUsed-e.data.lastUsed)}class tm{constructor(e,t,s,i,r,o){this.account=e,this.pickleKey=t,this.now=s,this.ownUserId=i,this.olm=r,this.senderKeyLock=o}async obtainDecryptionLock(e){var i;const t=new Set;for(const r of e){const o=(i=r.content)==null?void 0:i.sender_key;o&&t.add(o)}const s=await Promise.all(Array.from(t).map(r=>this.senderKeyLock.takeLock(r)));return new Qa(s)}async decryptAll(e,t,s){try{const i=ti(e,a=>{var u;return(u=a.content)==null?void 0:u.sender_key}),r=this.now(),o=await Promise.all(Array.from(i.entries()).map(([a,u])=>this._decryptAllForSenderKey(a,u,r,s))),c=o.reduce((a,u)=>a.concat(u.results),[]),l=o.reduce((a,u)=>a.concat(u.errors),[]),h=o.map(a=>a.senderKeyDecryption);return new im(h,c,l,this.account,t)}catch(i){throw t.release(),i}}async _decryptAllForSenderKey(e,t,s,i){const r=await this._getSessions(e,i),o=new sm(e,r,s),c=[],l=[];for(const h of t)try{const a=this._decryptForSenderKey(o,h,s);c.push(a)}catch(a){l.push(a)}return{results:c,errors:l,senderKeyDecryption:o}}_decryptForSenderKey(e,t,s){const i=e.senderKey,r=this._getMessageAndValidateEvent(t);let o;try{o=e.decrypt(r)}catch(c){throw new fe("OLM_BAD_ENCRYPTED_MESSAGE",t,{senderKey:i,error:c.message})}if(typeof o!="string"&&r.type===Er.PreKey){let c;try{c=this._createSessionAndDecrypt(i,r,s)}catch(l){throw new fe(`Could not create inbound olm session: ${l.message}`,t,{senderKey:i,error:l})}e.addNewSession(c.session),o=c.plaintext}if(typeof o=="string"){let c;try{c=JSON.parse(o)}catch(l){throw new fe("PLAINTEXT_NOT_JSON",t,{plaintext:o,error:l})}return this._validatePayload(c,t),new Za(c,i,c.keys.ed25519)}else throw new fe("OLM_NO_MATCHING_SESSION",t,{knownSessionIds:e.sessions.map(c=>c.id)})}_createSessionAndDecrypt(e,t,s){let i;const r=this.account.createInboundOlmSession(e,t.body);try{i=r.decrypt(t.type,t.body);const o=Cr.create(e,r,this.olm,this.pickleKey,s);return o.unload(r),{session:o,plaintext:i}}catch(o){throw r.free(),o}}_getMessageAndValidateEvent(e){var i;const t=(i=e.content)==null?void 0:i.ciphertext;if(!t)throw new fe("OLM_MISSING_CIPHERTEXT",e);const s=t==null?void 0:t[this.account.identityKeys.curve25519];if(!s)throw new fe("OLM_NOT_INCLUDED_IN_RECIPIENTS",e);return s}async _getSessions(e,t){const i=(await t.olmSessions.getAll(e)).map(r=>new Cr(r,this.pickleKey,this.olm));return ec(i),i}_validatePayload(e,t){var s,i,r;if(e.sender!==t.sender)throw new fe("OLM_FORWARDED_MESSAGE",t,{sentBy:t.sender,encryptedBy:e.sender});if(e.recipient!==this.ownUserId)throw new fe("OLM_BAD_RECIPIENT",t,{recipient:e.recipient});if(((s=e.recipient_keys)==null?void 0:s.ed25519)!==this.account.identityKeys.ed25519)throw new fe("OLM_BAD_RECIPIENT_KEY",t,{key:(i=e.recipient_keys)==null?void 0:i.ed25519});if(!e.type)throw new fe("missing type on payload",t,{payload:e});if(typeof((r=e.keys)==null?void 0:r.ed25519)!="string")throw new fe("Missing or invalid claimed ed25519 key on payload",t,{payload:e})}}class sm{constructor(e,t,s){this.senderKey=e,this.sessions=t,this.timestamp=s}addNewSession(e){this.sessions.unshift(e)}decrypt(e){for(const t of this.sessions){const s=this.decryptWithSession(t,e);if(typeof s=="string")return ec(this.sessions),s}}getModifiedSessions(){return this.sessions.filter(e=>e.isModified)}get hasNewSessions(){return this.sessions.some(e=>e.isNew)}decryptWithSession(e,t){if(t.type===void 0||t.body===void 0)throw new Error("Invalid message without type or body");const s=e.load();try{if(t.type===Er.PreKey&&!s.matches_inbound(t.body))return;try{const i=s.decrypt(t.type,t.body);return e.save(s),e.data.lastUsed=this.timestamp,i}catch(i){if(t.type===Er.PreKey)throw new Error(`Error decrypting prekey message with existing session id ${e.id}: ${i.message}`);return}}finally{e.unload(s)}}}class im{constructor(e,t,s,i,r){this.senderKeyDecryptions=e,this.results=t,this.errors=s,this.account=i,this.lock=r}get hasNewSessions(){return this.senderKeyDecryptions.some(e=>e.hasNewSessions)}write(e){try{for(const t of this.senderKeyDecryptions){for(const s of t.getModifiedSessions())if(e.olmSessions.set(s.data),s.isNew){const i=s.load();try{this.account.writeRemoveOneTimeKey(i,e)}finally{s.unload(i)}}if(t.sessions.length>yo){const{senderKey:s,sessions:i}=t;for(let r=i.length-1;r>=yo;r-=1){const o=i[r];e.olmSessions.remove(s,o.id)}}}}finally{this.lock.release()}}}function rm(n){return n.reduce((e,t)=>!e||t!s.isTaken).slice(0,e);if(t.lengthi.isTaken).slice(0,e-t.length);t.push(...s)}return await Promise.all(t.map(s=>s.take())),new Qa(t)}async encrypt(e,t,s,i,r){let o=[];for(let c=0;cthis.senderKeyLock.takeLock(_t(c))));try{const{devicesWithoutSession:c,existingEncryptionTargets:l}=await this._findExistingSessions(s),h=this.now();let a=[];try{if(c.length){const g=await r.wrap("create sessions",f=>this._createNewSessions(c,i,h,f));a=a.concat(g)}await this._loadSessions(l),a=a.concat(l);const u={l:"encrypt",targets:a.length},p=r.wrap(u,()=>a.map(g=>{const f=this._encryptForDevice(e,t,g);return new om(f,g.device)}));return await this._storeSessions(a,h),p}finally{for(const u of a)u.dispose()}}finally{for(const c of o)c.release()}}async _findExistingSessions(e){const t=await this.storage.readTxn([this.storage.storeNames.olmSessions]),s=await Promise.all(e.map(async o=>await t.olmSessions.getSessionIds(_t(o)))),i=e.filter((o,c)=>{const l=s[c];return!(l!=null&&l.length)}),r=e.map((o,c)=>{const l=s[c];if((l==null?void 0:l.length)>0){const h=rm(l);return Li.fromSessionId(o,h)}}).filter(o=>!!o);return{devicesWithoutSession:i,existingEncryptionTargets:r}}_encryptForDevice(e,t,s){const{session:i,device:r}=s,o=JSON.stringify(this._buildPlainTextMessageForDevice(e,t,r)),c=i.encrypt(o);return{algorithm:wn,sender_key:this.account.identityKeys.curve25519,ciphertext:{[_t(r)]:c}}}_buildPlainTextMessageForDevice(e,t,s){return{keys:{ed25519:this.account.identityKeys.ed25519},recipient_keys:{ed25519:ks(s)},recipient:s.user_id,sender:this.ownUserId,content:t,type:e}}async _createNewSessions(e,t,s,i){const r=await i.wrap("claim",o=>this._claimOneTimeKeys(t,e,o));try{for(const o of r){const{device:c,oneTimeKey:l}=o;o.session=await this.account.createOutboundOlmSession(_t(c),l)}await this._storeSessions(r,s)}catch(o){for(const c of r)c.dispose();throw o}return r}async _claimOneTimeKeys(e,t,s){const i=En(t,l=>l.user_id,()=>new Map,(l,h)=>l.set(h.device_id,h)),r=Array.from(i.entries()).reduce((l,[h,a])=>(l[h]=Array.from(a.values()).reduce((u,p)=>(u[p.device_id]=wo,u),{}),l),{}),o=await e.claimKeys({timeout:1e4,one_time_keys:r},{log:s}).response();Object.keys(o.failures).length&&s.log({l:"failures",servers:Object.keys(o.failures)},s.level.Warn);const c=o==null?void 0:o.one_time_keys;return this._verifyAndCreateOTKTargets(c,i,s)}_verifyAndCreateOTKTargets(e,t,s){var r;const i=[];for(const[o,c]of Object.entries(e))for(const[l,h]of Object.entries(c)){const[a,u]=Object.entries(h)[0],[p]=a.split(":");if(p===wo){const g=(r=t.get(o))==null?void 0:r.get(l);if(g&&vn(this.olmUtil,o,l,ks(g),u,s)===ne.Valid){const v=Li.fromOTK(g,u.key);i.push(v)}}}return i}async _loadSessions(e){const t=await this.storage.readTxn([this.storage.storeNames.olmSessions]);let s=!1;try{await Promise.all(e.map(async i=>{const r=await t.olmSessions.get(_t(i.device),i.sessionId);if(r&&!s){const o=new this.olm.Session;o.unpickle(this.pickleKey,r.session),i.session=o}}))}catch(i){s=!0;for(const r of e)r.dispose();throw i}}async _storeSessions(e,t){const s=await this.storage.readWriteTxn([this.storage.storeNames.olmSessions]);try{for(const i of e){const r=Xa(i.session,_t(i.device),t,this.pickleKey);s.olmSessions.set(r)}}catch(i){throw s.abort(),i}await s.complete()}}class Li{constructor(e,t,s){this.device=e,this.oneTimeKey=t,this.sessionId=s,this.session=null}static fromOTK(e,t){return new Li(e,t,null)}static fromSessionId(e,t){return new Li(e,null,t)}dispose(){this.session&&this.session.free()}}class om{constructor(e,t){this.content=e,this.device=t}}class am{constructor(e,t,s,i){this._roomId=e,this._results=t,this._errors=s,this._replayEntries=i}async write(e){return await Promise.all(this._replayEntries.map(async t=>{try{this._handleReplayAttack(this._roomId,t,e)}catch(s){this._errors.set(t.eventId,s)}})),{results:this._results,errors:this._errors}}async _handleReplayAttack(e,t,s){const{messageIndex:i,sessionId:r,eventId:o,timestamp:c}=t,l=await s.groupSessionDecryptions.get(e,r,i);if(l&&l.eventId!==o){const a=l.timestamp{const r=await i.decryptAll();rn(r.errors,e),rn(r.results,t),s.push(...r.replayEntries)})),new am(this._roomId,t,e,s)}finally{this.dispose()}}dispose(){for(const e of this._sessionDecryptions)e.dispose()}}class lm{constructor(e,t,s){this.sessionId=e,this.messageIndex=t,this.event=s}get eventId(){return this.event.event_id}get timestamp(){return this.event.origin_server_ts}}class hm{constructor(e,t,s,i){this.key=e,this.events=t,this.olmWorker=s,this.keyLoader=i,this.decryptionRequests=s?[]:void 0}async decryptAll(){const e=[],t=new Map;let s;return await this.keyLoader.useKey(this.key,async i=>{for(const r of this.events)try{const o=r.content.ciphertext;let c;if(this.olmWorker){const u=this.olmWorker.megolmDecrypt(i,o);this.decryptionRequests.push(u),c=await u.response()}else c=i.decrypt(o);const{plaintext:l}=c;let h;try{h=JSON.parse(l)}catch(u){throw new fe("PLAINTEXT_NOT_JSON",r,{plaintext:l,err:u})}if(h.room_id!==this.key.roomId)throw new fe("MEGOLM_WRONG_ROOM",r,{encryptedRoomId:h.room_id,eventRoomId:this.key.roomId});e.push(new lm(this.key.sessionId,c.message_index,r));const a=new Za(h,this.key.senderKey,this.key.claimedEd25519Key,r);t.set(r.event_id,a)}catch(o){if(o.name==="AbortError")return;s||(s=new Map),s.set(r.event_id,o)}}),{results:t,errors:s,replayEntries:e}}dispose(){if(this.decryptionRequests)for(const e of this.decryptionRequests)e.abort()}}function xn(n){var e;return(e=n.content)==null?void 0:e.sender_key}function Vn(n){var e;return(e=n.content)==null?void 0:e.session_id}function dm(n){var e;return(e=n.content)==null?void 0:e.ciphertext}function um(n){return typeof xn(n)=="string"&&typeof Vn(n)=="string"&&typeof dm(n)=="string"}class mm{constructor(){this.events=[]}get senderKey(){return xn(this.events[0])}get sessionId(){return Vn(this.events[0])}}function nn(n){return En(n,e=>`${xn(e)}|${Vn(e)}`,()=>new mm,(e,t)=>e.events.push(t))}class tc{isForSession(e,t,s){return this.roomId===e&&this.senderKey===t&&this.sessionId===s}get isBetter(){return this._isBetter}set isBetter(e){this._isBetter=e}}function sc(n,e){return n.first_known_index(){s=r.pickle(o)},t),this.isBetter===!1)return!1;s||(s=await e.useKey(this,(r,o)=>r.pickle(o)));const i={roomId:this.roomId,senderKey:this.senderKey,sessionId:this.sessionId,session:s,backup:this.backupStatus,source:this.keySource,claimedKeys:{ed25519:this.claimedEd25519Key}};return t.inboundGroupSessions.set(i),!0}get eventIds(){return this._eventIds}async _checkBetterThanKeyInStorage(e,t,s){if(this.isBetter!==void 0)return this.isBetter;let i=e.getCachedKey(this.roomId,this.senderKey,this.sessionId);if(!i){const r=await nc(this.roomId,this.senderKey,this.sessionId,s);r&&(r.hasSession?i=r:r.eventIds&&(this._eventIds=r.eventIds))}if(i){const r=i;await e.useKey(this,async o=>{await e.useKey(r,(c,l)=>{this.isBetter=sc(o,c),r.isBetter=!this.isBetter,this.isBetter&&t&&t(o,l)})})}else this.isBetter=!0;return this.isBetter}get backupStatus(){return Vr.NotBackedUp}}class _m extends Nn{constructor(e){super(),this._decryptionResult=e}get roomId(){var e;return(e=this._decryptionResult.event.content)==null?void 0:e.room_id}get senderKey(){return this._decryptionResult.senderCurve25519Key}get sessionId(){var e;return(e=this._decryptionResult.event.content)==null?void 0:e.session_id}get claimedEd25519Key(){return this._decryptionResult.claimedEd25519Key}get serializationKey(){var e;return(e=this._decryptionResult.event.content)==null?void 0:e.session_key}get serializationType(){return"create"}get keySource(){return Hi.DeviceMessage}loadInto(e){e.create(this.serializationKey)}}class pm extends Nn{constructor(e,t,s){super(),this._roomId=e,this.outboundSession=t,this.identityKeys=s,this.isBetter=!0,this._sessionKey=this.outboundSession.session_key()}get roomId(){return this._roomId}get senderKey(){return this.identityKeys.curve25519}get sessionId(){return this.outboundSession.session_id()}get claimedEd25519Key(){return this.identityKeys.ed25519}get serializationKey(){return this._sessionKey}get serializationType(){return"create"}get keySource(){return Hi.Outbound}loadInto(e){e.create(this.serializationKey)}}class gm extends Nn{constructor(e,t,s){super(),this._roomId=e,this._sessionId=t,this._backupInfo=s}get roomId(){return this._roomId}get senderKey(){return this._backupInfo.sender_key}get sessionId(){return this._sessionId}get claimedEd25519Key(){var e;return(e=this._backupInfo.sender_claimed_keys)==null?void 0:e.ed25519}get serializationKey(){return this._backupInfo.session_key}get serializationType(){return"import_session"}get keySource(){return Hi.Backup}loadInto(e){e.import_session(this.serializationKey)}get backupStatus(){return Vr.BackedUp}}class ic extends tc{constructor(e){super(),this.isBetter=!0,this.storageEntry=e}get roomId(){return this.storageEntry.roomId}get senderKey(){return this.storageEntry.senderKey}get sessionId(){return this.storageEntry.sessionId}get claimedEd25519Key(){return this.storageEntry.claimedKeys.ed25519}get eventIds(){return this.storageEntry.eventIds}get serializationKey(){return this.storageEntry.session||""}get serializationType(){return"unpickle"}loadInto(e,t){e.unpickle(t,this.serializationKey)}get hasSession(){return!!this.serializationKey}}function fm(n){var s;const e=(s=n.event.content)==null?void 0:s.session_key,t=new _m(n);if(typeof t.roomId=="string"&&typeof t.sessionId=="string"&&typeof t.senderKey=="string"&&typeof e=="string")return t}function rc(n,e,t){var o;const s=t.session_key,i=t.sender_key,r=(o=t.sender_claimed_keys)==null?void 0:o.ed25519;if(typeof n=="string"&&typeof e=="string"&&typeof i=="string"&&typeof s=="string"&&typeof r=="string")return new gm(n,e,t)}async function nc(n,e,t,s){const i=await s.inboundGroupSessions.get(n,e,t);if(i)return new ic(i)}class ym{constructor(e,t){this.keyLoader=e,this.olmWorker=t}async addMissingKeyEventIds(e,t,s,i,r){let o=await r.inboundGroupSessions.get(e,t,s);if(!(o!=null&&o.session)){if(o){const c=new Set(o.eventIds);for(const l of i)c.add(l);o.eventIds=Array.from(c)}else o={roomId:e,senderKey:t,sessionId:s,eventIds:i};r.inboundGroupSessions.set(o)}}async getEventIdsForMissingKey(e,t,s,i){const r=await i.inboundGroupSessions.get(e,t,s);if(r&&!r.session)return r.eventIds}async hasSession(e,t,s,i){const r=await i.inboundGroupSessions.get(e,t,s);return typeof(r==null?void 0:r.session)=="string"}async prepareDecryptAll(e,t,s,i){const r=new Map,o=[];for(const h of t)um(h)?o.push(h):r.set(h.event_id,new fe("MEGOLM_INVALID_EVENT",h));const c=nn(o),l=[];return await Promise.all(Array.from(c.values()).map(async h=>{const a=await this.getRoomKey(e,h.senderKey,h.sessionId,s,i);if(a)l.push(new hm(a,h.events,this.olmWorker,this.keyLoader));else for(const u of h.events)r.set(u.event_id,new fe("MEGOLM_NO_SESSION",u))})),new cm(e,l,r)}async getRoomKey(e,t,s,i,r){if(i){const l=i.find(h=>h.isForSession(e,t,s));if(l&&await l.checkBetterThanKeyInStorage(this.keyLoader,r))return l}const o=this.keyLoader.getCachedKey(e,t,s);if(o)return o;const c=await nc(e,t,s,r);if(c&&c.serializationKey)return c}writeRoomKey(e,t){return e.write(this.keyLoader,t)}roomKeysFromDeviceMessages(e,t){var i,r;const s=[];for(const o of e)((i=o.event)==null?void 0:i.type)!=="m.room_key"||((r=o.event.content)==null?void 0:r.algorithm)!==ft||t.wrap("room_key",c=>{const l=fm(o);l?(c.set("roomId",l.roomId),c.set("id",l.sessionId),s.push(l)):(c.logLevel=c.level.Warn,c.set("invalid",!0))},t.level.Detail);return s}roomKeyFromBackup(e,t,s){return rc(e,t,s)}dispose(){this.keyLoader.dispose()}}class wm extends Ba{constructor(e,t,s){super(s),this.pickleKey=t,this.olm=e}getCachedKey(e,t,s){const i=this.findCachedKeyIndex(e,t,s);if(i!==-1)return this._getByIndexAndMoveUp(i).key}async useKey(e,t){const s=await this.allocateOperation(e);try{return await t(s.session,this.pickleKey)}finally{this.releaseOperation(s)}}get running(){return this._entries.some(e=>e.refCount!==0)}dispose(){for(let e=0;e{this.resolveUnusedOperation=e})),this.operationBecomesUnusedPromise}findIndexForAllocation(e){let t=this.findIndexSameKey(e);return t===-1&&(this.size{const l=i===-1?void 0:c[i];return r.isBest===!0&&r.isForSameSession(e,t,s)&&(!l||r.isBetter(l))?o:i},-1)}findIndexSameKey(e){return this._entries.findIndex(t=>t.isForSameSession(e.roomId,e.senderKey,e.sessionId)&&t.isForKey(e))}findIndexSameSessionUnused(e){return this._entries.reduce((t,s,i,r)=>{const o=t===-1?void 0:r[t];return s.refCount===0&&s.isForSameSession(e.roomId,e.senderKey,e.sessionId)&&(!o||!s.isBetter(o))?i:t},-1)}findIndexOldestUnused(){for(let e=this._entries.length-1;e>=0;e-=1)if(this._entries[e].refCount===0)return e;return-1}}class vm{constructor(e,t){this.key=e,this.session=t,this.refCount=1}isForSameSession(e,t,s){return this.key.roomId===e&&this.key.senderKey===t&&this.key.sessionId===s}isBetter(e){return sc(this.session,e.session)}isForKey(e){return this.key.serializationKey===e.serializationKey&&this.key.serializationType===e.serializationType}dispose(){this.session.free(),this.session=void 0}get isBest(){return this.key.isBetter}}const bm="m.megolm_backup.v1.curve25519-aes-sha2";class Dn{constructor(e,t){this.encryption=e,this.decryption=t}static fromAuthData(e,t,s){const i=e.public_key,r=new s.PkDecryption,o=new s.PkEncryption;try{const c=r.init_with_private_key(t);if(c!==i)throw new Error(`Bad backup key, public key does not match. Calculated ${c} but expected ${i}`);o.set_recipient_key(c)}catch(c){throw r.free(),o.free(),c}return new Dn(o,r)}decryptRoomKey(e){const t=this.decryption.decrypt(e.ephemeral,e.mac,e.ciphertext);return JSON.parse(t)}encryptRoomKey(e,t){const s={algorithm:ft,sender_key:e.senderKey,sender_claimed_keys:{ed25519:e.claimedEd25519Key},forwarding_curve25519_key_chain:[],session_key:t};return this.encryption.encrypt(JSON.stringify(s))}dispose(){var e,t;(e=this.decryption)==null||e.free(),this.decryption=void 0,(t=this.encryption)==null||t.free(),this.encryption=void 0}}const Sm=200;class km{constructor(e,t){this.info=e,this.crypto=t}}class Im extends $t{constructor(e,t,s,i,r,o=1e4){super(),this.hsApi=e,this.olm=t,this.keyLoader=s,this.storage=i,this.platform=r,this.maxDelay=o,this._stopped=!1,this._needsNewKey=!1,this._hasBackedUpAllKeys=!1,this.backupConfigDeferred=new As,this.backupConfigDeferred=new As}get hasStopped(){return this._stopped}get error(){return this._error}get version(){var e,t;return(t=(e=this.backupConfigDeferred.value)==null?void 0:e.info)==null?void 0:t.version}get needsNewKey(){return this._needsNewKey}get hasBackedUpAllKeys(){return this._hasBackedUpAllKeys}get operationInProgress(){return this._operationInProgress}async getRoomKey(e,t,s){if(this.needsNewKey)return;const i=await this.backupConfigDeferred.promise;if(!i)return;const r=await this.hsApi.roomKeyForRoomAndSession(i.info.version,e,t,{log:s}).response();if(!r.session_data)return;const o=i.crypto.decryptRoomKey(r.session_data);if((o==null?void 0:o.algorithm)===ft)return rc(e,t,o);o!=null&&o.algorithm&&s.set("unknown algorithm",o.algorithm)}markAllForBackup(e){return e.inboundGroupSessions.markAllAsNotBackedUp()}async load(e,t){const s=await e.readSecret("m.megolm_backup.v1");return s?(this.privateKey=new Uint8Array(this.platform.encoding.base64.decode(s)),!0):(this.backupConfigDeferred.resolve(void 0),!1)}async start(e){await e.wrap("KeyBackup.start",async t=>{if(this.privateKey&&!this.backupInfoRequest){let s;try{this.backupInfoRequest=this.hsApi.roomKeysVersion(void 0,{log:t}),s=await this.backupInfoRequest.response()}catch(i){if(i.name==="AbortError"){t.set("aborted",!0);return}else throw i}finally{this.backupInfoRequest=void 0}if(s.algorithm===bm){const i=Dn.fromAuthData(s.auth_data,this.privateKey,this.olm);this.backupConfigDeferred.resolve(new km(s,i)),this.emit("change")}else this.backupConfigDeferred.resolve(void 0),t.log({l:"Unknown backup algorithm",algorithm:s.algorithm});this.privateKey=void 0}this.flush(t)})}flush(e){this._operationInProgress||e.wrapDetached("flush key backup",async t=>{if(this._needsNewKey){t.set("needsNewKey",this._needsNewKey);return}this._stopped=!1,this._error=void 0,this._hasBackedUpAllKeys=!1;const s=this._runFlushOperation(t);this._operationInProgress=s,this.emit("change");try{await s.result,this._hasBackedUpAllKeys=!0}catch(i){this._stopped=!0,i.name==="HomeServerError"&&(i.errcode==="M_WRONG_ROOM_KEYS_VERSION"||i.errcode==="M_NOT_FOUND")?(t.set("wrong_version",!0),this._needsNewKey=!0):(i.name!=="AbortError"||i.name==="StorageError"&&i.errcode==="AbortError")&&(this._error=i),t.catch(i)}this._operationInProgress=void 0,this.emit("change")})}_runFlushOperation(e){return new oa(async(t,s)=>{const i=await this.backupConfigDeferred.promise;if(!i)return;let r=0,o=0;for(;;){const c=this.platform.random()*this.maxDelay,l=this.platform.clock.createTimeout(c);t(l),await l.elapsed();const h=await this.storage.readTxn([J.inboundGroupSessions]);t(h),r=o+await h.inboundGroupSessions.countNonBackedUpSessions(),s(new vo(r,o));const a=(await h.inboundGroupSessions.getFirstNonBackedUpSessions(Sm)).map(g=>new ic(g));if(a.length===0){e.set("total",r);return}const u=await this.encodeKeysForBackup(a,i.crypto),p=this.hsApi.uploadRoomKeysToBackup(i.info.version,u,{log:e});t(p),await p.response(),await this.markKeysAsBackedUp(a,t),o+=a.length,s(new vo(r,o))}})}async encodeKeysForBackup(e,t){const s={rooms:{}},i=s.rooms;for(const r of e){let o=i[r.roomId];o||(o=i[r.roomId]={sessions:{}}),o.sessions[r.sessionId]=await this.encodeRoomKey(r,t)}return s}async markKeysAsBackedUp(e,t){const s=await this.storage.readWriteTxn([J.inboundGroupSessions]);t(s);try{await Promise.all(e.map(i=>s.inboundGroupSessions.markAsBackedUp(i.roomId,i.senderKey,i.sessionId)))}catch(i){throw s.abort(),i}await s.complete()}async encodeRoomKey(e,t){return await this.keyLoader.useKey(e,s=>{const i=s.first_known_index(),r=s.export_session(i);return{first_message_index:i,forwarded_count:0,is_verified:!1,session_data:t.encryptRoomKey(e,r)}})}dispose(){var e,t,s;(e=this.backupInfoRequest)==null||e.abort(),(s=(t=this.backupConfigDeferred.value)==null?void 0:t.crypto)==null||s.dispose()}}class vo{constructor(e,t){this.total=e,this.finished=t}}class Mm{constructor({pickleKey:e,olm:t,account:s,keyLoader:i,storage:r,now:o,ownDeviceId:c}){this._pickleKey=e,this._olm=t,this._account=s,this._keyLoader=i,this._storage=r,this._now=o,this._ownDeviceId=c}discardOutboundSession(e,t){t.outboundGroupSessions.remove(e)}async createRoomKeyMessage(e,t){let s=await t.outboundGroupSessions.get(e);if(s){const i=new this._olm.OutboundGroupSession;try{return i.unpickle(this._pickleKey,s.session),this._createRoomKeyMessage(i,e)}finally{i.free()}}}createWithheldMessage(e,t,s){return{algorithm:e.algorithm,code:t,reason:s,room_id:e.room_id,sender_key:this._account.identityKeys.curve25519,session_id:e.session_id}}async ensureOutboundSession(e,t){let s=new this._olm.OutboundGroupSession;try{const i=await this._storage.readWriteTxn([this._storage.storeNames.inboundGroupSessions,this._storage.storeNames.outboundGroupSessions]);let r;try{let o=await i.outboundGroupSessions.get(e);r=await this._readOrCreateSession(s,o,e,t,i),r&&this._writeSession(this._now(),s,e,i)}catch(o){throw i.abort(),o}return await i.complete(),r}finally{s.free()}}async _readOrCreateSession(e,t,s,i,r){if(t&&e.unpickle(this._pickleKey,t.session),!t||this._needsToRotate(e,t.createdAt,i)){t&&(e.free(),e=new this._olm.OutboundGroupSession),e.create();const o=this._createRoomKeyMessage(e,s);return await new pm(s,e,this._account.identityKeys).write(this._keyLoader,r),o}}_writeSession(e,t,s,i){i.outboundGroupSessions.set({roomId:s,session:t.pickle(this._pickleKey),createdAt:e})}async encrypt(e,t,s,i){let r=new this._olm.OutboundGroupSession;try{const o=await this._storage.readWriteTxn([this._storage.storeNames.inboundGroupSessions,this._storage.storeNames.outboundGroupSessions]);let c,l;try{let h=await o.outboundGroupSessions.get(e);c=await this._readOrCreateSession(r,h,e,i,o),l=this._encryptContent(e,r,t,s);const a=c?this._now():h.createdAt;this._writeSession(a,r,e,o)}catch(h){throw o.abort(),h}return await o.complete(),new Cm(l,c)}finally{r&&r.free()}}_needsToRotate(e,t,s){let i=6048e5;Number.isSafeInteger(s==null?void 0:s.rotation_period_ms)&&(i=s==null?void 0:s.rotation_period_ms);let r=100;if(Number.isSafeInteger(s==null?void 0:s.rotation_period_msgs)&&(r=s==null?void 0:s.rotation_period_msgs),this._now()>t+i||e.message_index()>=r)return!0}_encryptContent(e,t,s,i){const r=JSON.stringify({room_id:e,type:s,content:i}),o=t.encrypt(r);return{algorithm:ft,sender_key:this._account.identityKeys.curve25519,ciphertext:o,session_id:t.session_id(),device_id:this._ownDeviceId}}_createRoomKeyMessage(e,t){return{room_id:t,session_id:e.session_id(),session_key:e.session_key(),algorithm:ft,chain_index:e.message_index()}}}class Cm{constructor(e,t){this.content=e,this.roomKeyMessage=t}}const bo="m.room.encrypted",So="m.room.history_visibility",Em=60*1e3;class Rm{constructor({room:e,deviceTracker:t,olmEncryption:s,megolmEncryption:i,megolmDecryption:r,encryptionParams:o,storage:c,keyBackup:l,notifyMissingMegolmSession:h,clock:a}){this._room=e,this._deviceTracker=t,this._olmEncryption=s,this._megolmEncryption=i,this._megolmDecryption=r,this._encryptionParams=o,this._senderDeviceCache=new Map,this._storage=c,this._keyBackup=l,this._notifyMissingMegolmSession=h,this._clock=a,this._isFlushingRoomKeyShares=!1,this._lastKeyPreShareTime=null,this._keySharePromise=null,this._historyVisibility=void 0,this._disposed=!1}enableKeyBackup(e){this._keyBackup&&!!e||(this._keyBackup=e)}async restoreMissingSessionsFromBackup(e,t){const s=e.filter(a=>a.isEncrypted&&!a.isDecrypted&&a.event).map(a=>a.event),i=nn(s),r=Array.from(i.values()),o=await this._storage.readTxn([this._storage.storeNames.inboundGroupSessions]),c=await Promise.all(r.map(async a=>this._megolmDecryption.hasSession(this._room.id,a.senderKey,a.sessionId,o))),l=r.filter((a,u)=>!c[u]);if(l.length)for(var h=l.length-1;h>=0;h--){const a=l[h];await t.wrap("session",u=>this._requestMissingSessionFromBackup(a.senderKey,a.sessionId,u))}}notifyTimelineClosed(){this._senderDeviceCache=new Map}async writeSync(e,t,s,i){let r=await this._loadHistoryVisibilityIfNeeded(this._historyVisibility,s);const o=[],c=[];if(await Js(e,h=>{var a;if(h.state_key===""&&h.type===So){const u=(a=h==null?void 0:h.content)==null?void 0:a.history_visibility;if(u!==r)return i.wrap({l:"history_visibility changed",from:r,to:u},async p=>{r=u;const g=await this._deviceTracker.writeHistoryVisibility(this._room,r,s,p);o.push(...g.added),c.push(...g.removed)})}}),t.size){const h=await this._deviceTracker.writeMemberChanges(this._room,t,r,s);o.push(...h.added),c.push(...h.removed)}c.length&&(i.log({l:"discardOutboundSession",leftUsers:c}),this._megolmEncryption.discardOutboundSession(this._room.id,s));let l=!1;return o.length&&(l=await this._addShareRoomKeyOperationForMembers(o,s,i)),{shouldFlush:l,historyVisibility:r}}afterSync({historyVisibility:e}){this._historyVisibility=e}async _loadHistoryVisibilityIfNeeded(e,t=void 0){var s,i;if(!e){t||(t=await this._storage.readTxn([this._storage.storeNames.roomState]));const r=await t.roomState.get(this._room.id,So,"");if(r)return(i=(s=r.event)==null?void 0:s.content)==null?void 0:i.history_visibility}return e}async prepareDecryptAll(e,t,s,i){var l,h,a;const r=new Map,o=[];for(const u of e)u.redacted_because||((l=u.unsigned)==null?void 0:l.redacted_because)||(((h=u.content)==null?void 0:h.algorithm)!==ft&&r.set(u.event_id,new Error("Unsupported algorithm: "+((a=u.content)==null?void 0:a.algorithm))),o.push(u));const c=await this._megolmDecryption.prepareDecryptAll(this._room.id,o,t,i);return new Tm(c,r,s,this,e)}async _processDecryptionResults(e,t,s,i,r,o){const c=e.filter(h=>{const a=s.get(h.event_id);return(a==null?void 0:a.code)==="MEGOLM_NO_SESSION"});if(!c.length)return;const l=nn(c);i===ts.Sync&&await Promise.all(Array.from(l.values()).map(async h=>{const a=h.events.map(u=>u.event_id);return this._megolmDecryption.addMissingKeyEventIds(this._room.id,h.senderKey,h.sessionId,a,r)})),this._keyBackup&&o.wrapDetached("check key backup",async h=>{if(h.set("source",i),h.set("events",c.length),h.set("sessions",l.size),i===ts.Sync){if(await this._clock.createTimeout(1e4).elapsed(),this._disposed)return;const a=await this._storage.readTxn([this._storage.storeNames.inboundGroupSessions]);await Promise.all(Array.from(l).map(async([u,p])=>{await this._megolmDecryption.hasSession(this._room.id,p.senderKey,p.sessionId,a)&&l.delete(u)}))}await Promise.all(Array.from(l.values()).map(a=>h.wrap("session",u=>this._requestMissingSessionFromBackup(a.senderKey,a.sessionId,u))))})}async _verifyDecryptionResults(e,t){await Promise.all(e.map(async s=>{let i=this._senderDeviceCache.get(s.senderCurve25519Key);i||(i=await this._deviceTracker.getDeviceByCurve25519Key(s.senderCurve25519Key,t),this._senderDeviceCache.set(s.senderCurve25519Key,i)),i&&s.setDevice(i)}))}async _fetchKeyAndVerifyDecryptionResults(e,t,s){const i=e.filter(r=>r.isVerificationUnknown);return i.length?s.wrap("fetch unverified senders",async r=>{const o=Array.from(i.reduce((a,u)=>a.add(u.encryptedEvent.sender),new Set));r.set("senders",o),await this._deviceTracker.devicesForUsers(o,t,r);const c=await this._storage.readTxn([this._storage.storeNames.deviceKeys]);await this._verifyDecryptionResults(i,c);const h=i.filter(a=>!a.isVerificationUnknown).reduce((a,u)=>(a.set(u.encryptedEvent.event_id,u),a),new Map);return new on(h,new Map,this)}):new on(new Map,new Map,this)}async _requestMissingSessionFromBackup(e,t,s){if(!this._keyBackup){s.set("enabled",!1),this._notifyMissingMegolmSession();return}s.set("id",t),s.set("senderKey",e);try{const i=await this._keyBackup.getRoomKey(this._room.id,t,s);if(i){if(i.senderKey!==e){s.set("wrong_sender_key",i.senderKey),s.logLevel=s.level.Warn;return}let r=!1,o;const c=await this._storage.readWriteTxn([this._storage.storeNames.inboundGroupSessions]);try{r=await this._megolmDecryption.writeRoomKey(i,c),s.set("isBetter",r),r&&(o=i.eventIds)}catch(l){throw c.abort(),l}await c.complete(),r&&await s.wrap("retryDecryption",l=>this._room.notifyRoomKey(i,o||[],l))}}catch(i){i.name==="HomeServerError"&&i.errcode==="M_NOT_FOUND"?(s.error=i,s.logLevel=s.level.Error):s.set("not_found",!0)}}getEventIdsForMissingKey(e,t){return this._megolmDecryption.getEventIdsForMissingKey(this._room.id,e.senderKey,e.sessionId,t)}async ensureMessageKeyIsShared(e,t){var s;if(!(((s=this._lastKeyPreShareTime)==null?void 0:s.measure()){var r;const i=await this._megolmEncryption.ensureOutboundSession(this._room.id,this._encryptionParams);i&&((r=this._keyBackup)==null||r.flush(t),await t.wrap("share key",o=>this._shareNewRoomKey(i,e,o)))})(),await this._keySharePromise}finally{this._keySharePromise=null}}}async encrypt(e,t,s,i){var o;this._keySharePromise&&(i.set("waitForRunningKeyShare",!0),await this._keySharePromise);const r=await i.wrap("megolm encrypt",()=>this._megolmEncryption.encrypt(this._room.id,e,t,this._encryptionParams));return r.roomKeyMessage&&((o=this._keyBackup)==null||o.flush(i),await i.wrap("share key",c=>this._shareNewRoomKey(r.roomKeyMessage,s,c))),{type:bo,content:r.content}}needsToShareKeys(e){for(const t of e.values())if(t.hasJoined)return!0;return!1}async _shareNewRoomKey(e,t,s){this._historyVisibility=await this._loadHistoryVisibilityIfNeeded(this._historyVisibility),await this._deviceTracker.trackRoom(this._room,this._historyVisibility,s);const i=await this._deviceTracker.devicesForTrackedRoom(this._room.id,t,s),r=Array.from(i.reduce((l,h)=>l.add(h.user_id),new Set));let o=await this._storage.readWriteTxn([this._storage.storeNames.operations]),c;try{c=this._writeRoomKeyShareOperation(e,r,o)}catch(l){throw o.abort(),l}await this._processShareRoomKeyOperation(c,t,s)}async _addShareRoomKeyOperationForMembers(e,t,s){const i=await this._megolmEncryption.createRoomKeyMessage(this._room.id,t);return i?(s.log({l:"share key for new members",userIds:e,id:i.session_id,chain_index:i.chain_index}),this._writeRoomKeyShareOperation(i,e,t),!0):!1}async flushPendingRoomKeyShares(e,t,s){if(!this._isFlushingRoomKeyShares){this._isFlushingRoomKeyShares=!0;try{t||(t=await(await this._storage.readTxn([this._storage.storeNames.operations])).operations.getAllByTypeAndScope("share_room_key",this._room.id));for(const i of t)i.type==="share_room_key"&&await s.wrap("operation",r=>this._processShareRoomKeyOperation(i,e,r))}finally{this._isFlushingRoomKeyShares=!1}}}_writeRoomKeyShareOperation(e,t,s){const r={id:Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(),type:"share_room_key",scope:this._room.id,userIds:t,roomKeyMessage:e};return s.operations.add(r),r}async _processShareRoomKeyOperation(e,t,s){s.set("id",e.id),this._historyVisibility=await this._loadHistoryVisibilityIfNeeded(this._historyVisibility),await this._deviceTracker.trackRoom(this._room,this._historyVisibility,s);const i=await this._deviceTracker.devicesForRoomMembers(this._room.id,e.userIds,t,s),r=await s.wrap("olm encrypt",c=>this._olmEncryption.encrypt("m.room_key",e.roomKeyMessage,i,t,c)),o=i.filter(c=>!r.some(l=>l.device===c));await s.wrap("send",c=>this._sendMessagesToDevices(bo,r,t,c)),o.length&&await s.wrap("missingDevices",async c=>{c.set("devices",o.map(a=>a.device_id));const l=e.userIds.filter(a=>o.some(u=>u.user_id===a));c.set("unsentUserIds",l),e.userIds=l,await this._updateOperationsStore(a=>a.update(e));const h=this._megolmEncryption.createWithheldMessage(e.roomKeyMessage,"m.no_olm","OTKs exhausted");await this._sendSharedMessageToDevices("org.matrix.room_key.withheld",h,o,t,c)}),await this._updateOperationsStore(c=>c.remove(e.id))}async _updateOperationsStore(e){const t=await this._storage.readWriteTxn([this._storage.storeNames.operations]);try{e(t.operations)}catch(s){throw t.abort(),s}await t.complete()}async _sendSharedMessageToDevices(e,t,s,i,r){const o=ti(s,h=>h.user_id),c={messages:Array.from(o.entries()).reduce((h,[a,u])=>(h[a]=u.reduce((p,g)=>(p[g.device_id]=t,p),{}),h),{})},l=Pe();await i.sendToDevice(e,c,l,{log:r}).response()}async _sendMessagesToDevices(e,t,s,i){i.set("messages",t.length);const r=Fi(t),o=Pe();await s.sendToDevice(e,r,o,{log:i}).response()}filterUndecryptedEventEntriesForKeys(e,t){return e.filter(s=>{var i,r;if(s.isEncrypted&&!s.isDecrypted){const{event:o}=s;if(o){const c=(i=o.content)==null?void 0:i.sender_key,l=(r=o.content)==null?void 0:r.session_id;return t.some(h=>c===h.senderKey&&l===h.sessionId)}}return!1})}dispose(){this._disposed=!0}}class Tm{constructor(e,t,s,i,r){this._megolmDecryptionPreparation=e,this._extraErrors=t,this._source=s,this._roomEncryption=i,this._events=r}async decrypt(){return new Am(await this._megolmDecryptionPreparation.decrypt(),this._extraErrors,this._source,this._roomEncryption,this._events)}dispose(){this._megolmDecryptionPreparation.dispose()}}class Am{constructor(e,t,s,i,r){this._megolmDecryptionChanges=e,this._extraErrors=t,this._source=s,this._roomEncryption=i,this._events=r}async write(e,t){const{results:s,errors:i}=await this._megolmDecryptionChanges.write(e);return rn(this._extraErrors,i),await this._roomEncryption._processDecryptionResults(this._events,s,i,this._source,e,t),new on(s,i,this._roomEncryption)}}class on{constructor(e,t,s){this.results=e,this.errors=t,this._roomEncryption=s}applyToEntries(e,t=void 0){for(const s of e){const i=this.results.get(s.id);if(i)s.setDecryptionResult(i),t==null||t(s);else{const r=this.errors.get(s.id);r&&(s.setDecryptionError(r),t==null||t(s))}}}verifyKnownSenders(e){return this._roomEncryption._verifyDecryptionResults(Array.from(this.results.values()),e)}get hasUnverifiedSenders(){for(const e of this.results.values())if(e.isVerificationUnknown)return!0;return!1}fetchAndVerifyRemainingSenders(e,t){return this._roomEncryption._fetchKeyAndVerifyDecryptionResults(Array.from(this.results.values()),e,t)}}class xm{constructor(){this._map=new Map}async takeLock(e){let t=this._map.get(e);return t?await t.take():(t=new Ja,t.tryTake(),this._map.set(e,t)),t.released().then(()=>{Promise.resolve().then(()=>{t.isTaken||this._map.delete(e)})}),t}}function oc(n,e,t=!1){for(const[s,i]of Object.entries(e)){if(n[s]instanceof Object&&i){oc(n[s],i);continue}if(i!=null||!t){n[s]=i;continue}}return n}/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. All rights reserved. +Licensed under the Apache License, Version 2.0 (the "License"); you may not use +this file except in compliance with the License. You may obtain a copy of the +License at http://www.apache.org/licenses/LICENSE-2.0 +THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED +WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, +MERCHANTABLITY OR NON-INFRINGEMENT. +See the Apache Version 2.0 License for specific language governing permissions +and limitations under the License. +***************************************************************************** */var an=(n=>(n.Video="video",n.Audio="audio",n))(an||{});function is(n){return n==null?void 0:n.getAudioTracks()[0]}function xt(n){return n==null?void 0:n.getVideoTracks()[0]}function cn(n,e,t){return t.wrap("mute",s=>{s.set("cameraMuted",e.camera),s.set("microphoneMuted",e.microphone);const i=is(n.userMedia);if(i){const o=!e.microphone;s.set("microphone enabled",o),i.enabled=o}const r=xt(n.userMedia);if(r){const o=!e.camera;s.set("camera enabled",o),r.enabled=o}})}class si{constructor(e=!1,t=!1,s=!1,i=!1){this.isMicrophoneMuted=e,this.isCameraMuted=t,this.hasMicrophoneTrack=s,this.hasCameraTrack=i}updateTrackInfo(e){this.hasMicrophoneTrack=!!is(e),this.hasCameraTrack=!!xt(e)}get microphone(){return!this.hasMicrophoneTrack||this.isMicrophoneMuted}get camera(){return!this.hasCameraTrack||this.isCameraMuted}toggleCamera(){return new si(this.microphone,!this.camera,this.hasMicrophoneTrack,this.hasCameraTrack)}toggleMicrophone(){return new si(!this.microphone,this.camera,this.hasMicrophoneTrack,this.hasCameraTrack)}equals(e){return this.microphone===e.microphone&&this.camera===e.camera}}const fs="call",jr=3600*1e3;var q=(n=>(n.GroupCall="org.matrix.msc3401.call",n.GroupCallMember="org.matrix.msc3401.call.member",n.Invite="m.call.invite",n.Candidates="m.call.candidates",n.Answer="m.call.answer",n.Hangup="m.call.hangup",n.Reject="m.call.reject",n.SelectAnswer="m.call.select_answer",n.Negotiate="m.call.negotiate",n.SDPStreamMetadataChanged="m.call.sdp_stream_metadata_changed",n.SDPStreamMetadataChangedPrefix="org.matrix.call.sdp_stream_metadata_changed",n.Replaces="m.call.replaces",n.AssertedIdentity="m.call.asserted_identity",n.AssertedIdentityPrefix="org.matrix.call.asserted_identity",n))(q||{});const dt="org.matrix.msc3077.sdp_stream_metadata";var Zt=(n=>(n.Usermedia="m.usermedia",n.Screenshare="m.screenshare",n))(Zt||{}),ee=(n=>(n.UserHangup="user_hangup",n.LocalOfferFailed="local_offer_failed",n.NoUserMedia="no_user_media",n.UnknownDevices="unknown_devices",n.SendInvite="send_invite",n.CreateAnswer="create_answer",n.SendAnswer="send_answer",n.SetRemoteDescription="set_remote_description",n.SetLocalDescription="set_local_description",n.AnsweredElsewhere="answered_elsewhere",n.IceFailed="ice_failed",n.InviteTimeout="invite_timeout",n.Replaced="replaced",n.SignallingFailed="signalling_timeout",n.UserBusy="user_busy",n.Transfered="transferred",n.NewSession="new_session",n))(ee||{}),Ki=(n=>(n.Ring="m.ring",n.Prompt="m.prompt",n.Room="m.room",n))(Ki||{}),yr=(n=>(n.Video="m.video",n.Voice="m.voice",n))(yr||{}),ln=(n=>(n[n.InviteGlare=0]="InviteGlare",n[n.Handle=1]="Handle",n[n.Ignore=2]="Ignore",n))(ln||{});class Vm{constructor(e,t){this.userMedia=e,this.screenShare=t}}class Nm{constructor(e,t,s){this.callId=e,this.options=t,this.logItem=s,this._state=$.Fledgling,this.candidateSendQueue=[],this.remoteCandidateBuffer=new Map,this.disposables=new li,this.statePromiseMap=new Map,this._remoteTrackToStreamId=new Map,this._remoteStreams=new Map,this.makingOffer=!1,this.ignoreOffer=!1,this.sentEndOfCandidates=!1,this._remoteMuteSettings=new si,this.onIceConnectionStateChange=async(r,o)=>{var l,h;if(this._state===$.Ended)return;let c=!1;if(r=="connected")(l=this.iceDisconnectedTimeout)==null||l.abort(),this.iceDisconnectedTimeout=void 0,this.setState($.Connected,o);else if(r=="failed")c=!0,(h=this.iceDisconnectedTimeout)==null||h.abort(),this.iceDisconnectedTimeout=void 0,await this._hangup(ee.IceFailed,o);else if(r=="disconnected"){c=!0,this.iceDisconnectedTimeout=this.options.createTimeout(30*1e3);try{await this.iceDisconnectedTimeout.elapsed(),await this._hangup(ee.IceFailed,o)}catch(a){if(!(a instanceof rt))throw a}}if(c){const a=await this.peerConnection.getStats(),u={};a.forEach((p,g)=>{u[g]=p}),o.set("peerConnectionStats",u)}},s.log({l:"create PeerCall",id:e}),this._remoteMedia=new Vm,this.peerConnection=t.webRTC.createPeerConnection(this.options.forceTURN,[this.options.turnServer.get()],0),this.disposables.track(this.options.turnServer.subscribe(r=>{this.logItem.log({l:"updating turn server",turnServer:r}),this.peerConnection.setConfiguration({iceServers:[r]})}));const i=(r,o,c)=>{const l=a=>{this.options.errorBoundary.try(()=>o(a))};this.peerConnection.addEventListener(r,l);const h=()=>{this.peerConnection.removeEventListener(r,l)};this.disposables.track(h)};i("iceconnectionstatechange",async()=>{const r=this.peerConnection.iceConnectionState;await s.wrap({l:"onIceConnectionStateChange",status:r},async o=>{await this.onIceConnectionStateChange(r,o)})}),i("icecandidate",async r=>{await s.wrap("onLocalIceCandidate",async o=>{r.candidate&&await this.handleLocalIceCandidate(r.candidate,o)})}),i("icegatheringstatechange",async()=>{const r=this.peerConnection.iceGatheringState;await s.wrap({l:"onIceGatheringStateChange",status:r},async o=>{await this.handleIceGatheringState(r,o)})}),i("track",r=>{s.wrap("onRemoteTrack",o=>{this.onRemoteTrack(r.track,r.streams,o)})}),i("datachannel",r=>{s.wrap("onRemoteDataChannel",o=>{this._dataChannel=r.channel,this.options.emitUpdate(this,void 0,o)})}),i("negotiationneeded",()=>{var c,l;const r=this.peerConnection.signalingState,o=()=>s.wrap({l:"onNegotiationNeeded",signalingState:r},h=>this.handleNegotiation(h));this.responsePromiseChain=(l=(c=this.responsePromiseChain)==null?void 0:c.then(o))!=null?l:o(),this.responsePromiseChain.catch(h=>this.options.errorBoundary.reportError(h))})}get dataChannel(){return this._dataChannel}get state(){return this._state}get hangupReason(){return this._hangupReason}get remoteMedia(){return this._remoteMedia}get remoteMuteSettings(){return this._remoteMuteSettings}call(e,t,s){return s.wrap("call",async i=>{var r;this._state===$.Fledgling&&(i.set("signalingState",this.peerConnection.signalingState),this.direction=Ri.Outbound,this.setState($.CreateOffer,i),this.localMuteSettings=t,await this.updateLocalMedia(e,i),(r=this.localMedia)!=null&&r.dataChannelOptions&&(this._dataChannel=this.peerConnection.createDataChannel("channel",this.localMedia.dataChannelOptions)),await this.waitForState([$.InviteSent,$.CreateAnswer]))})}answer(e,t,s){return s.wrap("answer",async i=>{if(this._state!==$.Ringing)return;this.setState($.CreateAnswer,i),this.localMuteSettings=t,await this.updateLocalMedia(e,i);let r;try{r=await this.peerConnection.createAnswer()}catch(o){await i.wrap("Failed to create answer",c=>{c.catch(o),this.terminate(De.Local,ee.CreateAnswer,c)});return}try{await this.peerConnection.setLocalDescription(r),this.setState($.Connecting,i)}catch(o){await i.wrap("Error setting local description!",c=>{c.catch(o),this.terminate(De.Local,ee.SetLocalDescription,c)});return}try{await this.delay(200)}catch{return}await this.sendAnswer(i)})}setMedia(e,t){return t.wrap("setMedia",async s=>{s.set("userMedia_audio",!!is(e.userMedia)),s.set("userMedia_video",!!xt(e.userMedia)),s.set("screenShare_video",!!xt(e.screenShare)),s.set("datachannel",!!e.dataChannelOptions),await this.updateLocalMedia(e,s);const i={call_id:this.callId,version:1,[dt]:this.getSDPMetadata()};await this.sendSignallingMessage({type:q.SDPStreamMetadataChangedPrefix,content:i},s)})}setMuted(e,t){return t.wrap("setMuted",async s=>{if(this.localMuteSettings=e,s.set("cameraMuted",e.camera),s.set("microphoneMuted",e.microphone),this.localMedia){cn(this.localMedia,e,s);const i={call_id:this.callId,version:1,[dt]:this.getSDPMetadata()};await this.sendSignallingMessage({type:q.SDPStreamMetadataChangedPrefix,content:i},s)}})}hangup(e,t){return t.wrap("hangup",s=>this._hangup(e,s))}async _hangup(e,t){this._state===$.Ended||this._state===$.Ending||(this.setState($.Ending,t),await this.sendHangupWithCallId(this.callId,e,t),this.terminate(De.Local,e,t))}getMessageAction(e){const t=this.callId===e.content.call_id;return e.type===q.Invite&&!t?0:t?1:2}handleIncomingSignallingMessage(e,t,s){let i;return s.wrap({l:"receive signalling message",type:e.type,callId:e.content.call_id,payload:e.content},async r=>{var o;if(i=r,this.getMessageAction(e)!==1){r.set("wrongCallId",!0);return}switch(e.type){case q.Invite:await this.handleFirstInvite(e.content,t,r);break;case q.Answer:await this.handleAnswer(e.content,t,r);break;case q.Negotiate:await this.onNegotiateReceived(e.content,r);break;case q.Candidates:await this.handleRemoteIceCandidates(e.content,t,r);break;case q.SDPStreamMetadataChanged:case q.SDPStreamMetadataChangedPrefix:this.updateRemoteSDPStreamMetadata(e.content[dt],r);break;case q.Hangup:r.set("reason",e.content.reason),this.terminate(De.Remote,(o=e.content.reason)!=null?o:ee.UserHangup,r);break;default:r.log(`Unknown event type for call: ${e.type}`);break}}),i}sendHangupWithCallId(e,t,s){const i={call_id:e,version:1};return t&&(i.reason=t),this.sendSignallingMessage({type:q.Hangup,content:i},s)}async handleNegotiation(e){this.makingOffer=!0;try{try{await this.peerConnection.setLocalDescription()}catch(s){e.log("Error setting local description!").catch(s),this.terminate(De.Local,ee.SetLocalDescription,e);return}if(this.peerConnection.iceGatheringState==="gathering")try{await this.delay(200)}catch{return}if(this._state===$.Ended)return;const t=this.peerConnection.localDescription;if(e.set("includedCandidates",this.candidateSendQueue.length),this.candidateSendQueue=[],this._state===$.CreateOffer){const s={call_id:this.callId,offer:t,[dt]:this.getSDPMetadata(),version:1,lifetime:Si};await this.sendSignallingMessage({type:q.Invite,content:s},e),this.setState($.InviteSent,e)}else if(this._state===$.Connected||this._state===$.Connecting){const s={call_id:this.callId,description:t,[dt]:this.getSDPMetadata(),version:1,lifetime:Si};await this.sendSignallingMessage({type:q.Negotiate,content:s},e)}}finally{this.makingOffer=!1}if(this.sendCandidateQueue(e),this._state===$.InviteSent){const t=this.logItem.child("invite timeout");e.refDetached(t),await t.run(async s=>{try{await this.delay(Si)}catch{return}this._state===$.InviteSent&&await this._hangup(ee.InviteTimeout,s)})}}handleInviteGlare(e,t,s){if(e.type!==q.Invite)return{shouldReplace:!1};const{content:i}=e,r=i.call_id,o=this.callId>r;let c;return s.wrap("handling call glare",async l=>{c=l,o?(l.log("Glare detected: answering incoming call "+r+" and canceling outgoing call "),this._state!==$.Fledgling&&this._state!==$.CreateOffer&&await this.sendHangupWithCallId(this.callId,ee.Replaced,l),this.close(ee.Replaced,l),this.dispose()):(l.log("Glare detected: rejecting incoming call "+r+" and keeping outgoing call "),await this.sendHangupWithCallId(r,ee.Replaced,l))}),{shouldReplace:o,log:c}}handleHangupReceived(e,t){this.terminate(De.Remote,e.reason||ee.UserHangup,t)}async handleFirstInvite(e,t,s){this._state!==$.Fledgling||this.opponentPartyId!==void 0||await this.handleInvite(e,t,s)}async handleInvite(e,t,s){var r;this.opponentPartyId=t,this.direction=Ri.Inbound;const i=e[dt];i?this.updateRemoteSDPStreamMetadata(i,s):s.log("Call did not get any SDPStreamMetadata! Can not send/receive multiple streams");try{await this.peerConnection.setRemoteDescription(e.offer),await this.addBufferedIceCandidates(s)}catch(o){await s.wrap("Call failed to set remote description",async c=>(c.catch(o),this.terminate(De.Local,ee.SetRemoteDescription,c)));return}if(this.peerConnection.getReceivers().length===0){await s.wrap("Call no remote stream or no tracks after setting remote description!",async o=>this.terminate(De.Local,ee.SetRemoteDescription,o));return}this.setState($.Ringing,s);try{await this.delay((r=e.lifetime)!=null?r:Si)}catch{return}this._state===$.Ringing&&(s.log("Invite has expired. Hanging up."),this.hangupParty=De.Remote,this.setState($.Ended,s),this.peerConnection.signalingState!="closed"&&this.peerConnection.close())}async handleAnswer(e,t,s){if(this._state===$.Ended){s.log("Ignoring answer because call has ended");return}if(this.opponentPartyId!==void 0){s.log(`Ignoring answer: we already have an answer/reject from ${this.opponentPartyId}`);return}this.opponentPartyId=t,await this.addBufferedIceCandidates(s),this.setState($.Connecting,s);const i=e[dt];i?this.updateRemoteSDPStreamMetadata(i,s):s.log("Did not get any SDPStreamMetadata! Can not send/receive multiple streams");try{await this.peerConnection.setRemoteDescription(e.answer)}catch(r){await s.wrap("Failed to set remote description",o=>{o.catch(r),this.terminate(De.Local,ee.SetRemoteDescription,o)});return}}async handleIceGatheringState(e,t){if(e==="complete"&&!this.sentEndOfCandidates){const s={candidate:""};await this.queueCandidate(s,t),this.sentEndOfCandidates=!0}}async handleLocalIceCandidate(e,t){t.set("sdpMid",e.sdpMid),t.set("candidate",e.candidate),this._state!==$.Ended&&(e.candidate!==""||!this.sentEndOfCandidates)&&(await this.queueCandidate(e,t),e.candidate===""&&(this.sentEndOfCandidates=!0))}async handleRemoteIceCandidates(e,t,s){if(this.state===$.Ended){s.log("Ignoring remote ICE candidate because call has ended");return}const i=e.candidates;if(!i){s.log("Ignoring candidates event with no candidates!");return}const r=e.version===0?null:t||null;if(this.opponentPartyId===void 0){s.log(`Buffering ${i.length} candidates until we pick an opponent`);const o=this.remoteCandidateBuffer.get(r)||[];o.push(...i),this.remoteCandidateBuffer.set(r,o);return}if(this.opponentPartyId!==t){s.log(`Ignoring candidates from party ID ${t}: we have chosen party ID ${this.opponentPartyId}`);return}await this.addIceCandidates(i,s)}async onNegotiateReceived(e,t){const s=e.description;if(!s||!s.sdp||!s.type){t.log("Ignoring invalid m.call.negotiate event");return}const i=this.direction===Ri.Inbound,r=s.type==="offer"&&(this.makingOffer||this.peerConnection.signalingState!=="stable");if(this.ignoreOffer=!i&&r,this.ignoreOffer){t.log("Ignoring colliding negotiate event because we're impolite");return}const o=e[dt];o?this.updateRemoteSDPStreamMetadata(o,t):t.log("Received negotiation event without SDPStreamMetadata!");try{if(await this.peerConnection.setRemoteDescription(s),s.type==="offer"){await this.peerConnection.setLocalDescription();const c={call_id:this.callId,description:this.peerConnection.localDescription,[dt]:this.getSDPMetadata(),version:1,lifetime:Si};await this.sendSignallingMessage({type:q.Negotiate,content:c},t)}}catch(c){t.log("Failed to complete negotiation").catch(c)}}async sendAnswer(e){const t=this.peerConnection.localDescription,s={call_id:this.callId,version:1,answer:{sdp:t.sdp,type:t.type},[dt]:this.getSDPMetadata()};e.log(`Discarding ${this.candidateSendQueue.length} candidates that will be sent in answer`),this.candidateSendQueue=[];try{await this.sendSignallingMessage({type:q.Answer,content:s},e)}catch(i){throw this.terminate(De.Local,ee.SendAnswer,e),i}this.sendCandidateQueue(e)}async queueCandidate(e,t){var i;if(this.candidateSendQueue.push(e),this._state===$.Ringing)return;this.flushCandidatesLog=(i=this.flushCandidatesLog)!=null?i:this.logItem.child("flush candidate queue"),t.refDetached(this.flushCandidatesLog);const{flushCandidatesLog:s}=this;try{await this.delay(this.direction===Ri.Inbound?500:2e3)}catch{return}this.sendCandidateQueue(s),this.flushCandidatesLog=void 0}async sendCandidateQueue(e){if(this.candidateSendQueue.length===0||this._state===$.Ended)return;const t=this.candidateSendQueue;return this.candidateSendQueue=[],e.wrap({l:"send candidates",size:t.length},async s=>{try{await this.sendSignallingMessage({type:q.Candidates,content:{call_id:this.callId,version:1,candidates:t}},s),await this.sendCandidateQueue(s)}catch(i){s.catch(i),this.terminate(De.Local,ee.SignallingFailed,s)}})}updateRemoteSDPStreamMetadata(e,t){this.remoteSDPStreamMetadata=oc(this.remoteSDPStreamMetadata||{},e,!0),this.updateRemoteMedia(t)}async addBufferedIceCandidates(e){if(this.remoteCandidateBuffer&&this.opponentPartyId){const t=this.remoteCandidateBuffer.get(this.opponentPartyId);t&&(e.log(`Adding ${t.length} buffered candidates for opponent ${this.opponentPartyId}`),await this.addIceCandidates(t,e)),this.remoteCandidateBuffer=void 0}}async addIceCandidates(e,t){for(const s of e){let i;(s.sdpMid===null||s.sdpMid===void 0)&&(s.sdpMLineIndex===null||s.sdpMLineIndex===void 0)?i=t.log("Got remote end-of-ICE candidates"):i=t.log(`Adding remote ICE ${s.sdpMid} candidate: ${s.candidate}`);try{await this.peerConnection.addIceCandidate(s)}catch(r){this.ignoreOffer||i.catch(r)}}}setState(e,t){if(e!==this._state){t.log({l:"change state",status:e,oldState:this._state}),this._state,this._state=e;let s=this.statePromiseMap.get(e);s&&(s.resolve(),this.statePromiseMap.delete(e)),this.options.emitUpdate(this,void 0,t)}}waitForState(e){return Promise.race(e.map(t=>{let s=this.statePromiseMap.get(t);if(!s){let i;const r=new Promise(o=>{i=o});s={resolve:i,promise:r},this.statePromiseMap.set(t,s)}return s.promise}))}terminate(e,t,s){this._state!==$.Ended&&(this.hangupParty=e,this._hangupReason=t,this.setState($.Ended,s),this.localMedia=void 0,this.peerConnection&&this.peerConnection.signalingState!=="closed"&&this.peerConnection.close())}getSDPMetadata(){var t,s,i,r,o,c;const e={};if((t=this.localMedia)!=null&&t.userMedia){const l=this.localMedia.userMedia.id;e[l]={purpose:Zt.Usermedia,audio_muted:(i=(s=this.localMuteSettings)==null?void 0:s.microphone)!=null?i:!1,video_muted:(o=(r=this.localMuteSettings)==null?void 0:r.camera)!=null?o:!1}}if((c=this.localMedia)!=null&&c.screenShare){const l=this.localMedia.screenShare.id;e[l]={purpose:Zt.Screenshare}}return e}findReceiverForStream(e,t){return this.peerConnection.getReceivers().find(s=>s.track.kind===e&&this._remoteTrackToStreamId.get(s.track.id)===t)}findTransceiverForTrack(e){return this.peerConnection.getTransceivers().find(t=>{var s;return((s=t.sender.track)==null?void 0:s.id)===e.id})}onRemoteTrack(e,t,s){if(s.set("kind",e.kind),s.set("id",e.id),s.set("streams",t.map(r=>r.id)),t.length===0){s.log({l:`ignoring ${e.kind} streamless track`,id:e.id});return}const i=t[0];if(this._remoteTrackToStreamId.set(e.id,i.id),!this._remoteStreams.has(i.id)){const r=c=>{this.logItem.wrap({l:"removetrack",id:c.track.id},l=>{const h=this._remoteTrackToStreamId.get(c.track.id);if(h){this._remoteTrackToStreamId.delete(c.track.id);const a=this._remoteStreams.get(h);a&&a.stream.getTracks().length===0&&(this.disposables.disposeTracked(o),this._remoteStreams.delete(i.id),this.updateRemoteMedia(l))}})};i.addEventListener("removetrack",r);const o=()=>{i.removeEventListener("removetrack",r)};this.disposables.track(o),this._remoteStreams.set(i.id,{disposeListener:o,stream:i})}this.updateRemoteMedia(s)}updateRemoteMedia(e){e.wrap("reevaluating remote media",t=>{var s,i;if(this._remoteMedia.userMedia=void 0,this._remoteMedia.screenShare=void 0,this.remoteSDPStreamMetadata)for(const r of this._remoteStreams.values()){const{stream:o}=r,c=this.remoteSDPStreamMetadata[o.id];if(c)if(c.purpose===Zt.Usermedia){this._remoteMedia.userMedia=o;const l=this.findReceiverForStream(an.Audio,o.id);l&&(l.track.enabled=!c.audio_muted);const h=this.findReceiverForStream(an.Video,o.id);h&&(h.track.enabled=!c.video_muted),this._remoteMuteSettings=new si((s=c.audio_muted)!=null?s:!1,(i=c.video_muted)!=null?i:!1,!!(l!=null&&l.track),!!(h!=null&&h.track)),t.log({l:"setting userMedia",micMuted:this._remoteMuteSettings.microphone,cameraMuted:this._remoteMuteSettings.camera})}else c.purpose===Zt.Screenshare&&(this._remoteMedia.screenShare=o,t.log("setting screenShare"));else t.log({l:"no metadata yet for stream, ignoring for now",id:o.id})}this.options.emitUpdate(this,void 0,t)})}updateLocalMedia(e,t){return t.wrap("updateLocalMedia",async s=>{var o,c;const i=this.peerConnection.getSenders(),r=async(l,h,a)=>{const u=async(p,g)=>{const f=i.find(M=>M.track===p),v=l!=null?l:h;if(v!==h&&(p&&(v.removeTrack(p),p.stop()),g&&v.addTrack(g)),g&&f)try{await s.wrap(`attempting to replace ${a} ${g.kind} track`,M=>f.replaceTrack(g));return}catch{}f&&s.wrap(`removing ${a} ${f.track.kind} track`,M=>{this.peerConnection.removeTrack(f)}),g&&s.wrap(`adding ${a} ${g.kind} track`,M=>{const R=this.peerConnection.addTrack(g,v);this.options.webRTC.prepareSenderForPurpose(this.peerConnection,R,a)})};!l&&!h||(await u(is(l),is(h)),await u(xt(l),xt(h)))};await r((o=this.localMedia)==null?void 0:o.userMedia,e==null?void 0:e.userMedia,Zt.Usermedia),await r((c=this.localMedia)==null?void 0:c.screenShare,e==null?void 0:e.screenShare,Zt.Screenshare),this.localMedia||(this.localMedia=e)})}async delay(e){const t=this.disposables.track(this.options.createTimeout(e));try{await t.elapsed()}finally{this.disposables.untrack(t)}}sendSignallingMessage(e,t){return t.wrap({l:"send",id:e.type},async s=>this.options.sendSignallingMessage(e,s))}dispose(){var e;this.disposables.dispose(),(e=this.iceDisconnectedTimeout)==null||e.abort(),this.peerConnection.close(),this.options.emitUpdate=(t,s,i)=>{i.log("emitting update from PeerCall after disposal",this.logItem.level.Error),console.trace("emitting update from PeerCall after disposal")}}close(e,t){e===void 0&&(e=ee.UserHangup),this.terminate(De.Local,e,t)}}var De=(n=>(n.Local="local",n.Remote="remote",n))(De||{}),$=(n=>(n.Fledgling="fledgling",n.CreateOffer="create_offer",n.InviteSent="invite_sent",n.CreateAnswer="create_answer",n.Connecting="connecting",n.Connected="connected",n.Ringing="ringing",n.Ending="ending",n.Ended="ended",n))($||{}),Ri=(n=>(n.Inbound="inbound",n.Outbound="outbound",n))(Ri||{});const Si=6e4;function Dm(n){return n===q.Invite||n===q.Candidates||n===q.Answer||n===q.Hangup||n===q.SDPStreamMetadataChanged||n===q.SDPStreamMetadataChangedPrefix||n===q.Negotiate}class ac{constructor(e){this.errorCallback=e}try(e,t){try{let s=e();return s instanceof Promise&&(s=s.catch(i=>(this._error=i,this.reportError(i),t))),s}catch(s){return this._error=s,this.reportError(s),t}}reportError(e){try{this.errorCallback(e)}catch(t){console.error("error in ErrorBoundary callback",t)}}get error(){return this._error}}const Um=[ee.UserHangup,ee.AnsweredElsewhere,ee.Replaced,ee.UserBusy,ee.Transfered,ee.NewSession];class Om{constructor(e,t,s,i){this.localMedia=e,this.localMuteSettings=t,this.turnServer=s,this.logItem=i,this.retryCount=0,this.queuedSignallingMessages=[],this.outboundSeqCounter=0}get canDequeueNextSignallingMessage(){if(this.queuedSignallingMessages.length===0)return!1;const t=this.queuedSignallingMessages[0].content.seq;return this.lastIgnoredSeqNr!==void 0&&t===this.lastIgnoredSeqNr+1?!0:this.lastProcessedSeqNr===void 0?t===0:t<=this.lastProcessedSeqNr+1}dispose(){var e;(e=this.peerCall)==null||e.dispose(),this.localMedia.dispose(),this.logItem.finish()}}class Pm{constructor(e,t,s,i){this.member=e,this.callDeviceMembership=t,this.options=s,this.errorBoundary=new ac(r=>{this.options.emitUpdate(this,"error"),this.connection&&this.connection.logItem.log("error at boundary").catch(r)}),this.emitUpdateFromPeerCall=async(r,o,c)=>{const l=this.connection;if(r.state===$.Ringing)l.logItem.wrap("ringing, answer peercall",h=>(c.refDetached(h),r.answer(l.localMedia,l.localMuteSettings,h)));else if(r.state===$.Ended){const h=r.hangupReason;if(r.dispose(),l.peerCall=void 0,h&&!Um.includes(h)){l.retryCount+=1;const{retryCount:a}=l;await l.logItem.wrap({l:"retry connection",retryCount:a},async u=>{if(c.refDetached(u),a<=3)await this.callIfNeeded(u);else{const p=await this.disconnect(!1);p&&u.refDetached(p)}})}}this.options.emitUpdate(this,o)},this.sendSignallingMessage=async(r,o)=>{const c=r;c.content.seq=this.connection.outboundSeqCounter++,c.content.conf_id=this.options.confId,c.content.device_id=this.options.ownDeviceId,c.content.party_id=this.options.ownDeviceId,c.content.sender_session_id=this.options.sessionId,c.content.dest_session_id=this.sessionId;let l,h=r.type;const a=await this.options.encryptDeviceMessage(this.member.userId,this.deviceId,c,o);a?(l=Fi(a),h="m.room.encrypted"):l=Fi([{content:c.content,device:this}]),o.set("payload",c.content),await this.options.hsApi.sendToDevice(h,l,Pe(),{log:o}).response()},this._renewExpireTimeout(i)}get error(){return this.errorBoundary.error}get usesFoci(){const e=this.callDeviceMembership["m.foci.active"];return Array.isArray(e)&&e.length>0}_renewExpireTimeout(e){var i;(i=this.expireTimeout)==null||i.dispose(),this.expireTimeout=void 0;const t=Rr(this.callDeviceMembership);if(typeof t!="number")return;const s=Math.max(0,t-this.options.clock.now());e==null||e.set("expiresIn",s),this.expireTimeout=this.options.clock.createTimeout(s+10),this.expireTimeout.elapsed().then(()=>{this.options.emitUpdate(this,"isExpired")},r=>{})}get logItem(){var e;return(e=this.connection)==null?void 0:e.logItem}get remoteMedia(){var e,t;return(t=(e=this.connection)==null?void 0:e.peerCall)==null?void 0:t.remoteMedia}get isExpired(){return!this.isConnected&&hn(this.callDeviceMembership,this.options.clock.now())}get remoteMuteSettings(){var e,t;return(t=(e=this.connection)==null?void 0:e.peerCall)==null?void 0:t.remoteMuteSettings}get isConnected(){var e,t;return((t=(e=this.connection)==null?void 0:e.peerCall)==null?void 0:t.state)===$.Connected}get userId(){return this.member.userId}get deviceId(){return this.callDeviceMembership.device_id}get user_id(){return this.userId}get device_id(){return this.deviceId}get sessionId(){return this.callDeviceMembership.session_id}get dataChannel(){var e,t;return(t=(e=this.connection)==null?void 0:e.peerCall)==null?void 0:t.dataChannel}connect(e,t,s,i){return this.errorBoundary.try(async()=>{if(this.connection)return;const r=new Om(e.clone(),t,s,i);this.connection=r;let o;return await r.logItem.wrap("connect",async c=>{o=c,await this.callIfNeeded(c)}),o})}callIfNeeded(e){return e.wrap("callIfNeeded",async t=>{let s;if(this.member.userId===this.options.ownUserId?s=this.deviceId>this.options.ownDeviceId:s=this.member.userId>this.options.ownUserId,s){const i=this.connection;i.peerCall=this._createPeerCall(Ir("c")),await i.peerCall.call(i.localMedia,i.localMuteSettings,t)}else t.set("wait_for_invite",!0)})}disconnect(e){return this.errorBoundary.try(async()=>{const{connection:t}=this;if(!t)return;let s;return await t.logItem.wrap("disconnect",async i=>{s=i,e&&t.peerCall&&await t.peerCall.hangup(ee.UserHangup,i)}),t.dispose(),this.connection=void 0,s})}updateCallInfo(e,t){this.errorBoundary.try(()=>{this.callDeviceMembership=e,this._renewExpireTimeout(t),this.connection&&this.connection.logItem.refDetached(t)})}updateRoomMember(e){this.member=e,this.options.emitUpdate(this)}handleDeviceMessage(e,t){this.errorBoundary.try(()=>{var s;t.wrap({l:"Member.handleDeviceMessage",type:e.type,seq:(s=e.content)==null?void 0:s.seq},i=>{const{connection:r}=this;if(r){const o=e.content.dest_session_id;if(o!==this.options.sessionId){const h=r.logItem.log({l:"ignoring to_device event with wrong session_id",destSessionId:o,type:e.type});i.refDetached(h);return}if(r.peerCall&&r.peerCall.getMessageAction(e)===ln.InviteGlare){const{shouldReplace:a,log:u}=r.peerCall.handleInviteGlare(e,this.deviceId,r.logItem);u&&u.refDetached(u),a&&(r.peerCall.dispose(),r.peerCall=void 0)}e.type===q.Invite&&!r.peerCall&&(r.peerCall=this._createPeerCall(e.content.call_id));const c=Nt(r.queuedSignallingMessages,e,(h,a)=>h.content.seq-a.content.seq);r.queuedSignallingMessages.splice(c,0,e);let l=!1;r.peerCall&&(l=this.dequeueSignallingMessages(r,r.peerCall,e,i)),l||i.refDetached(r.logItem.log({l:"queued message",type:e.type,seq:e.content.seq,idx:c}))}else t.log({l:"member not connected",userId:this.userId,deviceId:this.deviceId})})})}dequeueSignallingMessages(e,t,s,i){let r=!1;for(;e.canDequeueNextSignallingMessage;){const o=e.queuedSignallingMessages.shift(),c=o===s;r=r||c,i.wrap(c?"process message":"dequeue message",l=>{var u;const h=(u=o.content)==null?void 0:u.seq;if(l.set("seq",h),l.set("type",o.type),t.getMessageAction(o)===ln.Handle){const p=t.handleIncomingSignallingMessage(o,this.deviceId,e.logItem);l.refDetached(p),e.lastProcessedSeqNr=h}else l.set("ignored",!0),e.lastIgnoredSeqNr=h})}return r}async setMedia(e,t){return this.errorBoundary.try(async()=>{var i;const{connection:s}=this;s&&(s.localMedia=e.replaceClone(s.localMedia,t),await((i=s.peerCall)==null?void 0:i.setMedia(s.localMedia,s.logItem)))})}async setMuted(e){return this.errorBoundary.try(async()=>{var s;const{connection:t}=this;t&&(t.localMuteSettings=e,await((s=t.peerCall)==null?void 0:s.setMuted(e,t.logItem)))})}_createPeerCall(e){const t=this.connection;return new Nm(e,Object.assign({},this.options,{errorBoundary:this.errorBoundary,emitUpdate:this.emitUpdateFromPeerCall,sendSignallingMessage:this.sendSignallingMessage,turnServer:t.turnServer}),t.logItem)}dispose(){var e,t;(e=this.connection)==null||e.dispose(),this.connection=void 0,(t=this.expireTimeout)==null||t.dispose(),this.expireTimeout=void 0,this.options.emitUpdate=()=>{}}}function Rr(n){const e=n.expires_ts;if(Number.isSafeInteger(e))return e}function hn(n,e,t=0){const s=Rr(n);return typeof s=="number"?s+t<=e:!0}function Ws(n,e){return JSON.stringify(n)+","+JSON.stringify(e)}function ko(n,e){return n.startsWith(JSON.stringify(e)+",")}function Fm(n){return JSON.parse(`[${n}]`)[1]}class Lm{constructor(e,t,s,i,r,o){this.logItem=e,this.membersLogItem=t,this.localMedia=s,this.localPreviewMedia=i,this.localMuteSettings=r,this.turnServer=o}dispose(){var e;this.localMedia.dispose(),this.localPreviewMedia.dispose(),this.logItem.finish(),(e=this.renewMembershipTimeout)==null||e.dispose()}}class qr extends $t{constructor(e,t,s,i,r,o,c){super(),this.id=e,this.isLoadedFromStorage=t,this.startTime=i,this.callContent=r,this.roomId=o,this.options=c,this._members=new Dt,this.bufferedDeviceMessages=new Map,this.errorBoundary=new ac(l=>{this.emitChange(),this.joinedData&&(this.joinedData.logItem.log("error at boundary").catch(l),console.error(l))}),this._state=s?"fledgling":"created",this._memberOptions=Object.assign({},c,{confId:this.id,emitUpdate:l=>{var a;const h=Ws(l.userId,l.deviceId);if(l.isExpired&&!l.isConnected){const u=this.options.logger.log({l:"removing expired member from call",memberKey:h,callId:this.id});(a=l.logItem)==null||a.refDetached(u),l.dispose(),this._members.remove(h)}else this._members.update(h)},encryptDeviceMessage:(l,h,a,u)=>this.options.encryptDeviceMessage(this.roomId,l,h,a,u)})}get localMedia(){var e;return(e=this.joinedData)==null?void 0:e.localMedia}get localPreviewMedia(){var e;return(e=this.joinedData)==null?void 0:e.localPreviewMedia}get members(){return this._members}get isTerminated(){var e;return!!((e=this.callContent)!=null&&e["m.terminated"])}get usesFoci(){for(const e of this._members.values())if(e.usesFoci)return!0;return!1}get duration(){if(typeof this.startTime=="number")return this.options.clock.now()-this.startTime}get isRinging(){return this._state==="created"&&this.intent==="m.ring"&&!this.isMember(this.options.ownUserId)}get name(){var e;return(e=this.callContent)==null?void 0:e["m.name"]}get intent(){var e;return(e=this.callContent)==null?void 0:e["m.intent"]}get type(){var e;return(e=this.callContent)==null?void 0:e["m.type"]}get logItem(){var e;return(e=this.joinedData)==null?void 0:e.logItem}get error(){return this.errorBoundary.error}join(e,t){return this.options.logger.wrapOrRun(t,"Call.join",async s=>{if(this._state!=="created"||this.joinedData||this.usesFoci){e.dispose();return}const i=this.options.logger.child({l:"Call.connection",t:fs,id:this.id,ownSessionId:this.options.sessionId}),r=await this.options.turnServerSource.getSettings(i),o=i.child("member connections"),c=new si;c.updateTrackInfo(e.userMedia);const l=e.asPreview(),h=new Lm(i,o,e,l,c,r);this.joinedData=h,await h.logItem.wrap("join",async a=>{s.refDetached(a),this._state="joining",this.emitChange(),await a.wrap("update member state",async u=>{const p=await this._createMemberPayload(!0);u.set("payload",p),await this.options.hsApi.sendState(this.roomId,q.GroupCallMember,this.options.ownUserId,p,{log:u}).response(),this.emitChange()});for(const u of this._members.values())this.connectToMember(u,h,a)})})}async setMedia(e){var t;if((this._state==="joining"||this._state==="joined")&&this.joinedData){const s=this.joinedData.localMedia;this.joinedData.localMedia=e,(t=this.joinedData.localPreviewMedia)==null||t.dispose(),this.joinedData.localPreviewMedia=e.asPreview(),this.joinedData.localMuteSettings.updateTrackInfo(e.userMedia),this.emitChange(),await Promise.all(Array.from(this._members.values()).map(i=>i.setMedia(e,s))),s==null||s.dispose()}}async setMuted(e){const{joinedData:t}=this;if(!t)return;const s=t.localMuteSettings;e.updateTrackInfo(t.localMedia.userMedia),t.localMuteSettings=e,s.equals(e)||(this.localPreviewMedia&&cn(this.localPreviewMedia,e,this.joinedData.logItem),this.localMedia&&cn(this.localMedia,e,this.joinedData.logItem),await Promise.all(Array.from(this._members.values()).map(i=>i.setMuted(t.localMuteSettings))),this.emitChange())}get muteSettings(){var e;return(e=this.joinedData)==null?void 0:e.localMuteSettings}get hasJoined(){return this._state==="joining"||this._state==="joined"}async leave(e){await this.options.logger.wrapOrRun(e,"Call.leave",async t=>{var i;const{joinedData:s}=this;if(!!s)try{(i=s.renewMembershipTimeout)==null||i.dispose(),s.renewMembershipTimeout=void 0;const r=await this._createMemberPayload(!1);r?(await this.options.hsApi.sendState(this.roomId,q.GroupCallMember,this.options.ownUserId,r,{log:t}).response(),(this.intent===Ki.Ring||this.intent===Ki.Prompt)&&this._members.size===0&&await this.terminate(t)):t.set("already_left",!0)}finally{if(!this.disconnect(t))throw this.errorBoundary.error}})}terminate(e){return this.options.logger.wrapOrRun(e,{l:"terminate call",t:fs},async t=>{if(this._state==="fledgling")return;await this.options.hsApi.sendState(this.roomId,q.GroupCall,this.id,Object.assign({},this.callContent,{"m.terminated":!0}),{log:t}).response()})}create(e,t){return t.wrap({l:"create call",t:fs},async s=>{if(this._state!=="fledgling")return;this._state="creating",this.emitChange(),this.callContent=Object.assign({"m.type":e},this.callContent),await this.options.hsApi.sendState(this.roomId,q.GroupCall,this.id,this.callContent,{log:s}).response(),this._state="created",this.emitChange()})}updateCallEvent(e,t){this.errorBoundary.try(()=>{t.wrap({l:"update call",t:fs,id:this.id},s=>{typeof this.startTime!="number"&&(this.startTime=e.origin_server_ts),this.callContent=e.content,this._state==="creating"&&(this._state="created"),s.set("status",this._state),this.emitChange()})})}updateRoomMembers(e){this.errorBoundary.try(()=>{for(const t of e.values()){const{member:s}=t;for(const i of this._members.values())i.userId===s.userId&&i.updateRoomMember(s)}})}updateMembership(e,t,s,i){this.errorBoundary.try(async()=>{await i.wrap({l:"update call membership",t:fs,id:this.id,userId:e},async r=>{const o=this.options.clock.now(),c=s["m.devices"],l=this.getDeviceIdsForUserId(e);for(const a of c){const u=a.device_id,p=Ws(e,u);e===this.options.ownUserId&&u===this.options.ownDeviceId?r.wrap("update own membership",g=>{this.hasJoined&&(this.joinedData&&this.joinedData.logItem.refDetached(g),this._setupRenewMembershipTimeout(a,g)),this._state==="joining"&&(g.set("joined",!0),this._state="joined",this.emitChange())}):await r.wrap({l:"update device membership",id:p,sessionId:a.session_id},async g=>{if(hn(a,o)){g.set("expired",!0);const M=this._members.get(p);M?(M.dispose(),this._members.remove(p),g.set("removed",!0)):g.discard();return}let f=this._members.get(p);const v=f&&f.sessionId!==a.session_id;if(f&&!v)g.set("update",!0),f.updateCallInfo(a,g);else{if(f&&v){g.set("removedSessionId",f.sessionId);const M=await f.disconnect(!1);M&&g.refDetached(M),f.dispose(),this._members.remove(p),f=void 0}g.set("add",!0),f=new Pm(t,a,this._memberOptions,g),this._members.add(p,f),this.joinedData&&this.connectToMember(f,this.joinedData,g)}this.flushPendingIncomingDeviceMessages(f,g)})}const h=new Set(c.map(a=>a.device_id));for(const a of l)h.has(a)||this.removeMemberDevice(e,a,r);e===this.options.ownUserId&&!h.has(this.options.ownDeviceId)&&this.removeOwnDevice(r)})})}removeMembership(e,t){this.errorBoundary.try(()=>{const s=this.getDeviceIdsForUserId(e);t.wrap({l:"remove call member",t:fs,id:this.id,userId:e},i=>{for(const r of s)this.removeMemberDevice(e,r,i);e===this.options.ownUserId&&this.removeOwnDevice(i)})})}flushPendingIncomingDeviceMessages(e,t){const s=Ws(e.userId,e.deviceId),i=this.bufferedDeviceMessages.get(s);if(i){for(const r of i)r.content.sender_session_id===e.sessionId&&(e.handleDeviceMessage(r,t),i.delete(r));i.size===0&&this.bufferedDeviceMessages.delete(s)}}getDeviceIdsForUserId(e){return Array.from(this._members.keys()).filter(t=>ko(t,e)).map(t=>Fm(t))}isMember(e){return Array.from(this._members.keys()).some(t=>ko(t,e))}removeOwnDevice(e){e.wrap("remove own membership",t=>{this.disconnect(t)})}disconnect(e){return this.errorBoundary.try(async()=>{var t;if(this.hasJoined){for(const s of this._members.values()){const i=await s.disconnect(!0);i&&e.refDetached(i)}this._state="created"}(t=this.joinedData)==null||t.dispose(),this.joinedData=void 0,this.emitChange()},!1)||!0}async removeMemberDevice(e,t,s){const i=Ws(e,t);await s.wrap({l:"remove device member",id:i},async r=>{const o=this._members.get(i);if(o){r.set("leave",!0);const c=await o.disconnect(!1);c&&r.refDetached(c),o.dispose(),this._members.remove(i)}})}handleDeviceMessage(e,t,s,i){this.errorBoundary.try(()=>{const r=Ws(t,s);let o=this._members.get(r);if(o&&e.content.sender_session_id===o.sessionId)o.handleDeviceMessage(e,i);else{i.log({l:"call: buffering to_device message, member not found",t:fs,id:this.id,userId:t,deviceId:s,sessionId:e.content.sender_session_id,type:e.type});let c=this.bufferedDeviceMessages.get(r);c||(c=new Set,this.bufferedDeviceMessages.set(r,c)),c.add(e)}})}async _createMemberPayload(e){var h,a;const{storage:t}=this.options,i=await(await t.readTxn([t.storeNames.roomState])).roomState.get(this.roomId,q.GroupCallMember,this.options.ownUserId),r=(a=(h=i==null?void 0:i.event)==null?void 0:h.content)!=null?a:{["m.calls"]:[]};let o=r["m.calls"],c=o.find(u=>u["m.call_id"]===this.id);c||(c={["m.call_id"]:this.id,["m.devices"]:[]},o.push(c));const l=this.options.clock.now();return c["m.devices"]=c["m.devices"].filter(u=>!(u.device_id===this.options.ownDeviceId||Rr(u)===void 0||hn(u,l,jr))),e&&c["m.devices"].push({device_id:this.options.ownDeviceId,session_id:this.options.sessionId,expires_ts:l+jr,feeds:[{purpose:"m.usermedia"}]}),r["m.calls"]=o.filter(u=>u["m.devices"].length!==0),r}async connectToMember(e,t,s){const i=Ws(e.userId,e.deviceId),r=t.membersLogItem.child({l:"member",id:i,sessionId:e.sessionId});await s.wrap({l:"connect",id:i},async o=>{const c=await e.connect(t.localMedia,t.localMuteSettings,t.turnServer,r);c&&o.refDetached(c)})}emitChange(){this.emit("change"),this.options.emitUpdate(this)}_setupRenewMembershipTimeout(e,t){var l;const{joinedData:s}=this;if(!s)return;(l=s.renewMembershipTimeout)==null||l.dispose(),s.renewMembershipTimeout=void 0;const i=Rr(e);if(typeof i!="number")return;const r=i-this.options.clock.now(),o=Math.max(1e4,Math.ceil((.2+this.options.random()*.8)*(.08333*jr))),c=Math.max(0,r-o);t.set("expiresIn",r),t.set("renewIn",c),s.renewMembershipTimeout=this.options.clock.createTimeout(c),s.renewMembershipTimeout.elapsed().then(()=>{s.logItem.wrap("renew membership",async h=>{const a=await this._createMemberPayload(!0);h.set("payload",a),await this.options.hsApi.sendState(this.roomId,q.GroupCallMember,this.options.ownUserId,a,{log:h}).response()})},()=>{})}dispose(){var e;(e=this.joinedData)==null||e.dispose();for(const t of this._members.values())t.dispose()}}const Io=5*60,Km={urls:["stun:turn.matrix.org"],username:"",credential:""};class Bm{constructor(e,t,s=Km){this.hsApi=e,this.clock=t,this.defaultSettings=s,this.isPolling=!1}getSettings(e){return e.wrap("get turn server",async t=>{if(!this.isPolling){const s=await this.doRequest(t),i=s?Mo(s):this.defaultSettings;t.set("iceServer",i),this.currentObservable?this.currentObservable.set(i):this.currentObservable=new Ui(i,()=>{this.stopPollLoop()},()=>{var r;this.runLoop((r=s==null?void 0:s.ttl)!=null?r:Io)})}return this.currentObservable})}async runLoop(e){let t=e;for(this.isPolling=!0;this.isPolling;)try{this.pollTimeout=this.clock.createTimeout(t*1e3),await this.pollTimeout.elapsed(),this.pollTimeout=void 0;const s=await this.doRequest(void 0);if(s){const i=Mo(s);$m(this.currentObservable,i)&&this.currentObservable.set(i),s.ttl>0?t=s.ttl:this.stopPollLoop()}else t=Io}catch(s){s.name}}async doRequest(e){try{return this.pollRequest=this.hsApi.getTurnServer({log:e}),await this.pollRequest.response()}catch(t){if(t.name==="HomeServerError")return;throw t}finally{this.pollRequest=void 0}}stopPollLoop(){var e,t;this.isPolling=!1,this.currentObservable=void 0,(e=this.pollTimeout)==null||e.dispose(),this.pollTimeout=void 0,(t=this.pollRequest)==null||t.abort(),this.pollRequest=void 0}dispose(){this.stopPollLoop()}}function $m(n,e){const t=n.get();if(!t)return!0;const s=Array.isArray(t.urls)?t.urls:[t.urls],i=Array.isArray(e.urls)?e.urls:[e.urls];return!(s.length===i.length&&!i.some(o=>!s.includes(o)))||e.username!==t.username||e.credential!==t.credential}function Mo(n){return{urls:n.uris,username:n.username,credential:n.password,credentialType:"password"}}function jm(n,e){return JSON.stringify(n)+","+JSON.stringify(e)}class qm{constructor(e){this.options=e,this._calls=new Dt,this.roomMemberToCallIds=new Map,this.sessionId=Ir("s"),this.groupCallOptions=Object.assign({},this.options,{turnServerSource:new Bm(this.options.hsApi,this.options.clock),emitUpdate:(t,s)=>this._calls.update(t.id,s),createTimeout:this.options.clock.createTimeout,sessionId:this.sessionId})}loadCalls(e,t){return this.options.logger.wrapOrRun(t,"CallHandler.loadCalls",async s=>{e||(e=Ki.Ring),s.set("intent",e);const i=await this._getLoadTxn(),r=await i.calls.getByIntent(e);await this._loadCallEntries(r,i,s)})}loadCallsForRoom(e,t,s){return this.options.logger.wrapOrRun(s,"CallHandler.loadCallsForRoom",async i=>{i.set("intent",e),i.set("roomId",t);const r=await this._getLoadTxn(),o=await r.calls.getByIntentAndRoom(e,t);await this._loadCallEntries(o,r,i)})}async _getLoadTxn(){const e=this.options.storage.storeNames;return await this.options.storage.readTxn([e.calls,e.roomState])}async _loadCallEntries(e,t,s){s.set("entries",e.length),await Promise.all(e.map(async r=>{if(this._calls.get(r.callId))return;const o=await t.roomState.get(r.roomId,q.GroupCall,r.callId);if(o){const c=new qr(o.event.state_key,!0,!1,r.timestamp,o.event.content,o.roomId,this.groupCallOptions);this._calls.set(c.id,c)}}));const i=Array.from(new Set(e.map(r=>r.roomId)));await Promise.all(i.map(async r=>{const o=await t.roomState.getAllForType(r,q.GroupCallMember);await Promise.all(o.map(async c=>{const l=c.event.sender,h=await t.roomState.get(r,Ke,l);let a;h&&(a=Q.fromMemberEvent(h.event)),a||(a=Q.fromUserId(r,l,"join")),this.handleCallMemberEvent(c.event,a,r,s)}))})),s.set("newSize",this._calls.size)}createCall(e,t,s,i,r){return this.options.logger.wrapOrRun(r,"CallHandler.createCall",async o=>{i||(i=Ki.Ring);const c=new qr(Ir("conf-"),!1,!0,void 0,{"m.name":s,"m.intent":i},e,this.groupCallOptions);this._calls.set(c.id,c);try{await c.create(t,o);const l=await this.options.storage.readWriteTxn([this.options.storage.storeNames.calls]);l.calls.add({intent:c.intent,callId:c.id,timestamp:this.options.clock.now(),roomId:e}),await l.complete()}catch(l){throw this._calls.remove(c.id),l}return c})}get calls(){return this._calls}async handleRoomState(e,t,s,i,r){if(t.type===q.GroupCall&&this.handleCallEvent(t,e.id,i,r),t.type===q.GroupCallMember){let o=await s.lookupMemberAtEvent(t.sender,t,i);o||(o=Q.fromUserId(e.id,t.sender,"join")),this.handleCallMemberEvent(t,o,e.id,r)}}updateRoomMembers(e,t){for(const s of this._calls.values())s.roomId===e.id&&s.updateRoomMembers(t)}handlesDeviceMessageEventType(e){return Dm(e)}handleDeviceMessage(e,t,s,i){const r=this._calls.get(e.content.conf_id);r==null||r.handleDeviceMessage(e,t,s,i)}handleCallEvent(e,t,s,i){const r=e.state_key;let o=this._calls.get(r);o?(o.updateCallEvent(e,i),o.isTerminated&&(o.disconnect(i),this._calls.remove(o.id),s.calls.remove(o.intent,t,o.id))):e.content["m.terminated"]||(o=new qr(e.state_key,!1,!1,e.origin_server_ts,e.content,t,this.groupCallOptions),this._calls.set(o.id,o),s.calls.add({intent:o.intent,callId:o.id,timestamp:e.origin_server_ts,roomId:t}))}handleCallMemberEvent(e,t,s,i){var a;const r=e.state_key,o=jm(s,r),c=(a=e.content["m.calls"])!=null?a:[];for(const u of c){const p=u["m.call_id"],g=this._calls.get(p);g==null||g.updateMembership(r,t,u,i)}const l=new Set(c.map(u=>u["m.call_id"]));let h=this.roomMemberToCallIds.get(o);if(h){for(const u of h)if(!l.has(u)){const p=this._calls.get(u);p==null||p.removeMembership(r,i)}}l.size===0?this.roomMemberToCallIds.delete(o):this.roomMemberToCallIds.set(o,l)}dispose(){this.groupCallOptions.turnServerSource.dispose();for(const e of this._calls.values())e.dispose()}}class Hm extends xr{async handleRoomState(e,t,s,i,r){const o=[];for(let c of this._handlers)o.push(c.handleRoomState(e,t,s,i,r));await Promise.all(o)}updateRoomMembers(e,t){for(let s of this._handlers)s.updateRoomMembers(e,t)}}var dn=(n=>(n[n.Calls=1]="Calls",n[n.CrossSigning=2]="CrossSigning",n))(dn||{});class Xs{constructor(e=0){this.flags=e}withFeature(e){return new Xs(this.flags|e)}withoutFeature(e){return new Xs(this.flags^e)}isFeatureEnabled(e){return(this.flags&e)!==0}get calls(){return this.isFeatureEnabled(1)}get crossSigning(){return this.isFeatureEnabled(2)}static async load(e){const t=await e.getInt("enabled_features")||0;return new Xs(t)}async store(e){await e.setInt("enabled_features",this.flags)}}const ys="DEFAULT_KEY",ki="pusher";class Wm{constructor({storage:e,hsApi:t,sessionInfo:s,olm:i,olmWorker:r,platform:o,mediaRepository:c,features:l}){this._platform=o,this._storage=e,this._hsApi=t,this._mediaRepository=c,this._features=l,this._syncInfo=null,this._sessionInfo=s,this._rooms=new Dt,this._roomUpdateCallback=(h,a)=>this._rooms.update(h.id,a),this._activeArchivedRooms=new Map,this._invites=new Dt,this._inviteUpdateCallback=(h,a)=>this._invites.update(h.id,a),this._roomsBeingCreatedUpdateCallback=(h,a)=>{h.isCancelled?this._roomsBeingCreated.remove(h.id):this._roomsBeingCreated.update(h.id,a)},this._roomsBeingCreated=new Dt,this._user=new nu(s.userId),this._roomStateHandler=new Hm,l.calls&&this._setupCallHandler(),this._deviceMessageHandler=new Du({storage:e,callHandler:this._callHandler}),this._olm=i,this._olmUtil=null,this._e2eeAccount=null,this._deviceTracker=null,this._olmEncryption=null,this._keyLoader=null,this._megolmEncryption=null,this._megolmDecryption=null,this._getSyncToken=()=>this.syncToken,this._olmWorker=r,this._keyBackup=new Vt(void 0),this._crossSigning=new Vt(void 0),this._observedRoomStatus=new Map,i&&(this._olmUtil=new i.Utility,this._deviceTracker=new Id({storage:e,getSyncToken:this._getSyncToken,olmUtil:this._olmUtil,ownUserId:s.userId,ownDeviceId:s.deviceId})),this._createRoomEncryption=this._createRoomEncryption.bind(this),this._forgetArchivedRoom=this._forgetArchivedRoom.bind(this),this.needsKeyBackup=new Vt(!1),this._secretFetcher=new Bu,this._secretSharing=null,this._secretStorage=null}get fingerprintKey(){var e;return(e=this._e2eeAccount)==null?void 0:e.identityKeys.ed25519}get hasSecretStorageKey(){return this._hasSecretStorageKey}get deviceId(){return this._sessionInfo.deviceId}get userId(){return this._sessionInfo.userId}get callHandler(){return this._callHandler}get features(){return this._features}_setupCallHandler(){this._callHandler=new qm({clock:this._platform.clock,random:this._platform.random,hsApi:this._hsApi,encryptDeviceMessage:async(e,t,s,i,r)=>{if(!this._deviceTracker||!this._olmEncryption){r.set("encryption_disabled",!0);return}const o=await r.wrap("get device key",async c=>{const l=this._deviceTracker.deviceForId(t,s,this._hsApi,c);return l||c.set("not_found",!0),l});if(o)return await this._olmEncryption.encrypt(i.type,i.content,[o],this._hsApi,r)},storage:this._storage,webRTC:this._platform.webRTC,ownDeviceId:this._sessionInfo.deviceId,ownUserId:this._sessionInfo.userId,logger:this._platform.logger,forceTURN:!1}),this.observeRoomState(this._callHandler)}async _setupEncryption(){const e=new xm,t=new tm(this._e2eeAccount,ys,this._platform.clock.now,this._user.id,this._olm,e);this._olmEncryption=new nm(this._e2eeAccount,ys,this._olm,this._storage,this._platform.clock.now,this._user.id,this._olmUtil,e),this._keyLoader=new wm(this._olm,ys,20),this._megolmEncryption=new Mm({account:this._e2eeAccount,pickleKey:ys,olm:this._olm,storage:this._storage,keyLoader:this._keyLoader,now:this._platform.clock.now,ownDeviceId:this._sessionInfo.deviceId}),this._megolmDecryption=new ym(this._keyLoader,this._olmWorker),this._deviceMessageHandler.enableEncryption({olmDecryption:t,megolmDecryption:this._megolmDecryption}),this._secretSharing=new $u({hsApi:this._hsApi,storage:this._storage,deviceMessageHandler:this._deviceMessageHandler,deviceTracker:this._deviceTracker,ourUserId:this.userId,olmEncryption:this._olmEncryption,crypto:this._platform.crypto,encoding:this._platform.encoding,crossSigning:this._crossSigning,logger:this._platform.logger}),await this._secretSharing.load(),this._secretFetcher.setSecretSharing(this._secretSharing)}_createRoomEncryption(e,t){var s;if(!this._olmEncryption)throw new Error("creating room encryption before encryption got globally enabled");return t.algorithm!==ft?null:new Rm({room:e,deviceTracker:this._deviceTracker,olmEncryption:this._olmEncryption,megolmEncryption:this._megolmEncryption,megolmDecryption:this._megolmDecryption,storage:this._storage,keyBackup:(s=this._keyBackup)==null?void 0:s.get(),encryptionParams:t,notifyMissingMegolmSession:()=>{this._keyBackup.get()||this.needsKeyBackup.set(!0)},clock:this._platform.clock})}enableSecretStorage(e,t,s=void 0){return this._platform.logger.wrapOrRun(s,"enable secret storage",async i=>{var o,c;if(!this._olm)throw new Error("olm required");this._keyBackup.get()&&(this._keyBackup.get().dispose(),this._keyBackup.set(void 0));const r=await Yu(e,t,this._storage,this._platform,this._olm);if(await this._tryLoadSecretStorage(r,i))return await this._writeSSSSKey(r,i),await((o=this._keyBackup.get())==null?void 0:o.start(i)),await((c=this._crossSigning.get())==null?void 0:c.start(i)),r;throw new Error("Could not read key backup with the given key")})}async _writeSSSSKey(e,t){const s=this._keyBackup.get();if(!s)return;const i=s.version,r=await this._storage.readWriteTxn([this._storage.storeNames.session,this._storage.storeNames.inboundGroupSessions]);try{const o=await Wu(e,i,r);if(t.set("previousBackupVersion",o),t.set("backupVersion",i),!!o&&o!==i){const c=await s.markAllForBackup(r);t.set("amountMarkedForBackup",c)}}catch(o){throw r.abort(),o}await r.complete()}async disableSecretStorage(){const e=await this._storage.readWriteTxn([this._storage.storeNames.session]);try{Gu(e)}catch(s){throw e.abort(),s}if(await e.complete(),this._keyBackup.get()){for(const s of this._rooms.values())s.isEncrypted&&s.enableKeyBackup(void 0);this._keyBackup.get().dispose(),this._keyBackup.set(void 0)}const t=this._crossSigning.get();t&&(t.dispose(),this._crossSigning.set(void 0))}_tryLoadSecretStorage(e,t){return t.wrap("enable secret storage",async s=>{const i=new Hu({key:e,platform:this._platform,storage:this._storage}),r=await i.hasValidKeyForAnyAccountData();return s.set("isValid",r),r&&(this._secretStorage=i,await this._loadSecretStorageServices(i,s),this._secretFetcher.setSecretStorage(i)),r})}async _loadSecretStorageServices(e,t){try{await t.wrap("enable key backup",async s=>{const i=new Im(this._hsApi,this._olm,this._keyLoader,this._storage,this._platform);if(await i.load(e,s)){for(const r of this._rooms.values())r.isEncrypted&&r.enableKeyBackup(i);return this._keyBackup.set(i),!0}else s.set("no_backup",!0)})}catch(s){t.catch(s)}}get keyBackup(){return this._keyBackup}get crossSigning(){return this._crossSigning}get secretSharing(){return this._secretSharing}get secretFetcher(){return this._secretFetcher}get hasIdentity(){return!!this._e2eeAccount}async createIdentity(e){this._olm&&(this._e2eeAccount||(this._e2eeAccount=await this._createNewAccount(this._sessionInfo.deviceId,this._storage),e.set("keys",this._e2eeAccount.identityKeys),await this._setupEncryption()),this._sessionInfo.isReadOnly||(await this._e2eeAccount.generateOTKsIfNeeded(this._storage,e),await e.wrap("uploadKeys",t=>this._e2eeAccount.uploadKeys(this._storage,!1,t))),await this._createCrossSigning())}async dehydrateIdentity(e,t){return t.set("deviceId",e.deviceId),this._olm?e.deviceId!==this.deviceId?(t.set("wrong_device",!0),!1):this._e2eeAccount?(t.set("account_already_setup",!0),!1):await e.claim(this._hsApi,t)?(this._e2eeAccount=await Is.adoptDehydratedDevice({dehydratedDevice:e,hsApi:this._hsApi,olm:this._olm,pickleKey:ys,userId:this._sessionInfo.userId,olmWorker:this._olmWorker,deviceId:this.deviceId,storage:this._storage}),t.set("keys",this._e2eeAccount.identityKeys),this._setupEncryption(),!0):(t.set("already_claimed",!0),!1):(t.set("no_olm",!0),!1)}_createNewAccount(e,t=void 0){return Is.create({hsApi:this._hsApi,olm:this._olm,pickleKey:ys,userId:this._sessionInfo.userId,olmWorker:this._olmWorker,deviceId:e,storage:t})}setupDehydratedDevice(e,t=null){return this._platform.logger.wrapOrRun(t,"setupDehydratedDevice",async s=>{const i=await this._createNewAccount("temp-device-id");try{const r=await Xu(i,this._hsApi,e,"Dehydrated device",s);return s.set("deviceId",r),r}finally{i.dispose()}})}async load(e){const t=await this._storage.readTxn([this._storage.storeNames.session,this._storage.storeNames.roomSummary,this._storage.storeNames.invites,this._storage.storeNames.roomMembers,this._storage.storeNames.timelineEvents,this._storage.storeNames.timelineFragments,this._storage.storeNames.pendingEvents,this._storage.storeNames.accountData,this._storage.storeNames.crossSigningKeys]);this._syncInfo=await t.session.get("sync"),this._olm&&(this._e2eeAccount=await Is.load({hsApi:this._hsApi,olm:this._olm,pickleKey:ys,userId:this._sessionInfo.userId,deviceId:this._sessionInfo.deviceId,olmWorker:this._olmWorker,txn:t}),this._e2eeAccount&&e.set("keys",this._e2eeAccount.identityKeys),this._setupEncryption());const s=await this._getPendingEventsByRoom(t),i=await t.invites.getAll(),r=Promise.all(i.map(async l=>{const h=this.createInvite(l.roomId);e.wrap("invite",a=>h.load(l,a)),this._invites.add(h.id,h)})),o=await t.roomSummary.getAll(),c=Promise.all(o.map(async l=>{const h=this.createJoinedRoom(l.roomId,s.get(l.roomId));await e.wrap("room",a=>h.load(l,t,a)),this._rooms.add(h.id,h)}));await Promise.all([r,c]);for(const[l,h]of this.invites){const a=this.rooms.get(l);a&&a.setInvite(h)}if(this._olm&&this._e2eeAccount){const l=await zu(t);l&&await this._tryLoadSecretStorage(l,e)}this._e2eeAccount&&await this._createCrossSigning()}async _createCrossSigning(){this._features.crossSigning&&this._platform.logger.run("enable cross-signing",async e=>{const t=new wd({storage:this._storage,secretFetcher:this._secretFetcher,platform:this._platform,olm:this._olm,olmUtil:this._olmUtil,deviceTracker:this._deviceTracker,deviceMessageHandler:this._deviceMessageHandler,hsApi:this._hsApi,ownUserId:this.userId,e2eeAccount:this._e2eeAccount,deviceId:this.deviceId});await t.load(e),this._crossSigning.set(t)})}dispose(){var e,t,s,i,r,o;(e=this._olmWorker)==null||e.dispose(),this._olmWorker=void 0,(t=this._keyBackup.get())==null||t.dispose(),this._keyBackup.set(void 0),(s=this._megolmDecryption)==null||s.dispose(),this._megolmDecryption=void 0,(i=this._e2eeAccount)==null||i.dispose(),this._e2eeAccount=void 0,(r=this._callHandler)==null||r.dispose(),this._callHandler=void 0,(o=this._crossSigning.get())==null||o.dispose();for(const c of this._rooms.values())c.dispose();this._rooms=void 0}async start(e,t,s){var c,l;if(e){const h=await this._storage.readWriteTxn([this._storage.storeNames.session]);h.session.set("serverVersions",e),await h.complete()}t&&await s.wrap("SSSSKeyFromDehydratedDeviceKey",async h=>{const a=await Ju(t.key,this._storage,this._platform);a&&await this._tryLoadSecretStorage(a,h)&&(h.set("success",!0),await this._writeSSSSKey(a))}),await((c=this._keyBackup.get())==null?void 0:c.start(s)),await((l=this._crossSigning.get())==null?void 0:l.start(s));const r=await(await this._storage.readWriteTxn([this._storage.storeNames.operations])).operations.getAll(),o=ti(r,h=>h.scope);for(const h of this._rooms.values()){let a;const u=o.get(h.id);u&&(a=ti(u,p=>p.type)),h.start(a,s)}}async _getPendingEventsByRoom(e){return(await e.pendingEvents.getAll()).reduce((s,i)=>{const r=s.get(i.roomId);return r?r.push(i):s.set(i.roomId,[i]),s},new Map)}get rooms(){return this._rooms}findDirectMessageForUserId(e){for(const[,t]of this._rooms)if(t.isDirectMessageForUserId(e))return t;for(const[,t]of this._invites)if(t.isDirectMessageForUserId(e))return t}createJoinedRoom(e,t){return new Iu({roomId:e,getSyncToken:this._getSyncToken,storage:this._storage,emitCollectionChange:this._roomUpdateCallback,hsApi:this._hsApi,mediaRepository:this._mediaRepository,pendingEvents:t,user:this._user,createRoomEncryption:this._createRoomEncryption,platform:this._platform,roomStateHandler:this._roomStateHandler})}_createArchivedRoom(e){const t=new Mu({roomId:e,getSyncToken:this._getSyncToken,storage:this._storage,emitCollectionChange:()=>{},releaseCallback:()=>this._activeArchivedRooms.delete(e),forgetCallback:this._forgetArchivedRoom,hsApi:this._hsApi,mediaRepository:this._mediaRepository,user:this._user,createRoomEncryption:this._createRoomEncryption,platform:this._platform});return this._activeArchivedRooms.set(e,t),t}get invites(){return this._invites}createInvite(e){return new Nu({roomId:e,hsApi:this._hsApi,emitCollectionUpdate:this._inviteUpdateCallback,mediaRepository:this._mediaRepository,user:this._user,platform:this._platform})}get roomsBeingCreated(){return this._roomsBeingCreated}async createRoom(e){let t;return await this._platform.logger.run("create room",async s=>{const i=`local-${Math.floor(this._platform.random()*Number.MAX_SAFE_INTEGER)}`;t=new Vu(i,e,this._roomsBeingCreatedUpdateCallback,this._mediaRepository,this._platform,s),this._roomsBeingCreated.set(i,t);const r=[t.create(this._hsApi,s)];e.loadProfiles!==!1&&r.push(t.loadProfiles(this._hsApi,s)),await Promise.all(r),t.roomId&&(this.rooms.get(t.roomId)&&this._tryReplaceRoomBeingCreated(t.roomId,s),await t.adjustDirectMessageMapIfNeeded(this._user,this._storage,this._hsApi,s))}),t}async obtainSyncLock(e){var s;const t=(s=e.to_device)==null?void 0:s.events;if(Array.isArray(t)&&t.length)return await this._deviceMessageHandler.obtainSyncLock(t)}async prepareSync(e,t,s,i){var o;const r=(o=e.to_device)==null?void 0:o.events;if(Array.isArray(r)&&r.length)return await i.wrap("deviceMsgs",c=>this._deviceMessageHandler.prepareSync(r,t,s,c))}async writeSync(e,t,s,i,r){const o={syncInfo:null,e2eeAccountChanges:null,hasNewRoomKeys:!1,deviceMessageDecryptionResults:null,changedDevices:null},c=e.next_batch;if(c!==this.syncToken){const u={token:c,filterId:t};i.session.set("sync",u),o.syncInfo=u}const l=e.device_one_time_keys_count;this._e2eeAccount&&l&&(o.e2eeAccountChanges=this._e2eeAccount.writeSync(l,i,r));const h=e.device_lists;if(this._deviceTracker&&Array.isArray(h==null?void 0:h.changed)&&h.changed.length&&(await r.wrap("deviceLists",u=>this._deviceTracker.writeDeviceChanges(h.changed,i,u)),o.changedDevices=h.changed),s){const{hasNewRoomKeys:u,decryptionResults:p}=await r.wrap("deviceMsgs",g=>this._deviceMessageHandler.writeSync(s,i,g));o.hasNewRoomKeys=u,o.deviceMessageDecryptionResults=p}const a=e.account_data;if(Array.isArray(a==null?void 0:a.events))for(const u of a.events)typeof u.type=="string"&&i.accountData.set(u);return o}afterSync({syncInfo:e,e2eeAccountChanges:t}){e&&(this._syncInfo=e),this._e2eeAccount&&this._e2eeAccount.afterSync(t)}async afterSyncCompleted(e,t,s){var i,r,o;this._e2eeAccount&&!t&&!this._sessionInfo.isReadOnly&&await this._e2eeAccount.generateOTKsIfNeeded(this._storage,s)&&await s.wrap("uploadKeys",l=>this._e2eeAccount.uploadKeys(this._storage,!1,l)),e.hasNewRoomKeys&&((i=this._keyBackup.get())==null||i.flush(s)),e.deviceMessageDecryptionResults&&await this._deviceMessageHandler.afterSyncCompleted(e.deviceMessageDecryptionResults,this._deviceTracker,this._hsApi,s),(r=e.changedDevices)!=null&&r.includes(this.userId)&&((o=this._secretSharing)==null||o.checkSecretValidity())}_tryReplaceRoomBeingCreated(e,t){for(const[,s]of this._roomsBeingCreated)if(s.roomId===e){const i=this._observedRoomStatus.get(s.id);i&&(t.log("replacing room being created").set("localId",s.id).set("roomId",s.roomId),i.set(i.get()|se.Replaced)),s.dispose(),this._roomsBeingCreated.remove(s.id);return}}async applyRoomCollectionChangesAfterSync(e,t,s,i){var r,o;for(const c of t)c.shouldAdd?(this._rooms.add(c.id,c.room),this._tryReplaceRoomBeingCreated(c.id,i)):c.shouldRemove&&this._rooms.remove(c.id);for(const c of e)c.shouldAdd?this._invites.add(c.id,c.invite):c.shouldRemove&&this._invites.remove(c.id);if(this._observedRoomStatus.size!==0){for(const c of s)c.shouldAdd&&((r=this._observedRoomStatus.get(c.id))==null||r.set(se.Archived));for(const c of t)c.shouldAdd&&((o=this._observedRoomStatus.get(c.id))==null||o.set(se.Joined));for(const c of e){const l=this._observedRoomStatus.get(c.id);if(l){const h=l.get()|se.Invited;if(c.shouldAdd)l.set(h);else if(c.shouldRemove){const a=h^se.Invited;l.set(a)}}}}}_forgetArchivedRoom(e){const t=this._observedRoomStatus.get(e);t&&t.set((t.get()|se.Archived)^se.Archived)}get syncToken(){var e;return(e=this._syncInfo)==null?void 0:e.token}get syncFilterId(){var e;return(e=this._syncInfo)==null?void 0:e.filterId}get user(){return this._user}get mediaRepository(){return this._mediaRepository}enablePushNotifications(e){return e?this._enablePush():this._disablePush()}async _enablePush(){return this._platform.logger.run("enablePush",async e=>{const t=bs.createDefaultPayload(this._sessionInfo.id),s=await this._platform.notificationService.enablePush(bs,t);if(!s)return e.set("no_pusher",!0),!1;await s.enable(this._hsApi,e);const i=await this._storage.readWriteTxn([this._storage.storeNames.session]);return i.session.set(ki,s.serialize()),await i.complete(),!0})}async _disablePush(){return this._platform.logger.run("disablePush",async e=>{await this._platform.notificationService.disablePush();const s=await(await this._storage.readTxn([this._storage.storeNames.session])).session.get(ki);if(!s)return!0;await new bs(s).disable(this._hsApi,e);const r=await this._storage.readWriteTxn([this._storage.storeNames.session]);return r.session.remove(ki),await r.complete(),!0})}async arePushNotificationsEnabled(){return await this._platform.notificationService.isPushEnabled()?!!await(await this._storage.readTxn([this._storage.storeNames.session])).session.get(ki):!1}async checkPusherEnabledOnHomeserver(){const t=await(await this._storage.readTxn([this._storage.storeNames.session])).session.get(ki);if(!t)return!1;const s=new bs(t),i=await this._hsApi.getPushers().response();return((i==null?void 0:i.pushers)||[]).map(o=>new bs(o)).some(o=>o.equals(s))}async getRoomStatus(e){if(!!this._roomsBeingCreated.get(e))return se.BeingCreated;if(!!this._rooms.get(e))return se.Joined;{const i=!!this._invites.get(e),o=await(await this._storage.readTxn([this._storage.storeNames.archivedRoomSummary])).archivedRoomSummary.has(e);return i&&o?se.Invited|se.Archived:i?se.Invited:o?se.Archived:se.None}}async observeRoomStatus(e){let t=this._observedRoomStatus.get(e);if(!t){let s;t=new Ui(s,()=>{this._observedRoomStatus.delete(e)}),this._observedRoomStatus.set(e,t),s=await this.getRoomStatus(e),t.get()===void 0&&t.set(s)}return t}observeRoomState(e){return this._roomStateHandler.subscribe(e)}createOrGetArchivedRoomForSync(e){let t=this._activeArchivedRooms.get(e);return t?t.retain():t=this._createArchivedRoom(e),t}loadArchivedRoom(e,t=null){return this._platform.logger.wrapOrRun(t,"loadArchivedRoom",async s=>{s.set("id",e);const i=this._activeArchivedRooms.get(e);if(i)return i.retain(),i;const r=await this._storage.readTxn([this._storage.storeNames.archivedRoomSummary,this._storage.storeNames.roomMembers]),o=await r.archivedRoomSummary.get(e);if(o){const c=this._createArchivedRoom(e);return await c.load(o,r,s),c}})}joinRoom(e,t=null){return this._platform.logger.wrapOrRun(t,"joinRoom",async s=>(await this._hsApi.joinIdOrAlias(e,{log:s}).response()).room_id)}updateAccessToken(e){this._hsApi.updateAccessToken(e)}}class zm{constructor({username:e,password:t,homeserver:s}){this._username=e,this._password=t,this.homeserver=s}async login(e,t,s){return await e.passwordLogin(this._username,this._password,t,{log:s}).response()}}class Gm{constructor({homeserver:e,loginToken:t}){this.homeserver=e,this._loginToken=t}async login(e,t,s){return await e.tokenLogin(this._loginToken,Pe(),t,{log:s}).response()}}class Ym{constructor(e){this._homeserver=e}get homeserver(){return this._homeserver}createSSORedirectURL(e){return`${this._homeserver}/_matrix/client/r0/login/sso/redirect?redirectUrl=${encodeURIComponent(e)}`}}class Un{constructor(e,t){this._session=e,this._params=t}setNextStage(e){this._nextStage=e}get nextStage(){return this._nextStage}}class Jm extends Un{generateAuthenticationData(){return{session:this._session,type:this.type}}get type(){return"m.login.dummy"}}class Qm extends Un{generateAuthenticationData(){return{session:this._session,type:this.type}}get type(){return"m.login.terms"}get privacyPolicy(){var e;return(e=this._params)==null?void 0:e.policies.privacy_policy}get termsOfService(){var e;return(e=this._params)==null?void 0:e.policies.terms_of_service}}class Xm extends Un{constructor(e,t,s){super(e,t),this._type=s}generateAuthenticationData(){if(!this._token)throw new Error("No token provided for TokenAuth");return{session:this._session,type:this._type,token:this._token}}setToken(e){this._token=e}get type(){return this._type}}class Zm{constructor(e,t,s,i){this.homeserver=e,this._hsApi=t,this._accountDetails=s,this._flowSelector=i!=null?i:r=>r[0]}async start(){const e=await this._hsApi.register(this._accountDetails.username,this._accountDetails.password,this._accountDetails.initialDeviceDisplayName,void 0,this._accountDetails.inhibitLogin).response();return this.parseStagesFromResponse(e)}async submitStage(e){const t=e.generateAuthenticationData(),{username:s,password:i,initialDeviceDisplayName:r,inhibitLogin:o}=this._accountDetails,c=this._hsApi.register(s,i,r,t,o),l=await c.response(),h=await c.responseCode(),a=Fr(It({},l),{status:h});return this.parseRegistrationResponse(a,e)}parseStagesFromResponse(e){const{session:t,params:s}=e,i=this._flowSelector(e.flows);if(!i)throw new Error("flowSelector did not return any flow!");let r,o;for(const c of i.stages){const l=this._createRegistrationStage(c,t,s);r?(o.setNextStage(l),o=l):(r=l,o=l)}return r}async parseRegistrationResponse(e,t){var s;switch(e.status){case 200:this._registerResponse=e;return;case 401:if((s=e.completed)!=null&&s.includes(t.type))return t.nextStage;throw new Error("This stage could not be completed!")}}_createRegistrationStage(e,t,s){switch(e){case"m.login.dummy":return new Jm(t,s==null?void 0:s[e]);case"m.login.terms":return new Qm(t,s==null?void 0:s[e]);case"org.matrix.msc3231.login.registration_token":case"m.login.registration_token":return new Xm(t,s==null?void 0:s[e],e);default:throw new Error(`Unknown stage: ${e}`)}}get authData(){if(this._registerResponse)return{accessToken:this._registerResponse.access_token,homeserver:this.homeserver,userId:this._registerResponse.user_id,deviceId:this._registerResponse.device_id}}}const W=oi("NotLoading","Login","LoginFailed","QueryAccount","AccountSetup","Loading","SessionSetup","Migrating","FirstSync","Error","Ready"),Pt=oi("Connection","Credentials","Unknown");class Nr{constructor(e,t=new Xs(0)){this._platform=e,this._sessionStartedByReconnector=!1,this._status=new Vt(W.NotLoading),this._error=null,this._loginFailure=null,this._reconnector=null,this._session=null,this._sync=null,this._sessionId=null,this._storage=null,this._requestScheduler=null,this._olmPromise=e.loadOlm(),this._workerPromise=e.loadOlmWorker(),this._accountSetup=void 0,this._features=t}createNewSessionId(){return Math.floor(this._platform.random()*Number.MAX_SAFE_INTEGER).toString()}get sessionId(){return this._sessionId}async startWithExistingSession(e){this._status.get()===W.NotLoading&&(this._status.set(W.Loading),await this._platform.logger.run("load session",async t=>{t.set("id",e);try{const s=await this._platform.sessionInfoStorage.get(e);if(!s)throw new Error("Invalid session id: "+e);await this._loadSessionInfo(s,null,t),t.set("status",this._status.get())}catch(s){t.catch(s),this._error=s,this._status.set(W.Error)}}))}_parseLoginOptions(e,t){const s=e.flows,i={homeserver:t};for(const r of s)r.type==="m.login.password"?i.password=(o,c)=>new zm({homeserver:t,username:o,password:c}):r.type==="m.login.sso"&&s.find(o=>o.type==="m.login.token")?i.sso=new Ym(t):r.type==="m.login.token"&&(i.token=o=>new Gm({homeserver:t,loginToken:o}));return i}queryLogin(e){return new oa(async t=>{e=await Xc(e,(r,o)=>t(this._platform.request(r,o)));const s=new ws({homeserver:e,request:this._platform.request}),i=await t(s.getLoginFlows()).response();return this._parseLoginOptions(i,e)})}async startRegistration(e,t,s,i,r){const o=this._platform.request,c=new ws({homeserver:e,request:o});return new Zm(e,c,{username:t,password:s,initialDeviceDisplayName:i},r)}async startWithAuthData({accessToken:e,deviceId:t,userId:s,homeserver:i,isReadOnly:r=!1}){await this._platform.logger.run("startWithAuthData",async o=>{r&&o.set("isReadonly (Disabled OTK Upload)",!0),await this._createSessionAfterAuth({accessToken:e,deviceId:t,userId:s,homeserver:i},!0,r,o)})}async startWithLogin(e,{inspectAccountSetup:t}={}){const s=this._status.get();s!==W.LoginFailed&&s!==W.NotLoading&&s!==W.Error||(this._resetStatus(),await this._platform.logger.run("login",async i=>{this._status.set(W.Login);let r;try{const o=this._platform.request,c=new ws({homeserver:e.homeserver,request:o}),l=await e.login(c,"Hydrogen",i);r={deviceId:l.device_id,userId:l.user_id,homeserver:e.homeserver,accessToken:l.access_token}}catch(o){this._error=o,o.name==="HomeServerError"?(o.errcode==="M_FORBIDDEN"?this._loginFailure=Pt.Credentials:this._loginFailure=Pt.Unknown,i.set("loginFailure",this._loginFailure),this._status.set(W.LoginFailed)):o.name==="ConnectionError"?(this._loginFailure=Pt.Connection,this._status.set(W.LoginFailed)):this._status.set(W.Error);return}await this._createSessionAfterAuth(r,t,!1,i)}))}async _createSessionAfterAuth({deviceId:e,userId:t,accessToken:s,homeserver:i},r,o,c){const l=this.createNewSessionId(),h=this._platform.clock.now(),a={id:l,deviceId:e,userId:t,homeServer:i,homeserver:i,accessToken:s,lastUsed:h,isReadOnly:o};let u;r&&(u=await this._inspectAccountAfterLogin(a,c),u&&(a.deviceId=u.deviceId)),await this._platform.sessionInfoStorage.add(a);try{await this._loadSessionInfo(a,u,c),c.set("status",this._status.get())}catch(p){c.catch(p),u==null||u.dispose(),this._error=p,this._status.set(W.Error)}}async _loadSessionInfo(e,t,s){s.set("appVersion",this._platform.version);const i=this._platform.clock;this._sessionStartedByReconnector=!1,this._status.set(W.Loading),this._reconnector=new Al({onlineStatus:this._platform.onlineStatus,retryDelay:new ua(i.createTimeout),createMeasure:i.createMeasure});const r=new ws({homeserver:e.homeServer,accessToken:e.accessToken,request:this._platform.request,reconnector:this._reconnector});this._sessionId=e.id,this._storage=await this._platform.storageFactory.create(e.id,s);const o={id:e.id,deviceId:e.deviceId,userId:e.userId,homeserver:e.homeServer,isReadOnly:e.isReadOnly},c=await this._olmPromise;let l=null;this._workerPromise&&(l=await this._workerPromise),this._requestScheduler=new Ul({hsApi:r,clock:i}),this._requestScheduler.start();const h=await r.versions({timeout:1e4,log:s}).response(),a=new Nl({homeserver:e.homeServer,platform:this._platform,serverVersions:h.versions});if(this._platform.updateService.updateAuthData({accessToken:e.accessToken,homeserver:e.homeServer}),this._session=new Wm({storage:this._storage,sessionInfo:o,hsApi:this._requestScheduler.hsApi,olm:c,olmWorker:l,mediaRepository:a,platform:this._platform,features:this._features}),await this._session.load(s),t?(await s.wrap("dehydrateIdentity",u=>this._session.dehydrateIdentity(t,u)),await this._session.setupDehydratedDevice(t.key,s)):this._session.hasIdentity||(this._status.set(W.SessionSetup),await s.wrap("createIdentity",u=>this._session.createIdentity(u))),this._sync=new Fl({hsApi:this._requestScheduler.hsApi,storage:this._storage,session:this._session,logger:this._platform.logger}),this._reconnectSubscription=this._reconnector.connectionStatus.subscribe(u=>{u===Ys.Online&&this._platform.logger.runDetached("reconnect",async p=>{this._requestScheduler.start(),this._sync.start(),this._sessionStartedByReconnector=!0;const g=t;t=void 0,await p.wrap("session start",f=>this._session.start(this._reconnector.lastVersionsResponse,g,f))})}),await s.wrap("wait first sync",()=>this._waitForFirstSync()),!this._isDisposed&&(this._status.set(W.Ready),!this._sessionStartedByReconnector)){if(this._isDisposed)return;const u=t;t=void 0,await s.wrap("session start",p=>this._session.start(h,u,p))}}async updateAccessToken(e){if(!this._session)throw Error("No session loaded, cannot update access token");this._session.updateAccessToken(e),this._platform.updateService.updateAuthData({accessToken:e}),await this._platform.sessionInfoStorage.updateAccessToken(this._sessionId,e)}async _waitForFirstSync(){this._sync.start(),this._status.set(W.FirstSync),this._waitForFirstSyncHandle=this._sync.status.waitFor(e=>{var t;return e===te.Stopped?((t=this._sync.error)==null?void 0:t.name)!=="ConnectionError":e===te.Syncing});try{if(await this._waitForFirstSyncHandle.promise,this._sync.status.get()===te.Stopped&&this._sync.error)throw this._sync.error}catch(e){if(e.name==="AbortError")return;throw e}finally{this._waitForFirstSyncHandle=null}}_inspectAccountAfterLogin(e,t){return t.wrap("inspectAccount",async s=>{var c;this._status.set(W.QueryAccount);const i=new ws({homeserver:e.homeServer,accessToken:e.accessToken,request:this._platform.request}),r=await this._olmPromise;let o;try{o=await Qu(i,r,this._platform,s)}catch(l){if(l.name==="HomeServerError")s.set("not_supported",!0);else throw l}if(o){let l;const h=new Promise(u=>l=u);this._accountSetup=new e_(o,l),this._status.set(W.AccountSetup),await h;const a=(c=this._accountSetup)==null?void 0:c._dehydratedDevice;return this._accountSetup=null,a}})}get accountSetup(){return this._accountSetup}get loadStatus(){return this._status}get loadError(){return this._error}get loginFailure(){return this._loginFailure}get sync(){return this._sync}get session(){return this._session}get reconnector(){return this._reconnector}get _isDisposed(){return!this._reconnector}startLogout(e){return this._platform.logger.run("logout",async t=>{this._sessionId=e,t.set("id",this._sessionId);const s=await this._platform.sessionInfoStorage.get(this._sessionId);if(!s)throw new Error(`Could not find session for id ${this._sessionId}`);try{await new ws({homeserver:s.homeServer,accessToken:s.accessToken,request:this._platform.request}).logout({log:t}).response()}catch{}await this.deleteSession(t)})}startForcedLogout(e){return this._platform.logger.run("forced-logout",async t=>{this._sessionId=e,t.set("id",this._sessionId),await this.deleteSession(t)})}dispose(){this._reconnectSubscription&&(this._reconnectSubscription(),this._reconnectSubscription=null),this._reconnector=null,this._requestScheduler&&(this._requestScheduler.stop(),this._requestScheduler=null),this._sync&&(this._sync.stop(),this._sync=null),this._session&&(this._session.dispose(),this._session=null),this._waitForFirstSyncHandle&&(this._waitForFirstSyncHandle.dispose(),this._waitForFirstSyncHandle=null),this._storage&&(this._storage.close(),this._storage=null)}async deleteSession(e){this._sessionId&&(this.dispose(),await Promise.all([e.wrap("storageFactory",()=>this._platform.storageFactory.delete(this._sessionId)),e.wrap("sessionInfoStorage",()=>this._platform.sessionInfoStorage.delete(this._sessionId))]),this._sessionId=null)}_resetStatus(){this._status.set(W.NotLoading),this._error=null,this._loginFailure=null}}class e_{constructor(e,t){this._encryptedDehydratedDevice=e,this._dehydratedDevice=void 0,this._finishStage=t}get encryptedDehydratedDevice(){return this._encryptedDehydratedDevice}finish(e){this._dehydratedDevice=e,this._finishStage()}}class L extends $t{constructor(e){super(),this._isDisposed=!1,this._options=e}childOptions(e){return Object.assign({},this._options,e)}get options(){return this._options}getOption(e){return this._options[e]}observeNavigation(e,t){const i=this.navigation.observe(e).subscribe(r=>{t(r,e)});this.track(i)}track(e){return this.disposables||(this.disposables=new li),this.disposables.track(e)}untrack(e){if(this.disposables)return this.disposables.untrack(e)}dispose(){this.disposables&&this.disposables.dispose(),this._isDisposed=!0}get isDisposed(){return this._isDisposed}disposeTracked(e){if(this.disposables)return this.disposables.disposeTracked(e)}i18n(e,...t){let s="";for(let i=0;it.toLowerCase().trim())}matches(e){const t=e.name.toLowerCase();return this._parts.every(s=>t.includes(s))}}class o_{constructor(e){this._observables=new Map,this._allowsChild=e,this._path=new Tt([],e),this._pathObservable=new Vt(this._path)}get pathObservable(){return this._pathObservable}get path(){return this._path}push(e,...t){const s=this.path.with(new ze(e,...t));s&&this.applyPath(s)}applyPath(e){const t=this._path;this._path=e;for(let s=t.segments.length-1;s>=0;s-=1){const i=t.segments[s];if(!this._path.get(i.type)){const r=this._observables.get(i.type);r==null||r.emitIfChanged()}}for(const s of this._path.segments){const i=this._observables.get(s.type);i==null||i.emitIfChanged()}this._pathObservable.set(this._path)}observe(e){let t=this._observables.get(e);return t||(t=new c_(this,e),this._observables.set(e,t)),t}pathFrom(e){let t,s;for(s=0;s=-1)}until(e){const t=this._segments.findIndex(s=>s.type===e);return t!==-1?new Tt(this._segments.slice(0,t+1),this._allowsChild):new Tt([],this._allowsChild)}get(e){return this._segments.find(t=>t.type===e)}replace(e){const t=this._segments.findIndex(s=>s.type===e.type);if(t!==-1){const s=this._segments[t-1];if(this._allowsChild(s,e)){const i=this._segments[t+1];if(!i||this._allowsChild(e,i)){const r=this._segments.slice();return r[t]=e,new Tt(r,this._allowsChild)}}}}get segments(){return this._segments}}class c_ extends yt{constructor(e,t){var s;super(),this._navigation=e,this._type=t,this._lastSetValue=(s=e.path.get(t))==null?void 0:s.value}get(){const t=this._navigation.path.get(this._type);return t==null?void 0:t.value}emitIfChanged(){const e=this.get();a_(e,this._lastSetValue)||(this._lastSetValue=e,this.emit(e))}}class l_{constructor(e,t,s,i){this._isApplyingUrl=!1,this._history=e,this._navigation=t,this._parseUrlPath=s,this._stringifyPath=i,this._defaultSessionId=this._getLastSessionId()}_getLastSessionId(){var s;const t=(s=this._urlAsNavPath(this._history.getLastSessionUrl()||"").get("session"))==null?void 0:s.value;if(typeof t=="string")return t}attach(){this._subscription=this._history.subscribe(e=>this._applyUrl(e)),this._pathSubscription=this._navigation.pathObservable.subscribe(e=>this._applyNavPathToHistory(e)),this._applyUrl(this._history.get())}dispose(){this._subscription&&(this._subscription=this._subscription()),this._pathSubscription&&(this._pathSubscription=this._pathSubscription())}_applyNavPathToHistory(e){const t=this.urlForPath(e);t!==this._history.get()&&(this._isApplyingUrl?this._history.replaceUrlSilently(t):this._history.pushUrlSilently(t))}_applyNavPathToNavigation(e){this._isApplyingUrl=!0,this._navigation.applyPath(e),this._isApplyingUrl=!1}_urlAsNavPath(e){const t=this._history.urlAsPath(e);return this._navigation.pathFrom(this._parseUrlPath(t,this._navigation.path,this._defaultSessionId))}_applyUrl(e){const t=this._urlAsNavPath(e);this._applyNavPathToNavigation(t)}pushUrl(e){this._history.pushUrl(e)}tryRestoreLastUrl(){const e=this._urlAsNavPath(this._history.getLastSessionUrl()||"");return e.segments.length!==0?(this._applyNavPathToNavigation(e),!0):!1}urlForSegments(e){let t=this._navigation.path;for(const s of e)if(t=t.with(s),!t)return;return this.urlForPath(t)}urlForSegment(e,...t){return this.urlForSegments([this._navigation.segment(e,...t)])}urlUntilSegment(e){return this.urlForPath(this._navigation.path.until(e))}urlForPath(e){return this._history.pathAsUrl(this._stringifyPath(e))}openRoomActionUrl(e){const t=`${this._stringifyPath(this._navigation.path.until("session"))}/open-room/${encodeURIComponent(e)}`;return this._history.pathAsUrl(t)}createSSOCallbackURL(){return window.location.href}normalizeUrl(){const e=new URL(window.location.href);e.searchParams.delete("loginToken"),this._history.replaceUrlSilently(e.toString())}}function h_(){return new o_(u_)}function d_({history:n,navigation:e}){return new l_(n,e,__,p_)}function u_(n,e){const{type:t}=e;switch(n==null?void 0:n.type){case void 0:return t==="login"||t==="session"||t==="sso"||t==="logout";case"session":return t==="room"||t==="rooms"||t==="settings"||t==="create-room"||t==="join-room"||t==="device-verification";case"rooms":return t==="room"||t==="empty-grid-tile";case"room":return t==="lightbox"||t==="right-panel";case"right-panel":return t==="details"||t==="members"||t==="member"||t==="verification"||t==="invite";case"logout":return t==="forced";default:return!1}}function m_(n,e,t){if(n.value.includes(e))return n;{const s=t.get("empty-grid-tile"),i=t.get("room");let r=0;s?r=s.value:i&&(r=n.value.indexOf(i.value));const o=n.value.slice();return o[r]=e,new ze("rooms",o)}}function Eo(n,e,...t){n.push(new ze("right-panel")),n.push(new ze(e,...t))}function mn(n,e){const t=n.path.segments,s=t.findIndex(r=>r.type==="right-panel");let i=e;return s!==-1&&(i=e.until("room"),i=i.with(t[s]),i=i.with(t[s+1])),i}function __(n,e,t){const s=n.substring(1).split("/"),i=s[Symbol.iterator](),r=[];let o;for(;!(o=i.next()).done;){const c=o.value;if(c==="rooms"){const l=i.next().value;if(l===void 0)break;const h=l.split(",").map(p=>decodeURIComponent(p));r.push(new ze(c,h));const a=parseInt(i.next().value||"0",10),u=h[a];u?r.push(new ze("room",u)):r.push(new ze("empty-grid-tile",a))}else if(c==="open-room"){let l=i.next().value;if(!l)break;l=decodeURIComponent(l);const h=e.get("rooms");if(h&&r.push(m_(h,l,e)),r.push(new ze("room",l)),s.findIndex(p=>p==="open-room")>=s.length-2){const p=e.segments,g=p.findIndex(f=>f.type==="right-panel");g!==-1&&r.push(...p.slice(g))}}else if(c==="last-session"){let l=e.get("session");typeof(l==null?void 0:l.value)!="string"&&t&&(l=new ze("session",t)),l&&r.push(l)}else if(c==="details"||c==="members"||c==="verification"||c==="invite")Eo(r,c);else if(c==="member"){let l=i.next().value;if(!l)break;l=decodeURIComponent(l),Eo(r,c,l)}else if(c.includes("loginToken")){const l=c.split("=").pop();r.push(new ze("sso",l))}else{let l=i.next().value;l&&(l=decodeURIComponent(l)),r.push(new ze(c,l))}}return r}function p_(n){let e="",t;for(const s of n.segments){const i=g_(s.value);switch(s.type){case"rooms":e+=`/rooms/${i}`;break;case"empty-grid-tile":e+=`/${i}`;break;case"room":(t==null?void 0:t.type)==="rooms"?e+=`/${t.value.indexOf(s.value)}`:e+=`/${s.type}/${i}`;break;case"right-panel":case"sso":continue;default:e+=`/${s.type}`,i&&(e+=`/${i}`)}t=s}return e}function g_(n){return n===!0?"":Array.isArray(n)?n.map(e=>encodeURIComponent(e)).join(","):encodeURIComponent(n)}class f_ extends L{constructor(e){super(e);const{session:t}=e;this._tileViewModelsMap=this._mapTileViewModels(t.roomsBeingCreated,t.invites,t.rooms),this._tileViewModelsFilterMap=new yl(this._tileViewModelsMap),this._tileViewModels=this._tileViewModelsFilterMap.sortValues((s,i)=>s.compare(i)),this._currentTileVM=null,this._setupNavigation(),this._closeUrl=this.urlRouter.urlForSegment("session"),this._settingsUrl=this.urlRouter.urlForSegment("settings")}_mapTileViewModels(e,t,s){return t.join(e,s).mapValues((r,o)=>{var h;let c;return r.isBeingCreated?c=new r_(this.childOptions({roomBeingCreated:r,emitChange:o})):r.isInvite?c=new i_(this.childOptions({invite:r,emitChange:o})):c=new s_(this.childOptions({room:r,emitChange:o})),((h=this.navigation.path.get("room"))==null?void 0:h.value)===r.id&&(c.open(),this._updateCurrentVM(c)),c})}_updateCurrentVM(e){var t;(t=this._currentTileVM)==null||t.close(),this._currentTileVM=e}get closeUrl(){return this._closeUrl}get settingsUrl(){return this._settingsUrl}showCreateRoomView(){this.navigation.push("create-room")}showJoinRoomView(){this.navigation.push("join-room")}_setupNavigation(){const e=this.navigation.observe("room");this.track(e.subscribe(s=>this._open(s)));const t=this.navigation.observe("rooms");this.gridEnabled=!!t.get(),this.track(t.subscribe(s=>{const i=this.gridEnabled^!!s;this.gridEnabled=!!s,i&&this.emitChange("gridEnabled")}))}_open(e){var t,s;(t=this._currentTileVM)==null||t.close(),this._currentTileVM=null,e&&(this._currentTileVM=this._tileViewModelsMap.get(e),(s=this._currentTileVM)==null||s.open())}toggleGrid(){const e=this.navigation.path.get("room");let t=this.navigation.path.until("session");this.gridEnabled?e&&(t=t.with(e),t=mn(this.navigation,t)):e?(t=t.with(this.navigation.segment("rooms",[e.value])),t=t.with(e),t=mn(this.navigation,t)):(t=t.with(this.navigation.segment("rooms",[])),t=t.with(this.navigation.segment("empty-grid-tile",0))),this.navigation.applyPath(t)}get tileViewModels(){return this._tileViewModels}clearFilter(){this._tileViewModelsFilterMap.setApply(null),this._tileViewModelsFilterMap.applyOnce((e,t)=>t.hidden=!1)}setFilter(e){if(e=e.trim(),e.length===0)return this.clearFilter(),!1;{const t=!this._tileViewModelsFilterMap.hasApply(),s=new n_(e);return this._tileViewModelsFilterMap.setApply((i,r)=>{r.hidden=!s.matches(r)}),t}}}var me=(n=>(n.Message="message",n.MessageStatus="message-status",n.Announcement="announcement",n.File="file",n.Gap="gap",n.Image="image",n.Location="location",n.MissingAttachment="missing-attachment",n.Redacted="redacted",n.Video="video",n.DateHeader="date-header",n.Call="call",n.Verification="verification",n))(me||{});class Fe{constructor(e,t,s,i){this._remove=e,this._update=t,this._replace=s,this._updateParams=i}get shouldReplace(){return this._replace}get shouldRemove(){return this._remove}get shouldUpdate(){return this._update}get updateParams(){return this._updateParams}static Remove(){return new Fe(!0,!1,!1,null)}static Update(e){return new Fe(!1,!0,!1,e)}static Nothing(){return new Fe(!1,!1,!1,null)}static Replace(e){return new Fe(!1,!1,!0,e)}}class y_ extends ai{constructor(e,t){super(),this._entries=e,this._tiles=null,this._entrySubscription=null,this._tileOptions=t,this._emitSpontanousUpdate=this._emitSpontanousUpdate.bind(this)}_createTile(e){const t=this._tileOptions.tileClassForEntry(e,this._tileOptions);if(t)return new t(e,this._tileOptions)}_emitSpontanousUpdate(e,t){const s=e.lowerEntry,i=this._findTileIdx(s);this.emitUpdate(i,e,t)}onSubscribeFirst(){this._entrySubscription=this._entries.subscribe(this),this._populateTiles()}_populateTiles(){this._silent=!0,this._tiles=[];let e=null;for(let s of this._entries)(!e||!e.tryIncludeEntry(s))&&(e=this._createTile(s),e&&this._tiles.push(e));let t=null;for(let s of this._tiles)t&&t.updateNextSibling(s),s.updatePreviousSibling(t),t=s;t&&t.updateNextSibling(null);for(let s=0;s-s.compareEntry(t))}_findTileAtIdx(e,t){const s=this._getTileAtIdx(t);if(s&&s.compareEntry(e)===0)return s}_getTileAtIdx(e){return e>=0&&e=this._tiles.length)break;const i=this._tiles[s],r=s>0?this._tiles[s-1]:void 0,o=(r==null?void 0:r.shape)===me.DateHeader;i.needsDateSeparator&&!o?(e+=1,this._addTileAt(s,i.createDateSeparator())):!i.needsDateSeparator&&o&&this._removeTile(s-1,r)}}_addTileAt(e,t,s=!1){const i=e>0?this._tiles[e-1]:void 0,r=this._tiles[e];i==null||i.updateNextSibling(t),t.updatePreviousSibling(i),t.updateNextSibling(r),r==null||r.updatePreviousSibling(t),this._tiles.splice(e,0,t),s||this.emitAdd(e,t),t.setUpdateEmit(this._emitSpontanousUpdate)}onUpdate(e,t,s){if(!this._tiles)return;const i=this._findTileIdx(t),r=this._findTileAtIdx(t,i);if(r){const o=r.updateEntry(t,s);if(o.shouldReplace){const c=this._createTile(t);c?(this._replaceTile(i,r,c,o.updateParams),c.setUpdateEmit(this._emitSpontanousUpdate)):this._removeTile(i,r)}o.shouldRemove&&this._removeTile(i,r),o.shouldUpdate&&this.emitUpdate(i,r,o.updateParams)}}_replaceTile(e,t,s,i){t.dispose();const r=this._getTileAtIdx(e-1),o=this._getTileAtIdx(e+1);this._tiles[e]=s,r==null||r.updateNextSibling(s),s.updatePreviousSibling(r),s.updateNextSibling(o),o==null||o.updatePreviousSibling(s),this.emitUpdate(e,s,i)}_removeTile(e,t){const s=this._getTileAtIdx(e-1),i=this._getTileAtIdx(e+1);this._tiles.splice(e,1),t.dispose(),this.emitRemove(e,t),s==null||s.updateNextSibling(i),i==null||i.updatePreviousSibling(s),s&&s.shape===me.DateHeader&&(!i||!i.needsDateSeparator)&&this._removeTile(e-1,s)}onRemove(e,t){const s=this._findTileIdx(t),i=this._findTileAtIdx(t,s);i&&(i.removeEntry(t)?this._removeTile(s,i):this.emitUpdate(s,i))}onMove(){}[Symbol.iterator](){return this._tiles.values()}get length(){return this._tiles.length}getFirst(){return this._tiles[0]}getTileIndex(e){const t=Nt(this._tiles,e,(i,r)=>i.compare(r)),s=this._tiles[t];return(s==null?void 0:s.compare(e))===0?t:-1}sliceIterator(e,t){return this._tiles.slice(e,t)[Symbol.iterator]()}}class w_ extends L{constructor(e){super(e);const{timeline:t,tileOptions:s}=e;this._timeline=this.track(t),this._tiles=new y_(t.entries,s),this._startTile=null,this._endTile=null,this._topLoadingPromise=null,this._requestedStartTile=null,this._requestedEndTile=null,this._requestScheduled=!1,this._showJumpDown=!1}setVisibleTileRange(e,t){this._requestedStartTile=e,this._requestedEndTile=t,this._requestScheduled||(Promise.resolve().then(()=>{this._setVisibleTileRange(this._requestedStartTile,this._requestedEndTile),this._requestScheduled=!1}),this._requestScheduled=!0)}_setVisibleTileRange(e,t){let s;if(e&&t){this._startTile=e,this._endTile=t;const i=this._tiles.getTileIndex(this._startTile),r=this._tiles.getTileIndex(this._endTile);for(const o of this._tiles.sliceIterator(i,r+1))o.notifyVisible();s=i<10,this._setShowJumpDown(r{this._topLoadingPromise=null,i||this.setVisibleTileRange(this._requestedStartTile,this._requestedEndTile)}))}get tiles(){return this._tiles}_setShowJumpDown(e){this._showJumpDown!==e&&(this._showJumpDown=e,this.emitChange("showJumpDown"))}get showJumpDown(){return this._showJumpDown}}class v_ extends L{constructor(e){super(e.options),this._roomVM=e,this._isEmpty=!0,this._replyVM=null}setReplyingTo(e){var s;(new Boolean(e)!==new Boolean(this._replyVM)||!((s=this._replyVM)!=null&&s.id.equals(e.asEventKey())))&&(this._replyVM=this.disposeTracked(this._replyVM),e&&(this._replyVM=this.track(this._roomVM._createTile(e)),this._replyVM.notifyVisible()),this.emitChange("replyViewModel"),this.emit("focus"))}clearReplyingTo(){this.setReplyingTo(null)}get replyViewModel(){return this._replyVM}get isEncrypted(){return this._roomVM.isEncrypted}async sendMessage(e){const t=await this._roomVM._sendMessage(e,this._replyVM);return t&&(this._isEmpty=!0,this.emitChange("canSend"),this.clearReplyingTo()),t}sendPicture(){this._roomVM._pickAndSendPicture()}sendFile(){this._roomVM._pickAndSendFile()}sendVideo(){this._roomVM._pickAndSendVideo()}get canSend(){return!this._isEmpty}async setInput(e){const t=this._isEmpty;this._isEmpty=e.length===0,t&&!this._isEmpty&&this._roomVM._room.ensureMessageKeyIsShared(),t!==this._isEmpty&&this.emitChange("canSend")}get kind(){return"composer"}}async function b_(n,e,t,s){const i=new Map;n.text&&i.set("text",n.text),i.set("user_agent",n.userAgent),i.set("app",n.app),i.set("version",n.version),n.label&&i.set("label",n.label),i.set("file",{name:"logs.json",blob:e});const r=new Map;r.set("Accept","application/json");const o=s(t,{method:"POST",body:i,headers:r});let c;try{c=await o.response()}catch(a){throw new Error(`Could not submit logs to ${t}, got error ${a.message}`)}const{status:l,body:h}=c;if(l<200||l>=300)throw new Error(`Could not submit logs to ${t}, got status code ${l} with body ${h}`)}async function cc(n,e){const{bugReportEndpointUrl:t}=e.config;if(!t)throw new Error("no server configured to submit logs");const i=e.logger.reporters.find(o=>!!o.export);if(!i)throw new Error("No logger that can export configured");const r=await i.export();await b_({app:"hydrogen",userAgent:e.description,version:e.version,text:`Submit logs from settings for user ${n.userId} on device ${n.deviceId}`},r.asBlob(),t,e.request)}class S_ extends L{get message(){return this.error.message}get error(){return this.getOption("error")}close(){this.getOption("onClose")()}async submitLogs(){try{return await cc(this.getOption("session"),this.platform),!0}catch{return!1}}}class ot extends L{get errorViewModel(){return this._errorViewModel}reportError(e){var t;((t=this._errorViewModel)==null?void 0:t.error)!==e&&(this.disposeTracked(this._errorViewModel),this._errorViewModel=this.track(new S_(this.childOptions({error:e,onClose:()=>{this._errorViewModel=this.disposeTracked(this._errorViewModel),this.emitChange("errorViewModel")}}))),this.emitChange("errorViewModel"))}logAndCatch(e,t,s=void 0){try{let i=this.logger.run(e,t);return i instanceof Promise&&(i=i.catch(r=>(this.reportError(r),s))),i}catch(i){return this.reportError(i),s}}}class Ro extends ot{constructor(e){super(e);const t=new tl(this.call,"change");this.track(t.subscribe(()=>this.onUpdate()));const s=new Ml("self",t).mapValues((r,o)=>new k_(this.childOptions({call:r,emitChange:o})),()=>{}),i=this.call.members.filterValues(r=>r.isConnected).mapValues((r,o)=>new Pn(this.childOptions({member:r,emitChange:o,mediaRepository:this.getOption("room").mediaRepository})),(r,o)=>o==null?void 0:o.onUpdate());this.memberViewModels=i.join(s).sortValues((r,o)=>r.compare(o)),this.track(this.memberViewModels.subscribe({onRemove:()=>{this.emitChange()},onAdd:()=>{this.emitChange()},onUpdate:()=>{},onReset:()=>{},onMove:()=>{}}))}get isCameraMuted(){var e,t;return(t=(e=this.call.muteSettings)==null?void 0:e.camera)!=null?t:!0}get isMicrophoneMuted(){var e,t;return(t=(e=this.call.muteSettings)==null?void 0:e.microphone)!=null?t:!0}get memberCount(){return this.memberViewModels.length}get name(){return this.call.name}get id(){return this.call.id}get call(){return this.getOption("call")}onUpdate(){this.call.error&&this.reportError(this.call.error)}async hangup(){this.logAndCatch("CallViewModel.hangup",async e=>{this.call.hasJoined&&await this.call.leave(e)})}async toggleCamera(){this.logAndCatch("Call.toggleCamera",async e=>{const{localMedia:t,muteSettings:s}=this.call;if(s&&t){if(s.camera&&!xt(t.userMedia)){const i=await this.platform.mediaDevices.getMediaTracks(!s.microphone,!0);await this.call.setMedia(t.withUserMedia(i))}else await this.call.setMuted(s.toggleCamera());this.emitChange()}})}async toggleMicrophone(){this.logAndCatch("Call.toggleMicrophone",async e=>{const{localMedia:t,muteSettings:s}=this.call;if(s&&t){if(s.microphone&&!is(t.userMedia)){const i=await this.platform.mediaDevices.getMediaTracks(!0,!s.camera);await this.call.setMedia(t.withUserMedia(i))}else await this.call.setMuted(s.toggleMicrophone());this.emitChange()}})}}class k_ extends ot{constructor(e){super(e),this.init()}async init(){const e=this.getOption("room");this.memberObservable=await e.observeMember(e.user.id),this.track(this.memberObservable.subscribe(()=>{this.emitChange(void 0)}))}get errorViewModel(){}get stream(){var e;return(e=this.call.localPreviewMedia)==null?void 0:e.userMedia}get call(){return this.getOption("call")}get isCameraMuted(){var e,t;return(t=(e=this.call.muteSettings)==null?void 0:e.camera)!=null?t:!0}get isMicrophoneMuted(){var e,t;return(t=(e=this.call.muteSettings)==null?void 0:e.microphone)!=null?t:!0}get avatarLetter(){var t;const e=(t=this.memberObservable)==null?void 0:t.get();return e?Ee(e.name):this.getOption("room").user.id}get avatarColorNumber(){return Re(this.getOption("room").user.id)}avatarUrl(e){var s;const t=(s=this.memberObservable)==null?void 0:s.get();if(t)return Be(t.avatarUrl,e,this.platform,this.getOption("room").mediaRepository)}get avatarTitle(){var t;const e=(t=this.memberObservable)==null?void 0:t.get();return e?e.name:this.getOption("room").user.id}compare(e){return-1}}class Pn extends ot{get stream(){var e;return(e=this.member.remoteMedia)==null?void 0:e.userMedia}get member(){return this.getOption("member")}get isCameraMuted(){var e,t;return(t=(e=this.member.remoteMuteSettings)==null?void 0:e.camera)!=null?t:!0}get isMicrophoneMuted(){var e,t;return(t=(e=this.member.remoteMuteSettings)==null?void 0:e.microphone)!=null?t:!0}get avatarLetter(){return Ee(this.member.member.name)}get avatarColorNumber(){return Re(this.member.userId)}avatarUrl(e){const{avatarUrl:t}=this.member.member,s=this.getOption("mediaRepository");return Be(t,e,this.platform,s)}get avatarTitle(){return this.member.member.name}onUpdate(){this.mapMemberSyncErrorIfNeeded()}mapMemberSyncErrorIfNeeded(){this.member.error&&this.reportError(this.member.error)}compare(e){if(e instanceof Pn){const t=this.member.member.userId,s=e.member.member.userId;return t===s?0:t0){const s=is(t);s&&(s.stop(),t.removeTrack(s))}return e}replaceClone(e,t){const s=(i,r,o)=>(i==null?void 0:i.id)===(o==null?void 0:o.id)?r:o==null?void 0:o.clone();return new At(s(t==null?void 0:t.userMedia,e==null?void 0:e.userMedia,this.userMedia),s(t==null?void 0:t.screenShare,e==null?void 0:e.screenShare,this.screenShare),this.dataChannelOptions)}clone(){var e,t;return new At((e=this.userMedia)==null?void 0:e.clone(),(t=this.screenShare)==null?void 0:t.clone(),this.dataChannelOptions)}dispose(){var e,t,s;(e=is(this.userMedia))==null||e.stop(),(t=xt(this.userMedia))==null||t.stop(),(s=xt(this.screenShare))==null||s.stop()}}class I_ extends L{constructor(e,t){super(t),this._firstTileInDay=e}setUpdateEmit(e){this._emitUpdate=e}get upperEntry(){return this.refEntry}get lowerEntry(){return this.refEntry}get refEntry(){return this._firstTileInDay.lowerEntry}compare(e){return this.compareEntry(e.upperEntry)}get relativeDate(){return this._dateString||(this._dateString=this.timeFormatter.formatRelativeDate(new Date(this.refEntry.timestamp))),this._dateString}get machineReadableDate(){return this._machineReadableString||(this._machineReadableString=this.timeFormatter.formatMachineReadableDate(new Date(this.refEntry.timestamp))),this._machineReadableString}get shape(){return me.DateHeader}get needsDateSeparator(){return!1}createDateSeparator(){}compareEntry(e){const t=this.refEntry.compare(e);return t===0?-1:t}updateEntry(e,t){return Fe.Nothing()}removeEntry(e){return!1}tryIncludeEntry(){return!1}get comparisonIsNotCommutative(){return!0}updatePreviousSibling(e){this._firstTileInDay.updatePreviousSibling(e)}updateNextSibling(e){var s;if(!e)return;this._firstTileInDay=e;const t=this._dateString;this._dateString=void 0,this._machineReadableString=void 0,t&&t!==this.relativeDate&&((s=this._emitUpdate)==null||s.call(this,this,"relativeDate"))}notifyVisible(){}dispose(){}}class xs extends ot{constructor(e,t){super(t),this._needsDateSeparator=!1,this._entry=e,this._date=this._entry.timestamp?new Date(this._entry.timestamp):void 0}get isContinuation(){return!1}get needsDateSeparator(){return this._needsDateSeparator}createDateSeparator(){return new I_(this,this.childOptions({}))}_updateDateSeparator(e){e&&e._date&&this._date?this._needsDateSeparator=e._date.getFullYear()!==this._date.getFullYear()||e._date.getMonth()!==this._date.getMonth()||e._date.getDate()!==this._date.getDate():this._needsDateSeparator=!!this._date}get id(){return this._entry.asEventKey()}get eventId(){return this._entry.id}get isPending(){return this._entry.isPending}get isUnsent(){return this._entry.isPending&&this._entry.pendingEvent.status!==X.Sent}get canAbortSending(){return this._entry.isPending&&!this._entry.pendingEvent.hasStartedSending}async abortSending(){var e;await((e=this._entry.pendingEvent)==null?void 0:e.abort())}setUpdateEmit(e){this._emitUpdate=e}emitChange(e){this._emitUpdate&&this._emitUpdate(this,e),super.emitChange(e)}get upperEntry(){return this._entry}get lowerEntry(){return this._entry}get comparisonIsNotCommutative(){return!1}compare(e){return e.comparisonIsNotCommutative?-e.compare(this):this.upperEntry.compare(e.upperEntry)}compareEntry(e){return this._entry.compare(e)}updateEntry(e,t){const s=this.shape==="redacted";return!e.isGap&&e.isRedacted!==s?Fe.Replace("shape"):(this._entry=e,Fe.Update(t))}removeEntry(){return!0}tryIncludeEntry(){return!1}updatePreviousSibling(e){(e==null?void 0:e.shape)!==me.DateHeader&&this._updateDateSeparator(e)}updateNextSibling(){}notifyVisible(){}dispose(){this.setUpdateEmit(void 0),super.dispose()}get _room(){return this._roomVM.room}get _roomVM(){return this.options.roomVM}get _timeline(){return this.options.timeline}get _powerLevels(){return this._timeline.powerLevels}get _ownMember(){return this.options.timeline.me}get displayName(){return this._entry.displayName||this.sender}get sender(){return this._entry.sender}}class M_ extends xs{constructor(e,t){super(e,t),this._loading=!1,this._waitingForConnection=!1,this._isAtTop=!0,this._siblingChanged=!1}get needsDateSeparator(){return!1}async fill(e=!1){if(!this._loading&&!this._entry.edgeReached){this._loading=!0,this.emitChange("isLoading");try{await this._room.fillGap(this._entry,10)}catch(t){return t instanceof Ut?(await this._waitForReconnection(),e?!1:await this.fill(!0)):(this.reportError(t),!1)}finally{this._loading=!1,this.emitChange("isLoading")}return!0}return!1}async notifyVisible(){if(this.errorViewModel)return;let e=0,t;this._siblingChanged=!1;do t=await this.fill(),e=e+1;while(e<10&&!this._siblingChanged&&t&&!this.isDisposed)}get isAtTop(){return this._isAtTop}updatePreviousSibling(e){super.updatePreviousSibling(e);const t=!e;this._isAtTop!==t&&(this._isAtTop=t,this.emitChange("isAtTop")),this._siblingChanged=!0}updateNextSibling(){this._siblingChanged=!0}updateEntry(e,t){return super.updateEntry(e,t),e.isGap?Fe.Nothing():Fe.Remove()}async _waitForReconnection(){this._waitingForConnection=!0,this.emitUpdate("status"),await this.options.client.reconnector.connectionStatus.waitFor(e=>e===Ys.Online).promise,this._waitingForConnection=!1,this.emitUpdate("status")}get shape(){return"gap"}get isLoading(){return this._loading}get showSpinner(){return this.isLoading||this._waitingForConnection}get status(){const e=this._entry.prev_batch?"previous":"next";return this._waitingForConnection?"Waiting for connection\u2026":this.errorViewModel?`Could not load ${e} messages`:this.isLoading?"Loading more messages\u2026":"Gave up loading more messages"}}class C_{constructor(e){this._parentTile=e,this._map=new Dt,this._reactions=this._map.sortValues((t,s)=>t._compare(s))}update(e,t){if(e){for(const s in e)if(e.hasOwnProperty(s)){const i=e[s],r=this._map.get(s);r?r._tryUpdate(i)&&this._map.update(s):this._map.add(s,new To(s,i,null,this._parentTile))}}if(t)for(const[s,i]of t.entries()){const r=this._map.get(s);r?(r._tryUpdatePending(i),this._map.update(s)):this._map.add(s,new To(s,null,i,this._parentTile))}for(const s of this._map.keys()){const i=t==null?void 0:t.has(s),r=e==null?void 0:e.hasOwnProperty(s);!r&&!i?this._map.remove(s):r?i||this._map.get(s)._tryUpdatePending(null)&&this._map.update(s):this._map.get(s)._tryUpdate(null)&&this._map.update(s)}}get reactions(){return this._reactions}getReaction(e){return this._map.get(e)}}class To{constructor(e,t,s,i){this._key=e,this._annotation=t,this._pending=s,this._parentTile=i,this._isToggling=!1}_tryUpdate(e){const t=!!this._annotation!=!!e,i=this._annotation&&e&&(e.me!==this._annotation.me||e.count!==this._annotation.count||e.firstTimestamp!==this._annotation.firstTimestamp);return t||i?(this._annotation=e,!0):!1}_tryUpdatePending(e){return!e&&!this._pending?!1:(this._pending=e,!0)}get key(){return this._key}get count(){var e,t;return(((e=this._pending)==null?void 0:e.count)||0)+(((t=this._annotation)==null?void 0:t.count)||0)}get isPending(){return this._pending!==null}get isActive(){var e;return((e=this._annotation)==null?void 0:e.me)||this.isPending}get firstTimestamp(){let e=Number.MAX_SAFE_INTEGER;return this._annotation&&(e=Math.min(e,this._annotation.firstTimestamp)),this._pending&&(e=Math.min(e,this._pending.firstTimestamp)),e}_compare(e){if(e===this)return 0;if(this.count!==e.count)return e.count-this.count;{const t=this.firstTimestamp-e.firstTimestamp;return t===0?this.key{var r,o;if(!this.canReact){s.set("powerlevel_lacking",!0);return}if(this._entry.haveAnnotation(e)){s.set("already_reacted",!0);return}const i=(o=(r=this._entry.pendingAnnotations)==null?void 0:r.get(e))==null?void 0:o.redactionEntry;i&&!i.pendingEvent.hasStartedSending?(s.set("abort_redaction",!0),await i.pendingEvent.abort()):await this._room.sendEvent("m.reaction",this._entry.annotate(e),null,s)})}redactReaction(e,t=null){return this.logger.wrapOrRun(t,"redactReaction",async s=>{var r,o;if(!this._powerLevels.canRedactFromSender(this._ownMember.userId)){s.set("powerlevel_lacking",!0);return}if(!this._entry.haveAnnotation(e)){s.set("not_yet_reacted",!0);return}let i=(o=(r=this._entry.pendingAnnotations)==null?void 0:r.get(e))==null?void 0:o.annotationEntry;i||(i=await this._timeline.getOwnAnnotationEntry(this._entry.id,e)),i?await this._room.sendRedaction(i.id,null,s):s.set("no_reaction",!0)})}toggleReaction(e,t=null){return this.logger.wrapOrRun(t,"toggleReaction",async s=>{this._entry.haveAnnotation(e)?await this.redactReaction(e,s):await this.react(e,s)})}_updateReactions(){const{annotations:e,pendingAnnotations:t}=this._entry;!e&&!t?this._reactions&&(this._reactions=null):(this._reactions||(this._reactions=new C_(this)),this._reactions.update(e,t))}get replyTile(){return this._entry.contextEventId?this._replyTile:null}}const E_="(?:https|http|ftp):\\/\\/",lc="[^\\s.,?!)]",Ao="[a-zA-Z0-9:.\\[\\]-]",R_=`${Ao}*(?=${Ao})${lc}`,T_=`(?:[\\/#](?:[^\\s]*${lc})?)`,A_=`${E_}${R_}${T_}?`,x_=new RegExp(A_,"gi");function hc(n,e){const t=n.matchAll(x_);let s=0;for(let r of t){const o=n.slice(s,r.index);e(o,!1),e(r[0],!0);const c=r[0].length;s=r.index+c}const i=n.slice(s);e(i,!1)}function V_(n){const e=[],t=n.split(` +`),s=(i,r)=>{r?e.push(new _n(i,[new ii(i)])):e.push(new ii(i))};for(let i=0;i=t.length-1||e.push(new dc)}return new Fn(n,e)}function N_(n){return new Fn(n,[new ii(n)])}class D_{constructor(e,t){this.level=e,this.inlines=t}get type(){return"header"}}class xo{constructor(e,t){this.language=e,this.text=t}get type(){return"codeblock"}}class U_{constructor(e,t){this.items=t,this.startOffset=e}get type(){return"list"}}class O_{constructor(e,t){this.head=e,this.body=t}get type(){return"table"}}class P_{get type(){return"rule"}}class dc{get type(){return"newline"}}class hr{constructor(e,t){this.format=e.toLowerCase(),this.children=t}get type(){return"format"}}class F_{constructor(e,t,s,i,r){this.src=e,this.width=t,this.height=s,this.alt=i,this.title=r}get type(){return"image"}}class L_{constructor(e,t,s){this.id=e,this.href=t,this.children=s}get type(){return"pill"}get avatarColorNumber(){return Re(this.id)}get avatarInitials(){return Ee(this.id)}}class _n{constructor(e,t){this.url=e,this.inlines=t}get type(){return"link"}}class ii{constructor(e){this.text=e}get type(){return"text"}}function K_(n){return n.type==="format"&&n.format==="blockquote"}class Fn{constructor(e,t){this.sourceString=e,this.parts=t}insertEmote(e){let t=0;for(;t`${n}://`),q_="https://matrix.to",Vo=`${q_}/#/`;class H_{constructor(e,t){this.result=e,this.mediaRepository=t}parsePillLink(e){if(!e.startsWith(Vo))return null;const t=e.substring(Vo.length);return t[0]==="@"?t:null}parseLink(e,t){const s=this.result.getAttributeValue(e,"href"),i=s==null?void 0:s.toLowerCase();if(!i||!j_.some(o=>i.startsWith(o)))return new hr("span",t);const r=this.parsePillLink(s);return r?new L_(r,s,t):new _n(s,t)}parseList(e){const t=this.result;let s=null;t.getNodeElementName(e)==="OL"&&(s=parseInt(t.getAttributeValue(e,"start"))||1);const i=[];for(const r of t.getChildNodes(e)){if(t.getNodeElementName(r)!=="LI")continue;const o=this.parseAnyNodes(t.getChildNodes(r));i.push(o)}return new U_(s,i)}_ensureElement(e,t){return e&&this.result.isElementNode(e)&&this.result.getNodeElementName(e)===t}parseCodeBlock(e){const t=this.result;let s;for(const o of t.getChildNodes(e)){s=o;break}let i=null;if(!this._ensureElement(s,"CODE"))return new xo(i,this.result.getNodeText(e));const r=t.getAttributeValue(s,"class")||"";for(const o of r.split(" "))if(o.startsWith("language-")&&!o.startsWith("language-_")){i=o.substring(9);break}return new xo(i,this.result.getNodeText(s))}parseImage(e){const t=this.result,s=t.getAttributeValue(e,"src")||"",i=this.mediaRepository.mxcUrl(s);if(!i)return null;const r=parseInt(t.getAttributeValue(e,"width"))||null,o=parseInt(t.getAttributeValue(e,"height"))||null,c=t.getAttributeValue(e,"alt"),l=t.getAttributeValue(e,"title");return new F_(i,r,o,c,l)}parseTableRow(e,t){const s=[];for(const i of this.result.getChildNodes(e)){if(!this._ensureElement(i,t))continue;const r=this.result.getChildNodes(i),o=this.parseInlineNodes(r);s.push(o)}return s}parseTableHead(e){let t=null;for(const s of this.result.getChildNodes(e)){t=s;break}return this._ensureElement(t,"TR")?this.parseTableRow(t,"TH"):null}parseTableBody(e){const t=[];for(const s of this.result.getChildNodes(e))!this._ensureElement(s,"TR")||t.push(this.parseTableRow(s,"TD"));return t}parseTable(e){const t=Array.from(this.result.getChildNodes(e));let s,i;return this._ensureElement(t[0],"THEAD")&&this._ensureElement(t[1],"TBODY")?(s=this.parseTableHead(t[0]),i=this.parseTableBody(t[1])):this._ensureElement(t[0],"TBODY")&&(s=null,i=this.parseTableBody(t[0])),new O_(s,i)}parseInlineElement(e){const t=this.result,s=t.getNodeElementName(e),i=t.getChildNodes(e);switch(s){case"A":{const r=this.parseInlineNodes(i);return this.parseLink(e,r)}case"BR":return new dc;default:{if(!B_.includes(s))return null;const r=this.parseInlineNodes(i);return new hr(s,r)}}}parseInlineNode(e){return this.result.isElementNode(e)?this.parseInlineElement(e):null}parseBlockElement(e){const t=this.result,s=t.getNodeElementName(e),i=t.getChildNodes(e);switch(s){case"H1":case"H2":case"H3":case"H4":case"H5":case"H6":{const r=this.parseInlineNodes(i);return new D_(parseInt(s[1]),r)}case"UL":case"OL":return this.parseList(e);case"PRE":return this.parseCodeBlock(e);case"HR":return new P_;case"IMG":return this.parseImage(e);case"P":{const r=this.parseInlineNodes(i);return new hr(s,r)}case"TABLE":return this.parseTable(e);default:{if(!$_.includes(s))return null;const r=this.parseAnyNodes(i);return new hr(s,r)}}}parseBlockNode(e){return this.result.isElementNode(e)?this.parseBlockElement(e):null}_parseTextParts(e,t){if(!this.result.isTextNode(e))return!1;const s=(i,r)=>{r?t.push(new _n(i,[new ii(i)])):t.push(new ii(i))};return hc(this.result.getNodeText(e),s),!0}_isAllowedNode(e){return!this._ensureElement(e,"MX-REPLY")}_parseInlineNodes(e,t){for(const s of e){if(this._parseTextParts(s,t))continue;const i=this.parseInlineNode(s);if(i){t.push(i);continue}this._isAllowedNode(s)&&this._parseInlineNodes(this.result.getChildNodes(s),t)}}parseInlineNodes(e){const t=[];return this._parseInlineNodes(e,t),t}_parseAnyNodes(e,t){for(const s of e){if(this._parseTextParts(s,t))continue;const i=this.parseInlineNode(s)||this.parseBlockNode(s);if(i){t.push(i);continue}this._isAllowedNode(s)&&this._parseAnyNodes(this.result.getChildNodes(s),t)}}parseAnyNodes(e){const t=[];return this._parseAnyNodes(e,t),t}}function W_(n,e,t){const s=n.parseHTML(t),r=new H_(s,e).parseAnyNodes(s.rootNodes);return new Fn(t,r)}class z_ extends uc{_getContentString(e){var t;return((t=this._getContent())==null?void 0:t[e])||""}_getPlainBody(){return this._getContentString("body")}_getFormattedBody(){return this._getContentString("formatted_body")}_getBody(){return this._getBodyFormat()===Ti.Html?this._getFormattedBody():this._getPlainBody()}_getBodyFormat(){var e;return((e=this._getContent())==null?void 0:e.format)==="org.matrix.custom.html"?Ti.Html:Ti.Plain}_parseBody(e,t){var i;let s;return t===Ti.Html?s=W_(this.platform,this._mediaRepository,e):s=V_(e),((i=this._getContent())==null?void 0:i.msgtype)==="m.emote"&&s.insertEmote(`* ${this.displayName} `),s}}class No extends ns{get shape(){return"redacted"}get description(){const{redactionReason:e}=this._entry;return this.isRedacting?e?this.i18n`This message is being deleted (${e})…`:this.i18n`This message is being deleted…`:e?this.i18n`This message has been deleted (${e}).`:this.i18n`This message has been deleted.`}get isRedacting(){return this._entry.isRedacting}get canRedact(){return!1}abortPendingRedaction(){return this._entry.abortPendingRedaction()}}const G_=300,Y_=400;class mc extends ns{constructor(e,t){super(e,t),this._decryptedThumbnail=null,this._decryptedFile=null,this._isVisible=!1,this._error=null,this._downloading=!1,this._downloadError=null}async downloadMedia(){if(this._downloading||this.isPending)return;const e=this._getContent(),t=e.body;this._downloading=!0,this.emitChange("status");let s;try{s=await this._mediaRepository.downloadAttachment(e),this.platform.saveFileAs(s,t)}catch(i){this._downloadError=i}finally{s==null||s.dispose(),this._downloading=!1}this.emitChange("status")}get isUploading(){return this.isPending&&this._entry.pendingEvent.status===X.UploadingAttachments}get uploadPercentage(){const{pendingEvent:e}=this._entry;return e&&Math.round(e.attachmentsSentBytes/e.attachmentsTotalBytes*100)}get status(){const{pendingEvent:e}=this._entry;switch(e==null?void 0:e.status){case X.Waiting:return this.i18n`Waiting…`;case X.EncryptingAttachments:case X.Encrypting:return this.i18n`Encrypting…`;case X.UploadingAttachments:return this.i18n`Uploading…`;case X.Sending:return this.i18n`Sending…`;case X.Error:return this.i18n`Error: ${e.error.message}`;default:return this._downloadError?"Download failed":this._downloading?this.i18n`Downloading…`:""}}get thumbnailUrl(){var e,t;if(!this._isVisible)return"";if(this._decryptedThumbnail)return this._decryptedThumbnail.url;{const s=(e=this._getContent().info)==null?void 0:e.thumbnail_url;if(s)return this._mediaRepository.mxcUrlThumbnail(s,this.width,this.height,"scale")}if(this._entry.isPending){const s=this._entry.pendingEvent.getAttachment("info.thumbnail_url");return s&&s.localPreview.url}if(this._isMainResourceImage()){if(this._decryptedFile)return this._decryptedFile.url;{const s=(t=this._getContent())==null?void 0:t.url;if(typeof s=="string")return this._mediaRepository.mxcUrlThumbnail(s,this.width,this.height,"scale")}}return""}notifyVisible(){super.notifyVisible(),this._isVisible=!0,this.emitChange("thumbnailUrl"),this.isPending||this._tryLoadEncryptedThumbnail()}get width(){var t;const e=(t=this._getContent())==null?void 0:t.info;return Math.round((e==null?void 0:e.w)*this._scaleFactor())}get height(){var t;const e=(t=this._getContent())==null?void 0:t.info;return Math.round((e==null?void 0:e.h)*this._scaleFactor())}get mimeType(){var t;const e=(t=this._getContent())==null?void 0:t.info;return e==null?void 0:e.mimetype}get label(){return this._getContent().body}get error(){return this._error?`Could not load media: ${this._error.message}`:null}setViewError(e){this._error=e,this.emitChange("error")}async _loadEncryptedFile(e){const t=await this._mediaRepository.downloadEncryptedFile(e,!0);if(this.isDisposed){t.dispose();return}return this.track(t)}async _tryLoadEncryptedThumbnail(){var e;try{const t=(e=this._getContent().info)==null?void 0:e.thumbnail_file,s=this._getContent().file;t?(this._decryptedThumbnail=await this._loadEncryptedFile(t),this.emitChange("thumbnailUrl")):s&&this._isMainResourceImage()&&(this._decryptedFile=await this._loadEncryptedFile(s),this.emitChange("thumbnailUrl"))}catch(t){this._error=t,this.emitChange("error")}}_scaleFactor(){var i;const e=(i=this._getContent())==null?void 0:i.info,t=G_/(e==null?void 0:e.h),s=Y_/(e==null?void 0:e.w);return Math.min(s,t,1)}_isMainResourceImage(){return!0}}class J_ extends mc{constructor(e,t){super(e,t),this._lightboxUrl=this.urlRouter.urlForSegments([this.navigation.segment("room",this._room.id),this.navigation.segment("lightbox",this._entry.id)])}get lightboxUrl(){return this.isPending?"":this._lightboxUrl}get shape(){return"image"}}class Q_ extends mc{async loadVideo(){const e=this._getContent().file;e&&!this._decryptedFile&&(this._decryptedFile=await this._loadEncryptedFile(e),this.emitChange("videoUrl"))}get videoUrl(){var t;if(this._decryptedFile)return this._decryptedFile.url;const e=(t=this._getContent())==null?void 0:t.url;return typeof e=="string"?this._mediaRepository.mxcUrl(e):""}get shape(){return"video"}_isMainResourceImage(){return!1}}function X_(n,e=2){if(Number.isSafeInteger(n)){const t=Math.min(3,Math.floor(Math.log(n)/Math.log(1024))),s=Math.round(n/Math.pow(1024,t)).toFixed(e);switch(t){case 0:return`${s} bytes`;case 1:return`${s} KB`;case 2:return`${s} MB`;case 3:return`${s} GB`}}return""}class Z_ extends ns{constructor(e,t){super(e,t),this._downloadError=null,this._downloading=!1}async download(){if(this._downloading||this.isPending)return;const e=this._getContent(),t=e.body;this._downloading=!0,this.emitChange("label");let s;try{s=await this._mediaRepository.downloadAttachment(e),this.platform.saveFileAs(s,t)}catch(i){this._downloadError=i}finally{s==null||s.dispose(),this._downloading=!1}this.emitChange("label")}get label(){var s;if(this._downloadError)return`Could not download file: ${this._downloadError.message}`;const t=this._getContent().body;if(this._entry.isPending){const{pendingEvent:i}=this._entry;switch(i==null?void 0:i.status){case X.Waiting:return this.i18n`Waiting to send ${t}…`;case X.EncryptingAttachments:case X.Encrypting:return this.i18n`Encrypting ${t}…`;case X.UploadingAttachments:{const r=Math.round(i.attachmentsSentBytes/i.attachmentsTotalBytes*100);return this.i18n`Uploading ${t}: ${r}%`}case X.Sending:case X.Sent:return this.i18n`Sending ${t}…`;case X.Error:return this.i18n`Error: could not send ${t}: ${i.error.message}`;default:return`Unknown send status for ${t}`}}else{const i=X_((s=this._getContent().info)==null?void 0:s.size);return this._downloading?this.i18n`Downloading ${t} (${i})…`:this.i18n`Download ${t} (${i})`}}get shape(){return"file"}}class ep extends ns{get shape(){return"location"}get mapsLink(){try{const e=new URL(this._getContent().geo_uri);if(e.protocol!=="geo:")return"";const[t,...s]=e.pathname.split(";"),[i,r]=t.split(","),o=parseFloat(i),c=parseFloat(r);let l;for(const h of s){const[a,u]=h.split("=");a==="u"&&(l=parseFloat(u))}if(this.platform.isIOS)return`http://maps.apple.com/?ll=${o},${c}`;{let h=`geo:${o},${c}`;return l&&(h=h+`;u=${l}`),h}}catch{return""}}get label(){return this.i18n`${this.displayName} sent their location`}}class tp extends xs{get shape(){return"announcement"}get announcement(){const e=this._entry.content;return`${this._entry.displayName||this._entry.sender} named the room "${e==null?void 0:e.name}"`}}class sp extends xs{get shape(){return"announcement"}get announcement(){var h,a;const{sender:e,content:t,prevContent:s,stateKey:i}=this._entry,r=this._entry.displayName||e,o=e===i?r:((h=this._entry.content)==null?void 0:h.displayname)||i,c=t&&t.membership,l=s&&s.membership;if(l==="join"&&c==="join"){if(t.avatar_url!==s.avatar_url)return`${r} changed their avatar`;if(t.displayname!==s.displayname)return t.displayname?`${(a=s.displayname)!=null?a:i} changed their name to ${t.displayname}`:`${i} removed their name (${s.displayname})`}else{if(c==="join")return`${o} joined the room`;if(c==="invite")return`${o} was invited to the room by ${r}`;if(l==="invite"){if(c==="join")return`${o} accepted the invitation to join the room`;if(c==="leave")return`${o} declined the invitation to join the room`}else if(c==="leave"){if(i===e)return`${o} left the room`;{const u=t.reason;return`${o} was kicked from the room by ${r}${u?`: ${u}`:""}`}}else if(c==="ban")return`${o} was banned from the room by ${r}`}return`${e} membership changed to ${t.membership}`}}class ip extends uc{updateEntry(e,t){const s=super.updateEntry(e,t);return e.eventType!=="m.room.encrypted"?Fe.Replace("shape"):s}get shape(){return"message-status"}_getBody(){const e=this._entry.decryptionError,t=e==null?void 0:e.code;let s;return t==="MEGOLM_NO_SESSION"?s=this.i18n`The sender hasn't sent us the key for this message yet.`:s=(e==null?void 0:e.message)||this.i18n`Could not decrypt message because of unknown reason.`,s}}class rp extends xs{get shape(){return"announcement"}get announcement(){const e=this._entry.displayName||this._entry.sender;return this.i18n`${e} has enabled end-to-end encryption`}}class np extends ns{get shape(){return"missing-attachment"}get label(){const e=this._getContent().body;return this._getContent().msgtype==="m.image"?this.i18n`The image ${e} wasn't fully sent previously and could not be recovered.`:this.i18n`The file ${e} wasn't fully sent previously and could not be recovered.`}}class op extends xs{constructor(e,t){super(e,t);const s=this.getOption("session").callHandler.calls;this._callSubscription=void 0,this._memberSizeSubscription=void 0;const i=s.get(this._entry.stateKey);i&&!i.isTerminated&&(this._call=i,this.memberViewModels=this._setupMembersList(this._call),this._callSubscription=this.track(this._call.disposableOn("change",()=>{this._onCallUpdate()})),this._memberSizeSubscription=this.track(this._call.members.observeSize().subscribe(()=>{this.emitChange("memberCount")})),this._onCallUpdate())}_onCallUpdate(){this._call.isTerminated?(this._durationInterval=this.disposeTracked(this._durationInterval),this._callSubscription=this.disposeTracked(this._callSubscription),this._call=void 0):this._durationInterval||(this._durationInterval=this.track(this.platform.clock.createInterval(()=>{this.emitChange("duration")},1e3))),this.emitChange()}_setupMembersList(e){return e.members.mapValues((t,s)=>new ap(this.childOptions({member:t,emitChange:s,mediaRepository:this.getOption("room").mediaRepository}))).sortValues((t,s)=>t.userId.localeCompare(s.userId))}get memberCount(){return this._call?this._call.members.size:0}get confId(){return this._entry.stateKey}get duration(){return this._call&&this._call.duration?this.timeFormatter.formatDuration(this._call.duration):""}get shape(){return"call"}get canJoin(){return this._call&&!this._call.hasJoined&&!this._call.usesFoci}get canLeave(){return this._call&&this._call.hasJoined}get title(){return this._call?this.type===yr.Video?`${this.displayName} started a video call`:`${this.displayName} started a voice call`:this.type===yr.Video?"Video call ended":"Voice call ended"}get typeLabel(){return this._call&&this._call.usesFoci?"This call uses a stream-forwarding unit, which isn't supported yet, so you can't join this call.":this.type===yr.Video?"Video call":"Voice call"}get type(){return this._entry.event.content["m.type"]}async join(){await this.logAndCatch("CallTile.join",async e=>{if(this.canJoin){const t=await this.platform.mediaDevices.getMediaTracks(!1,!0),s=new At().withUserMedia(t);await this._call.join(s,e)}})}async leave(){await this.logAndCatch("CallTile.leave",async e=>{this.canLeave&&await this._call.leave(e)})}}class ap extends L{get _member(){return this.getOption("member")}get userId(){return this._member.userId}get avatarLetter(){return Ee(this._member.member.name)}get avatarColorNumber(){return Re(this._member.userId)}avatarUrl(e){const{avatarUrl:t}=this._member.member,s=this.getOption("mediaRepository");return Be(t,e,this.platform,s)}get avatarTitle(){return this._member.member.name}}var Ai=(n=>(n[n.Ready=0]="Ready",n[n.InProgress=1]="InProgress",n[n.Completed=2]="Completed",n[n.Cancelled=3]="Cancelled",n))(Ai||{});class cp extends xs{constructor(e,t){super(e,t),this.status=0,this.request=new pr(this.lowerEntry),this.updateStatusFromAvailableContextForEntries()}get shape(){return me.Verification}get description(){return this.i18n`${this.sender} wants to verify`}accept(){this.getOption("session").crossSigning.get().receivedSASVerifications.set(this.eventId,this.request),this.openVerificationPanel(this.eventId)}async reject(){await this.logAndCatch("VerificationTile.reject",async e=>{const t=this.getOption("session").crossSigning.get();await this.request.reject(t,this._room,e)})}openVerificationPanel(e){let t=this.navigation.path.until("room");t=t.with(this.navigation.segment("right-panel",!0)),t=t.with(this.navigation.segment("verification",e)),this.navigation.applyPath(t)}updateEntry(e,t){return t==="context-added"?this.updateStatusFromAvailableContextForEntries()?Fe.Update(t):Fe.Nothing():super.updateEntry(e,t)}updateStatusFromAvailableContextForEntries(){var t;let e=!1;for(const s of(t=this.lowerEntry.contextForEntries)!=null?t:[])switch(s.eventType){case P.Cancel:return this.status=3,this.isCancelledByUs=s.sender===this.getOption("session").userId,!0;case P.Done:return this.status=2,!0;default:this.status=1,e=!0}return e}}function lp(n,e){if(n.isGap)return M_;if(n.isPending&&n.pendingEvent.isMissingAttachments)return np;if(n.eventType)switch(n.eventType){case"m.room.message":{if(n.isRedacted)return No;const t=n.content;switch(t&&t.msgtype){case"m.text":case"m.notice":case"m.emote":return z_;case"m.image":return J_;case"m.video":return Q_;case"m.file":return Z_;case"m.location":return ep;case"m.key.verification.request":const i=!e.session.features.crossSigning,r=e.session.userId;return i||n.sender===r?void 0:cp;default:return}}case"m.room.name":return tp;case"m.room.member":return sp;case"m.room.encrypted":return n.isRedacted?No:ip;case"m.room.encryption":return rp;case"org.matrix.msc3401.call":return e.features.calls&&n.stateKey&&!n.prevContent?op:void 0;default:return}}async function _c(n,e){var t,s,i,r;try{const o=await e.joinRoom(n);return await(await e.observeRoomStatus(o)).waitFor(l=>l===se.Joined),o}catch(o){throw((t=o.statusCode)!=null?t:o.status)===400?new Error(`'${n}' is not a legal room ID or alias`):((s=o.statusCode)!=null?s:o.status)===404||((i=o.statusCode)!=null?i:o.status)===502||o.message=="Internal Server eor"?new Error(`Room '${n}' could not be found`):((r=o.statusCode)!=null?r:o.status)===403?new Error(`You are not invited to join '${n}'`):o}}class Do extends ot{constructor(e){var i;super(e);const{room:t,tileClassForEntry:s}=e;this._sendReadReceipt=(i=e.sendReadReceipt)!=null?i:!0,this._room=t,this._timelineVM=null,this._tileClassForEntry=s!=null?s:lp,this._tileOptions=void 0,this._onRoomChange=this._onRoomChange.bind(this),this._composerVM=null,t.isArchived?this._composerVM=this.track(new dp(this.childOptions({archivedRoom:t}))):this._recreateComposerOnPowerLevelChange(),this._clearUnreadTimout=null,this._closeUrl=this.urlRouter.urlUntilSegment("session"),this._setupCallViewModel()}_setupCallViewModel(){if(!this.features.calls)return;const e=this.getOption("session").callHandler.calls;this._callObservable=new rl(e.filterValues(s=>s.roomId===this._room.id&&s.hasJoined)),this._callViewModel=void 0,this.track(this._callObservable.subscribe(s=>{s&&this._callViewModel&&s.id===this._callViewModel.id||(this._callViewModel=this.disposeTracked(this._callViewModel),s&&(this._callViewModel=this.track(new Ro(this.childOptions({call:s,room:this._room})))),this.emitChange("callViewModel"))}));const t=this._callObservable.get();t&&(this._callViewModel=this.track(new Ro(this.childOptions({call:t,room:this._room}))))}async load(){await this.logAndCatch("RoomViewModel.load",async e=>{this._room.on("change",this._onRoomChange);const t=await this._room.openTimeline(e);this.track(()=>t.release()),this._tileOptions=this.childOptions({session:this.getOption("session"),roomVM:this,timeline:t,tileClassForEntry:this._tileClassForEntry}),this._timelineVM=this.track(new w_(this.childOptions({tileOptions:this._tileOptions,timeline:t}))),this.emitChange("timelineViewModel"),await this._clearUnreadAfterDelay(e)})}async _recreateComposerOnPowerLevelChange(){const e=await this._room.observePowerLevels(),t=()=>e.get().canSendType("m.room.message");let s=t();const i=r=>{this._composerVM=this.disposeTracked(this._composerVM),r?this._composerVM=this.track(new v_(this)):this._composerVM=this.track(new up(this.childOptions())),this.emitChange("powerLevelObservable")};this.track(e.subscribe(()=>{const r=t();s!==r&&(i(r),s=r)})),i(s)}async _clearUnreadAfterDelay(e){if(!(this._room.isArchived||this._clearUnreadTimout)){this._clearUnreadTimout=this.clock.createTimeout(2e3);try{await this._clearUnreadTimout.elapsed(),await this._room.clearUnread(e,this._sendReadReceipt),this._clearUnreadTimout=null}catch(t){if(t.name==="AbortError")e.set("clearUnreadCancelled",!0);else throw t}}}focus(){this.logAndCatch("RoomViewModel.focus",async e=>{this._clearUnreadAfterDelay(e)})}dispose(){super.dispose(),this._room.off("change",this._onRoomChange),this._room.isArchived&&this._room.release(),this._clearUnreadTimout&&(this._clearUnreadTimout.abort(),this._clearUnreadTimout=null)}_onRoomChange(){var e;(e=this._composerVM)==null||e.emitChange(),this.emitChange()}get kind(){return"room"}get closeUrl(){return this._closeUrl}get name(){return this._room.name||this.i18n`Empty Room`}get id(){return this._room.id}get timelineViewModel(){return this._timelineVM}get isEncrypted(){return this._room.isEncrypted}get avatarLetter(){return Ee(this.name)}get avatarColorNumber(){return Re(this._room.avatarColorId)}avatarUrl(e){return Be(this._room.avatarUrl,e,this.platform,this._room.mediaRepository)}get avatarTitle(){return this.name}get canLeave(){return this._room.isJoined}leaveRoom(){this._room.leave()}get canForget(){return this._room.isArchived}forgetRoom(){this._room.forget()}get canRejoin(){return this._room.isArchived}rejoinRoom(){this._room.join()}_createTile(e){if(this._tileOptions){const t=this._tileOptions.tileClassForEntry(e,this._tileOptions);if(t)return new t(e,this._tileOptions)}}_sendMessage(e,t){return this.logAndCatch("RoomViewModel.sendMessage",async s=>{let i=!1;if(!this._room.isArchived&&e){let r="m.text";if(e.startsWith("//"))e=e.substring(1).trim();else if(e.startsWith("/")){const c=await this._processCommand(e);r=c.msgtype,e=c.message}let o;t?(s.set("replyingTo",t.eventId),o=await t.createReplyContent(r,e)):o={msgtype:r,body:e},await this._room.sendEvent("m.room.message",o,void 0,s),i=!0}return s.set("success",i),i},!1)}async _processCommandJoin(e){try{const t=this._options.client.session,s=await _c(e,t);this.navigation.push("room",s)}catch(t){this.reportError(t)}}async _processCommand(e){let t;const[s,...i]=e.substring(1).split(" ");switch(s){case"me":e=i.join(" "),t="m.emote";break;case"join":if(i.length===1){const r=i[0];await this._processCommandJoin(r)}else this.reportError(new Error("join syntax: /join "));break;case"invite":if(i.length===1){const r=i[0];await this._room.inviteUser(r)}else this.reportError(new Error("invite syntax: /invite "));break;case"shrug":e="\xAF\\_(\u30C4)_/\xAF "+i.join(" "),t="m.text";break;case"tableflip":e="(\u256F\xB0\u25A1\xB0\uFF09\u256F\uFE35 \u253B\u2501\u253B "+i.join(" "),t="m.text";break;case"unflip":e="\u252C\u2500\u2500\u252C \u30CE( \u309C-\u309C\u30CE) "+i.join(" "),t="m.text";break;case"lenny":e="( \u0361\xB0 \u035C\u0296 \u0361\xB0) "+i.join(" "),t="m.text";break;default:this.reportError(new Error(`no command name "${s}". To send the message instead of executing, please type "/${e}"`)),e=void 0}return{msgtype:t,message:e}}_pickAndSendFile(){return this.logAndCatch("RoomViewModel.sendFile",async e=>{const t=await this.platform.openFile();if(!t){e.set("cancelled",!0);return}return this._sendFile(t,e)})}async _sendFile(e,t){const s={body:e.name,msgtype:"m.file"};await this._room.sendEvent("m.room.message",s,{url:this._room.createAttachment(e.blob,e.name)},t)}_pickAndSendVideo(){return this.logAndCatch("RoomViewModel.sendVideo",async e=>{if(!this.platform.hasReadPixelPermission())throw new Error("Please allow canvas image data access, so we can scale your images down.");const t=await this.platform.openFile("video/*");if(!t)return;if(!t.blob.mimeType.startsWith("video/"))return this._sendFile(t,e);let s;try{s=await this.platform.loadVideo(t.blob)}catch(h){throw h instanceof window.MediaError&&h.code===4?new Error(`this browser does not support videos of type ${t==null?void 0:t.blob.mimeType}.`):h}const i={body:t.name,msgtype:"m.video",info:hp(s)},r={url:this._room.createAttachment(s.blob,t.name)},c=await this.platform.settingsStorage.getInt("sentImageSizeLimit")||Math.min(s.maxDimension,800),l=await s.scale(c);i.info.thumbnail_info=Ni(l),r["info.thumbnail_url"]=this._room.createAttachment(l.blob,t.name),await this._room.sendEvent("m.room.message",i,r,e)})}async _pickAndSendPicture(){this.logAndCatch("RoomViewModel.sendPicture",async e=>{if(!this.platform.hasReadPixelPermission()){alert("Please allow canvas image data access, so we can scale your images down.");return}const t=await this.platform.openFile("image/*");if(!t){e.set("cancelled",!0);return}if(!t.blob.mimeType.startsWith("image/"))return this._sendFile(t,e);let s=await this.platform.loadImage(t.blob);const i=await this.platform.settingsStorage.getInt("sentImageSizeLimit");if(i&&s.maxDimension>i){const c=await s.scale(i);s.dispose(),s=c}const r={body:t.name,msgtype:"m.image",info:Ni(s)},o={url:this._room.createAttachment(s.blob,t.name)};if(s.maxDimension>600){const c=await s.scale(400);r.info.thumbnail_info=Ni(c),o["info.thumbnail_url"]=this._room.createAttachment(c.blob,t.name)}await this._room.sendEvent("m.room.message",r,o,e)})}get room(){return this._room}get composerViewModel(){return this._composerVM}get callViewModel(){return this._callViewModel}openDetailsPanel(){let e=this.navigation.path.until("room");e=e.with(this.navigation.segment("right-panel",!0)),e=e.with(this.navigation.segment("details",!0)),this.navigation.applyPath(e)}startReply(e){this._room.isArchived||this._composerVM.setReplyingTo(e)}startCall(){return this.logAndCatch("RoomViewModel.startCall",async e=>{if(!this.features.calls){e.set("feature_disbled",!0);return}e.set("roomId",this._room.id);let t;try{const r=await this.platform.mediaDevices.getMediaTracks(!1,!0);t=new At().withUserMedia(r)}catch(r){throw new Error(`Could not get local audio and/or video stream: ${r.message}`)}const s=this.getOption("session");let i;try{i=await s.callHandler.createCall(this._room.id,"m.video","A call "+Math.round(this.platform.random()*100),void 0,e)}catch(r){throw new Error(`Could not create call: ${r.message}`)}try{await i.join(t,e)}catch(r){throw new Error(`Could not join call: ${r.message}`)}})}}function hp(n){const e=Ni(n);return e.duration=n.duration,e}class dp extends L{constructor(e){super(e),this._archivedRoom=e.archivedRoom}get description(){return this._archivedRoom.isKicked?this._archivedRoom.kickReason?this.i18n`You were kicked from the room by ${this._archivedRoom.kickedBy.name} because: ${this._archivedRoom.kickReason}`:this.i18n`You were kicked from the room by ${this._archivedRoom.kickedBy.name}.`:this._archivedRoom.isBanned?this._archivedRoom.kickReason?this.i18n`You were banned from the room by ${this._archivedRoom.kickedBy.name} because: ${this._archivedRoom.kickReason}`:this.i18n`You were banned from the room by ${this._archivedRoom.kickedBy.name}.`:this.i18n`You left this room`}get kind(){return"disabled"}}class up extends L{get description(){return this.i18n`You do not have the powerlevel necessary to send messages`}get kind(){return"disabled"}}class mp extends L{constructor(e){super(e);const{roomIdOrAlias:t,session:s}=e;this._session=s,this.roomIdOrAlias=t,this._error=null,this._busy=!1,this._closeUrl=this.urlRouter.urlUntilSegment("session")}get closeUrl(){return this._closeUrl}get error(){var e;return(e=this._error)==null?void 0:e.message}async join(){this._busy=!0,this.emitChange("busy");try{const e=await this._session.joinRoom(this.roomIdOrAlias);this.navigation.push("room",e)}catch(e){this._error=e,this._busy=!1,this.emitChange("error")}}get busy(){return this._busy}get kind(){return"unknown"}}class _p extends L{constructor(e){super(e);const{invite:t,mediaRepository:s}=e;this._invite=t,this._mediaRepository=s,this._onInviteChange=this._onInviteChange.bind(this),this._error=null,this._closeUrl=this.urlRouter.urlUntilSegment("session"),this._invite.on("change",this._onInviteChange),this._inviter=null,this._invite.inviter&&(this._inviter=new pp(this._invite.inviter,s,this.platform)),this._roomDescription=this._createRoomDescription()}get kind(){return"invite"}get closeUrl(){return this._closeUrl}get name(){return this._invite.name}get id(){return this._invite.id}get isEncrypted(){return this._invite.isEncrypted}get isDirectMessage(){return this._invite.isDirectMessage}get inviter(){return this._inviter}get busy(){return this._invite.accepting||this._invite.rejecting}get error(){return this._error?`Something went wrong: ${this._error.message}`:""}get avatarLetter(){return Ee(this.name)}get avatarColorNumber(){return Re(this._invite.avatarColorId)}avatarUrl(e){return Be(this._invite.avatarUrl,e,this.platform,this._mediaRepository)}_createRoomDescription(){const e=[];return this._invite.isPublic?e.push("Public room"):e.push("Private room"),this._invite.canonicalAlias&&e.push(this._invite.canonicalAlias),e.join(" \u2022 ")}get roomDescription(){return this._roomDescription}get avatarTitle(){return this.name}focus(){}async accept(){try{await this._invite.accept()}catch(e){this._error=e,this.emitChange("error")}}async reject(){try{await this._invite.reject()}catch(e){this._error=e,this.emitChange("error")}}_onInviteChange(){this.emitChange()}dispose(){super.dispose(),this._invite.off("change",this._onInviteChange)}}class pp{constructor(e,t,s){this._member=e,this._mediaRepository=t,this._platform=s}get id(){return this._member.userId}get name(){return this._member.name}get avatarLetter(){return Ee(this.name)}get avatarColorNumber(){return Re(this._member.userId)}avatarUrl(e){return Be(this._member.avatarUrl,e,this._platform,this._mediaRepository)}get avatarTitle(){return this.name}}class gp extends L{constructor(e){super(e);const{roomBeingCreated:t,mediaRepository:s}=e;this._roomBeingCreated=t,this._mediaRepository=s,this._onRoomChange=this._onRoomChange.bind(this),this._closeUrl=this.urlRouter.urlUntilSegment("session"),this._roomBeingCreated.on("change",this._onRoomChange)}get kind(){return"roomBeingCreated"}get closeUrl(){return this._closeUrl}get name(){return this._roomBeingCreated.name}get id(){return this._roomBeingCreated.id}get isEncrypted(){return this._roomBeingCreated.isEncrypted}get error(){const{error:e}=this._roomBeingCreated;return e?e.name==="ConnectionError"?this.i18n`You seem to be offline`:e.message:""}get avatarLetter(){return Ee(this.name)}get avatarColorNumber(){return Re(this._roomBeingCreated.avatarColorId)}get avatarTitle(){return this.name}avatarUrl(e){var t;return(t=this._roomBeingCreated.avatarBlobUrl)!=null?t:Be(this._roomBeingCreated.avatarUrl,e,this.platform,this._mediaRepository)}focus(){}_onRoomChange(){this.emitChange()}cancel(){this._roomBeingCreated.cancel(),this.navigation.applyPath(this.navigation.path.until("session"))}dispose(){super.dispose(),this._roomBeingCreated.off("change",this._onRoomChange)}}class fp extends L{constructor(e){super(e),this._eventId=e.eventId,this._unencryptedImageUrl=null,this._decryptedImage=null,this._closeUrl=this.urlRouter.urlUntilSegment("room"),this._date=null,this._subscribeToEvent(e.room,e.eventId)}_subscribeToEvent(e,t){const s=e.observeEvent(t);this.track(s.subscribe(i=>{this._loadEvent(e,i)})),this._loadEvent(e,s.get())}async _loadEvent(e,t){if(!t)return;const{mediaRepository:s}=e;this._eventEntry=t;const{content:i}=this._eventEntry;this._date=this._eventEntry.timestamp?new Date(this._eventEntry.timestamp):null,i.url?(this._unencryptedImageUrl=s.mxcUrl(i.url),this.emitChange("imageUrl")):i.file&&(this._decryptedImage=this.track(await s.downloadEncryptedFile(i.file)),this.emitChange("imageUrl"))}get imageWidth(){var e,t,s;return(s=(t=(e=this._eventEntry)==null?void 0:e.content)==null?void 0:t.info)==null?void 0:s.w}get imageHeight(){var e,t,s;return(s=(t=(e=this._eventEntry)==null?void 0:e.content)==null?void 0:t.info)==null?void 0:s.h}get name(){var e,t;return(t=(e=this._eventEntry)==null?void 0:e.content)==null?void 0:t.body}get sender(){var e;return(e=this._eventEntry)==null?void 0:e.displayName}get imageUrl(){return this._decryptedImage?this._decryptedImage.url:this._unencryptedImageUrl?this._unencryptedImageUrl:""}get date(){return this._date&&this._date.toLocaleDateString({},{weekday:"long",year:"numeric",month:"long",day:"numeric"})}get time(){return this._date&&this._date.toLocaleTimeString({},{hour:"numeric",minute:"2-digit"})}get closeUrl(){return this._closeUrl}close(){this.platform.history.pushUrl(this.closeUrl)}}const ke=oi("Disconnected","Connecting","FirstSync","Sending","Syncing","SyncError");class yp extends L{constructor(e){super(e);const{sync:t,reconnector:s,session:i}=e;this._sync=t,this._reconnector=s,this._status=this._calculateState(s.connectionStatus.get(),t.status.get()),this._session=i,this._setupKeyBackupUrl=this.urlRouter.urlForSegment("settings"),this._dismissSecretStorage=!1}start(){const e=()=>this._updateStatus();this.track(this._sync.status.subscribe(e)),this.track(this._reconnector.connectionStatus.subscribe(e)),this.track(this._session.needsKeyBackup.subscribe(()=>{this.emitChange()}))}get setupKeyBackupUrl(){return this._setupKeyBackupUrl}get isShown(){return this._session.needsKeyBackup.get()&&!this._dismissSecretStorage||this._status!==ke.Syncing}get statusLabel(){switch(this._status){case ke.Disconnected:{const e=Math.round(this._reconnector.retryIn/1e3);return this.i18n`Disconnected, trying to reconnect in ${e}s…`}case ke.Connecting:return this.i18n`Trying to reconnect now…`;case ke.FirstSync:return this.i18n`Catching up with your conversations…`;case ke.SyncError:return this.i18n`Sync failed because of ${this._sync.error}`}return this._session.needsKeyBackup.get()?this.i18n`Set up session backup to decrypt older messages.`:""}get isWaiting(){switch(this._status){case ke.Connecting:case ke.FirstSync:return!0;default:return!1}}_updateStatus(){const e=this._calculateState(this._reconnector.connectionStatus.get(),this._sync.status.get());e!==this._status&&(e===ke.Disconnected?this._retryTimer=this.track(this.clock.createInterval(()=>{this.emitChange("statusLabel")},1e3)):this._retryTimer=this.disposeTracked(this._retryTimer),this._status=e,this.emitChange())}_calculateState(e,t){if(e!==Ys.Online)switch(e){case Ys.Reconnecting:return ke.Connecting;case Ys.Waiting:return ke.Disconnected}else if(t!==te.Syncing)switch(t){case te.InitialSync:case te.CatchupSync:return ke.FirstSync;case te.Stopped:return ke.SyncError}else return ke.Syncing}get isConnectNowShown(){return this._status===ke.Disconnected}get isSecretStorageShown(){return this._status===ke.Syncing&&this._session.needsKeyBackup.get()&&!this._dismissSecretStorage}get canDismiss(){return this.isSecretStorageShown}dismiss(){this.isSecretStorageShown&&(this._dismissSecretStorage=!0,this.emitChange())}connectNow(){this.isConnectNowShown&&this._reconnector.tryNow()}}function Uo(n){return n.map((e,t)=>{if(!n.slice(0,t).includes(e))return e})}class wp extends L{constructor(e){super(e),this._width=e.width,this._height=e.height,this._createRoomViewModelObservable=e.createRoomViewModelObservable,this._selectedIndex=0,this._viewModelsObservables=[],this._setupNavigation()}_setupNavigation(){const e=this.navigation.observe("empty-grid-tile");this.track(e.subscribe(s=>{typeof s=="number"&&this._setFocusIndex(s)})),typeof e.get()=="number"&&(this._selectedIndex=e.get());const t=this.navigation.observe("room");this.track(t.subscribe(s=>{s&&this._setFocusRoom(s)}))}roomViewModelAt(e){var t;return(t=this._viewModelsObservables[e])==null?void 0:t.get()}get focusIndex(){return this._selectedIndex}get width(){return this._width}get height(){return this._height}_switchToRoom(e){let t=this.navigation.path.until("rooms");t=t.with(this.navigation.segment("room",e)),t=mn(this.navigation,t),this.navigation.applyPath(t)}focusTile(e){if(e===this._selectedIndex)return;const t=this._viewModelsObservables[e];t?this._switchToRoom(t.id):this.navigation.push("empty-grid-tile",e)}initializeRoomIdsAndTransferVM(e,t){e=Uo(e);let s=!1;if(t){const r=e.indexOf(t.id);r!==-1&&(this._viewModelsObservables[r]=this.track(t),t.subscribe(o=>this._refreshRoomViewModel(o)),s=!0)}this.setRoomIds(e);const i=this.navigation.path.get("room");if(i){const r=this._viewModelsObservables.findIndex(o=>o&&o.id===i.value);r!==-1&&(this._selectedIndex=r)}return s}setRoomIds(e){e=Uo(e);let t=!1;const s=this._height*this._width;for(let i=0;ithis._refreshRoomViewModel(l)),c.initialize()}t=!0}}return t&&this.emitChange(),t}_refreshRoomViewModel(e){this.emitChange(),e==null||e.focus()}releaseRoomViewModel(e){const t=this._viewModelsObservables.findIndex(s=>s&&s.id===e);if(t!==-1){const s=this._viewModelsObservables[t];return this.untrack(s),s.unsubscribeAll(),this._viewModelsObservables[t]=null,s}}_setFocusIndex(e){var s;if(e===this._selectedIndex||e>=this._width*this._height)return;this._selectedIndex=e;const t=this._viewModelsObservables[this._selectedIndex];(s=t==null?void 0:t.get())==null||s.focus(),this.emitChange("focusIndex")}_setFocusRoom(e){const t=this._viewModelsObservables.findIndex(s=>(s==null?void 0:s.id)===e);t>=0&&this._setFocusIndex(t)}}var st=(n=>(n[n.Enabled=0]="Enabled",n[n.SetupWithPassphrase=1]="SetupWithPassphrase",n[n.SetupWithRecoveryKey=2]="SetupWithRecoveryKey",n[n.Pending=3]="Pending",n[n.NewVersionAvailable=4]="NewVersionAvailable",n))(st||{}),wr=(n=>(n[n.Writing=0]="Writing",n[n.Stopped=1]="Stopped",n[n.Done=2]="Done",n[n.Pending=3]="Pending",n))(wr||{});class vp extends L{constructor(e){super(e),this._error=void 0,this._isBusy=!1,this._dehydratedDeviceId=void 0,this._status=3,this._backupOperationSubscription=void 0,this._keyBackupSubscription=void 0,this._progress=void 0,this._setupKeyType=mt.RecoveryKey;const t=s=>{s&&!this._keyBackupSubscription?this._keyBackupSubscription=this.track(this._session.keyBackup.get().disposableOn("change",()=>{this._onKeyBackupChange()})):!s&&this._keyBackupSubscription&&(this._keyBackupSubscription=this.disposeTracked(this._keyBackupSubscription)),this._onKeyBackupChange()};this.track(this._session.keyBackup.subscribe(t)),this.track(this._session.crossSigning.subscribe(()=>{this.emitChange("crossSigning")})),t(this._keyBackup)}get _session(){return this.getOption("session")}get _keyBackup(){return this._session.keyBackup.get()}get _crossSigning(){return this._session.crossSigning.get()}_onKeyBackupChange(){const e=this._keyBackup;if(e){const{operationInProgress:t}=e;t&&!this._backupOperationSubscription?this._backupOperationSubscription=this.track(t.disposableOn("change",()=>{this._progress=t.progress,this.emitChange("backupPercentage")})):this._backupOperationSubscription&&!t&&(this._backupOperationSubscription=this.disposeTracked(this._backupOperationSubscription),this._progress=void 0)}this.emitChange("status")}get status(){const e=this._keyBackup;if(e)return e.needsNewKey?4:e.version===void 0?3:e.needsNewKey?4:0;switch(this._setupKeyType){case mt.RecoveryKey:return 2;case mt.Passphrase:return 1}}get decryptAction(){return this.i18n`Set up`}get purpose(){return this.i18n`set up key backup`}offerDehydratedDeviceSetup(){return!0}get dehydratedDeviceId(){return this._dehydratedDeviceId}get isBusy(){return this._isBusy}get backupVersion(){var e,t;return(t=(e=this._keyBackup)==null?void 0:e.version)!=null?t:""}get isMasterKeyTrusted(){var e,t;return(t=(e=this._crossSigning)==null?void 0:e.isMasterKeyTrusted)!=null?t:!1}get canSignOwnDevice(){return!!this._crossSigning}async _signOwnDevice(){const e=this._crossSigning;e&&await this.logger.run("KeyBackupViewModel.signOwnDevice",async t=>{await e.signOwnDevice(t)})}navigateToVerification(){this.navigation.push("device-verification",!0)}get backupWriteStatus(){const e=this._keyBackup;return!e||e.version===void 0?3:e.hasStopped?1:e.operationInProgress?0:e.hasBackedUpAllKeys?2:3}get backupError(){var e,t;return(t=(e=this._keyBackup)==null?void 0:e.error)==null?void 0:t.message}get error(){var e;return(e=this._error)==null?void 0:e.message}showPhraseSetup(){this._setupKeyType=mt.Passphrase,this.emitChange("status")}showKeySetup(){this._setupKeyType=mt.RecoveryKey,this.emitChange("status")}async _enterCredentials(e,t,s){if(t)try{this._isBusy=!0,this.emitChange("isBusy");const i=await this._session.enableSecretStorage(e,t);s&&(this._dehydratedDeviceId=await this._session.setupDehydratedDevice(i)),await this._signOwnDevice()}catch(i){console.error(i),this._error=i,this.emitChange("error")}finally{this._isBusy=!1,this.emitChange()}}enterSecurityPhrase(e,t){return this._enterCredentials(mt.Passphrase,e,t)}enterSecurityKey(e,t){return this._enterCredentials(mt.RecoveryKey,e,t)}async disable(){try{this._isBusy=!0,this.emitChange("isBusy"),await this._session.disableSecretStorage()}catch(e){console.error(e),this._error=e,this.emitChange("error")}finally{this._isBusy=!1,this.emitChange()}}get isBackingUp(){var e;return((e=this._keyBackup)==null?void 0:e.operationInProgress)!==void 0}get backupPercentage(){return this._progress?Math.round(this._progress.finished/this._progress.total*100):0}get backupInProgressLabel(){return this._progress?this.i18n`${this._progress.finished} of ${this._progress.total}`:this.i18n`…`}cancelBackup(){var e,t;(t=(e=this._keyBackup)==null?void 0:e.operationInProgress)==null||t.abort()}startBackup(){this.logger.run("KeyBackupViewModel.startBackup",e=>{var t;(t=this._keyBackup)==null||t.flush(e)})}}class bp extends L{constructor(e){super(e),this.featureViewModels=[new Oo(this.childOptions({name:this.i18n`Audio/video calls`,description:this.i18n`Allows starting and participating in A/V calls compatible with Element Call (MSC3401). Look for the start call option in the room menu ((...) in the right corner) to start a call.`,feature:dn.Calls})),new Oo(this.childOptions({name:this.i18n`Cross-Signing`,description:this.i18n`Allows verifying the identity of people you chat with. This feature is still evolving constantly, expect things to break.`,feature:dn.CrossSigning}))]}}class Oo extends L{get enabled(){return this.features.isFeatureEnabled(this.getOption("feature"))}async enableFeature(e){let t;e?t=this.features.withFeature(this.getOption("feature")):t=this.features.withoutFeature(this.getOption("feature")),await t.store(this.platform.settingsStorage),this.platform.restart()}get id(){return`${this.getOption("feature")}`}get name(){return this.getOption("name")}get description(){return this.getOption("description")}}class Sp{constructor(){this.supported=null,this.enabled=!1,this.updating=!1,this.enabledOnServer=null,this.serverError=null}}function kp(n){const t=Math.ceil(n.length/4);let s="";for(let i=0;ithis.maxSentImageSizeLimit||etypeof s.export=="function").export()).asBlob()}get canSendLogsToServer(){return!!this.platform.config.bugReportEndpointUrl}get logsServer(){const{bugReportEndpointUrl:e}=this.platform.config;try{if(e)return new URL(e).hostname}catch{}return""}async sendLogsToServer(){this._logsFeedbackMessage=this.i18n`Sending logs…`;try{await cc(this._session,this.platform),this._logsFeedbackMessage=this.i18n`Logs sent succesfully!`}catch(e){this._logsFeedbackMessage=e.message,this.emitChange()}}get logsFeedbackMessage(){return this._logsFeedbackMessage}async togglePushNotifications(){this.pushNotifications.updating=!0,this.pushNotifications.enabledOnServer=null,this.pushNotifications.serverError=null,this.emitChange("pushNotifications.updating");try{await this._session.enablePushNotifications(!this.pushNotifications.enabled)&&(this.pushNotifications.enabled=!this.pushNotifications.enabled,this.pushNotifications.enabled&&this.platform.notificationService.showNotification(this.i18n`Push notifications are now enabled`))}finally{this.pushNotifications.updating=!1,this.emitChange("pushNotifications.updating")}}async checkPushEnabledOnServer(){this.pushNotifications.enabledOnServer=null,this.pushNotifications.serverError=null;try{this.pushNotifications.enabledOnServer=await this._session.checkPusherEnabledOnHomeserver(),this.emitChange("pushNotifications.enabledOnServer")}catch(e){this.pushNotifications.serverError=e,this.emitChange("pushNotifications.serverError")}}changeThemeOption(e,t){this.platform.themeLoader.setTheme(e,t),this.emitChange("themeOption")}}class Mp extends L{constructor(e){super(e);const{session:t}=e;this._session=t,this._name=void 0,this._topic=void 0,this._roomAlias=void 0,this._isPublic=!1,this._isEncrypted=!0,this._isAdvancedShown=!1,this._isFederationDisabled=!1,this._avatarScaledBlob=void 0,this._avatarFileName=void 0,this._avatarInfo=void 0,this._closeUrl=this.urlRouter.urlUntilSegment("session")}get isPublic(){return this._isPublic}get isEncrypted(){return this._isEncrypted}get canCreate(){return!!this._name}avatarUrl(){return this._avatarScaledBlob.url}get avatarTitle(){return this._name}get avatarLetter(){return""}get avatarColorNumber(){return 0}get hasAvatar(){return!!this._avatarScaledBlob}get isFederationDisabled(){return this._isFederationDisabled}get isAdvancedShown(){return this._isAdvancedShown}get closeUrl(){return this._closeUrl}setName(e){this._name=e,this.emitChange("canCreate")}setRoomAlias(e){this._roomAlias=e}setTopic(e){this._topic=e}setPublic(e){this._isPublic=e,this.emitChange("isPublic")}setEncrypted(e){this._isEncrypted=e,this.emitChange("isEncrypted")}setFederationDisabled(e){this._isFederationDisabled=e,this.emitChange("isFederationDisabled")}toggleAdvancedShown(){this._isAdvancedShown=!this._isAdvancedShown,this.emitChange("isAdvancedShown")}create(){var s,i;let e;this._avatarScaledBlob&&(e={info:this._avatarInfo,name:this._avatarFileName,blob:this._avatarScaledBlob});const t=this._session.createRoom({type:this.isPublic?Le.Public:Le.Private,name:(s=this._name)!=null?s:void 0,topic:(i=this._topic)!=null?i:void 0,isEncrypted:!this.isPublic&&this._isEncrypted,isFederationDisabled:this._isFederationDisabled,alias:this.isPublic?Cp(this._roomAlias):void 0,avatar:e});this.navigation.push("room",t.id)}async selectAvatar(){if(!this.platform.hasReadPixelPermission()){alert("Please allow canvas image data access, so we can scale your images down.");return}this._avatarScaledBlob&&this._avatarScaledBlob.dispose(),this._avatarScaledBlob=void 0,this._avatarFileName=void 0,this._avatarInfo=void 0;const e=await this.platform.openFile("image/*");if(!e||!e.blob.mimeType.startsWith("image/")){this.emitChange("hasAvatar");return}let t=await this.platform.loadImage(e.blob);const s=800;if(t.maxDimension>s){const i=await t.scale(s);t.dispose(),t=i}this._avatarScaledBlob=t.blob,this._avatarInfo=Ni(t),this._avatarFileName=e.name,this.emitChange("hasAvatar")}}function Cp(n){n.startsWith("#")&&(n=n.substr(1));const e=n.indexOf(":");return e!==-1&&(n=n.substr(0,e)),n}class Ep extends L{constructor(e){super(e),this._joinInProgress=!1,this._session=e.session,this._closeUrl=this.urlRouter.urlUntilSegment("session")}get closeUrl(){return this._closeUrl}async join(e){this._error=void 0,this._joinInProgress=!0,this.emitChange("joinInProgress");try{const t=await _c(e,this._session);this.navigation.push("room",t)}catch(t){this._error=t,this._joinInProgress=!1,this.emitChange("error")}}get joinInProgress(){return this._joinInProgress}get status(){if(this._error)return this._error.message;if(this._joinInProgress)return"Joining room"}}class Rp extends L{async cancel(){await this.options.sas.abort()}get title(){const e=this.getOption("sas").isCrossSigningAnotherUser?"Waiting for the other user to accept the verification request":"Waiting for any of your device to accept the verification request";return this.i18n`${e}`}get description(){const e=this.getOption("sas").isCrossSigningAnotherUser?"Ask the other user to accept the request from their client!":"Accept the request from the device you wish to verify!";return this.i18n`${e}`}get kind(){return"waiting-for-user"}}class pc extends ot{dismiss(){if(this.getOption("sas").isCrossSigningAnotherUser){const e=this.navigation.path.until("room");this.navigation.applyPath(e)}else this.navigation.push("settings",!0)}}class Tp extends pc{get cancelCode(){return this.options.cancellation.code}get isCancelledByUs(){return this.options.cancellation.cancelledByUs}get kind(){return"verification-cancelled"}get title(){return this.isCancelledByUs?this.i18n`You cancelled the verification!`:this.getOption("sas").isCrossSigningAnotherUser?this.i18n`The other user cancelled the verification!`:this.i18n`The other device cancelled the verification!`}get description(){var c;const e={[A.InvalidMessage]:"Your other device sent an invalid message.",[A.KeyMismatch]:"The key could not be verified.",[A.TimedOut]:"The verification process timed out.",[A.UnexpectedMessage]:"Your other device sent an unexpected message.",[A.UnknownMethod]:"Your other device is using an unknown method for verification.",[A.UnknownTransaction]:"Your other device sent a message with an unknown transaction id.",[A.UserMismatch]:"The expected user did not match the user verified.",[A.MismatchedCommitment]:"The hash commitment does not match.",[A.MismatchedSAS]:"The emoji/decimal did not match."},t={[A.UserCancelled]:"Your other device cancelled the verification!",[A.InvalidMessage]:"Invalid message sent to the other device.",[A.KeyMismatch]:"The other device could not verify our keys",[A.TimedOut]:"The verification process timed out.",[A.UnexpectedMessage]:"Unexpected message sent to the other device.",[A.UnknownMethod]:"Your other device does not understand the method you chose",[A.UnknownTransaction]:"Your other device rejected our message.",[A.UserMismatch]:"The expected user did not match the user verified.",[A.MismatchedCommitment]:"Your other device was not able to verify the hash commitment",[A.MismatchedSAS]:"The emoji/decimal did not match."},s={[A.InvalidMessage]:"The other user sent an invalid message.",[A.KeyMismatch]:"The key could not be verified.",[A.TimedOut]:"The verification process timed out.",[A.UnexpectedMessage]:"The other user sent an unexpected message.",[A.UnknownMethod]:"The other user is using an unknown method for verification.",[A.UnknownTransaction]:"The other user sent a message with an unknown transaction id.",[A.UserMismatch]:"The expected user did not match the user verified.",[A.MismatchedCommitment]:"The hash commitment does not match.",[A.MismatchedSAS]:"The emoji/decimal did not match."},i={[A.UserCancelled]:"The other user cancelled the verification!",[A.InvalidMessage]:"Invalid message sent to the other user.",[A.KeyMismatch]:"The other user could not verify our keys",[A.TimedOut]:"The verification process timed out.",[A.UnexpectedMessage]:"Unexpected message sent to the other user.",[A.UnknownMethod]:"The other user does not understand the method you chose",[A.UnknownTransaction]:"The other user rejected our message.",[A.UserMismatch]:"The expected user did not match the user verified.",[A.MismatchedCommitment]:"The other user was not able to verify the hash commitment",[A.MismatchedSAS]:"The emoji/decimal did not match."};let r;this.getOption("sas").isCrossSigningAnotherUser?r=this.isCancelledByUs?s:i:r=this.isCancelledByUs?e:t;const o=(c=r[this.cancelCode])!=null?c:"";return this.i18n`${o}`}}class Ap extends ot{constructor(){super(...arguments),this.hasProceeded=!1}async proceed(){await this.logAndCatch("SelectMethodViewModel.proceed",async e=>{await this.options.stage.selectEmojiMethod(e),this.hasProceeded=!0,this.emitChange("hasProceeded")})}async cancel(){await this.logAndCatch("SelectMethodViewModel.cancel",async()=>{await this.options.sas.abort()})}get deviceName(){return this.options.stage.otherDeviceName}get otherUserId(){return this.getOption("sas").otherUserId}get kind(){return"select-method"}get isCrossSigningAnotherUser(){return this.getOption("sas").isCrossSigningAnotherUser}}class xp extends ot{constructor(){super(...arguments),this._isWaiting=!1}async setEmojiMatch(e){await this.logAndCatch("VerifyEmojisViewModel.setEmojiMatch",async()=>{await this.options.stage.setEmojiMatch(e),this._isWaiting=!0,this.emitChange("isWaiting")})}get emojis(){return this.options.stage.emoji}get kind(){return"verify-emojis"}get isWaiting(){return this._isWaiting}}class Vp extends pc{get otherDeviceId(){return this.options.deviceId}get otherUsername(){return this.getOption("sas").otherUserId}get kind(){return"verification-completed"}get verificationSuccessfulMessage(){return this.getOption("sas").isCrossSigningAnotherUser?this.i18n`You successfully verified user ${this.otherUsername}`:this.i18n`You successfully verified device ${this.otherDeviceId}`}}class Np extends L{gotoSettings(){this.navigation.push("settings",!0)}get kind(){return"keys-missing"}}const Po=["m.cross_signing.master","m.cross_signing.self_signing","m.cross_signing.user_signing"];class gc extends ot{constructor(e){super(e),this.start(e)}async start(e){var i,r;const t=e.room;let s;s=(r=(i=e.request)!=null?i:e.userId)!=null?r:this.getOption("session").userId,await this.startVerification(s,t)}async startVerification(e,t){await this.logAndCatch("DeviceVerificationViewModel.startVerification",async s=>{const r=await this.getOption("session").crossSigning.waitFor(o=>!!o).promise;if(this.sas=r.startVerification(e,t,s),!this.sas)throw new Error("CrossSigning.startVerification did not return a sas object!");if(!!await this.performPreVerificationChecks(r,e,s))return this.addEventListeners(),typeof e=="string"&&this.updateCurrentStageViewModel(new Rp(this.childOptions({sas:this.sas}))),this.sas.isCrossSigningAnotherUser?r.signUser(this.sas,s):r.signDevice(this.sas,s)})}async performPreVerificationChecks(e,t,s){return await s.wrap("DeviceVerificationViewModel.performPreVerificationChecks",async i=>{const r=await e.areWeVerified(s),c=(typeof t=="string"?t:t.sender)===this.getOption("session").userId;if(this._needsToRequestSecret=c&&!r,this._needsToRequestSecret)return!0;const l=this.getOption("session"),h=Po.map(u=>l.secretFetcher.getSecret(u)),a=await Promise.all(h);for(const u of a)if(!u)return this.updateCurrentStageViewModel(new Np(this.childOptions({}))),!1;return!0})}addEventListeners(){this.track(this.sas.disposableOn("SelectVerificationStage",e=>{this.updateCurrentStageViewModel(new Ap(this.childOptions({sas:this.sas,stage:e})))})),this.track(this.sas.disposableOn("EmojiGenerated",e=>{this.updateCurrentStageViewModel(new xp(this.childOptions({stage:e})))})),this.track(this.sas.disposableOn("VerificationCancelled",e=>{this.updateCurrentStageViewModel(new Tp(this.childOptions({cancellation:e,sas:this.sas})))})),this.track(this.sas.disposableOn("VerificationCompleted",e=>{this.updateCurrentStageViewModel(new Vp(this.childOptions({deviceId:e,sas:this.sas}))),this.requestSecrets()}))}async requestSecrets(){await this.platform.logger.run("DeviceVerificationViewModel.requestSecrets",async e=>{if(this._needsToRequestSecret){const t=this.getOption("session").secretSharing,s=Po.map(c=>t.requestSecret(c,e)),r=(await Promise.all(s)).map(c=>c.waitForResponse());await Promise.all(r),this.getOption("session").crossSigning.get().start(e)}})}updateCurrentStageViewModel(e){this._currentStageViewModel=this.disposeTracked(this._currentStageViewModel),this._currentStageViewModel=this.track(e),this.emitChange("currentStageViewModel")}dispose(){this.sas&&!this.sas.finished&&this.sas.abort().catch(e=>{console.error(e)}),super.dispose()}get currentStageViewModel(){return this._currentStageViewModel}get type(){return"verification"}get isHappeningInRoom(){return!!this.navigation.path.get("room")}}class Fo extends Vt{constructor(e,t){super(null),this._statusSubscription=null,this._sessionViewModel=e,this.id=t}async initialize(){const{session:e}=this._sessionViewModel._client,t=await e.observeRoomStatus(this.id);this.set(await this._statusToViewModel(t.get())),this._statusSubscription=t.subscribe(async s=>{var i;(i=this.get())==null||i.dispose(),this.set(await this._statusToViewModel(s))})}async _statusToViewModel(e){if(e&se.Replaced)if(e&se.BeingCreated){const{session:t}=this._sessionViewModel._client,s=t.roomsBeingCreated.get(this.id);this._sessionViewModel.notifyRoomReplaced(s.id,s.roomId)}else throw new Error("Don't know how to replace a room with this status: "+(e^se.Replaced));else return e&se.BeingCreated?this._sessionViewModel._createRoomBeingCreatedViewModel(this.id):e&se.Invited?this._sessionViewModel._createInviteViewModel(this.id):e&se.Joined?this._sessionViewModel._createRoomViewModelInstance(this.id):e&se.Archived?await this._sessionViewModel._createArchivedRoomViewModel(this.id):this._sessionViewModel._createUnknownRoomViewModel(this.id)}dispose(){var e;this._statusSubscription&&(this._statusSubscription=this._statusSubscription()),this.unsubscribeAll(),(e=this.get())==null||e.dispose()}}class Dp extends L{constructor(e){super(e),this._room=e.room,this._onRoomChange=this._onRoomChange.bind(this),this._room.on("change",this._onRoomChange)}get type(){return"room-details"}get shouldShowBackButton(){return!1}get previousSegmentName(){return!1}get roomId(){return this._room.id}get canonicalAlias(){return this._room.canonicalAlias}get name(){return this._room.name}get isEncrypted(){return!!this._room.isEncrypted}get memberCount(){return this._room.joinedMemberCount}get avatarLetter(){return Ee(this.name)}get avatarColorNumber(){return Re(this._room.avatarColorId)}avatarUrl(e){return Be(this._room.avatarUrl,e,this.platform,this._room.mediaRepository)}get avatarTitle(){return this.name}_onRoomChange(){this.emitChange()}dispose(){super.dispose(),this._room.off("change",this._onRoomChange)}openPanel(e){let t=this.navigation.path.until("room");t=t.with(this.navigation.segment("right-panel",!0)),t=t.with(this.navigation.segment(e,!0)),this.navigation.applyPath(t)}}class Up extends L{constructor(e){super(e),this._member=this._options.member,this._mediaRepository=e.mediaRepository,this._previousName=null,this._nameChanged=!0}get name(){return`${this._member.name}${this._disambiguationPart}`}get _disambiguationPart(){return this._disambiguate?` (${this.userId})`:""}get userId(){return this._member.userId}get previousName(){return this._previousName}get nameChanged(){return this._nameChanged}get detailsUrl(){const e=this.navigation.path.get("room").value;return`${this.urlRouter.openRoomActionUrl(e)}/member/${encodeURIComponent(this._member.userId)}`}_updatePreviousName(e){const t=this._member.name;t!==e?(this._previousName=t,this._nameChanged=!0):this._nameChanged=!1}setDisambiguation(e){this._disambiguate=e,this.emitChange()}updateFrom(e){this._updatePreviousName(e.name),this._member=e}get avatarLetter(){return Ee(this.name)}get avatarColorNumber(){return Re(this.userId)}avatarUrl(e){return Be(this._member.avatarUrl,e,this.platform,this._mediaRepository)}get avatarTitle(){return this.name}}function Op(n){const e=new Intl.Collator,t=s=>s.charAt(0)==="@"?s.slice(1):s;return function(i,r){const o=n.getUserLevel(i.userId),c=n.getUserLevel(r.userId);if(o!==c)return c-o;const l=t(i.name),h=t(r.name);return e.compare(l,h)}}class Pp{constructor(){this._map=new Map}_unDisambiguate(e,t){const s=t.indexOf(e);if(s!==-1){const[i]=t.splice(s,1);i.setDisambiguation(!1)}}_handlePreviousName(e){const t=e.previousName;if(typeof t!="string")return;const s=this._map.get(t);if(Array.isArray(s)){if(this._unDisambiguate(e,s),s.length===1){const i=s[0];i.setDisambiguation(!1),this._map.set(t,i)}}else this._map.delete(t)}_updateMap(e){const t=e.name,s=this._map.get(t);if(s){if(Array.isArray(s))return s.findIndex(i=>i.userId===e.userId)!==-1?void 0:(s.push(e),s);if(e.userId!==s.userId){const i=[s,e];return this._map.set(t,i),i}}else this._map.set(t,e)}disambiguate(e){if(!e.nameChanged)return;this._handlePreviousName(e);const t=this._updateMap(e);t==null||t.forEach(s=>s.setDisambiguation(!0))}}class Fp extends L{constructor(e){super(e);const t=e.members,s=e.powerLevelsObservable;this.track(s.subscribe(()=>{}));const i=s.get();this.memberTileViewModels=this._mapTileViewModels(t.members.filterValues(r=>r.membership==="join")).sortValues(Op(i)),this.nameDisambiguator=new Pp,this.mediaRepository=e.mediaRepository}get type(){return"member-list"}get shouldShowBackButton(){return!0}get previousSegmentName(){return"details"}_mapTileViewModels(e){const t=(i,r)=>{const o=this.mediaRepository,c=new Up(this.childOptions({member:i,emitChange:r,mediaRepository:o}));return this.nameDisambiguator.disambiguate(c),c},s=(i,r,o)=>{r.updateFrom(o),this.nameDisambiguator.disambiguate(r)};return e.mapValues(t,s)}openInvitePanel(){let e=this.navigation.path.until("room");e=e.with(this.navigation.segment("right-panel",!0)),e=e.with(this.navigation.segment("invite",!0)),this.navigation.applyPath(e)}}class Lp extends L{constructor(e){super(e),this._observableMember=e.observableMember,this._mediaRepository=e.mediaRepository,this._member=this._observableMember.get(),this._isEncrypted=e.isEncrypted,this._powerLevelsObservable=e.powerLevelsObservable,this._session=e.session,this.track(this._powerLevelsObservable.subscribe(()=>this._onPowerLevelsChange())),this.track(this._observableMember.subscribe(()=>this._onMemberChange())),this._userTrust=void 0,this._userTrustSubscription=void 0,this.features.crossSigning&&this.track(this._session.crossSigning.subscribe(()=>{this._onCrossSigningChange()})),this._onCrossSigningChange()}get name(){return this._member.name}get userId(){return this._member.userId}get canVerifyUser(){return this._member.userId!==this._session.userId}get trustDescription(){var e;switch((e=this._userTrust)==null?void 0:e.get()){case et.Trusted:return this.i18n`You have verified this user. This user has verified all of their sessions.`;case et.UserNotSigned:return this.i18n`You have not verified this user.`;case et.UserSignatureMismatch:return this.i18n`You appear to have signed this user, but the signature is invalid.`;case et.UserDeviceNotSigned:return this.i18n`You have verified this user, but they have one or more unverified sessions.`;case et.UserDeviceSignatureMismatch:return this.i18n`This user has a session signature that is invalid.`;case et.UserSetupError:return this.i18n`This user hasn't set up cross-signing correctly`;case et.OwnSetupError:return this.i18n`Cross-signing wasn't set up correctly on your side.`;case void 0:default:return this.i18n`Please wait…`}}get trustShieldColor(){var e;if(!this._isEncrypted)return"";switch((e=this._userTrust)==null?void 0:e.get()){case void 0:case et.OwnSetupError:return"";case et.Trusted:return"green";case et.UserNotSigned:return"black";default:return"red"}}get type(){return"member-details"}get shouldShowBackButton(){return!0}get previousSegmentName(){return"members"}get role(){return this.powerLevel>=100?this.i18n`Admin`:this.powerLevel>=50?this.i18n`Moderator`:this.powerLevel===0?this.i18n`Default`:this.i18n`Custom (${this.powerLevel})`}_onMemberChange(){this._member=this._observableMember.get(),this.emitChange("member")}_onPowerLevelsChange(){this.emitChange("role")}async signUser(){const e=this._session.crossSigning.get();e&&await this.logger.run("MemberDetailsViewModel.signUser",async t=>{await e.signUser(this.userId,t)})}async verifyUser(){await this.logger.run("MemberDetailsViewModel.verifyUser",async()=>{const e=this._session.findDirectMessageForUserId(this.userId);let t=e==null?void 0:e.id;t||(t=(await this._session.createRoom({type:Le.DirectMessage,invites:[this.userId]})).roomId),await(await this._session.observeRoomStatus(t)).waitFor(r=>r===se.Joined).promise;let i=this.navigation.path.until("session");i=i.with(this.navigation.segment("room",t)),i=i.with(this.navigation.segment("right-panel",!0)),i=i.with(this.navigation.segment("verification",this.userId)),this.navigation.applyPath(i)})}get avatarLetter(){return Ee(this.name)}get avatarColorNumber(){return Re(this.userId)}avatarUrl(e){return Be(this._member.avatarUrl,e,this.platform,this._mediaRepository)}get avatarTitle(){return this.name}get isEncrypted(){return this._isEncrypted}get powerLevel(){var e;return(e=this._powerLevelsObservable.get())==null?void 0:e.getUserLevel(this._member.userId)}get linkToUser(){return`https://matrix.to/#/${encodeURIComponent(this._member.userId)}`}async openDirectMessage(){const e=this._session.findDirectMessageForUserId(this.userId);let t=e==null?void 0:e.id;t||(t=(await this._session.createRoom({type:Le.DirectMessage,invites:[this.userId]})).id),this.navigation.push("room",t)}_onCrossSigningChange(){const e=this._session.crossSigning.get();this._userTrustSubscription=this.disposeTracked(this._userTrustSubscription),this._userTrust=void 0,e&&this.logger.run("MemberDetailsViewModel.observeUserTrust",t=>{this._userTrust=e.observeUserTrust(this.userId,t),this._userTrustSubscription=this.track(this._userTrust.subscribe(()=>{this.emitChange("trustShieldColor")}))}),this.emitChange("trustShieldColor")}}class Kp extends ot{constructor(e){super(e)}get type(){return"invite"}get shouldShowBackButton(){return!0}get previousSegmentName(){return"members"}get roomName(){return this.getOption("room").name}async invite(e){await this.logAndCatch("InvitePanelViewModel.invite",async()=>{await this.getOption("room").inviteUser(e);const s=this.navigation.path.until("room");this.navigation.applyPath(s)})}}class Bp extends L{constructor(e){super(e),this._room=e.room,this._session=e.session,this._members=null,this._setupNavigation()}get activeViewModel(){return this._activeViewModel}async _getMemberListArguments(){this._members||(this._members=await this._room.loadMemberList(),this.track(()=>this._members.release()));const e=this._room,t=await this._room.observePowerLevels();return{members:this._members,powerLevelsObservable:t,mediaRepository:e.mediaRepository}}async _getMemberDetailsArguments(){const t=this.navigation.path.get("member").value,s=await this._room.observeMember(t);if(!s)return!1;const i=this._room.isEncrypted,r=await this._room.observePowerLevels();return{observableMember:s,isEncrypted:i,powerLevelsObservable:r,mediaRepository:this._room.mediaRepository,session:this._session}}_setupNavigation(){this._hookUpdaterToSegment("details",Dp,()=>({room:this._room})),this._hookUpdaterToSegment("invite",Kp,()=>({room:this._room})),this._hookUpdaterToSegment("members",Fp,()=>this._getMemberListArguments()),this._hookUpdaterToSegment("member",Lp,()=>this._getMemberDetailsArguments(),()=>{const e=`${this.urlRouter.urlUntilSegment("room")}/members`;this.urlRouter.pushUrl(e)}),this._hookUpdaterToSegment("verification",gc,()=>{var s,i;const e={session:this._session,room:this._room},t=this.navigation.path.get("verification").value;if(typeof t=="string"){const r=(i=(s=this._session)==null?void 0:s.crossSigning.get())==null?void 0:i.receivedSASVerifications.get(t);Object.assign(e,r?{request:r}:{userId:t})}return e})}async _hookUpdaterToSegment(e,t,s,i){const r=this.navigation.observe(e),o=await this._setupUpdater(e,t,s,i);this.track(r.subscribe(o))}async _setupUpdater(e,t,s,i){const r=async(o=!1)=>{var l;if(this._activeViewModel instanceof t)return;if(o||(this._activeViewModel=this.disposeTracked(this._activeViewModel)),!!((l=this.navigation.path.get(e))!=null&&l.value)){const h=await s();if(!h&&i){i();return}this._activeViewModel=this.track(new t(this.childOptions(h)))}this.emitChange("activeViewModel")};return await r(!0),r}closePanel(){const e=this.navigation.path.until("room");this.navigation.applyPath(e)}showPreviousPanel(){const e=this.activeViewModel.previousSegmentName;if(e){let t=this.navigation.path.until("room");t=t.with(this.navigation.segment("right-panel",!0)),t=t.with(this.navigation.segment(e,!0)),this.navigation.applyPath(t)}}}class fc extends ot{constructor(e){super(e)}dismiss(){this.getOption("dismiss")()}}class $p extends fc{constructor(e){super(e),this.track(this.call.members.observeSize().subscribe(()=>{this.emitChange("memberCount")})),this.track(this.navigation.observe("room").subscribe(t=>{t===this.call.roomId&&this.dismiss()}))}get kind(){return"calls"}async join(){await this.logAndCatch("CallToastNotificationViewModel.join",async e=>{const t=await this.platform.mediaDevices.getMediaTracks(!1,!0),s=new At().withUserMedia(t);await this.call.join(s,e);const i=this.urlRouter.openRoomActionUrl(this.call.roomId);this.urlRouter.pushUrl(i)})}get call(){return this.getOption("call")}get room(){return this.getOption("room")}get roomName(){return this.room.name}get memberCount(){return this.call.members.size}get avatarLetter(){return Ee(this.roomName)}get avatarColorNumber(){return Re(this.room.avatarColorId)}avatarUrl(e){return Be(this.room.avatarUrl,e,this.platform,this.room.mediaRepository)}get avatarTitle(){return this.roomName}}class jp extends L{constructor(e){super(e),this.toastViewModels=new gn;const t=this.getOption("session");if(this.features.calls){const s=t.callHandler.calls;this.track(s.subscribe(this))}}async onAdd(e,t){if(this._shouldShowNotification(t)){const s=await this._findRoomForCall(t),i=()=>{const r=this.toastViewModels.array.findIndex(o=>o.call===t);r!==-1&&this.toastViewModels.remove(r)};this.toastViewModels.append(new $p(this.childOptions({call:t,room:s,dismiss:i})))}}onRemove(e,t){const s=this.toastViewModels.array.findIndex(i=>i.call===t);s!==-1&&this.toastViewModels.remove(s)}onUpdate(e,t){const s=this.toastViewModels.array.findIndex(i=>i.call===t);s!==-1&&this.toastViewModels.update(s,this.toastViewModels.at(s))}onReset(){for(let e=0;ec===se.Joined).promise,i.get(t)}_shouldShowNotification(e){var s;const t=(s=this.navigation.path.get("room"))==null?void 0:s.value;return!e.isLoadedFromStorage&&e.roomId!==t&&!e.usesFoci}}class qp extends fc{constructor(e){super(e)}get kind(){return"verification"}get request(){return this.getOption("request")}get otherDeviceId(){return this.request.deviceId}accept(){this.navigation.push("device-verification",this.request.id),this.dismiss()}}class Hp extends L{constructor(e){super(e),this.toastViewModels=new gn,this.subscribeToSASRequests()}async subscribeToSASRequests(){await this.getOption("session").crossSigning.waitFor(t=>!!t).promise;const e=this.getOption("session").crossSigning.get();this.track(e.receivedSASVerifications.subscribe(this))}async onAdd(e,t){if(t.sender!==this.getOption("session").userId)return;const s=()=>{const i=this.toastViewModels.array.findIndex(r=>r.request.id===t.id);i!==-1&&this.toastViewModels.remove(i)};this.toastViewModels.append(this.track(new qp(this.childOptions({request:t,dismiss:s}))))}onRemove(e,t){const s=this.toastViewModels.array.findIndex(i=>i.request.id===t.id);s!==-1&&this.toastViewModels.remove(s)}onUpdate(e,t){const s=this.toastViewModels.array.findIndex(i=>i.request.id===t.id);s!==-1&&this.toastViewModels.update(s,this.toastViewModels.at(s))}onReset(){for(let e=0;er.toastViewModels);i.length!==0&&(this.toastViewModels=new ca(...i))}}class zp extends L{constructor(e){super(e);const{client:t}=e;this._client=this.track(t),this._sessionStatusViewModel=this.track(new yp(this.childOptions({sync:t.sync,reconnector:t.reconnector,session:t.session}))),this._leftPanelViewModel=this.track(new f_(this.childOptions({session:this._client.session}))),this._settingsViewModel=null,this._roomViewModelObservable=null,this._gridViewModel=null,this._createRoomViewModel=null,this._joinRoomViewModel=null,this._verificationViewModel=null,this._toastCollectionViewModel=this.track(new Wp(this.childOptions({session:this._client.session}))),this._setupNavigation(),this._setupForcedLogoutOnAccessTokenInvalidation()}_setupNavigation(){const e=this.navigation.observe("rooms");this.track(e.subscribe(l=>{this._updateGrid(l)})),e.get()&&this._updateGrid(e.get());const t=this.navigation.observe("room");this.track(t.subscribe(l=>{this._gridViewModel||this._updateRoom(l),this._updateRightPanel()})),this._gridViewModel||this._updateRoom(t.get());const s=this.navigation.observe("settings");this.track(s.subscribe(l=>{this._updateSettings(l)})),this._updateSettings(s.get());const i=this.navigation.observe("create-room");this.track(i.subscribe(l=>{this._updateCreateRoom(l)})),this._updateCreateRoom(i.get());const r=this.navigation.observe("join-room");if(this.track(r.subscribe(l=>{this._updateJoinRoom(l)})),this._updateJoinRoom(r.get()),this.features.crossSigning){const l=this.navigation.observe("device-verification");this.track(l.subscribe(h=>{this._updateVerification(h)})),this._updateVerification(l.get())}const o=this.navigation.observe("lightbox");this.track(o.subscribe(l=>{this._updateLightbox(l)})),this._updateLightbox(o.get());const c=this.navigation.observe("right-panel");this.track(c.subscribe(()=>this._updateRightPanel())),this._updateRightPanel()}_setupForcedLogoutOnAccessTokenInvalidation(){this.track(this._client.sync.status.subscribe(e=>{if(e===te.Stopped){const t=this._client.sync.error;if((t==null?void 0:t.errcode)==="M_UNKNOWN_TOKEN"){const s=[this.navigation.segment("logout",this.id),this.navigation.segment("forced",!0)],i=this.navigation.pathFrom(s);this.navigation.applyPath(i)}}}))}get id(){return this._client.sessionId}start(){this._sessionStatusViewModel.start(),this.features.calls&&(this._client.session.callHandler.loadCalls("m.ring"),this._client.session.callHandler.loadCalls("m.prompt"))}get activeMiddleViewModel(){var e;return((e=this._roomViewModelObservable)==null?void 0:e.get())||this._gridViewModel||this._settingsViewModel||this._createRoomViewModel||this._joinRoomViewModel||this._verificationViewModel}get roomGridViewModel(){return this._gridViewModel}get leftPanelViewModel(){return this._leftPanelViewModel}get sessionStatusViewModel(){return this._sessionStatusViewModel}get settingsViewModel(){return this._settingsViewModel}get currentRoomViewModel(){var e;return(e=this._roomViewModelObservable)==null?void 0:e.get()}get rightPanelViewModel(){return this._rightPanelViewModel}get createRoomViewModel(){return this._createRoomViewModel}get joinRoomViewModel(){return this._joinRoomViewModel}get verificationViewModel(){return this._verificationViewModel}get toastCollectionViewModel(){return this._toastCollectionViewModel}_updateGrid(e){var i;const t=!(this._gridViewModel&&e),s=this.navigation.path.get("room");if(e)this._gridViewModel?this._gridViewModel.setRoomIds(e):(this._gridViewModel=this.track(new wp(this.childOptions({width:3,height:2,createRoomViewModelObservable:r=>new Fo(this,r)}))),(i=this._roomViewModelObservable)==null||i.unsubscribeAll(),this._gridViewModel.initializeRoomIdsAndTransferVM(e,this._roomViewModelObservable)?this._roomViewModelObservable=this.untrack(this._roomViewModelObservable):this._roomViewModelObservable&&(this._roomViewModelObservable=this.disposeTracked(this._roomViewModelObservable)));else if(this._gridViewModel&&!e){if(s){const r=this._gridViewModel.releaseRoomViewModel(s.value);r&&(this._roomViewModelObservable=this.track(r),this._roomViewModelObservable.subscribe(()=>{this.emitChange("activeMiddleViewModel")}))}this._gridViewModel=this.disposeTracked(this._gridViewModel)}t&&this.emitChange("activeMiddleViewModel")}_createRoomViewModelInstance(e){const t=this._client.session.rooms.get(e);if(t){const s=new Do(this.childOptions({room:t,session:this._client.session}));return s.load(),s}return null}_createUnknownRoomViewModel(e){return new mp(this.childOptions({roomIdOrAlias:e,session:this._client.session}))}async _createArchivedRoomViewModel(e){const t=await this._client.session.loadArchivedRoom(e);if(t){const s=new Do(this.childOptions({room:t,session:this._client.session}));return s.load(),s}return null}_createInviteViewModel(e){const t=this._client.session.invites.get(e);return t?new _p(this.childOptions({invite:t,mediaRepository:this._client.session.mediaRepository})):null}_createRoomBeingCreatedViewModel(e){const t=this._client.session.roomsBeingCreated.get(e);return t?new gp(this.childOptions({roomBeingCreated:t,mediaRepository:this._client.session.mediaRepository})):null}_updateRoom(e){var s;if(((s=this._roomViewModelObservable)==null?void 0:s.id)===e)return;if(this._roomViewModelObservable&&(this._roomViewModelObservable=this.disposeTracked(this._roomViewModelObservable)),!e){this.emitChange("activeMiddleViewModel");return}const t=new Fo(this,e);this._roomViewModelObservable=this.track(t),this._roomViewModelObservable.subscribe(()=>{this.emitChange("activeMiddleViewModel")}),t.initialize()}_updateSettings(e){this._settingsViewModel&&(this._settingsViewModel=this.disposeTracked(this._settingsViewModel)),e&&(this._settingsViewModel=this.track(new Ip(this.childOptions({client:this._client}))),this._settingsViewModel.load()),this.emitChange("activeMiddleViewModel")}_updateCreateRoom(e){this._createRoomViewModel&&(this._createRoomViewModel=this.disposeTracked(this._createRoomViewModel)),e&&(this._createRoomViewModel=this.track(new Mp(this.childOptions({session:this._client.session})))),this.emitChange("activeMiddleViewModel")}_updateJoinRoom(e){this._joinRoomViewModel&&(this._joinRoomViewModel=this.disposeTracked(this._joinRoomViewModel)),e&&(this._joinRoomViewModel=this.track(new Ep(this.childOptions({session:this._client.session})))),this.emitChange("activeMiddleViewModel")}_updateVerification(e){var t;if(this._verificationViewModel&&(this._verificationViewModel=this.disposeTracked(this._verificationViewModel)),e){const s=(t=this._client.session.crossSigning.get())==null?void 0:t.receivedSASVerifications.get(e);this._verificationViewModel=this.track(new gc(this.childOptions({session:this._client.session,request:s})))}this.emitChange("activeMiddleViewModel")}_updateLightbox(e){if(this._lightboxViewModel&&(this._lightboxViewModel=this.disposeTracked(this._lightboxViewModel)),e){const t=this._roomFromNavigation();this._lightboxViewModel=this.track(new fp(this.childOptions({eventId:e,room:t})))}this.emitChange("lightboxViewModel")}get lightboxViewModel(){return this._lightboxViewModel}_roomFromNavigation(){var s;const e=(s=this.navigation.path.get("room"))==null?void 0:s.value;return this._client.session.rooms.get(e)}_updateRightPanel(){var t;if(this._rightPanelViewModel=this.disposeTracked(this._rightPanelViewModel),!!((t=this.navigation.path.get("right-panel"))!=null&&t.value)){const s=this._roomFromNavigation();this._rightPanelViewModel=this.track(new Bp(this.childOptions({room:s,session:this._client.session})))}this.emitChange("rightPanelViewModel")}notifyRoomReplaced(e,t){this.navigation.push("room",t)}}class Gp extends L{constructor(e){super(e),this._accountSetup=e.accountSetup,this._dehydratedDevice=void 0,this._decryptDehydratedDeviceViewModel=void 0,this._accountSetup.encryptedDehydratedDevice&&(this._decryptDehydratedDeviceViewModel=new Yp(this,t=>{this._dehydratedDevice=t,this._decryptDehydratedDeviceViewModel=void 0,this.emitChange("deviceDecrypted")}))}get decryptDehydratedDeviceViewModel(){return this._decryptDehydratedDeviceViewModel}get deviceDecrypted(){return!!this._dehydratedDevice}get dehydratedDeviceId(){return this._accountSetup.encryptedDehydratedDevice.deviceId}finish(){this._accountSetup.finish(this._dehydratedDevice)}}class Yp extends L{constructor(e,t){super(e.options),this._accountSetupViewModel=e,this._isBusy=!1,this._status=st.SetupWithRecoveryKey,this._error=void 0,this._decryptedCallback=t}get decryptAction(){return this.i18n`Restore`}get purpose(){return this.i18n`claim your dehydrated device`}get offerDehydratedDeviceSetup(){return!1}get dehydratedDeviceId(){var e;return(e=this._accountSetupViewModel._dehydratedDevice)==null?void 0:e.deviceId}get isBusy(){return this._isBusy}get backupVersion(){return 0}get status(){return this._status}get error(){var e;return(e=this._error)==null?void 0:e.message}showPhraseSetup(){this._status===st.SetupWithRecoveryKey&&(this._status=st.SetupWithPassphrase,this.emitChange("status"))}showKeySetup(){this._status===st.SetupWithPassphrase&&(this._status=st.SetupWithRecoveryKey,this.emitChange("status"))}async _enterCredentials(e,t){if(t)try{this._isBusy=!0,this.emitChange("isBusy");const{encryptedDehydratedDevice:s}=this._accountSetupViewModel._accountSetup,i=await s.decrypt(e,t);this._decryptedCallback(i)}catch(s){console.error(s),this._error=s,this.emitChange("error")}finally{this._isBusy=!1,this.emitChange("")}}enterSecurityPhrase(e){this._enterCredentials(mt.Passphrase,e)}enterSecurityKey(e){this._enterCredentials(mt.RecoveryKey,e)}disable(){}}class yc extends L{constructor(e){super(e);const{client:t,ready:s,homeserver:i,deleteSessionOnCancel:r}=e;this._client=t,this._ready=s,this._homeserver=i,this._deleteSessionOnCancel=r,this._loading=!1,this._error=null,this.backUrl=this.urlRouter.urlForSegment("session",!0),this._accountSetupViewModel=void 0}async start(){if(!this._loading)try{this._loading=!0,this.emitChange("loading"),this._waitHandle=this._client.loadStatus.waitFor(s=>(s===W.AccountSetup?this._accountSetupViewModel=new Gp(this.childOptions({accountSetup:this._client.accountSetup})):this._accountSetupViewModel=void 0,this.emitChange("loadLabel"),s===W.FirstSync&&this._client.sync.status.get()===te.CatchupSync||s===W.LoginFailed||s===W.Error||s===W.Ready));try{await this._waitHandle.promise}catch{return}const e=this._client.loadStatus.get(),t=this._client.loadError;if(e===W.FirstSync||e===W.Ready){const s=this._client;this._client=null,this._ready(s)}t&&console.error("session load error",t.stack)}catch(e){this._error=e,console.error("error thrown during session load",e.stack)}finally{this._loading=!1,this.emitChange("loading")}}dispose(){this._client&&(this._client.dispose(),this._client=null),this._waitHandle&&(this._waitHandle.dispose(),this._waitHandle=null)}get loading(){const e=this._client;return e&&e.loadStatus.get()===W.AccountSetup?!1:this._loading}get loadLabel(){const e=this._client,t=this._getError();if(t||e&&e.loadStatus.get()===W.Error)return`Something went wrong: ${t&&t.message}.`;if(e)switch(e.loadStatus.get()){case W.QueryAccount:return"Querying account encryption setup\u2026";case W.AccountSetup:return"";case W.SessionSetup:return"Setting up your encryption keys\u2026";case W.Loading:return"Loading your conversations\u2026";case W.FirstSync:return"Getting your conversations from the server\u2026";default:return this._client.loadStatus.get()}return"Preparing\u2026"}_getError(){var e;return this._error||((e=this._client)==null?void 0:e.loadError)}get hasError(){return!!this._getError()}async exportLogs(){const e=await this.logger.export();this.platform.saveFileAs(e.asBlob(),`hydrogen-logs-${this.platform.clock.now()}.json`)}async logout(){await this._client.startLogout(this.navigation.path.get("session").value),this.navigation.push("session",!0)}get accountSetupViewModel(){return this._accountSetupViewModel}}class Jp extends L{constructor(e){super(e),this._isBusy=!1,this._errorMessage="";const{loginOptions:t,attemptLogin:s}=e;this._loginOptions=t,this._attemptLogin=s}get isBusy(){return this._isBusy}get errorMessage(){return this._errorMessage}setBusy(e){this._isBusy=e,this.emitChange("isBusy")}_showError(e){this._errorMessage=e,this.emitChange("errorMessage")}async login(e,t){this._errorMessage="",this.emitChange("errorMessage");const s=await this._attemptLogin(this._loginOptions.password(e,t));let i="";switch(s){case Pt.Credentials:i=this.i18n`Your username and/or password don't seem to be correct.`;break;case Pt.Connection:i=this.i18n`Can't connect to ${this._loginOptions.homeserver}.`;break;case Pt.Unknown:i=this.i18n`Something went wrong while checking your login and password.`;break}i&&this._showError(i)}}class Qp extends L{constructor(e){super(e),this._isBusy=!1,this._sso=e.loginOptions.sso,this._isBusy=!1}get isBusy(){return this._isBusy}setBusy(e){this._isBusy=e,this.emitChange("isBusy")}async startSSOLogin(){await this.platform.settingsStorage.setString("sso_ongoing_login_homeserver",this._sso.homeserver);const e=this._sso.createSSORedirectURL(this.urlRouter.createSSOCallbackURL());this.platform.openUrl(e)}}class Xp extends L{constructor(e){super(e),this._errorMessage="";const{loginToken:t,client:s,attemptLogin:i}=e;this._loginToken=t,this._client=s,this._attemptLogin=i,this._errorMessage="",this.performSSOLoginCompletion()}get errorMessage(){return this._errorMessage}_showError(e){this._errorMessage=e,this.emitChange("errorMessage")}async performSSOLoginCompletion(){if(!this._loginToken)return;const e=await this.platform.settingsStorage.getString("sso_ongoing_login_homeserver");let t;try{t=await this._client.queryLogin(e).result}catch(r){this._showError(r.message);return}if(!t.token){this.navigation.push("session");return}const s=await this._attemptLogin(t.token(this._loginToken));let i="";switch(s){case Pt.Credentials:i=this.i18n`Your login token is invalid.`;break;case Pt.Connection:i=this.i18n`Can't connect to ${e}.`;break;case Pt.Unknown:i=this.i18n`Something went wrong while checking your login token.`;break}i&&this._showError(i)}}class Zp extends L{constructor(e){super(e),this._hideHomeserver=!1,this._isBusy=!1,this._errorMessage="";const{ready:t,defaultHomeserver:s,loginToken:i}=e;this._ready=t,this._loginToken=i,this._client=new Nr(this.platform,this.features),this._homeserver=s,this._initViewModels()}get passwordLoginViewModel(){return this._passwordLoginViewModel}get startSSOLoginViewModel(){return this._startSSOLoginViewModel}get completeSSOLoginViewModel(){return this._completeSSOLoginViewModel}get homeserver(){return this._homeserver}get resolvedHomeserver(){var e;return(e=this._loginOptions)==null?void 0:e.homeserver}get errorMessage(){return this._errorMessage}get showHomeserver(){return!this._hideHomeserver}get loadViewModel(){return this._loadViewModel}get isBusy(){return this._isBusy}get isFetchingLoginOptions(){return!!this._abortQueryOperation}goBack(){this.navigation.push("session")}_initViewModels(){this._loginToken?(this._hideHomeserver=!0,this._completeSSOLoginViewModel=this.track(new Xp(this.childOptions({client:this._client,attemptLogin:e=>this.attemptLogin(e),loginToken:this._loginToken}))),this.emitChange("completeSSOLoginViewModel")):this.queryHomeserver()}_showPasswordLogin(){this._passwordLoginViewModel=this.track(new Jp(this.childOptions({loginOptions:this._loginOptions,attemptLogin:e=>this.attemptLogin(e)}))),this.emitChange("passwordLoginViewModel")}_showSSOLogin(){this._startSSOLoginViewModel=this.track(new Qp(this.childOptions({loginOptions:this._loginOptions}))),this.emitChange("startSSOLoginViewModel")}_showError(e){this._errorMessage=e,this.emitChange("errorMessage")}_setBusy(e){var t,s;this._isBusy=e,(t=this._passwordLoginViewModel)==null||t.setBusy(e),(s=this._startSSOLoginViewModel)==null||s.setBusy(e),this.emitChange("isBusy")}async attemptLogin(e){this._setBusy(!0),this._client.startWithLogin(e,{inspectAccountSetup:!0});const t=this._client.loadStatus;return await t.waitFor(r=>r!==W.Login).promise,this._setBusy(!1),t.get()===W.LoginFailed?this._client.loginFailure:(this._hideHomeserver=!0,this.emitChange("hideHomeserver"),this._disposeViewModels(),this._createLoadViewModel(),null)}_createLoadViewModel(){this._loadViewModelSubscription=this.disposeTracked(this._loadViewModelSubscription),this._loadViewModel=this.disposeTracked(this._loadViewModel),this._loadViewModel=this.track(new yc(this.childOptions({ready:e=>{this._client=null,this._ready(e)},client:this._client,homeserver:this._homeserver}))),this._loadViewModel.start(),this.emitChange("loadViewModel"),this._loadViewModelSubscription=this.track(this._loadViewModel.disposableOn("change",()=>{this._loadViewModel.loading||(this._loadViewModelSubscription=this.disposeTracked(this._loadViewModelSubscription)),this._setBusy(!1)}))}_disposeViewModels(){this._startSSOLoginViewModel=this.disposeTracked(this._startSSOLoginViewModel),this._passwordLoginViewModel=this.disposeTracked(this._passwordLoginViewModel),this._completeSSOLoginViewModel=this.disposeTracked(this._completeSSOLoginViewModel),this.emitChange("disposeViewModels")}async setHomeserver(e){this._homeserver=e,this._loginOptions=void 0,this._queriedHomeserver=void 0,this._showError(""),this._disposeViewModels(),this._abortQueryOperation=this.disposeTracked(this._abortQueryOperation),this.emitChange("loginViewModels"),this.disposeTracked(this._abortHomeserverQueryTimeout);const t=this.clock.createTimeout(1e3);this._abortHomeserverQueryTimeout=this.track(()=>t.abort());try{await t.elapsed()}catch(s){if(s.name==="AbortError")return;throw s}this._abortHomeserverQueryTimeout=this.disposeTracked(this._abortHomeserverQueryTimeout),this.queryHomeserver()}async queryHomeserver(){if(!(this._homeserver===this._queriedHomeserver||this._homeserver==="")){this._queriedHomeserver=this._homeserver,this._abortHomeserverQueryTimeout=this.disposeTracked(this._abortHomeserverQueryTimeout),this._abortQueryOperation=this.disposeTracked(this._abortQueryOperation);try{const e=this._client.queryLogin(this._homeserver);this._abortQueryOperation=this.track(()=>e.abort()),this.emitChange("isFetchingLoginOptions"),this._loginOptions=await e.result,this.emitChange("resolvedHomeserver")}catch(e){if(e.name==="AbortError")return;this._loginOptions=void 0}finally{this._abortQueryOperation=this.disposeTracked(this._abortQueryOperation),this.emitChange("isFetchingLoginOptions")}this._loginOptions?(this._loginOptions.sso&&this._showSSOLogin(),this._loginOptions.password&&this._showPasswordLogin(),!this._loginOptions.sso&&!this._loginOptions.password&&this._showError("This homeserver supports neither SSO nor password based login flows")):this._showError(`Could not query login methods supported by ${this.homeserver}`)}}dispose(){super.dispose(),this._client&&this._client.deleteSession()}}class eg extends L{constructor(e){super(e),this._sessionId=e.sessionId,this._busy=!1,this._showConfirm=!0,this._error=void 0}get showConfirm(){return this._showConfirm}get busy(){return this._busy}get cancelUrl(){return this.urlRouter.urlForSegment("session",!0)}async logout(){this._busy=!0,this._showConfirm=!1,this.emitChange("busy");try{await new Nr(this.platform).startLogout(this._sessionId),this.navigation.push("session",!0)}catch(e){this._error=e,this._busy=!1,this.emitChange("busy")}}get status(){return this._error?this.i18n`Could not log out of device: ${this._error.message}`:this.i18n`Logging out… Please don't close the app.`}}class tg extends L{constructor(e){super(e),this._showStatus=!1,this._showSpinner=!1,this._sessionId=e.sessionId,this._logoutPromise=this.forceLogout()}async forceLogout(){try{await new Nr(this.platform).startForcedLogout(this._sessionId)}catch(e){this._error=e,this._showSpinner=!1,this._showStatus=!0,this.emitChange("error")}}async proceed(){this._showSpinner=!0,this._showStatus=!0,this.emitChange("showStatus"),await this._logoutPromise,this._error||this.navigation.push("login",!0)}get status(){return this._error?this.i18n`Could not log out of device: ${this._error.message}`:this.i18n`Logging out… Please don't close the app.`}get showStatus(){return this._showStatus}get showSpinner(){return this._showSpinner}}class sg extends L{constructor(e,t){super(e),this._pickerVM=t,this._sessionInfo=e.sessionInfo,this._isDeleting=!1,this._isClearing=!1,this._error=null,this._exportDataUrl=null}get error(){return this._error&&this._error.message}get id(){return this._sessionInfo.id}get openUrl(){return this.urlRouter.urlForSegment("session",this.id)}get label(){const{userId:e,comment:t}=this._sessionInfo;return t?`${e} (${t})`:e}get sessionInfo(){return this._sessionInfo}get exportDataUrl(){return this._exportDataUrl}get avatarColorNumber(){return Re(this._sessionInfo.userId)}get avatarInitials(){return Ee(this._sessionInfo.userId)}}class ig extends L{constructor(e){super(e),this._sessions=new fn((t,s)=>t.id.localeCompare(s.id)),this._loadViewModel=null,this._error=null}async load(){const e=await this.platform.sessionInfoStorage.getAll();this._sessions.setManyUnsorted(e.map(t=>new sg(this.childOptions({sessionInfo:t}),this)))}get loadViewModel(){return this._loadViewModel}get sessions(){return this._sessions}get cancelUrl(){return this.urlRouter.urlForSegment("login")}}class rg extends L{constructor(e){super(e),this._error=null,this._sessionPickerViewModel=null,this._sessionLoadViewModel=null,this._loginViewModel=null,this._logoutViewModel=null,this._forcedLogoutViewModel=null,this._sessionViewModel=null,this._pendingClient=null}async load(){this.track(this.navigation.observe("login").subscribe(()=>this._applyNavigation())),this.track(this.navigation.observe("session").subscribe(()=>this._applyNavigation())),this.track(this.navigation.observe("sso").subscribe(()=>this._applyNavigation())),this.track(this.navigation.observe("logout").subscribe(()=>this._applyNavigation())),this._applyNavigation(!0)}async _applyNavigation(e){var c,l,h,a;const t=this.navigation.path.get("login"),s=(c=this.navigation.path.get("logout"))==null?void 0:c.value,i=(l=this.navigation.path.get("forced"))==null?void 0:l.value,r=(h=this.navigation.path.get("session"))==null?void 0:h.value,o=(a=this.navigation.path.get("sso"))==null?void 0:a.value;if(t)this.activeSection!=="login"&&this._showLogin();else if(s&&i)this.activeSection!=="forced-logout"&&this._showForcedLogout(s);else if(s)this.activeSection!=="logout"&&this._showLogout(s);else if(r===!0)this.activeSection!=="picker"&&this._showPicker();else if(r){if(!this._sessionViewModel||this._sessionViewModel.id!==r)if(this._pendingClient&&this._pendingClient.sessionId===r){const u=this._pendingClient;this._pendingClient=null,this._showSession(u)}else this._pendingClient&&(this._pendingClient.dispose(),this._pendingClient=null),this._showSessionLoader(r)}else if(o)this.urlRouter.normalizeUrl(),this.activeSection!=="login"&&this._showLogin(o);else try{if(!(e&&this.urlRouter.tryRestoreLastUrl())){const u=await this.platform.sessionInfoStorage.getAll();u.length===0?this.navigation.push("login"):u.length===1?this.navigation.push("session",u[0].id):this.navigation.push("session")}}catch(u){this._setSection(()=>this._error=u)}}async _showPicker(){this._setSection(()=>{this._sessionPickerViewModel=new ig(this.childOptions())});try{await this._sessionPickerViewModel.load()}catch(e){this._setSection(()=>this._error=e)}}_showLogin(e){this._setSection(()=>{this._loginViewModel=new Zp(this.childOptions({defaultHomeserver:this.platform.config.defaultHomeServer,ready:t=>{this._pendingClient=t,this.navigation.push("session",t.sessionId)},loginToken:e}))})}_showLogout(e){this._setSection(()=>{this._logoutViewModel=new eg(this.childOptions({sessionId:e}))})}_showForcedLogout(e){this._setSection(()=>{this._forcedLogoutViewModel=new tg(this.childOptions({sessionId:e}))})}_showSession(e){this._setSection(()=>{this._sessionViewModel=new zp(this.childOptions({client:e})),this._sessionViewModel.start()})}_showSessionLoader(e){const t=new Nr(this.platform,this.features);t.startWithExistingSession(e),this._setSection(()=>{this._sessionLoadViewModel=new yc(this.childOptions({client:t,ready:s=>this._showSession(s)})),this._sessionLoadViewModel.start()})}get activeSection(){return this._error?"error":this._sessionViewModel?"session":this._loginViewModel?"login":this._logoutViewModel?"logout":this._forcedLogoutViewModel?"forced-logout":this._sessionPickerViewModel?"picker":this._sessionLoadViewModel?"loading":"redirecting"}_setSection(e){this._error=null,this._sessionPickerViewModel=this.disposeTracked(this._sessionPickerViewModel),this._sessionLoadViewModel=this.disposeTracked(this._sessionLoadViewModel),this._loginViewModel=this.disposeTracked(this._loginViewModel),this._logoutViewModel=this.disposeTracked(this._logoutViewModel),this._forcedLogoutViewModel=this.disposeTracked(this._forcedLogoutViewModel),this._sessionViewModel=this.disposeTracked(this._sessionViewModel),e(),this._sessionPickerViewModel&&this.track(this._sessionPickerViewModel),this._sessionLoadViewModel&&this.track(this._sessionLoadViewModel),this._loginViewModel&&this.track(this._loginViewModel),this._logoutViewModel&&this.track(this._logoutViewModel),this._forcedLogoutViewModel&&this.track(this._forcedLogoutViewModel),this._sessionViewModel&&this.track(this._sessionViewModel),this.emitChange("activeSection")}get error(){return this._error}get sessionViewModel(){return this._sessionViewModel}get loginViewModel(){return this._loginViewModel}get logoutViewModel(){return this._logoutViewModel}get forcedLogoutViewModel(){return this._forcedLogoutViewModel}get sessionPickerViewModel(){return this._sessionPickerViewModel}get sessionLoadViewModel(){return this._sessionLoadViewModel}}async function ng(n){try{await n.init();const e=await Xs.load(n.settingsStorage),t=h_();n.setNavigation(t);const s=d_({navigation:t,history:n.history});s.attach();const i=new rg({platform:n,urlRouter:s,navigation:t,features:e});await i.load(),n.createAndMountRootView(i)}catch(e){console.error(`${e.message}: +${e.stack}`)}}function og(n,e,t,s){const i=n(e);let r=!1;return i.elapsed().then(()=>{r=!0,t.abort()},()=>{}),s.then(o=>(i.abort(),o),o=>{throw i.abort(),o.name==="AbortError"&&r?new Ut(`Request timed out after ${e}ms`,!0):o})}function wc(n,e=Math.random){return n.includes("?")?n=n+"&":n=n+"?",n+`_cacheBuster=${Math.ceil(e()*Number.MAX_SAFE_INTEGER)}`}function vc(n){var t;const e=new FormData;for(const[s,i]of n)((t=i.blob)==null?void 0:t.nativeBlob)&&i.name?e.set(s,i.blob.nativeBlob,i.name):e.set(s,i);return e}class ag{constructor(e,t){this._promise=e,this._xhr=t}abort(){this._xhr.abort()}response(){return this._promise}}function cg(n,{method:e,headers:t,timeout:s,format:i,uploadProgress:r}){const o=new XMLHttpRequest;if(r&&o.upload.addEventListener("progress",c=>r(c.loaded)),o.open(e,n),i==="buffer"&&(o.responseType="arraybuffer"),t)for(const[c,l]of t.entries())try{o.setRequestHeader(c,l)}catch(h){console.info(`Could not set ${c} header: ${h.message}`)}return s&&(o.timeout=s),o}function lg(n,e,t){return new Promise((s,i)=>{n.addEventListener("load",()=>s(n)),n.addEventListener("abort",()=>i(new rt)),n.addEventListener("error",()=>i(new Ut(`Error ${e} ${t}`))),n.addEventListener("timeout",()=>i(new Ut(`Timeout ${e} ${t}`,!0)))})}function bc(n,e){let{cache:t,format:s,body:i,method:r}=e;t||(n=wc(n));const o=cg(n,e),c=lg(o,r,n).then(l=>{const{status:h}=l;let a=null;return s==="buffer"?a=l.response:l.getResponseHeader("Content-Type")==="application/json"&&(a=JSON.parse(l.responseText)),{status:h,body:a}});return i!=null&&i.nativeBlob&&(i=i.nativeBlob),i instanceof Map&&(i=vc(i)),o.send(i||null),new ag(c,o)}class Lo{constructor(e,t){if(t)this.promise=e,this._controller=t;else{const s=new Promise((i,r)=>{this._controller={abort(){const o=new Error("fetch request aborted");o.name="AbortError",r(o)}}});this.promise=Promise.race([e,s])}}abort(){this._controller.abort()}response(){return this.promise}}function hg(n,e){return function(s,i){if(e!=null&&e.haltRequests)return new Lo(new Promise(()=>{}),{});if(i!=null&&i.uploadProgress)return bc(s,i);let{method:r,headers:o,body:c,timeout:l,format:h,cache:a=!1}=i;const u=typeof AbortController=="function"?new AbortController:null;c!=null&&c.nativeBlob&&(c=c.nativeBlob),c instanceof Map&&(c=vc(c));let p={method:r,body:c};if(u&&(p=Object.assign(p,{signal:u.signal})),a||(s=wc(s)),p=Object.assign(p,{mode:"cors",credentials:"omit",referrer:"no-referrer",cache:"default"}),o){const v=new Headers;for(const[M,R]of o.entries())v.append(M,R);p.headers=v}const g=fetch(s,p).then(async v=>{const{status:M}=v;let R;try{h==="json"?R=await v.json():h==="buffer"?R=await v.arrayBuffer():h==="text"&&(R=await v.text())}catch(N){if(!(N.name==="SyntaxError"&&M>=400))throw N}return{status:M,body:R}},v=>{throw v.name==="AbortError"?new rt:v instanceof TypeError?new Ut(`${r} ${s}: ${v.message}`):v}),f=new Lo(g,u);return l&&(f.promise=og(n,l,f,f.promise)),f}}class dg{constructor(e){this._name=e}getAll(){const e=localStorage.getItem(this._name);if(e){const t=JSON.parse(e);if(Array.isArray(t))return Promise.resolve(t)}return Promise.resolve([])}async updateAccessToken(e,t){const s=await this.getAll(),i=s.find(r=>r.id===e);if(!i)throw Error("No session found");i.accessToken=t,localStorage.setItem(this._name,JSON.stringify(s))}async updateLastUsed(e,t){const s=await this.getAll(),i=s.find(r=>r.id===e);i&&(i.lastUsed=t,localStorage.setItem(this._name,JSON.stringify(s)))}async get(e){const t=await this.getAll();if(t)return t.find(s=>s.id===e)}async add(e){const t=await this.getAll();t.push(e),localStorage.setItem(this._name,JSON.stringify(t))}async delete(e){let t=await this.getAll();t=t.filter(s=>s.id!==e),localStorage.setItem(this._name,JSON.stringify(t))}}class ug{constructor(e){this._prefix=e}async setInt(e,t){this._set(e,t)}async getInt(e,t=0){const s=window.localStorage.getItem(`${this._prefix}${e}`);return typeof s=="string"?parseInt(s,10):t}async setBool(e,t){this._set(e,t)}async getBool(e,t=!1){const s=window.localStorage.getItem(`${this._prefix}${e}`);return typeof s=="string"?s==="true":t}async setString(e,t){this._set(e,t)}async getString(e){return window.localStorage.getItem(`${this._prefix}${e}`)}async remove(e){window.localStorage.removeItem(`${this._prefix}${e}`)}async _set(e,t){window.localStorage.setItem(`${this._prefix}${e}`,t)}}class mg{constructor(){this._encoder=null,this._decoder=null}encode(e){return this._encoder||(this._encoder=new TextEncoder),this._encoder.encode(e)}decode(e){return this._decoder||(this._decoder=new TextDecoder),this._decoder.decode(e)}}var Ms={};(function(){for(var n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",e=new Uint8Array(256),t=0;t>2],c+=n[(i[r]&3)<<4|i[r+1]>>4],c+=n[(i[r+1]&15)<<2|i[r+2]>>6],c+=n[i[r+2]&63];return o%3===2?c=c.substring(0,c.length-1)+"=":o%3===1&&(c=c.substring(0,c.length-2)+"=="),c},Ms.decode=function(s){var i=s.length*.75,r=s.length,o,c=0,l,h,a,u;s[s.length-1]==="="&&(i--,s[s.length-2]==="="&&i--);var p=new ArrayBuffer(i),g=new Uint8Array(p);for(o=0;o>4,g[c++]=(h&15)<<4|a>>2,g[c++]=(a&3)<<6|u&63;return p}})();class _g{encodeUnpadded(e){const t=Ms.encode(e),s=t.indexOf("=");return s!==-1?t.substr(0,s):t}encode(e){return Ms.encode(e)}decode(e){return Ms.decode(e)}}var Sc={isBuffer:function(n){return n instanceof Uint8Array},from:function(n){return n},allocUnsafe:function(n){return Sc.alloc(n)},alloc:function(n){return new Uint8Array(n)}},pg=Object.freeze(Object.defineProperty({__proto__:null,Buffer:Sc},Symbol.toStringTag,{value:"Module"})),gg=_a(pg),dr=gg.Buffer;function fg(n){if(n.length>=255)throw new TypeError("Alphabet too long");for(var e=new Uint8Array(256),t=0;t>>0,F=new Uint8Array(N);M!==R;){for(var T=g[M],D=0,B=N-1;(T!==0||D>>0,F[B]=T%o>>>0,T=T/o>>>0;if(T!==0)throw new Error("Non-zero carry");v=D,M++}for(var G=N-v;G!==N&&F[G]===0;)G++;for(var $e=c.repeat(f);G>>0,N=new Uint8Array(R);g[f];){var F=e[g.charCodeAt(f)];if(F===255)return;for(var T=0,D=R-1;(F!==0||T>>0,N[D]=F%256>>>0,F=F/256>>>0;if(F!==0)throw new Error("Non-zero carry");M=T,f++}if(g[f]!==" "){for(var B=R-M;B!==R&&N[B]===0;)B++;var G=dr.allocUnsafe(v+(R-B));G.fill(0,0,v);for(var $e=v;B!==R;)G[$e++]=N[B++];return G}}}function p(g){var f=u(g);if(f)return f;throw new Error("Non-base"+o+" character")}return{encode:a,decodeUnsafe:u,decode:p}}var yg=fg,wg=yg,vg="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz",Ko=wg(vg);class bg{encode(e){return Ko.encode(e)}decode(e){return Ko.decode(e)}}class Sg{constructor(){this.utf8=new mg,this.base64=new _g,this.base58=new bg}}class kg{constructor(e){this._workerPool=e}megolmDecrypt(e,t){const s=e.export_session(e.first_known_index());return this._workerPool.send({type:"megolm_decrypt",ciphertext:t,sessionKey:s})}async createAccountAndOTKs(e,t){let s;window.msCrypto&&(s=[window.msCrypto.getRandomValues(new Uint8Array(64)),window.msCrypto.getRandomValues(new Uint8Array(t*32))]);const i=await this._workerPool.send({type:"olm_create_account_otks",randomValues:s,otkAmount:t}).response();e.unpickle("",i)}async createOutboundOlmSession(e,t,s,i){const r=e.pickle("");let o;window.msCrypto&&(o=[window.msCrypto.getRandomValues(new Uint8Array(64))]);const c=await this._workerPool.send({type:"olm_create_outbound",accountPickle:r,theirIdentityKey:s,theirOneTimeKey:i,randomValues:o}).response();t.unpickle("",c)}dispose(){this._workerPool.dispose()}}class Ig{constructor(e){var t;this.options=e,this._queuedItems=this._loadQueuedItems(),window.addEventListener("pagehide",this,!1),this._flushInterval=this.options.platform.clock.createInterval(()=>this._tryFlush(),(t=this.options.flushInterval)!=null?t:60*1e3)}setLogger(e){this.logger=e}reportItem(e,t,s){const i=this.prepareItemForQueue(e,t,s);i&&this._queuedItems.push(i)}async export(){const e=await this._openDB();try{const s=e.transaction(["logs"],"readonly").objectStore("logs"),i=await vh(s.openCursor(),()=>!1),r=this.getSerializedOpenItems(),o=i.concat(this._queuedItems).concat(r);return new Mg(o,this,this.options.platform)}finally{try{e.close()}catch{}}}dispose(){window.removeEventListener("pagehide",this,!1),this._flushInterval.dispose()}handleEvent(e){e.type==="pagehide"&&this._finishAllAndFlush()}async _tryFlush(){var t;const e=await this._openDB();try{const s=e.transaction(["logs"],"readwrite"),i=s.objectStore("logs"),r=this._queuedItems.length;for(const l of this._queuedItems)i.add(l);const o=await Me(i.count()),c=(t=this.options.limit)!=null?t:3e3;if(o>c){let l=o-c+Math.round(.1*c);await _e(i.openCursor(),(h,a,u)=>(u.delete(),l-=1,{done:l===0}))}await Pi(s),this._queuedItems.splice(0,r)}catch(s){console.error("Could not flush logs",s)}finally{try{e.close()}catch{}}}_finishAllAndFlush(){this.logger&&(this.logger.log({l:"pagehide, closing logs",t:"navigation"}),this.logger.forceFinish()),this._persistQueuedItems(this._queuedItems)}_loadQueuedItems(){const e=`${this.options.name}_queuedItems`;try{const t=window.localStorage.getItem(e);if(t)return window.localStorage.removeItem(e),JSON.parse(t)}catch(t){console.error("Could not load queued log items",t)}return[]}_openDB(){return In(this.options.name,e=>e.createObjectStore("logs",{keyPath:"id",autoIncrement:!0}),1)}prepareItemForQueue(e,t,s){let i=e.serialize(t,void 0,s);if(i)return this.options.serializedTransformer&&(i=this.options.serializedTransformer(i)),{json:JSON.stringify(i)}}_persistQueuedItems(e){try{window.localStorage.setItem(`${this.options.name}_queuedItems`,JSON.stringify(e))}catch(t){console.error("Could not persist queued log items in localStorage, they will likely be lost",t)}}async removeItems(e){const t=await this._openDB();try{const s=t.transaction(["logs"],"readwrite"),i=s.objectStore("logs");for(const r of e)if(typeof r.id=="number")i.delete(r.id);else{const o=this._queuedItems.indexOf(r);o===-1&&this._queuedItems.splice(o,1)}await Pi(s)}finally{try{t.close()}catch{}}}getSerializedOpenItems(){const e=[];if(!this.logger)return e;const t=new br;for(const s of this.logger.getOpenRootItems()){const i=this.prepareItemForQueue(s,t,!1);i&&e.push(i)}return e}}class Mg{constructor(e,t,s){this._items=e,this._logger=t,this._platform=s}get count(){return this._items.length}removeFromStore(){return this._logger.removeItems(this._items)}asBlob(){const e=this.toJSON(),t=this._platform.encoding.utf8.encode(e);return this._platform.createBlob(t,"application/json")}toJSON(){var s;const e={formatVersion:1,appVersion:(s=this._platform.updateService)==null?void 0:s.version,platform:this._platform.description,items:this._items.map(i=>JSON.parse(i.json))};return JSON.stringify(e)}}class Cg{reportItem(e){Ic(e)}setLogger(e){this.logger=e}printOpenItems(){if(!!this.logger)for(const e of this.logger.getOpenRootItems())this.reportItem(e)}}const Eg=["l","id"];function Rg(n){return Object.entries(n).filter(([e])=>!Eg.includes(e)).reduce((e,[t,s])=>(e=e||{},e[t]=s,e),null)}function kc(n){if(n.error)return!0;if(n.children){for(const e of n.children)if(kc(e))return!0}return!1}function Ic(n){const e=`${Tg(n)} (@${n.start}ms, duration: ${n.duration}ms)`,t=Rg(n.values),s=n.children||t;if(s?(kc(n)?console.group(e):console.groupCollapsed(e),n.error&&console.error(n.error)):n.error?console.error(n.error):console.log(e),t&&console.table(t),n.children)for(const i of n.children)Ic(i);s&&console.groupEnd()}function Tg(n){return n.values.t==="network"?`${n.values.method} ${n.values.url}`:n.values.l&&typeof n.values.id!="undefined"?`${n.values.l} ${n.values.id}`:n.values.l&&typeof n.values.status!="undefined"?`${n.values.l} (${n.values.status})`:n.values.l&&typeof n.values.type!="undefined"?`${n.values.l} (${n.values.type})`:n.values.l&&n.error?`${n.values.l} failed`:typeof n.values.ref!="undefined"?`ref ${n.values.ref}`:n.values.l||n.values.type}class Zs{constructor(e,t,s,i){this._discard=!1,this._logger=s,this.start=s._now(),this._values=typeof e=="string"?{l:e}:e,this.logLevel=t,this._filterCreator=i}discard(){this._discard=!0}runDetached(e,t,s,i){return this._logger.runDetached(e,t,s,i)}wrapDetached(e,t,s,i){this.refDetached(this.runDetached(e,t,s,i))}refDetached(e,t){e.ensureRefId(),this.log({ref:e.values.refId},t)}ensureRefId(){this._values.refId||this.set("refId",this._logger._createRefId())}wrap(e,t,s,i){return this.child(e,s,i).run(t)}get duration(){if(this.end)return this.end-this.start}durationWithoutType(e){const t=this.durationOfType(e);if(this.duration&&t)return this.duration-t}durationOfType(e){return this._values.t===e?this.duration:this._children?this._children.reduce((t,s)=>{const i=s.durationOfType(e);return t+(i!=null?i:0)},0):0}log(e,t){const s=this.child(e,t);return s.end=s.start,s}set(e,t){if(typeof e=="object"){const s=e;Object.assign(this._values,s)}else this._values[e]=t;return this}serialize(e,t,s){if(this._discard)return;if(this._filterCreator)try{e=this._filterCreator(new br(e),this)}catch(o){console.error("Error creating log filter",o)}let i=null;if(this._children&&(i=this._children.reduce((o,c)=>{const l=c.serialize(e,this.start,!1);return l&&(o===null&&(o=[]),o.push(l)),o},null)),e&&!e.filter(this,i))return;const r={s:typeof t=="number"?this.start-t:this.start,d:this.duration,v:this._values,l:this.logLevel};return this.error&&(r.e={stack:this.error.stack,name:this.error.name,message:this.error.message.split(` +`)[0]}),s&&(r.f=!0),i&&(r.c=i),r}run(e){this.end!==void 0&&console.trace("log item is finished, additional logs will likely not be recorded");try{const t=e(this);return t instanceof Promise?t.then(s=>(this.finish(),s),s=>{throw this.catch(s)}):(this.finish(),t)}catch(t){throw this.catch(t)}}finish(){if(this.end===void 0){if(this._children)for(const e of this._children)e.finish();this.end=this._logger._now()}}forceFinish(){this.finish()}get level(){return Ge}catch(e){return this.error=e,this.logLevel=Ge.Error,this.finish(),e}child(e,t,s){this.end&&console.trace(`log item ${this.values.l} finished, additional log ${JSON.stringify(e)} will likely not be recorded`),t||(t=this.logLevel||Ge.Info);const i=new Zs(e,t,this._logger,s);return this._children||(this._children=[]),this._children.push(i),i}get logger(){return this._logger}get values(){return this._values}get children(){return this._children}}class Ag{constructor({platform:e}){this._openItems=new Set,this.reporters=[],this._platform=e}log(e,t=Ge.Info){const s=new Zs(e,t,this);return s.end=s.start,this._persistItem(s,void 0,!1),s}child(e,t=Ge.Info,s){const i=new xg(e,t,this,s);return this._openItems.add(i),i}wrapOrRun(e,t,s,i,r){return e?e.wrap(t,s,i,r):this.run(t,s,i,r)}runDetached(e,t,s,i){s||(s=Ge.Info);const r=new Zs(e,s,this);return this._run(r,t,s,!1,i),r}run(e,t,s,i){s===void 0&&(s=Ge.Info);const r=new Zs(e,s,this);return this._run(r,t,s,!0,i)}_run(e,t,s,i,r){this._openItems.add(e);const o=()=>{let c=new br;if(r)try{c=r(c,e)}catch(l){console.error("Error while creating log filter",l)}else c=c.minLevel(s);try{this._persistItem(e,c,!1)}catch(l){console.error("Could not persist log item",l)}this._openItems.delete(e)};try{let c=e.run(t);if(c instanceof Promise){if(c=c.then(l=>(o(),l),l=>{if(o(),i)throw l}),i)return c}else if(o(),i)return c}catch(c){if(o(),i)throw c}}addReporter(e){e.setLogger(this),this.reporters.push(e)}getOpenRootItems(){return this._openItems}forceFinish(){for(const e of this._openItems){e.forceFinish();try{this._persistItem(e,new br,!0)}catch(t){console.error("Could not serialize log item",t)}}this._openItems.clear()}_removeItemFromOpenList(e){this._openItems.delete(e)}_persistItem(e,t,s){for(var i=0;i(typeof i=="function"&&(i=i(e)),i?t+(t.length?" ":"")+s:t),"")}function ei(n,e,t){e==="className"&&(e="class"),t===!1?n.removeAttribute(e):(t===!0&&(t=e),n.setAttribute(e,t))}function Vg(n,e,t){return Cc(Ln,n,e,t)}function Cc(n,e,t,s){t&&Mc(t)&&(s=t,t=void 0);const i=document.createElementNS(n,e);if(t)for(let[r,o]of Object.entries(t))typeof o=="object"&&(o=o!==null&&r==="className"?ri(o,void 0):!1),ei(i,r,o);if(s){Array.isArray(s)||(s=[s]);for(let r of s)typeof r=="string"&&(r=Ft(r)),i.appendChild(r)}return i}function Ft(n){return document.createTextNode(n)}const Ln="http://www.w3.org/1999/xhtml",Ng="http://www.w3.org/2000/svg",Ec={[Ln]:["br","a","ol","ul","li","div","h1","h2","h3","h4","h5","h6","p","strong","em","span","img","section","header","main","footer","dialog","article","aside","del","blockquote","details","summary","table","thead","tbody","tr","th","td","hr","pre","code","button","time","input","textarea","select","option","optgroup","label","form","progress","output","video","style"],[Ng]:["svg","g","path","circle","ellipse","rect","use"]},H={};for(const[n,e]of Object.entries(Ec))for(const t of e)H[t]=function(s,i){return Cc(n,t,s,i)};function Bi(n,e){let t;try{t=n.mount(e)}catch(s){console.error(s),t=Dg(s)}return t}function Dg(n){const e=new Error().stack;let t=null;return e&&(t=e.split(` +`)[1]),H.div([H.h2("Something went wrong\u2026"),H.h3(n.message),H.p(`This occurred while running ${t}.`),H.pre(n.stack)])}function Bo(n,e,t){if(e===n.childElementCount)n.appendChild(t);else{const i=n.children[e];n.insertBefore(t,i)}}function Ug(n){n.innerHTML=""}function Kn(n){return async e=>{var t,s;(t=e.target)==null||t.setAttribute("disabled","disabled"),await n(e),(s=e.target)==null||s.removeAttribute("disabled")}}class os{constructor({list:e,onItemClick:t,className:s,tagName:i="ul",parentProvidesUpdates:r=!0},o){this._onItemClick=t,this._list=e,this._className=s,this._tagName=i,this._root=void 0,this._subscription=void 0,this._childCreator=o,this._childInstances=void 0,this._mountArgs={parentProvidesUpdates:r}}root(){return this._root}update(e){if(e.list){if(this._subscription)for(this._unloadList();this._root.lastChild;)this._root.lastChild.remove();this._list=e.list,this.loadList()}}mount(){const e={};this._className&&(e.className=this._className);const t=this._root=Vg(this._tagName,e);return this.loadList(),this._onItemClick&&t.addEventListener("click",this),t}handleEvent(e){e.type==="click"&&this._handleClick(e)}unmount(){this._list&&this._unloadList()}_handleClick(e){if(e.target===this._root||!this._onItemClick)return;let t=e.target;for(;t.parentNode!==this._root;)t=t.parentNode;const s=Array.prototype.indexOf.call(this._root.childNodes,t),i=this._childInstances[s];i&&this._onItemClick(i,e)}_unloadList(){this._subscription=this._subscription();for(let e of this._childInstances)e.unmount();this._childInstances=void 0}loadList(){if(!this._list)return;this._subscription=this._list.subscribe(this),this._childInstances=[];const e=document.createDocumentFragment();for(let t of this._list){const s=this._childCreator(t);this._childInstances.push(s),e.appendChild(Bi(s,this._mountArgs))}this._root.appendChild(e)}onReset(){for(const e of this._childInstances)e.root().remove(),e.unmount();this._childInstances.length=0}onAdd(e,t){this.addChild(e,t)}onRemove(e,t){this.removeChild(e)}onMove(e,t,s){this.moveChild(e,t)}onUpdate(e,t,s){this.updateChild(e,t,s)}addChild(e,t){const s=this._childCreator(t);this._childInstances.splice(e,0,s),Bo(this._root,e,Bi(s,this._mountArgs))}removeChild(e){const[t]=this._childInstances.splice(e,1);t.root().remove(),t.unmount()}moveChild(e,t){const[s]=this._childInstances.splice(e,1);this._childInstances.splice(t,0,s),s.root().remove(),Bo(this._root,t,s.root())}updateChild(e,t,s){if(this._childInstances){const i=this._childInstances[e];i&&i.update(t,s)}}recreateItem(e,t){if(this._childInstances){const s=this._childCreator(t);if(!s)this.onRemove(e,t);else{const[i]=this._childInstances.splice(e,1,s);this._root.replaceChild(s.mount(this._mountArgs),i.root()),i.unmount()}}}getChildInstanceByIndex(e){var t;return(t=this._childInstances)==null?void 0:t[e]}}class Rc{constructor(e){this._value=e,this._boundUpdateFromValue=null}subscribeOnMount(e){e&&e.parentProvidesUpdates||this._subscribe()}unmount(){this._unsubscribe()}get value(){return this._value}_updateFromValue(e){this.update(this._value,e)}_subscribe(){var e;typeof((e=this._value)==null?void 0:e.on)=="function"&&(this._boundUpdateFromValue=this._updateFromValue.bind(this),this._value.on("change",this._boundUpdateFromValue))}_unsubscribe(){this._boundUpdateFromValue&&(typeof this._value.off=="function"&&this._value.off("change",this._boundUpdateFromValue),this._boundUpdateFromValue=null)}}function Og(n){for(const e of Object.values(n))if(typeof e=="function")return!0;return!1}class E extends Rc{constructor(){super(...arguments),this._eventListeners=void 0,this._bindings=void 0,this._root=void 0,this._subViews=void 0}_attach(){if(this._eventListeners)for(let{node:e,name:t,fn:s,useCapture:i}of this._eventListeners)e.addEventListener(t,s,i)}_detach(){if(this._eventListeners)for(let{node:e,name:t,fn:s,useCapture:i}of this._eventListeners)e.removeEventListener(t,s,i)}mount(e){const t=new Tc(this);try{this._root=this.render(t,this._value)}finally{t.close()}return this.subscribeOnMount(e),this._attach(),this._root}unmount(){if(this._detach(),super.unmount(),this._subViews)for(const e of this._subViews)e.unmount()}root(){return this._root}update(e,t){if(this._value=e,this._bindings)for(const s of this._bindings)s()}_addEventListener(e,t,s,i=!1){this._eventListeners||(this._eventListeners=[]),this._eventListeners.push({node:e,name:t,fn:s,useCapture:i})}_addBinding(e){this._bindings||(this._bindings=[]),this._bindings.push(e)}addSubView(e){this._subViews||(this._subViews=[]),this._subViews.push(e)}removeSubView(e){if(!this._subViews)return;const t=this._subViews.indexOf(e);t!==-1&&this._subViews.splice(t,1)}updateSubViews(e,t){if(this._subViews)for(const s of this._subViews)s.update(e,t)}}class Tc{constructor(e){this._closed=!1,this._templateView=e}close(){this._closed=!0}_addBinding(e){this._closed&&console.trace("Adding a binding after render will likely cause memory leaks"),this._templateView._addBinding(e)}get _value(){return this._templateView.value}addEventListener(e,t,s,i=!1){this._templateView._addEventListener(e,t,s,i)}_addAttributeBinding(e,t,s){let i;const r=()=>{const o=s(this._value);i!==o&&(i=o,ei(e,t,o))};this._addBinding(r),r()}_addClassNamesBinding(e,t){this._addAttributeBinding(e,"className",s=>ri(t,s))}_addTextBinding(e){const t=e(this._value)+"",s=Ft(t);let i=t;const r=()=>{const o=e(this._value)+"";i!==o&&(i=o,s.textContent=o)};return this._addBinding(r),s}_isEventHandler(e,t){return e.startsWith("on")&&e.length>2&&typeof t=="function"}_setNodeAttributes(e,t){for(let[s,i]of Object.entries(t))if(typeof i=="object"){if(s!=="className"||i===null)continue;Og(i)?this._addClassNamesBinding(e,i):ei(e,s,ri(i,this._value))}else if(this._isEventHandler(s,i)){const r=s.substr(2,1).toLowerCase()+s.substr(3),o=i;this._templateView._addEventListener(e,r,o)}else typeof i=="function"?this._addAttributeBinding(e,s,i):ei(e,s,i)}_setNodeChildren(e,t){Array.isArray(t)||(t=[t]);for(let s of t)typeof s=="function"?s=this._addTextBinding(s):typeof s=="string"&&(s=Ft(s)),e.appendChild(s)}_addReplaceNodeBinding(e,t){let s=e(this._value),i=t(null);const r=()=>{const o=e(this._value);if(s!==o){s=o;const c=t(i);i.parentNode&&i.parentNode.replaceChild(c,i),i=c}};return this._addBinding(r),i}el(e,t,s){return this.elNS(Ln,e,t,s)}elNS(e,t,s,i){let r;s&&(Mc(s)?i=s:r=s);const o=document.createElementNS(e,t);return r&&this._setNodeAttributes(o,r),i&&this._setNodeChildren(o,i),o}view(e,t){return this._templateView.addSubView(e),Bi(e,t)}mapView(e,t){return this._addReplaceNodeBinding(e,s=>{if(s&&s.nodeType!==Node.COMMENT_NODE){const r=this._templateView._subViews;if(r){const o=r.findIndex(c=>c.root()===s);if(o!==-1){const[c]=r.splice(o,1);c.unmount()}}}const i=t(e(this._value));return i?this.view(i):document.createComment("node binding placeholder")})}map(e,t){return this.mapView(e,s=>new $i(this._value,(i,r)=>{const o=t(s,i,r);return o||document.createComment("map placeholder")}))}ifView(e,t){return this.mapView(s=>!!e(s),s=>s?t(this._value):null)}if(e,t){return this.ifView(e,s=>new $i(s,t))}mapSideEffect(e,t){let s=e(this._value);const i=()=>{const r=e(this._value);s!==r&&(t(r,s,this._value),s=r)};this._addBinding(i),t(s,void 0,this._value)}}for(const[n,e]of Object.entries(Ec))for(const t of e)Tc.prototype[t]=function(s,i){return this.elNS(n,t,s,i)};class $i extends E{constructor(e,t){super(e),this._render=t}render(e,t){return this._render(e,t)}}function Ss(n,e,t=void 0){const s=!!n.avatarUrl(e);let i=ri({avatar:!0,[`size-${e}`]:!0,[`usercolor${n.avatarColorNumber}`]:!s});t&&(i+=` ${t}`);const r=s?Ac(n,e):Ft(n.avatarLetter),o=H.div({className:i,title:n.avatarTitle,"data-testid":"avatar"},[r]);return s&&(ei(o,"data-avatar-letter",n.avatarLetter),ei(o,"data-avatar-color",n.avatarColorNumber)),o}function Ac(n,e){const t=e.toString();return H.img({src:n.avatarUrl(e),width:t,height:t,title:n.avatarTitle})}function Pg(n){const e=n.target,t=e.parentElement;return e.tagName==="IMG"&&t.classList.contains("avatar")}function $o(n){if(!Pg(n))return;const e=n.target.parentElement,t=e.getAttribute("data-avatar-color");e.classList.add(`usercolor${t}`);const s=e.getAttribute("data-avatar-letter");e.textContent=s}class wt extends Rc{constructor(e,t){super(e),this._root=null,this._avatarUrl=null,this._avatarTitle=null,this._avatarLetter=null,this._size=t}_avatarUrlChanged(){return this.value.avatarUrl(this._size)!==this._avatarUrl?(this._avatarUrl=this.value.avatarUrl(this._size),!0):!1}_avatarTitleChanged(){return this.value.avatarTitle!==this._avatarTitle?(this._avatarTitle=this.value.avatarTitle,!0):!1}_avatarLetterChanged(){return this.value.avatarLetter!==this._avatarLetter?(this._avatarLetter=this.value.avatarLetter,!0):!1}mount(e){return this._avatarUrlChanged(),this._avatarLetterChanged(),this._avatarTitleChanged(),this._root=Ss(this.value,this._size),this.subscribeOnMount(e),this._root}root(){return this._root}update(e){if(this._avatarUrlChanged()){const s=`usercolor${e.avatarColorNumber}`;e.avatarUrl(this._size)?(this._root.replaceChild(Ac(e,this._size),this._root.firstChild),this._root.classList.remove(s)):(this._root.textContent=e.avatarLetter,this._root.classList.add(s))}const t=!!e.avatarUrl(this._size);if(this._avatarTitleChanged()&&t){const s=this._root.firstChild;s.tagName==="IMG"&&s.setAttribute("title",e.avatarTitle)}this._avatarLetterChanged()&&!t&&(this._root.textContent=e.avatarLetter)}}let Ii;function ye(n,e=void 0){Ii===void 0&&(Ii=document.querySelector(".hydrogen"));const t=Object.assign({spinner:!0},e);return Ii!=null&&Ii.classList.contains("legacy")?n.div({className:t},[n.div(),n.div(),n.div(),n.div()]):n.svg({className:t,viewBox:"0 0 100 100"},n.circle({cx:"50%",cy:"50%",r:"45%",pathLength:"100"}))}class Fg extends E{render(e,t){const s={active:i=>i.isOpen,hidden:i=>i.hidden};return e.li({className:s},[e.a({href:t.url},[e.view(new wt(t,32),{parentProvidesUpdates:!0}),e.div({className:"description"},[e.div({className:{name:!0,unread:i=>i.isUnread}},i=>i.name),e.map(i=>i.busy,i=>i?ye(e):e.div({className:{badge:!0,highlighted:r=>r.isHighlighted,hidden:r=>!r.badgeCount}},r=>r.badgeCount))])])])}update(e,t){super.update(e),this.updateSubViews(e,t)}}class ue extends E{static option(e,t){return new Lg(e,t)}constructor(e){super(),this._options=e}render(e){return e.ul({className:"menu",role:"menu"},this._options.map(t=>t.toDOM(e)))}}class Lg{constructor(e,t){this.label=e,this.callback=t,this.icon=null,this.destructive=!1}setIcon(e){return this.icon=e,this}setDestructive(){return this.destructive=!0,this}toDOM(e){const t={destructive:this.destructive};return this.icon&&(t.icon=!0,t[this.icon]=!0),e.li({className:t},e.button({className:"menu-item",onClick:this.callback},this.label))}}class Dr{constructor(e,t=null){this._view=e,this._target=null,this._arrangement=null,this._scroller=null,this._fakeRoot=null,this._trackingTemplateView=null,this._closeCallback=t}_getPopupContainer(){const e=this._target.closest(".hydrogen");let t=e.querySelector(".popupContainer");return t||(t=H.div({className:"popupContainer"}),e.appendChild(t)),t}trackInTemplateView(e){this._trackingTemplateView=e,this._trackingTemplateView.addSubView(this)}showRelativeTo(e,t=0){this._target=e,this._verticalPadding=t,this._scroller=Kg(this._target),this._view.mount(),this._getPopupContainer().appendChild(this._popup),this._position(),this._scroller&&document.body.addEventListener("scroll",this,!0),setTimeout(()=>{document.body.addEventListener("click",this,!1)},10)}get isOpen(){return!!this._view}close(){this._view&&(this._view.unmount(),this._trackingTemplateView.removeSubView(this),this._scroller&&document.body.removeEventListener("scroll",this,!0),document.body.removeEventListener("click",this,!1),this._popup.remove(),this._view=null,this._closeCallback&&this._closeCallback())}get _popup(){return this._view.root()}handleEvent(e){e.type==="scroll"?this._position()||this.close():e.type==="click"&&this._onClick(e)}_onClick(){this.close()}_position(){const e=this._target.getBoundingClientRect(),t=this._popup.clientWidth,s=this._popup.clientHeight,i=(this._scroller?this._scroller:document.documentElement).getBoundingClientRect();if(e.top>i.bottom||e.left>i.right||e.bottom=e.bottom+s)this._popup.style.top=`${e.bottom+this._verticalPadding}px`;else if(i.top<=e.top-s)this._popup.style.top=`${e.top-s-this._verticalPadding}px`;else return!1;if(i.right>=e.right+t)this._popup.style.left=`${e.left}px`;else if(i.left<=e.left-t)this._popup.style.left=`${e.right-t}px`;else return!1;return!0}root(){return this._fakeRoot}mount(){return this._fakeRoot=document.createComment("popup"),this._fakeRoot}unmount(){this.close()}update(){}}function Kg(n){let e=n;do if(e=e.parentElement,e.scrollHeight>e.clientHeight){const s=window.getComputedStyle(e).getPropertyValue("overflow-y");if(s==="auto"||s==="scroll")return e}while(e!==document.body)}class Bg extends E{render(e,t){const s=()=>{i.value="",i.blur(),r.blur(),t.clear()},i=e.input({type:"text",placeholder:t==null?void 0:t.label,"aria-label":t==null?void 0:t.label,autocomplete:t==null?void 0:t.autocomplete,enterkeyhint:"search",name:t==null?void 0:t.name,onInput:o=>t.set(o.target.value),onKeydown:o=>{(o.key==="Escape"||o.key==="Esc")&&s()},onFocus:()=>i.select()}),r=e.button({onClick:s,title:t.i18n`Clear`,"aria-label":t.i18n`Clear`});return e.div({className:"FilterField"},[i,r])}}class $g extends E{constructor(e){super(e),this._createMenuPopup=null}render(e,t){const s=o=>o.gridEnabled?o.i18n`Show single room`:o.i18n`Enable grid layout`,i=e.view(new os({className:"RoomList",list:t.tileViewModels},o=>new Fg(o))),r=e.div({className:"utilities"},[e.a({className:"button-utility close-session",href:t.closeUrl,"aria-label":t.i18n`Back to account list`,title:t.i18n`Back to account list`}),e.view(new Bg({i18n:t.i18n,label:t.i18n`Filter rooms…`,name:"room-filter",autocomplete:!0,set:o=>{t.setFilter(o)&&(i.scrollTop=0)},clear:()=>t.clearFilter()})),e.button({onClick:()=>t.toggleGrid(),className:{"button-utility":!0,grid:!0,on:o=>o.gridEnabled},title:s,"aria-label":s}),e.a({className:"button-utility settings",href:t.settingsUrl,"aria-label":t.i18n`Settings`,title:t.i18n`Settings`}),e.button({className:"button-utility create","aria-label":t.i18n`Create room`,onClick:o=>this._toggleCreateMenu(o)})]);return e.div({className:"LeftPanel"},[r,i])}_toggleCreateMenu(e){if(this._createMenuPopup&&this._createMenuPopup.isOpen)this._createMenuPopup.close();else{const t=this.value,s=[];s.push(ue.option(t.i18n`Create Room`,()=>t.showCreateRoomView())),s.push(ue.option(t.i18n`Join Room`,()=>t.showJoinRoomView())),this._createMenuPopup=new Dr(new ue(s)),this._createMenuPopup.trackInTemplateView(this),this._createMenuPopup.showRelativeTo(e.target,10)}}}function jo(n){return n.offsetTop+n.clientHeight}function qo(n,e,t=n.children.length-1){for(var s=t;s>=0;s--)if(n.children[s].offsetTop{this.restoreScrollPosition()}),this.tilesView=new qg(t.tiles,()=>this.restoreScrollPosition(),this.viewClassForTile);const s=e.div({className:"Timeline"},[e.div({className:"Timeline_scroller bottom-aligned-scroll",onScroll:()=>this.onScroll()},e.view(this.tilesView)),e.button({className:{Timeline_jumpDown:!0,hidden:i=>!i.showJumpDown},title:"Jump down",onClick:()=>this.jumpDown()})]);return typeof ResizeObserver=="function"&&(this.resizeObserver=new ResizeObserver(()=>{this.restoreScrollPosition()}),this.resizeObserver.observe(s)),s}get scrollNode(){return this.root().firstElementChild}get tilesNode(){return this.tilesView.root()}jumpDown(){const{scrollNode:e}=this;this.stickToBottom=!0,e.scrollTop=e.scrollHeight}unmount(){super.unmount(),this.resizeObserver&&(this.resizeObserver.unobserve(this.root()),this.resizeObserver=void 0)}restoreScrollPosition(){const{scrollNode:e,tilesNode:t}=this,s=e.clientHeight-t.clientHeight;if(s>0){t.style.setProperty("margin-top",`${s}px`);const i=this.value.tiles.length;this.updateVisibleRange(0,i-1)}else if(t.style.removeProperty("margin-top"),this.stickToBottom)e.scrollTop=e.scrollHeight;else if(this.anchoredNode){const i=jo(this.anchoredNode);if(i!==this.anchoredBottom){const r=i-this.anchoredBottom;typeof e.scrollBy=="function"?e.scrollBy(0,r):e.scrollTop=e.scrollTop+r,this.anchoredBottom=i}}}onScroll(){const{scrollNode:e,tilesNode:t}=this,{scrollHeight:s,scrollTop:i,clientHeight:r}=e;let o;if(this.stickToBottom=Math.abs(s-(i+r))<1,this.stickToBottom)o=this.value.tiles.length-1;else{const l=i+r,h=qo(t,l);this.anchoredNode=t.childNodes[h],this.anchoredBottom=jo(this.anchoredNode),o=h}let c=qo(t,i,o);this.updateVisibleRange(c,o)}updateVisibleRange(e,t){const s=this.tilesView.getChildInstanceByIndex(e),i=this.tilesView.getChildInstanceByIndex(t);this.value.setVisibleTileRange(s==null?void 0:s.value,i==null?void 0:i.value)}}class qg extends os{constructor(e,t,s){super({list:e,onItemClick:(i,r)=>i.onClick(r)},i=>{const r=s(i);return new r(i,s)}),this.viewClassForTile=s,this.onChanged=t}onReset(){super.onReset(),this.onChanged()}onUpdate(e,t,s){if(s==="shape"){const i=this.viewClassForTile(t),r=this.getChildInstanceByIndex(e);if(!i||!(r instanceof i)){super.recreateItem(e,t);return}}super.onUpdate(e,t,s),this.onChanged()}onAdd(e,t){super.onAdd(e,t),this.onChanged()}onRemove(e,t){super.onRemove(e,t),this.onChanged()}onMove(e,t,s){super.onMove(e,t,s),this.onChanged()}}class Hg extends E{render(e,t){return e.div({className:"TimelineLoadingView"},[ye(e),e.div(t.isEncrypted?t.i18n`Loading encrypted messages…`:t.i18n`Loading messages…`)])}}class Wg extends E{constructor(e,t){super(e),this._viewClassForTile=t,this._input=null,this._attachmentPopup=null,this._focusInput=null,this._rafResizeHandle=void 0}render(e,t){this._input=e.textarea({onKeydown:r=>this._onKeyDown(r),onInput:()=>{t.setInput(this._input.value),this._input.value?this._adjustHeight():this._clearHeight()},placeholder:r=>r.isEncrypted?"Send an encrypted message\u2026":"Send a message\u2026",rows:"1"}),this._focusInput=()=>this._input.focus(),this.value.on("focus",this._focusInput);const s=e.map(r=>r.replyViewModel,(r,o)=>{const c=r&&this._viewClassForTile(r);return c?o.div({className:"MessageComposer_replyPreview"},[o.span({className:"replying"},"Replying"),o.button({className:"cancel",onClick:()=>this._clearReplyingTo()},"Close"),o.view(new c(r,this._viewClassForTile,{interactive:!1},"div"))]):null}),i=e.div({className:"MessageComposer_input"},[this._input,e.button({className:"sendFile",title:t.i18n`Pick attachment`,onClick:r=>this._toggleAttachmentMenu(r)},t.i18n`Send file`),e.button({className:"send",title:t.i18n`Send`,onClick:()=>this._trySend()},t.i18n`Send`)]);return e.div({className:{MessageComposer:!0,MessageComposer_canSend:r=>r.canSend}},[s,i])}unmount(){this._focusInput&&this.value.off("focus",this._focusInput),super.unmount()}_clearReplyingTo(){this.value.clearReplyingTo()}async _trySend(){this._input.focus();const{value:e}=this._input,t=()=>{this._input.value=e,this._adjustHeight()};this._input.value="",this._clearHeight();try{await this.value.sendMessage(e)||t()}catch(s){t(),console.error(s)}}_onKeyDown(e){e.key==="Enter"&&!e.shiftKey&&(e.preventDefault(),this._trySend())}_toggleAttachmentMenu(e){if(this._attachmentPopup&&this._attachmentPopup.isOpen)this._attachmentPopup.close();else{const t=this.value;this._attachmentPopup=new Dr(new ue([ue.option(t.i18n`Send video`,()=>t.sendVideo()).setIcon("video"),ue.option(t.i18n`Send picture`,()=>t.sendPicture()).setIcon("picture"),ue.option(t.i18n`Send file`,()=>t.sendFile()).setIcon("file")])),this._attachmentPopup.trackInTemplateView(this),this._attachmentPopup.showRelativeTo(e.target,12)}}_adjustHeight(){this._rafResizeHandle||(this._rafResizeHandle=window.requestAnimationFrame(()=>{const e=this._input.scrollHeight;this._input.style.height=`${e}px`,this._rafResizeHandle=void 0}))}_clearHeight(){this._input.style.removeProperty("height")}}class zg extends E{render(e){return e.div({className:"DisabledComposerView"},e.h3(t=>t.description))}}class Vs extends E{constructor(e,t={inline:!1}){super(e),this.options=t}render(e,t){const s=e.button({className:"ErrorView_submit",onClick:Kn(async r=>{r.stopPropagation(),await t.submitLogs()?alert("Logs submitted!"):alert("Could not submit logs")})},"Submit logs"),i=e.button({className:"ErrorView_close",onClick:r=>{r.stopPropagation(),t.close()},title:"Dismiss error"});return e.div({className:{ErrorView:!0,ErrorView_inline:this.options.inline,ErrorView_block:!this.options.inline}},[e.p({className:"ErrorView_message"},t.message),s,i])}}class Gg extends E{render(e,t){const s=e.view(new os({className:"CallView_members",list:t.memberViewModels},i=>new Yg(i)));return this.bindMembersCssClasses(e,s),e.div({class:"CallView"},[s,e.div({class:"CallView_buttons"},[e.button({className:{CallView_mutedMicrophone:i=>i.isMicrophoneMuted,CallView_unmutedMicrophone:i=>!i.isMicrophoneMuted},onClick:Hr(()=>t.toggleMicrophone())}),e.button({className:{CallView_mutedCamera:i=>i.isCameraMuted,CallView_unmutedCamera:i=>!i.isCameraMuted},onClick:Hr(()=>t.toggleCamera())}),e.button({className:"CallView_hangup",onClick:Hr(()=>t.hangup())})]),e.if(i=>!!i.errorViewModel,i=>i.div({className:"CallView_error"},i.view(new Vs(t.errorViewModel))))])}bindMembersCssClasses(e,t){if(e.mapSideEffect(s=>s.memberCount,s=>{t.classList.forEach((i,r,o)=>{i.startsWith("size")&&o.remove(i)}),t.classList.add(`size${s}`)}),typeof ResizeObserver=="function"){const s=(i,r)=>{r?t.classList.add(i):t.classList.remove(i)};this.resizeObserver=new ResizeObserver(()=>{const i=t.clientWidth/t.clientHeight,r=i<.5,o=!r&&i<1.8,c=!r&&!o;s("tall",r),s("square",o),s("wide",c)}),this.resizeObserver.observe(t)}}unmount(){this.resizeObserver&&(this.resizeObserver.unobserve(this.root().querySelector(".CallView_members")),this.resizeObserver=void 0),super.unmount()}}class Yg extends E{render(e,t){const s=e.video({autoplay:!0,disablePictureInPicture:!0,className:{hidden:i=>i.isCameraMuted}});return e.mapSideEffect(i=>i.stream,i=>{s.srcObject=i}),e.div({className:"StreamView"},[s,e.div({className:{StreamView_avatar:!0,hidden:i=>!i.isCameraMuted}},e.view(new wt(t,96),{parentProvidesUpdates:!0})),e.div({className:{StreamView_muteStatus:!0,hidden:i=>!i.isCameraMuted&&!i.isMicrophoneMuted,microphoneMuted:i=>i.isMicrophoneMuted&&!i.isCameraMuted,cameraMuted:i=>i.isCameraMuted}}),e.if(i=>!!i.errorViewModel,i=>i.div({className:"StreamView_error"},i.view(new Vs(t.errorViewModel))))])}update(e,t){super.update(e),this.updateSubViews(e,t)}}function Hr(n){return async e=>{var t,s;(t=e.target)==null||t.setAttribute("disabled","disabled"),await n(e),(s=e.target)==null||s.removeAttribute("disabled")}}class xc extends E{constructor(e,t){super(e),this._viewClassForTile=t,this._optionsPopup=null}render(e,t){return e.main({className:"RoomView middle"},[e.div({className:"RoomHeader middle-header"},[e.a({className:"button-utility close-middle",href:t.closeUrl,title:t.i18n`Close room`}),e.view(new wt(t,32)),e.div({className:"room-description"},[e.h2(s=>s.name)]),e.button({className:"button-utility room-options","aria-label":t.i18n`Room options`,onClick:s=>this._toggleOptionsMenu(s)})]),e.div({className:"RoomView_body"},[e.if(s=>s.errorViewModel,s=>s.div({className:"RoomView_error"},s.view(new Vs(t.errorViewModel)))),e.mapView(s=>s.callViewModel,s=>s?new Gg(s):null),e.mapView(s=>s.timelineViewModel,s=>s?new jg(s,this._viewClassForTile):new Hg(t)),e.mapView(s=>s.composerViewModel,s=>{switch(s==null?void 0:s.kind){case"composer":return new Wg(t.composerViewModel,this._viewClassForTile);case"disabled":return new zg(t.composerViewModel)}})])])}_toggleOptionsMenu(e){if(this._optionsPopup&&this._optionsPopup.isOpen)this._optionsPopup.close();else{const t=this.value,s=[];if(s.push(ue.option(t.i18n`Room details`,()=>t.openDetailsPanel())),t.features.calls&&s.push(ue.option(t.i18n`Start call`,()=>t.startCall())),t.canLeave&&s.push(ue.option(t.i18n`Leave room`,()=>this._confirmToLeaveRoom()).setDestructive()),t.canForget&&s.push(ue.option(t.i18n`Forget room`,()=>t.forgetRoom()).setDestructive()),t.canRejoin&&s.push(ue.option(t.i18n`Rejoin room`,()=>t.rejoinRoom())),!s.length)return;this._optionsPopup=new Dr(new ue(s)),this._optionsPopup.trackInTemplateView(this),this._optionsPopup.showRelativeTo(e.target,10)}}_confirmToLeaveRoom(){confirm(this.value.i18n`Are you sure you want to leave "${this.value.name}"?`)&&this.value.leaveRoom()}}class Jg extends E{render(e,t){return e.main({className:"UnknownRoomView middle"},[e.div({className:"UnknownRoomView_header middle-header"},[e.a({className:"button-utility close-middle",href:t.closeUrl,title:t.i18n`Cancel room join`}),e.h2("Join room")]),e.div({className:"UnknownRoomView_body centered-column"},[e.div({className:"UnknownRoomView_container"},[e.h2([t.i18n`You are currently not in ${t.roomIdOrAlias}.`,e.br(),t.i18n`Want to join it?`]),e.button({className:"button-action primary",onClick:()=>t.join(),disabled:s=>s.busy},t.i18n`Join room`),e.if(s=>s.error,s=>s.p({className:"error"},t.error))])])])}}class ni{constructor(e,t=void 0){typeof e=="function"&&!t&&(t=e,e=null),this._root=t?t(H,e):this.render(H,e)}mount(){return this._root}root(){return this._root}unmount(){}update(){}}class Vc extends ni{constructor(e="Loading"){super(e,(t,s)=>t.div({className:"LoadingView"},[ye(t),s]))}}class Nc extends E{render(e,t){return e.main({className:"RoomView middle"},[e.div({className:"RoomHeader middle-header"},[e.a({className:"button-utility close-middle",href:t.closeUrl,title:t.i18n`Close room`}),e.view(new wt(t,32)),e.div({className:"room-description"},[e.h2(s=>s.name)])]),e.div({className:"RoomView_body"},[e.mapView(s=>s.error,s=>s?new Qg(t):new Vc(t.i18n`Setting up the room…`))])])}}class Qg extends E{render(e,t){return e.div({className:"RoomBeingCreated_error centered-column"},[e.h3(t.i18n`Could not create the room, something went wrong:`),e.div({className:"RoomView_error form-group"},t.error),e.div({className:"button-row"},e.button({className:"button-action primary destructive",onClick:()=>t.cancel()},t.i18n`Cancel`))])}}class Dc extends E{render(e,t){var r;let s=[];t.isDirectMessage&&s.push(Ss(t,128,"InviteView_dmAvatar"));let i;return t.isDirectMessage?i=[e.strong(t.name),` (${(r=t.inviter)==null?void 0:r.id}) wants to chat with you.`]:t.inviter?i=[Ss(t.inviter,24),e.strong(t.inviter.name),` (${t.inviter.id}) invited you.`]:i="You were invited to join.",s.push(e.p({className:"InviteView_inviter"},i)),t.isDirectMessage||s.push(e.div({className:"InviteView_roomProfile"},[Ss(t,64,"InviteView_roomAvatar"),e.h3(t.name),e.p({className:"InviteView_roomDescription"},t.roomDescription)])),e.main({className:"InviteView middle"},[e.div({className:"RoomHeader middle-header"},[e.a({className:"button-utility close-middle",href:t.closeUrl,title:t.i18n`Close invite`}),Ss(t,32),e.div({className:"room-description"},[e.h2(o=>o.name)])]),e.if(o=>o.error,o=>o.div({className:"RoomView_error"},c=>c.error)),e.div({className:"InviteView_body"},[e.div({className:"InviteView_invite"},[...s,e.div({className:"InviteView_buttonRow"},e.button({className:"button-action primary",disabled:o=>o.busy,onClick:()=>t.accept()},t.i18n`Accept`)),e.div({className:"InviteView_buttonRow"},e.button({className:"button-action primary destructive",disabled:o=>o.busy,onClick:()=>t.reject()},t.i18n`Reject`))])])])}}class Xg extends E{render(e,t){const s=e.a({href:t.closeUrl,title:t.i18n`Close`,className:"close"}),i=e.div({role:"img","aria-label":l=>l.name,title:l=>l.name,className:{picture:!0,hidden:l=>!l.imageUrl},style:l=>`background-image: url('${l.imageUrl}'); max-width: ${l.imageWidth}px; max-height: ${l.imageHeight}px;`}),r=e.div({className:{loading:!0,hidden:l=>!!l.imageUrl}},[ye(e),e.div(t.i18n`Loading image…`)]),o=e.div({className:"details"},[e.strong(l=>l.name),e.br(),"uploaded by ",e.strong(l=>l.sender),l=>` at ${l.time} on ${l.date}.`]),c=e.div({role:"dialog",className:"lightbox",onClick:l=>this.clickToClose(l),onKeydown:l=>this.closeOnEscKey(l)},[i,r,o,s]);return Zg(e,c),c}clickToClose(e){e.target===this.root()&&this.value.close()}closeOnEscKey(e){(e.key==="Escape"||e.key==="Esc")&&this.value.close()}}function Zg(n,e){const t=ef(e),s=t[0],i=t[t.length-1];n.addEventListener(e,"keydown",r=>{r.key==="Tab"&&(r.shiftKey?document.activeElement===s&&(i.focus(),r.preventDefault()):document.activeElement===i&&(s.focus(),r.preventDefault()))},!0),Promise.resolve().then(()=>{s.focus()})}function ef(n){return n.querySelectorAll("a[href], button, textarea, input, select")}class tf extends E{render(e,t){return e.div({className:{SessionStatusView:!0,hidden:s=>!s.isShown}},[ye(e,{hidden:s=>!s.isWaiting}),e.p(s=>s.statusLabel),e.if(s=>s.isConnectNowShown,s=>s.button({className:"link",onClick:()=>t.connectNow()},"Retry now")),e.if(s=>s.isSecretStorageShown,s=>s.a({href:t.setupKeyBackupUrl},"Go to settings")),e.if(s=>s.canDismiss,s=>s.div({className:"end"},s.button({className:"dismiss",onClick:()=>t.dismiss()})))])}}class sf extends E{constructor(e,t){super(e),this._viewClassForTile=t}render(e,t){const s=[];for(let i=0;it.focusTile(i),onFocusin:()=>t.focusTile(i),className:{container:!0,[`tile${i}`]:!0,focused:r=>r.focusIndex===i}},e.mapView(r=>r.roomViewModelAt(i),r=>r?r.kind==="roomBeingCreated"?new Nc(r):r.kind==="invite"?new Dc(r):new xc(r,this._viewClassForTile):new ni(o=>o.div({className:"room-placeholder"},[o.h2({className:"focused"},t.i18n`Select a room on the left`),o.h2({className:"unfocused"},t.i18n`Click to select this tile`)])))));return s.push(e.div({className:i=>`focus-ring tile${i.focusIndex}`})),e.div({className:"RoomGridView middle layout3x2"},s)}}class Uc extends E{render(e,t){return e.div([e.map(s=>s.status,(s,i,r)=>{switch(s){case st.Enabled:return rf(i,r);case st.NewVersionAvailable:return nf(i,r);case st.SetupWithPassphrase:return af(i,r);case st.SetupWithRecoveryKey:return of(i,r);case st.Pending:return i.p(r.i18n`Waiting to go online…`)}}),e.map(s=>s.backupWriteStatus,(s,i,r)=>{switch(s){case wr.Writing:{const o=i.progress({min:0+"",max:100+"",value:c=>c.backupPercentage});return i.div(["Backup in progress ",o," ",c=>c.backupInProgressLabel])}case wr.Stopped:{let o;return r.backupError?o=`Backup has stopped because of an error: ${r.backupError}`:o="Backup has stopped",i.p([o," ",i.button({onClick:()=>r.startBackup()},"Backup now")])}case wr.Done:return i.p("All keys are backed up.");default:return}}),e.if(s=>s.isMasterKeyTrusted,s=>s.p("Cross-signing master key found and trusted.")),e.if(s=>s.canSignOwnDevice,s=>s.div([s.button({onClick:Kn(async()=>{t.navigateToVerification()})},"Verify by emoji")]))])}}function rf(n,e){const t=[n.p([e.i18n`Key backup is enabled, using backup version ${e.backupVersion}. `,n.button({onClick:()=>e.disable()},e.i18n`Disable`)])];return e.dehydratedDeviceId&&t.push(n.p(e.i18n`A dehydrated device id was set up with id ${e.dehydratedDeviceId} which you can use during your next login with your secret storage key.`)),n.div(t)}function nf(n,e){const t=[n.p([e.i18n`A new backup version has been created from another device. Disable key backup and enable it again with the new key.`,n.button({onClick:()=>e.disable()},e.i18n`Disable`)])];return n.div(t)}function of(n,e){const t=n.button({className:"link",onClick:()=>e.showPhraseSetup()},e.i18n`use a security phrase`);return n.div([n.p(e.i18n`Enter your secret storage security key below to ${e.purpose}, which will enable you to decrypt messages received before you logged into this session. The security key is a code of 12 groups of 4 characters separated by a space that Element created for you when setting up security.`),Pc(n),Oc(n,e,e.i18n`Security key`,(s,i)=>e.enterSecurityKey(s,i)),n.p([e.i18n`Alternatively, you can `,t,e.i18n` if you have one.`])])}function af(n,e){const t=n.button({className:"link",onClick:()=>e.showKeySetup()},e.i18n`use your security key`);return n.div([n.p(e.i18n`Enter your secret storage security phrase below to ${e.purpose}, which will enable you to decrypt messages received before you logged into this session. The security phrase is a freeform secret phrase you optionally chose when setting up security in Element. It is different from your password to login, unless you chose to set them to the same value.`),Pc(n),Oc(n,e,e.i18n`Security phrase`,(s,i)=>e.enterSecurityPhrase(s,i)),n.p([e.i18n`You can also `,t,e.i18n`.`])])}function Oc(n,e,t,s){let i;const r=()=>s(o.value,(i==null?void 0:i.checked)||!1),o=n.input({type:"password",disabled:l=>l.isBusy,placeholder:t}),c=[n.p([o,n.button({disabled:l=>l.isBusy,onClick:r},e.decryptAction)])];if(e.offerDehydratedDeviceSetup){i=n.input({type:"checkbox",id:"enable-dehydrated-device"});const l=n.a({href:"https://github.com/uhoreg/matrix-doc/blob/dehydration/proposals/2697-device-dehydration.md",target:"_blank",rel:"noopener"},"more info");c.push(n.p([i,n.label({for:i.id},[e.i18n`Back up my device as well (`,l,")"])]))}return n.div({className:"row"},[n.div({className:"label"},t),n.div({className:"content"},c)])}function Pc(n){return n.if(e=>e.error!==void 0,(e,t)=>e.div([e.p({className:"error"},s=>s.i18n`Could not enable key backup: ${s.error}.`),e.p(t.i18n`Try double checking that you did not mix up your security key, security phrase and login password as explained above.`)]))}class cf extends E{render(e,t){return e.div({className:"FeaturesView"},[e.p("Enable experimental features here that are still in development. These are not yet ready for primetime, so expect bugs."),e.ul(t.featureViewModels.map(s=>e.li(e.view(new lf(s)))))])}}class lf extends E{render(e,t){let s=`feature_${t.id}`;return e.div({className:"FeatureView"},[e.input({type:"checkbox",id:s,checked:i=>i.enabled,onChange:i=>t.enableFeature(i.target.checked)}),e.div({class:"FeatureView_container"},[e.h4(e.label({for:s},t.name)),e.p(t.description)])])}}class hf extends E{render(e,t){let s=t.version;t.showUpdateButton&&(s=e.span([t.version,e.button({onClick:()=>t.checkForUpdate()},t.i18n`Check for updates`)]));const i=(c,l,h,a="")=>c.div({className:`row ${a}`},[c.div({className:"label"},l),c.div({className:"content"},h)]),r=[];r.push(e.h3("Session"),i(e,t.i18n`User ID`,t.userId),i(e,t.i18n`Session ID`,t.deviceId,"code"),i(e,t.i18n`Session key`,t.fingerprintKey,"code"),i(e,"",e.button({onClick:()=>t.logout(),disabled:c=>c.isLoggingOut},t.i18n`Log out`))),r.push(e.h3("Key backup & security"),e.view(new Uc(t.keyBackupViewModel))),r.push(e.h3("Notifications"),e.map(c=>c.pushNotifications.supported,(c,l)=>{if(c===null)return l.p(t.i18n`Loading…`);if(c){const h=u=>u.pushNotifications.enabled?u.i18n`Push notifications are enabled`:u.i18n`Push notifications are disabled`,a=u=>u.pushNotifications.enabled?u.i18n`Disable`:u.i18n`Enable`;return i(l,h,l.button({onClick:()=>t.togglePushNotifications(),disabled:u=>u.pushNotifications.updating},a))}else return l.p(t.i18n`Push notifications are not supported on this browser`)}),e.if(c=>c.pushNotifications.supported&&c.pushNotifications.enabled,c=>c.div([c.p(["If you think push notifications are not being delivered, ",c.button({className:"link",onClick:()=>t.checkPushEnabledOnServer()},"check")," if they got disabled on the server"]),c.map(l=>l.pushNotifications.enabledOnServer,(l,h)=>{if(l===!0)return h.p("Push notifications are still enabled on the server, so everything should be working. Sometimes notifications can get dropped if they can't be delivered within a given time.");if(l===!1)return h.p("Push notifications have been disabled on the server, likely due to a bug. Please re-enable them by clicking Disable and then Enable again above.")}),c.map(l=>l.pushNotifications.serverError,(l,h)=>{if(l)return h.p("Couldn't not check on server: "+l.message)})]))),r.push(e.h3("Preferences"),i(e,t.i18n`Scale down images when sending`,this._imageCompressionRange(e,t)),e.if(c=>c.activeTheme,(c,l)=>i(c,l.i18n`Use the following theme`,this._themeOptions(c,l))));const o=[];return t.canSendLogsToServer&&o.push(e.button({onClick:Kn(()=>t.sendLogsToServer())},`Submit logs to ${t.logsServer}`)),o.push(e.button({onClick:()=>t.exportLogs()},"Download logs")),r.push(e.h3("Experimental features"),e.view(new cf(t.featuresViewModel))),r.push(e.h3("Application"),i(e,t.i18n`Version`,s),i(e,t.i18n`Storage usage`,c=>`${c.storageUsage} / ${c.storageQuota}`),i(e,t.i18n`Debug logs`,o),e.p({className:{hidden:c=>!c.logsFeedbackMessage}},c=>c.logsFeedbackMessage),e.p(["Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited, the usernames of other users and the names of files you send. They do not contain messages. For more information, review our ",e.a({href:"https://element.io/privacy",target:"_blank",rel:"noopener"},"privacy policy"),"."]),e.p([])),e.main({className:"Settings middle"},[e.div({className:"middle-header"},[e.a({className:"button-utility close-middle",href:t.closeUrl,title:t.i18n`Close settings`}),e.h2("Settings")]),e.div({className:"SettingsBody"},r)])}_imageCompressionRange(e,t){const i=Math.ceil(t.minSentImageSizeLimit/32)*32,r=(Math.floor(t.maxSentImageSizeLimit/32)+1)*32,o=c=>t.setSentImageSizeLimit(parseInt(c.target.value,10));return[e.input({type:"range",step:32,min:i,max:r,value:c=>c.sentImageSizeLimit||r,onInput:o,onChange:o})," ",e.output(c=>c.sentImageSizeLimit?c.i18n`resize to ${c.sentImageSizeLimit}px`:c.i18n`no resizing`)]}_themeOptions(e,t){const{themeName:s,themeVariant:i}=t.activeTheme,r=[];for(const f of Object.keys(t.themeMapping))r.push(e.option({value:f,selected:f===s},f));const o=e.select({onChange:f=>{const v=f.target.value;if(!("id"in t.themeMapping[v])){const M=a.checked?"dark":p.checked?"light":"default";c(M);return}t.changeThemeOption(v)}},r),c=f=>{const v=o.options[o.selectedIndex].value;t.changeThemeOption(v,f)},l=i==="dark",h=i==="light",a=e.input({type:"radio",name:"radio-chooser",value:"dark",id:"dark",checked:l}),u=e.input({type:"radio",name:"radio-chooser",value:"default",id:"default",checked:!(l||h)}),p=e.input({type:"radio",name:"radio-chooser",value:"light",id:"light",checked:h}),g=e.form({className:{hidden:()=>{const f=o.options[o.selectedIndex].value;return"id"in t.themeMapping[f]}},onChange:f=>c(f.target.value)},[u,e.label({for:"default"},"Match system theme"),a,e.label({for:"dark"},"dark"),p,e.label({for:"light"},"light")]);return e.div({className:"theme-chooser"},[o,g])}}class df extends E{render(e,t){return e.main({className:"CreateRoomView middle"},[e.div({className:"CreateRoomView_header middle-header"},[e.a({className:"button-utility close-middle",href:t.closeUrl,title:t.i18n`Cancel room creation`}),e.h2("Create room")]),e.div({className:"CreateRoomView_body centered-column"},[e.form({className:"CreateRoomView_detailsForm form",onChange:s=>this.onFormChange(s),onSubmit:s=>this.onSubmit(s)},[e.div({className:"vertical-layout"},[e.button({type:"button",className:"CreateRoomView_selectAvatar",onClick:()=>t.selectAvatar()},e.mapView(s=>s.hasAvatar,s=>s?new wt(t,64):new ni(void 0,i=>i.div({className:"CreateRoomView_selectAvatarPlaceholder"})))),e.div({className:"stretch form-row text"},[e.label({for:"name"},t.i18n`Room name`),e.input({onInput:s=>t.setName(s.target.value),type:"text",name:"name",id:"name",placeholder:t.i18n`Enter a room name`})])]),e.div({className:"form-row text"},[e.label({for:"topic"},t.i18n`Topic (optional)`),e.textarea({onInput:s=>t.setTopic(s.target.value),name:"topic",id:"topic",placeholder:t.i18n`Topic`})]),e.div({className:"form-group"},[e.div({className:"form-row check"},[e.input({type:"radio",name:"isPublic",id:"isPrivate",value:"false",checked:!t.isPublic}),e.label({for:"isPrivate"},t.i18n`Private room, only upon invitation.`)]),e.div({className:"form-row check"},[e.input({type:"radio",name:"isPublic",id:"isPublic",value:"true",checked:t.isPublic}),e.label({for:"isPublic"},t.i18n`Public room, anyone can join`)])]),e.div({className:{"form-row check":!0,hidden:s=>s.isPublic}},[e.input({type:"checkbox",name:"isEncrypted",id:"isEncrypted",checked:t.isEncrypted}),e.label({for:"isEncrypted"},t.i18n`Enable end-to-end encryption`)]),e.div({className:{"form-row text":!0,hidden:s=>!s.isPublic}},[e.label({for:"roomAlias"},t.i18n`Room alias`),e.input({onInput:s=>t.setRoomAlias(s.target.value),type:"text",name:"roomAlias",id:"roomAlias",placeholder:t.i18n`Room alias (, or # or #:hs.tld`})]),e.div({className:"form-group"},[e.div(e.button({className:"link",type:"button",onClick:()=>t.toggleAdvancedShown()},s=>s.isAdvancedShown?s.i18n`Hide advanced settings`:s.i18n`Show advanced settings`)),e.div({className:{"form-row check":!0,hidden:s=>!s.isAdvancedShown}},[e.input({type:"checkbox",name:"isFederationDisabled",id:"isFederationDisabled",checked:t.isFederationDisabled}),e.label({for:"isFederationDisabled"},[t.i18n`Disable federation`,e.p({className:"form-row-description"},t.i18n`Can't be changed later. This will prevent people on other homeservers from joining the room. This is typically used when only people from your own organisation (if applicable) should be allowed in the room, and is otherwise not needed.`)])])]),e.div({className:"button-row"},[e.button({className:"button-action primary",type:"submit",disabled:s=>!s.canCreate},t.i18n`Create room`)])])])])}onFormChange(e){switch(e.target.name){case"isEncrypted":this.value.setEncrypted(e.target.checked);break;case"isPublic":this.value.setPublic(e.currentTarget.isPublic.value==="true");break;case"isFederationDisabled":this.value.setFederationDisabled(e.target.checked);break}}onSubmit(e){e.preventDefault(),this.value.create()}}class uf extends E{render(e,t){const s=()=>t.isEncrypted?t.i18n`On`:t.i18n`Off`;return e.div({className:"RoomDetailsView"},[e.div({className:"RoomDetailsView_avatar"},[e.view(new wt(t,52)),e.mapView(i=>i.isEncrypted,i=>new mf(i))]),e.div({className:"RoomDetailsView_name"},[e.h2(i=>i.name)]),this._createRoomAliasDisplay(t),e.div({className:"RoomDetailsView_rows"},[this._createRightPanelButtonRow(e,t.i18n`People`,{MemberCount:!0},i=>i.memberCount,()=>t.openPanel("members")),this._createRightPanelRow(e,t.i18n`Encryption`,{EncryptionStatus:!0},s)])])}_createRoomAliasDisplay(e){return e.canonicalAlias?H.div({className:"RoomDetailsView_id"},[e.canonicalAlias]):""}_createRightPanelRow(e,t,s,i){const r=ri(It({RoomDetailsView_label:!0},s));return e.div({className:"RoomDetailsView_row"},[e.div({className:r},[t]),e.div({className:"RoomDetailsView_value"},i)])}_createRightPanelButtonRow(e,t,s,i,r){const o=ri(It({RoomDetailsView_label:!0},s));return e.button({className:"RoomDetailsView_row",onClick:r},[e.div({className:o},[t]),e.div({className:"RoomDetailsView_value"},i)])}}class mf extends E{render(e,t){return e.div({className:"EncryptionIconView"},[e.div({className:t?"EncryptionIconView_encrypted":"EncryptionIconView_unencrypted"})])}}class _f{constructor(e,t){this.start=e,this.end=t}get length(){return this.end-this.start}contains(e){return e.start>=this.start&&e.end<=this.end}containsIndex(e){return e>=this.start&&e(n[n.Before=1]="Before",n[n.Inside=2]="Inside",n[n.After=3]="After",n))(Cs||{});class pf{constructor(e){this.range=e,this.idx=e.start-1}next(){return this.idxthis.range.start?(this.idx-=1,{value:this.idx,done:!1}):{value:void 0,done:!0}}}function ff(n,e){let t=0;for(;t(n[n.Move=0]="Move",n[n.Add=1]="Add",n[n.Remove=2]="Remove",n[n.RemoveAndAdd=3]="RemoveAndAdd",n[n.UpdateRange=4]="UpdateRange",n))(Gs||{});class Di extends _f{constructor(e,t,s,i=t-e){super(e,t),this._totalLength=s,this._viewportItemCount=i}expand(e){if(this.length===0)return this;const t=Math.max(0,this.start-e),s=Math.min(this.totalLength,this.end+e);return new Di(t,s,this.totalLength,this._viewportItemCount)}get totalLength(){return this._totalLength}get viewportItemCount(){return this._viewportItemCount}static fromViewport(e,t,s,i){const r=Math.min(Math.max(0,Math.floor(i/t)),e),o=e-r,c=s!==0?Math.ceil(s/t):0,l=Math.min(c,o);return new Di(r,r+l,e,c)}queryAdd(e,t,s){const i=this.viewportItemCount>this.length?this.end:this.end-1;if(e<=i){const r=this.clampIndex(e,i),o=r===e?t:ur(s[Symbol.iterator](),r);return this.createAddResult(r,o)}else return{type:4,newRange:this.deriveRange(1,0)}}queryRemove(e,t){if(ethis.length)return{type:1,addIdx:e,value:t,newRange:this.deriveRange(1,1)};{const s=this.clampIndex(Number.MAX_SAFE_INTEGER);return{type:3,removeIdx:s,addIdx:e,value:t,newRange:this.deriveRange(1,0)}}}createRemoveResult(e,t){if(this.endrequestAnimationFrame(t)),await new Promise(t=>requestAnimationFrame(t)),!this._list)return;this._subscription=this._list.subscribe(this);const e=this._getVisibleRange();this.renderRange=e.expand(this.overflowItems),this._childInstances=[],this.reRenderFullRange(this.renderRange)}_getVisibleRange(){const{clientHeight:e,scrollTop:t}=this.root();if(e===0)throw new Error("LazyListView height is 0");return Di.fromViewport(this._list.length,this.itemHeight,e,t)}reRenderFullRange(e){Ug(this._listElement);const t=document.createDocumentFragment(),s=this._list[Symbol.iterator]();this._childInstances.length=0,e.forEachInIterator(s,i=>{const r=this._childCreator(i);this._childInstances.push(r),t.appendChild(Bi(r,this._mountArgs))}),this._listElement.appendChild(t),this.adjustPadding(e)}renderUpdate(e,t){if(t.intersects(e)){for(const s of e.reverseIterable())if(!t.containsIndex(s)){const i=s-e.start;this.removeChild(i)}t.forEachInIterator(this._list[Symbol.iterator](),(s,i)=>{if(!e.containsIndex(i)){const r=i-t.start;this.addChild(r,s)}}),this.adjustPadding(t)}else this.reRenderFullRange(t)}adjustPadding(e){const t=e.start*this.itemHeight,s=(e.totalLength-e.end)*this.itemHeight,i=this._listElement.style;i.paddingTop=`${t}px`,i.paddingBottom=`${s}px`}mount(){const e=super.mount();return this.scrollContainer=H.div({className:"LazyListParent"},e),this.scrollContainer.addEventListener("scroll",this),this.scrollContainer}unmount(){this.root().removeEventListener("scroll",this),this.scrollContainer=void 0,super.unmount()}root(){return this.scrollContainer}get _listElement(){return super.root()}onAdd(e,t){const s=this.renderRange.queryAdd(e,t,this._list);this.applyRemoveAddResult(s)}onRemove(e,t){const s=this.renderRange.queryRemove(e,this._list);this.applyRemoveAddResult(s)}onMove(e,t,s){const i=this.renderRange.queryMove(e,t,s,this._list);i&&(i.type===Gs.Move?this.moveChild(this.renderRange.toLocalIndex(i.fromIdx),this.renderRange.toLocalIndex(i.toIdx)):this.applyRemoveAddResult(i))}onUpdate(e,t,s){this.renderRange.containsIndex(e)&&this.updateChild(this.renderRange.toLocalIndex(e),t,s)}applyRemoveAddResult(e){(e.type===Gs.Remove||e.type===Gs.RemoveAndAdd)&&this.removeChild(this.renderRange.toLocalIndex(e.removeIdx)),e.newRange&&(this.renderRange=e.newRange,this.adjustPadding(this.renderRange)),(e.type===Gs.Add||e.type===Gs.RemoveAndAdd)&&this.addChild(this.renderRange.toLocalIndex(e.addIdx),e.value)}}class wf extends E{render(e,t){return e.li({className:"MemberTileView"},e.a({href:t.detailsUrl},[e.view(new wt(t,32)),e.div({className:"MemberTileView_name"},s=>s.name)]))}}class vf extends E{render(e,t){const s=new yf({list:t.memberTileViewModels,className:"MemberListView__list",itemHeight:40},i=>new wf(i));return e.div({className:"MemberListView"},[e.div({className:"MemberListView__invite-container"},[e.button({className:"MemberListView__invite-btn button-action primary",onClick:()=>t.openInvitePanel()},t.i18n`Invite to this room`)]),e.view(s)])}}class bf extends E{render(e,t){const s=[e.p(t.isEncrypted?t.i18n`Messages in this room are end-to-end encrypted.`:t.i18n`Messages in this room are not end-to-end encrypted.`)];return t.features.crossSigning&&s.push(e.div({className:"MemberDetailsView_shield_container"},[e.span({className:i=>`MemberDetailsView_shield_${i.trustShieldColor}`}),e.p({className:"MemberDetailsView_shield_description"},i=>i.trustDescription)])),e.div({className:"MemberDetailsView"},[e.view(new wt(t,128)),e.div({className:"MemberDetailsView_name"},e.h2(i=>i.name)),e.div({className:"MemberDetailsView_id"},t.userId),this._createSection(e,t.i18n`Role`,i=>i.role),this._createSection(e,t.i18n`Security`,s),this._createOptions(e,t)])}_createSection(e,t,s){return e.div({className:"MemberDetailsView_section"},[e.div({className:"MemberDetailsView_label"},t),e.div({className:"MemberDetailsView_value"},s)])}_createOptions(e,t){const s=[e.a({href:t.linkToUser,target:"_blank",rel:"noopener"},t.i18n`Open Link to User`),e.button({className:"text",onClick:()=>t.openDirectMessage()},t.i18n`Open direct message`)];if(t.features.crossSigning){t.canVerifyUser&&s.push(e.button({className:"text",onClick:()=>t.verifyUser()},t.i18n`Verify`));const i=()=>{confirm("You don't want to do this with any account but a test account. This will cross-sign this user without verifying their keys first. You won't be able to undo this apart from resetting your cross-signing keys.")&&t.signUser()};s.push(e.button({className:"text",onClick:i},t.i18n`Cross-sign user (DO NOT USE, TESTING ONLY)`))}return e.div({className:"MemberDetailsView_section"},[e.div({className:"MemberDetailsView_label"},t.i18n`Options`),e.div({className:"MemberDetailsView_options"},s)])}}class Sf extends E{render(e,t){return e.div({className:"WaitingForOtherUserView"},[e.div({className:"WaitingForOtherUserView__heading"},[ye(e),e.h2({className:"WaitingForOtherUserView__title"},t.title)]),e.p({className:"WaitingForOtherUserView__description"},t.description),e.div({className:"WaitingForOtherUserView__actions"},e.button({className:{"button-action":!0,primary:!0,destructive:!0},onclick:()=>t.cancel()},"Cancel"))])}}class kf extends E{render(e,t){return e.div({className:"VerificationCancelledView"},[e.h2({className:"VerificationCancelledView__title"},t.title),e.p({className:"VerificationCancelledView__description"},t.description),e.div({className:"VerificationCancelledView__actions"},[e.button({className:{"button-action":!0,primary:!0},onclick:()=>t.dismiss()},"Got it")])])}}class If extends E{render(e){return e.div({className:"SelectMethodView"},[e.map(t=>t.hasProceeded,(t,s,i)=>t?ye(s):s.div([s.div({className:"SelectMethodView__heading"},[s.h2({className:"SelectMethodView__title"},this.getHeading(s,i))]),s.p({className:"SelectMethodView__description"},this.getSubheading(i)),s.div({className:"SelectMethodView__actions"},[s.button({className:{"button-action":!0,primary:!0,destructive:!0},onclick:()=>i.cancel()},"Cancel"),s.button({className:{"button-action":!0,primary:!0},onclick:()=>i.proceed()},"Proceed")])]))])}getHeading(e,t){return t.isCrossSigningAnotherUser?[t.i18n`Verify user `,e.span({className:"SelectMethodView__name"},t.otherUserId),t.i18n` by comparing emojis?`]:[t.i18n`Verify device`,e.span({className:"SelectMethodView__name"},t.deviceName),t.i18n` by comparing emojis?`]}getSubheading(e){return e.isCrossSigningAnotherUser?e.i18n`You are about to verify user (${e.otherUserId}) by comparing emojis.`:e.i18n`You are about to verify your other device (${e.deviceName}) by comparing emojis.`}}class Mf extends E{render(e,t){const s=t.emojis.reduce((r,[o,c])=>{const l=e.div({className:"EmojiContainer"},[e.div({className:"EmojiContainer__emoji"},o),e.div({className:"EmojiContainer__name"},c)]);return r.push(l),r},[]),i=e.div({className:"EmojiCollection"},s);return e.div({className:"VerifyEmojisView"},[e.div({className:"VerifyEmojisView__heading"},[e.h2({className:"VerifyEmojisView__title"},t.i18n`Do the emojis match?`)]),e.p({className:"VerifyEmojisView__description"},t.i18n`Confirm the emoji below are displayed on both devices, in the same order:`),e.div({className:"VerifyEmojisView__emojis"},i),e.map(r=>r.isWaiting,(r,o,c)=>r?o.div({className:"VerifyEmojisView__waiting"},[ye(o),o.span(c.i18n`Waiting for you to verify on your other device`)]):o.div({className:"VerifyEmojisView__actions"},[o.button({className:{"button-action":!0,primary:!0,destructive:!0},onclick:()=>c.setEmojiMatch(!1)},c.i18n`They don't match`),o.button({className:{"button-action":!0,primary:!0},onclick:()=>c.setEmojiMatch(!0)},c.i18n`They match`)]))])}}class Cf extends E{render(e,t){return e.div({className:"VerificationCompleteView"},[e.div({className:"VerificationCompleteView__icon"}),e.div({className:"VerificationCompleteView__heading"},[e.h2({className:"VerificationCompleteView__title"},t.i18n`Verification completed successfully!`)]),e.p({className:"VerificationCompleteView__description"},t.verificationSuccessfulMessage),e.div({className:"VerificationCompleteView__actions"},[e.button({className:{"button-action":!0,primary:!0},onclick:()=>t.dismiss()},"Got it")])])}}class Ef extends E{render(e,t){return e.div({className:"MissingKeysView"},[e.h2({className:"MissingKeysView__heading"},t.i18n`Verification is currently not possible!`),e.p({className:"MissingKeysView__description"},t.i18n`Some keys needed for verification are missing. You can fix this by enabling key backup in settings.`),e.div({className:"MissingKeysView__actions"},[e.button({className:{"button-action":!0,primary:!0},onclick:()=>t.gotoSettings()},"Open Settings")])])}}class Fc extends E{render(e,t){return e.div({className:{middle:!t.isHappeningInRoom,DeviceVerificationView:!0}},[e.mapView(s=>s.currentStageViewModel,s=>{switch(s==null?void 0:s.kind){case"waiting-for-user":return new Sf(s);case"verification-cancelled":return new kf(s);case"select-method":return new If(s);case"verify-emojis":return new Mf(s);case"verification-completed":return new Cf(s);case"keys-missing":return new Ef(s);default:return new $i(s,()=>ye(e))}})])}}class Rf extends E{render(e,t){const s=e.input({className:"InvitePanelView__input",type:"text",placeholder:"Enter user-id of user",onkeydown:i=>{i.key==="Enter"&&t.invite(s.value)}});return e.div({className:"InvitePanelView"},[e.h3({className:"InvitePanelView__heading"},i=>i.i18n`Invite to ${i.roomName}`),e.div({className:"InvitePanelView__form"},[s,e.button({className:"InvitePanelView__btn button-action primary",onClick:()=>t.invite(s.value)},"Invite")]),e.div({className:"InvitePanelView__error"},[e.ifView(i=>!!i.errorViewModel,i=>new Vs(i.errorViewModel))])])}}class Tf extends E{render(e){return e.div({className:"RightPanelView"},[e.ifView(t=>t.activeViewModel,t=>new Af(t)),e.mapView(t=>t.activeViewModel,t=>this._viewFromType(t))])}_viewFromType(e){switch(e==null?void 0:e.type){case"room-details":return new uf(e);case"member-list":return new vf(e);case"member-details":return new bf(e);case"invite":return new Rf(e);case"verification":return new Fc(e);default:return new Vc}}}class Af extends E{render(e,t){return e.div({className:"RightPanelView_buttons"},[e.button({className:{back:!0,"button-utility":!0,hide:s=>!s.activeViewModel.shouldShowBackButton},onClick:()=>t.showPreviousPanel()}),e.button({className:"close button-utility",onClick:()=>t.closePanel()})])}}class xf extends os{constructor(e){const t={className:"Timeline_messageReactions",tagName:"div",list:e.reactions,onItemClick:s=>s.onClick()};super(t,s=>new Vf(s))}}class Vf extends E{render(e,t){return e.button({className:{active:s=>s.isActive,pending:s=>s.isPending}},[t.key," ",s=>`${s.count}`])}onClick(){this.value.toggle()}}class hi extends E{constructor(e,t,s,i="li"){super(e),this._menuPopup=null,this._tagName=i,this._viewClassForTile=t,this._renderFlags=s}get _interactive(){var e,t;return(t=(e=this._renderFlags)==null?void 0:e.interactive)!=null?t:!0}get _isReplyPreview(){var e;return(e=this._renderFlags)==null?void 0:e.reply}render(e,t){const s=[this.renderMessageBody(e,t)];this._interactive&&s.push(e.button({className:"Timeline_messageOptions"},"\u22EF"));const i=e.el(this._tagName,{className:{Timeline_message:!0,own:t.isOwn,unsent:t.isUnsent,unverified:o=>o.isUnverified,disabled:!this._interactive,continuation:o=>o.isContinuation},"data-event-id":t.eventId},s);e.mapSideEffect(o=>o.isContinuation,(o,c)=>{if(o&&c===!1)i.removeChild(i.querySelector(".Timeline_messageAvatar")),i.removeChild(i.querySelector(".Timeline_messageSender"));else if(!o&&!this._isReplyPreview){const l=H.a({href:t.memberPanelLink,className:"Timeline_messageAvatar"},[Ss(t,30)]),h=H.div({className:`Timeline_messageSender usercolor${t.avatarColorNumber}`,title:t.sender},t.displayName);i.insertBefore(l,i.firstChild),i.insertBefore(h,i.firstChild)}});let r=null;return e.mapSideEffect(o=>o.reactions,o=>{o&&this._interactive&&!r?(r=new xf(o),this.addSubView(r),i.appendChild(Bi(r))):!o&&r&&(i.removeChild(r.root()),r.unmount(),this.removeSubView(r),r=null)}),i}onClick(e){e.target.className==="Timeline_messageOptions"&&this._toggleMenu(e.target)}_toggleMenu(e){if(this._menuPopup&&this._menuPopup.isOpen)this._menuPopup.close();else{const t=this.createMenuOptions(this.value);if(!t.length)return;this.root().classList.add("menuOpen");const s=()=>this.root().classList.remove("menuOpen");this._menuPopup=new Dr(new ue(t),s),this._menuPopup.trackInTemplateView(this),this._menuPopup.showRelativeTo(e,2)}}createMenuOptions(e){const t=[];return e.canReact&&e.shape!=="redacted"&&!e.isPending&&(t.push(new Nf(e)),t.push(ue.option(e.i18n`Reply`,()=>e.startReply()))),e.canAbortSending?t.push(ue.option(e.i18n`Cancel`,()=>e.abortSending())):e.canRedact&&t.push(ue.option(e.i18n`Delete`,()=>e.redact()).setDestructive()),t.push(ue.option(e.i18n`Copy matrix.to permalink`,()=>e.copyPermalink())),t}renderMessageBody(){}}class Nf{constructor(e){this._vm=e}toDOM(e){const t=["\u{1F44D}","\u{1F44E}","\u{1F604}","\u{1F389}","\u{1F615}","\u2764\uFE0F","\u{1F680}","\u{1F440}"].map(i=>e.button({onClick:()=>this._vm.react(i)},i)),s=e.button({onClick:()=>{const i=prompt("Enter your reaction (emoji)");i&&this._vm.react(i)}},"\u2026");return e.li({className:"quick-reactions"},[...t,s])}}class Df extends E{constructor(e,t){super(e),this._viewClassForTile=t}render(e,t){const s=this._viewClassForTile(t);if(!s)throw new Error(`Shape ${t.shape} is unrecognized.`);const i=new s(t,this._viewClassForTile,{reply:!0,interactive:!1});return e.div({className:"ReplyPreviewView"},e.blockquote([e.a({className:"link",target:"_blank",href:t.permaLink},"In reply to"),e.a({className:"pill",target:"_blank",href:t.senderProfileLink},[Ss(t,12,void 0),t.displayName]),e.br(),e.view(i)]))}}class Uf extends E{render(e){return e.blockquote({className:"ReplyPreviewView"},[e.div({className:"Timeline_messageBody statusMessage"},"This reply could not be found.")])}}class Of extends hi{renderMessageBody(e,t){const s=e.time({className:{hidden:!t.time}},t.time),i=e.div({className:{Timeline_messageBody:!0,statusMessage:o=>o.shape==="message-status"}},e.mapView(o=>o.replyTile,o=>this._isReplyPreview?null:t.isReply&&!o?new Uf:o?new Df(o,this._viewClassForTile):null)),r=o=>(o==null?void 0:o.nodeType)!==Node.COMMENT_NODE&&o.className!=="ReplyPreviewView";return e.mapSideEffect(o=>o.body,o=>{for(;r(i.lastChild);)i.removeChild(i.lastChild);for(const c of o.parts)i.appendChild(Lc(c));i.appendChild(s)}),i}}function Pf(n){const e=n.items.map(s=>H.li(Es(s))),t=n.startOffset;return t?H.ol({start:t},e):H.ul(e)}function Ff(n){const e={src:n.src};return n.width&&(e.width=n.width),n.height&&(e.height=n.height),n.alt&&(e.alt=n.alt),n.title&&(e.title=n.title),H.img(e)}function Lf(n){const e=`avatar size-12 usercolor${n.avatarColorNumber}`,t=H.div({class:e},Ft(n.avatarInitials)),s=Es(n.children);return s.unshift(t),H.a({class:"pill",href:n.href,rel:"noopener",target:"_blank"},s)}function Kf(n){const e=[];if(n.head){const s=n.head.map(i=>H.th(Es(i)));e.push(H.thead(H.tr(s)))}const t=[];for(const s of n.body){const i=s.map(r=>H.td(Es(r)));t.push(H.tr(i))}return e.push(H.tbody(t)),H.table(e)}const Bf={header:n=>H["h"+Math.min(6,n.level)](Es(n.inlines)),codeblock:n=>H.pre(H.code(Ft(n.text))),table:n=>Kf(n),code:n=>H.code(Ft(n.text)),text:n=>Ft(n.text),link:n=>H.a({href:n.url,className:"link",target:"_blank",rel:"noopener"},Es(n.inlines)),pill:Lf,format:n=>H[n.format](Es(n.children)),rule:()=>H.hr(),list:Pf,image:Ff,newline:()=>H.br()};function Lc(n){const e=Bf[n.type];return e?e(n):Ft(`[unknown part type ${n.type}]`)}function Es(n){return Array.from(n,Lc)}class Kc extends hi{renderMessageBody(e,t){let i=`padding-top: ${t.height/t.width*100}%;`;t.platform.isIE11&&(i=`height: ${t.height}px`);const r=[e.div({className:"spacer",style:i}),this.renderMedia(e,t),e.time(t.time)],o=e.div({className:{status:!0,hidden:c=>!c.status}},c=>c.status);if(r.push(o),t.isPending){const c=e.progress({min:0,max:100,value:l=>l.uploadPercentage,className:{hidden:l=>!l.isUploading}});r.push(c)}return e.div({className:"Timeline_messageBody"},[e.div({className:"media",style:`max-width: ${t.width}px`,"data-testid":"media"},r),e.if(c=>c.error,c=>c.p({className:"error"},t.error))])}createMenuOptions(e){const t=super.createMenuOptions(e);if(!e.isPending){let s;switch(e.shape){case"image":s=e.i18n`Download image`;break;case"video":s=e.i18n`Download video`;break;default:s=e.i18n`Download media`;break}t.push(ue.option(s,()=>e.downloadMedia()))}return t}}class $f extends Kc{renderMedia(e,t){const s=e.img({src:i=>i.thumbnailUrl,alt:i=>i.label,title:i=>i.label,style:`max-width: ${t.width}px; max-height: ${t.height}px;`});return t.isPending||!t.lightboxUrl?s:e.a({href:t.lightboxUrl},s)}}function Tr(n,e){return new Promise((t,s)=>{let i;const r=c=>{i(),s(c.target.error)},o=()=>{i(),t()};i=()=>{n.removeEventListener(e,o),n.removeEventListener("error",r)},n.addEventListener(e,o),n.addEventListener("error",r)})}async function jf(n){var e;try{if((e=navigator==null?void 0:navigator.clipboard)!=null&&e.writeText)return await navigator.clipboard.writeText(n),!0;{const t=document.createElement("textarea");t.value=n,t.style.top="0",t.style.left="0",t.style.position="fixed",document.body.appendChild(t);const s=document.getSelection();if(!s)return console.error("copyPlaintext: Unable to copy text to clipboard in fallback mode because `selection` was null/undefined"),!1;const i=document.createRange();i.selectNode(t),s.removeAllRanges(),s.addRange(i);const r=document.execCommand("copy");return s.removeAllRanges(),document.body.removeChild(t),r||console.error("copyPlaintext: Unable to copy text to clipboard in fallback mode because the `copy` command is unsupported or disabled"),r}}catch(t){console.error("copyPlaintext: Ran into an error",t)}return!1}class qf extends Kc{renderMedia(e){const t=e.video({src:s=>s.videoUrl||`data:${s.mimeType},`,title:s=>s.label,controls:!0,preload:"none",poster:s=>s.thumbnailUrl,onPlay:this._onPlay.bind(this),style:s=>`max-width: ${s.width}px; max-height: ${s.height}px;${s.isPending?"z-index: -1":""}`});return t.addEventListener("error",this._onError.bind(this)),t}async _onPlay(e){const t=this.value;if(!t.videoUrl)try{const s=e.target;await t.loadVideo();const i=Tr(s,"loadeddata");s.load(),await i,s.play()}catch{}}_onError(e){const t=this.value,s=e.target,i=s.error;if(i instanceof window.MediaError&&i.code===4)if(!s.src.startsWith("data:"))t.setViewError(new Error(`this browser does not support videos of type ${t.mimeType}.`));else return;else t.setViewError(i)}}class Hf extends hi{renderMessageBody(e,t){const s=[];return t.isPending?s.push(i=>i.label):s.push(e.button({className:"link",onClick:()=>t.download()},i=>i.label),e.time(t.time)),e.p({className:"Timeline_messageBody statusMessage"},s)}}class Wf extends hi{renderMessageBody(e,t){return e.p({className:"Timeline_messageBody statusMessage"},[e.span(t.label),e.a({className:"Timeline_locationLink",href:t.mapsLink,target:"_blank",rel:"noopener"},t.i18n`Open in maps`),e.time(t.time)])}}class zf extends hi{renderMessageBody(e,t){return e.p({className:"Timeline_messageBody statusMessage"},t.label)}}class Gf extends E{constructor(e){super(e)}render(e,t){return e.li({className:"AnnouncementView","data-event-id":t.eventId},e.div(s=>s.announcement))}onClick(){}}class Yf extends hi{renderMessageBody(e){return e.p({className:"Timeline_messageBody statusMessage"},t=>t.description)}createMenuOptions(e){const t=super.createMenuOptions(e);return e.isRedacting&&t.push(ue.option(e.i18n`Cancel`,()=>e.abortPendingRedaction())),t}}class Jf extends E{constructor(e){super(e)}render(e,t){const s={GapView:!0,isLoading:i=>i.isLoading,isAtTop:i=>i.isAtTop};return e.li({className:s},[e.div({class:"GapView_container"},[e.if(i=>i.showSpinner,i=>ye(i)),e.span(i=>i.status)]),e.if(i=>!!i.errorViewModel,i=>i.view(new Vs(t.errorViewModel,{inline:!0})))])}onClick(){}}class Qf extends E{render(e,t){return e.li({className:"CallTileView AnnouncementView"},e.div([e.if(s=>s.errorViewModel,s=>s.div({className:"CallTileView_error"},s.view(new Vs(t.errorViewModel,{inline:!0})))),e.div([e.div({className:"CallTileView_title"},s=>s.title),e.div({className:"CallTileView_subtitle"},[t.typeLabel," \u2022 ",e.span({className:"CallTileView_memberCount"},s=>s.memberCount)]),e.view(new os({className:"CallTileView_members",tagName:"div",list:t.memberViewModels},s=>new wt(s,24))),e.div(s=>s.duration),e.div([e.button({className:"CallTileView_join button-action primary",hidden:s=>!s.canJoin},"Join"),e.button({className:"CallTileView_leave button-action primary destructive",hidden:s=>!s.canLeave},"Leave")])])]))}onClick(e){e.target.classList.contains("CallTileView_join")?this.value.join():e.target.classList.contains("CallTileView_leave")&&this.value.leave()}}class Xf extends E{render(e,t){return e.h2({className:"DateHeader"},e.time({dateTime:t.machineReadableDate},t.relativeDate))}onClick(){}}class Zf extends E{render(e,t){return e.div({className:"VerificationTileView"},e.mapView(s=>s.status,s=>{switch(s){case Ai.Ready:return new ey(t);case Ai.Cancelled:return new ty(t);case Ai.Completed:return new sy(t);case Ai.InProgress:return new iy(t)}}))}onClick(e){var t;(t=this._subViews)==null||t.forEach(s=>{var i;return(i=s.onClick)==null?void 0:i.call(s,e)})}}class ey extends E{render(e,t){return e.div({className:"VerificationReadyTileView"},[e.div({className:"VerificationTileView__shield"}),e.div({className:"VerificationTileView__description"},[e.div(t.description)]),e.div({className:"VerificationTileView__actions"},[e.button({className:"VerificationTileView__accept button-action primary"},"Accept"),e.button({className:"VerificationTileView__reject button-action secondary"},"Reject")])])}onClick(e){e.target.classList.contains("VerificationTileView__accept")?this.value.accept():e.target.classList.contains("VerificationTileView__reject")&&this.value.reject()}}class ty extends E{render(e,t){return e.div({className:"VerificationCancelledTileView"},[e.div({className:"VerificationTileView__description"},t.i18n`${t.isCancelledByUs?"You":t.sender} cancelled the verification!`)])}}class sy extends E{render(e,t){return e.div({className:"VerificationCompletedTileView"},[e.div({className:"VerificationTileView__description"},[e.div({className:"VerificationTileView__shield"}),e.div(t.i18n`You verified ${t.sender}`)])])}}class iy extends E{render(e,t){return e.div({className:"VerificationInProgressTileView"},[e.div({className:"VerificationTileView__description"},t.i18n`Verification in progress`),e.div({className:"VerificationTileView__actions"},[ye(e)])])}}function Ho(n){switch(n.shape){case me.Gap:return Jf;case me.Announcement:return Gf;case me.Message:case me.MessageStatus:return Of;case me.Image:return $f;case me.Video:return qf;case me.File:return Hf;case me.Location:return Wf;case me.MissingAttachment:return zf;case me.Redacted:return Yf;case me.Call:return Qf;case me.DateHeader:return Xf;case me.Verification:return Zf;default:throw new Error(`Tiles of shape "${n.shape}" are not supported, check the tileClassForEntry function in the view model`)}}class ry extends E{render(e,t){const s=e.input({type:"text",name:"id",id:"id",placeholder:t.i18n`Enter a room id or alias`,disabled:i=>i.joinInProgress});return e.main({className:"JoinRoomView middle"},[e.div({className:"JoinRoomView_header middle-header"},[e.a({className:"button-utility close-middle",href:t.closeUrl,title:t.i18n`Cancel room join`}),e.h2("Join room")]),e.div({className:"JoinRoomView_body centered-column"},[e.form({className:"JoinRoomView_detailsForm form",onSubmit:i=>this.onSubmit(i,s.value)},[e.div({className:"vertical-layout"},[e.div({className:"stretch form-row text"},[e.label({for:"id"},t.i18n`Room id`),s])]),e.div({className:"button-row"},[e.button({className:"button-action primary",type:"submit",disabled:i=>i.joinInProgress},t.i18n`Join`)]),e.map(i=>i.status,(i,r)=>r.div({className:"JoinRoomView_status"},[ye(r,{hidden:o=>!o.joinInProgress}),r.span(i)]))])])])}onSubmit(e,t){e.preventDefault(),this.value.join(t)}}class ny extends E{render(e,t){return e.div({className:"CallToastNotificationView"},[e.div({className:"CallToastNotificationView__top"},[e.view(new wt(t,24)),e.span({className:"CallToastNotificationView__name"},s=>s.roomName),e.button({className:"button-action CallToastNotificationView__dismiss-btn",onClick:()=>t.dismiss()})]),e.div({className:"CallToastNotificationView__description"},[e.span(t.i18n`Video call started`)]),e.div({className:"CallToastNotificationView__info"},[e.span({className:"CallToastNotificationView__call-type"},t.i18n`Video`),e.span({className:"CallToastNotificationView__member-count"},s=>s.memberCount)]),e.div({className:"CallToastNotificationView__action"},[e.button({className:"button-action primary",onClick:()=>t.join()},t.i18n`Join`)]),e.if(s=>!!s.errorViewModel,s=>s.div({className:"CallView_error"},s.view(new Vs(t.errorViewModel))))])}}class oy extends E{render(e,t){return e.div({className:"VerificationToastNotificationView"},[e.div({className:"VerificationToastNotificationView__top"},[e.span({className:"VerificationToastNotificationView__title"},t.i18n`Device Verification`),e.button({className:"button-action VerificationToastNotificationView__dismiss-btn",onClick:()=>t.dismiss()})]),e.div({className:"VerificationToastNotificationView__description"},[e.span(t.i18n`Do you want to verify device ${t.otherDeviceId}?`)]),e.div({className:"VerificationToastNotificationView__action"},[e.button({className:"button-action primary destructive",onClick:()=>t.dismiss()},t.i18n`Ignore`),e.button({className:"button-action primary",onClick:()=>t.accept()},t.i18n`Accept`)])])}}function ay(n){switch(n.kind){case"calls":return new ny(n);case"verification":return new oy(n);default:throw new Error(`Cannot find view class for notification kind ${n.kind}`)}}class cy extends E{render(e,t){return e.div({className:"ToastCollectionView"},[e.ifView(s=>!!s.toastViewModels,s=>new os({list:t.toastViewModels,parentProvidesUpdates:!1},i=>ay(i)))])}}class ly extends E{render(e,t){return e.div({className:{SessionView:!0,"middle-shown":s=>!!s.activeMiddleViewModel,"right-shown":s=>!!s.rightPanelViewModel}},[e.view(new cy(t.toastCollectionViewModel)),e.view(new tf(t.sessionStatusViewModel)),e.view(new $g(t.leftPanelViewModel)),e.mapView(s=>s.activeMiddleViewModel,()=>t.roomGridViewModel?new sf(t.roomGridViewModel,Ho):t.settingsViewModel?new hf(t.settingsViewModel):t.createRoomViewModel?new df(t.createRoomViewModel):t.joinRoomViewModel?new ry(t.joinRoomViewModel):t.verificationViewModel?new Fc(t.verificationViewModel):t.currentRoomViewModel?t.currentRoomViewModel.kind==="invite"?new Dc(t.currentRoomViewModel):t.currentRoomViewModel.kind==="room"?new xc(t.currentRoomViewModel,Ho):t.currentRoomViewModel.kind==="roomBeingCreated"?new Nc(t.currentRoomViewModel):new Jg(t.currentRoomViewModel):new ni(s=>s.div({className:"room-placeholder"},s.h2(t.i18n`Choose a room on the left side.`)))),e.mapView(s=>s.lightboxViewModel,s=>s?new Xg(s):null),e.mapView(s=>s.rightPanelViewModel,s=>s?new Tf(s):null)])}}function Bc(n){return "3895512102"?n.a({target:"_blank",href:"https://github.com/vector-im/hydrogen-web/releases/tag/v0.5.1"},`Hydrogen v0.5.1 (${"3895512102"}) on Github`):n.a({target:"_blank",href:"https://github.com/vector-im/hydrogen-web"},"Hydrogen on Github")}class hy extends E{render(e,t){const s=o=>!!o.isBusy,i=e.input({id:"username",type:"text",placeholder:t.i18n`Username`,disabled:s}),r=e.input({id:"password",type:"password",placeholder:t.i18n`Password`,disabled:s});return e.div({className:"PasswordLoginView form"},[e.if(o=>o.error,o=>o.div({className:"error"},c=>c.error)),e.form({onSubmit:o=>{o.preventDefault(),t.login(i.value,r.value)}},[e.if(o=>o.errorMessage,(o,c)=>o.p({className:"error"},c.i18n(c.errorMessage))),e.div({className:"form-row text"},[e.label({for:"username"},t.i18n`Username`),i]),e.div({className:"form-row text"},[e.label({for:"password"},t.i18n`Password`),r]),e.div({className:"button-row"},[e.button({className:"button-action primary",type:"submit",disabled:s},t.i18n`Log In`)])])])}}class dy extends E{render(e,t){return e.div({className:"Settings"},[e.h3(t.i18n`Restore your encrypted history?`),e.ifView(s=>s.decryptDehydratedDeviceViewModel,s=>new Uc(s.decryptDehydratedDeviceViewModel)),e.map(s=>s.deviceDecrypted,(s,i)=>s?i.p(t.i18n`That worked out, you're good to go!`):i.p(t.i18n`This will claim the dehydrated device ${t.dehydratedDeviceId}, and will set up a new one.`)),e.div({className:"button-row"},[e.button({className:"button-action primary",onClick:()=>{t.finish()},type:"button"},s=>s.deviceDecrypted?s.i18n`Continue`:s.i18n`Continue without restoring`)])])}}class Ur extends E{render(e){const t=e.if(i=>i.hasError,(i,r)=>i.button({onClick:()=>r.exportLogs()},r.i18n`Export logs`)),s=e.if(i=>i.hasError,(i,r)=>i.button({onClick:()=>r.logout()},r.i18n`Log out`));return e.div({className:"SessionLoadStatusView"},[e.p({className:"status"},[ye(e,{hidden:i=>!i.loading}),e.p(i=>i.loadLabel),t,s]),e.ifView(i=>i.accountSetupViewModel,i=>new dy(i.accountSetupViewModel))])}}class uy extends E{render(e){return e.div({className:"CompleteSSOView"},[e.p({className:"CompleteSSOView_title"},"Finishing up your SSO Login"),e.if(t=>t.errorMessage,(t,s)=>t.p({className:"error"},s.i18n(s.errorMessage))),e.mapView(t=>t.loadViewModel,t=>t?new Ur(t):null)])}}class my extends E{render(e,t){const s=i=>i.isBusy;return e.div({className:"PreSessionScreen"},[e.button({className:"button-utility LoginView_back",onClick:()=>t.goBack(),disabled:s}),e.div({className:"logo"}),e.h1([t.i18n`Sign In`]),e.mapView(i=>i.completeSSOLoginViewModel,i=>i?new uy(i):null),e.if(i=>i.showHomeserver,(i,r)=>i.div({className:"LoginView_sso form-row text"},[i.label({for:"homeserver"},r.i18n`Homeserver`),i.input({id:"homeserver",type:"text",placeholder:r.i18n`Your matrix homeserver`,value:r.homeserver,disabled:s,onInput:o=>r.setHomeserver(o.target.value),onChange:()=>r.queryHomeserver()}),i.p({className:{LoginView_forwardInfo:!0,hidden:o=>!o.resolvedHomeserver}},o=>o.i18n`You will connect to ${o.resolvedHomeserver}.`),i.if(o=>o.errorMessage,(o,c)=>o.p({className:"error"},c.i18n(c.errorMessage)))])),e.if(i=>i.isFetchingLoginOptions,i=>i.div({className:"LoginView_query-spinner"},[ye(i),i.p("Fetching available login options...")])),e.mapView(i=>i.passwordLoginViewModel,i=>i?new hy(i):null),e.if(i=>i.passwordLoginViewModel&&i.startSSOLoginViewModel,i=>i.p({className:"LoginView_separator"},t.i18n`or`)),e.mapView(i=>i.startSSOLoginViewModel,i=>i?new _y(i):null),e.mapView(i=>i.loadViewModel,i=>i?new Ur(i):null),e.p(Bc(e))])}}class _y extends E{render(e,t){return e.div({className:"StartSSOLoginView"},e.button({className:"StartSSOLoginView_button button-action secondary",type:"button",onClick:()=>t.startSSOLogin(),disabled:s=>s.isBusy},t.i18n`Log in with SSO`))}}class py extends E{render(e,t){const s=new $i(t,r=>r.div([r.p("Are you sure you want to log out?"),r.div({className:"button-row"},[r.a({className:"button-action",type:"submit",href:t.cancelUrl},["Cancel"]),r.button({className:"button-action primary destructive",type:"submit",onClick:()=>t.logout()},t.i18n`Log out`)])])),i=new $i(t,r=>r.p({className:"status",hidden:o=>!o.showStatus},[ye(r,{hidden:o=>!o.busy}),r.span(o=>o.status)]));return e.div({className:"LogoutScreen"},[e.div({className:"content"},[e.mapView(r=>r.showConfirm,r=>r?s:i)])])}}class gy extends E{render(e){return e.div({className:"LogoutScreen"},[e.div({className:"content"},e.map(t=>t.showStatus,(t,s,i)=>t?s.p({className:"status"},[ye(s,{hidden:r=>!r.showSpinner}),s.span(r=>r.status)]):s.div([s.p("Your access token is no longer valid! You can reauthenticate in the next screen."),s.div({className:"button-row"},[s.button({className:"button-action primary",type:"submit",onClick:()=>i.proceed()},i.i18n`Proceed`)])])))])}}class fy extends E{render(e,t){return e.div({className:"PreSessionScreen"},[e.div({className:"logo"}),e.div({className:"SessionLoadView"},[e.view(new Ur(t))]),e.div({className:{"button-row":!0,hidden:s=>s.loading}},e.a({className:"button-action primary",href:t.backUrl},t.i18n`Go back`))])}}class yy extends E{_onDeleteClick(){confirm("Are you sure?")&&this.value.delete()}_onClearClick(){confirm("Are you sure?")&&this.value.clear()}render(e,t){return e.li([e.a({className:"session-info",href:t.openUrl},[e.div({className:`avatar usercolor${t.avatarColorNumber}`},s=>s.avatarInitials),e.div({className:"user-id"},s=>s.label)])])}}class wy extends E{render(e,t){const s=new os({list:t.sessions,parentProvidesUpdates:!1},i=>new yy(i));return e.div({className:"PreSessionScreen"},[e.div({className:"logo"}),e.div({className:"SessionPickerView"},[e.h1(["Continue as \u2026"]),e.view(s),e.div({className:"button-row"},[e.a({className:"button-action primary",href:t.cancelUrl},t.i18n`Sign In`)]),e.ifView(i=>i.loadViewModel,()=>new Ur(t.loadViewModel)),e.p(Bc(e))])])}}class vy extends E{render(e,t){return e.mapView(s=>s.activeSection,s=>{switch(s){case"error":return new ni(i=>i.div({className:"StatusView"},[i.h1("Something went wrong"),i.p(t.errorText)]));case"session":return new ly(t.sessionViewModel);case"login":return new my(t.loginViewModel);case"logout":return new py(t.logoutViewModel);case"forced-logout":return new gy(t.forcedLogoutViewModel);case"picker":return new wy(t.sessionPickerViewModel);case"redirecting":return new ni(i=>i.p("Redirecting..."));case"loading":return new fy(t.sessionLoadViewModel);default:throw new Error(`Unknown section: ${t.activeSection}`)}})}}class by{constructor(e){this._reject=null,this._handle=null,this._promise=new Promise((t,s)=>{this._reject=s,this._handle=setTimeout(()=>{this._reject=null,t()},e)})}elapsed(){return this._promise}abort(){this._reject&&(this._reject(new rt),clearTimeout(this._handle),this._handle=null,this._reject=null)}dispose(){this.abort()}}class Sy{constructor(e,t){this._handle=setInterval(t,e)}dispose(){this._handle&&(clearInterval(this._handle),this._handle=null)}}class ky{constructor(){this._start=window.performance.now()}measure(){return window.performance.now()-this._start}}class Iy{createMeasure(){return new ky}createTimeout(e){return new by(e)}createInterval(e,t){return new Sy(t,e)}now(){return Date.now()}}class My{constructor(e){this._waitingForReply=new Map,this._messageIdCounter=0,this._navigation=null,this._registration=null,this._registrationPromise=null,this._currentController=null,this._sessionInfoStorage=e,this.haltRequests=!1,this._authData={}}setNavigation(e){this._navigation=e}updateAuthData(e){if(!e.accessToken&&!e.homeserver)throw new Error("updateAuthData argument must contain accessToken, homeserver or both!");this._authData=It(It({},this._authData),e)}registerAndStart(e){this._registrationPromise=(async()=>{navigator.serviceWorker.addEventListener("message",this),navigator.serviceWorker.addEventListener("controllerchange",this),this._registration=await navigator.serviceWorker.register(e),await navigator.serviceWorker.ready,this._currentController=navigator.serviceWorker.controller,this._registration.addEventListener("updatefound",this),this._registrationPromise=null,this._registration.waiting&&this._registration.active&&this._proposeUpdate(),console.log("Service Worker registered")})()}async _onMessage(e){const{data:t}=e,s=t.replyTo;if(s){const i=this._waitingForReply.get(s);i&&(this._waitingForReply.delete(s),i(t.payload))}if(t.type==="hasSessionOpen"){const i=this._navigation.observe("session").get()===t.payload.sessionId;e.source.postMessage({replyTo:t.id,payload:i})}else if(t.type==="hasRoomOpen"){const i=this._navigation.observe("session").get()===t.payload.sessionId,r=this._navigation.observe("room").get()===t.payload.roomId;e.source.postMessage({replyTo:t.id,payload:i&&r})}else if(t.type==="closeSession"){const{sessionId:i}=t.payload;this._closeSessionIfNeeded(i).finally(()=>{e.source.postMessage({replyTo:t.id})})}else t.type==="haltRequests"?(this.haltRequests=!0,e.source.postMessage({replyTo:t.id})):t.type==="openRoom"?this._navigation.push("room",t.payload.roomId):t.type==="getAuthInfo"&&e.source.postMessage({replyTo:t.id,payload:this._authData})}_closeSessionIfNeeded(e){var s;const t=(s=this._navigation)==null?void 0:s.path.get("session");return e&&(t==null?void 0:t.value)===e?new Promise(i=>{const r=this._navigation.pathObservable.subscribe(o=>{const c=o.get("session");(!c||c.value!==e)&&(r(),i())});this._navigation.push("session")}):Promise.resolve()}async _proposeUpdate(){if(document.hidden)return;const e=await this._sendAndWaitForReply("version",null,this._registration.waiting);(this.version==="develop"||confirm(`Version ${e.version} (${e.buildHash}) is available. Reload to apply?`))&&(console.log("Service Worker has been updated!"),await this._sendAndWaitForReply("haltRequests"),this._send("skipWaiting",null,this._registration.waiting))}handleEvent(e){switch(e.type){case"message":this._onMessage(e);break;case"updatefound":this._registration.installing.addEventListener("statechange",this);break;case"statechange":{e.target.state==="installed"&&(this._proposeUpdate(),e.target.removeEventListener("statechange",this));break}case"controllerchange":this._currentController?document.location.reload():this._currentController=navigator.serviceWorker.controller;break}}async _send(e,t,s=void 0){this._registrationPromise&&await this._registrationPromise,s||(s=this._registration.active),s.postMessage({type:e,payload:t})}async _sendAndWaitForReply(e,t,s=void 0){this._registrationPromise&&await this._registrationPromise,s||(s=this._registration.active),this._messageIdCounter+=1;const i=this._messageIdCounter,r=new Promise(o=>{this._waitingForReply.set(i,o)});return s.postMessage({type:e,id:i,payload:t}),await r}async checkForUpdate(){this._registrationPromise&&await this._registrationPromise,this._registration.update()}get version(){return"0.5.1"}get buildHash(){return "3895512102"}async preventConcurrentSessionAccess(e){return this._sendAndWaitForReply("closeSession",{sessionId:e})}async getRegistration(){return this._registrationPromise&&await this._registrationPromise,this._registration}}class Cy{constructor(e,t){this._serviceWorkerHandler=e,this._pushConfig=t}async enablePush(e,t){var i;const s=await((i=this._serviceWorkerHandler)==null?void 0:i.getRegistration());if(s!=null&&s.pushManager){const o=(await s.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:this._pushConfig.applicationServerKey})).toJSON(),c=o.keys.p256dh,l={endpoint:o.endpoint,auth:o.keys.auth,events_only:!0,default_payload:t};return e.httpPusher(this._pushConfig.gatewayUrl,this._pushConfig.appId,c,l)}}async disablePush(){var t;const e=await((t=this._serviceWorkerHandler)==null?void 0:t.getRegistration());if(e!=null&&e.pushManager){const s=await e.pushManager.getSubscription();s&&await s.unsubscribe()}}async isPushEnabled(){var t;const e=await((t=this._serviceWorkerHandler)==null?void 0:t.getRegistration());return e!=null&&e.pushManager?!!await e.pushManager.getSubscription():!1}async supportsPush(){var t;if(!this._pushConfig)return!1;const e=await((t=this._serviceWorkerHandler)==null?void 0:t.getRegistration());return e&&"pushManager"in e}async enableNotifications(){return"Notification"in window?await Notification.requestPermission()==="granted":!1}async supportsNotifications(){return"Notification"in window}async areNotificationsEnabled(){return"Notification"in window?Notification.permission==="granted":!1}async showNotification(e,t=void 0){var i;if("Notification"in window){new Notification(e,{body:t});return}const s=await((i=this._serviceWorkerHandler)==null?void 0:i.getRegistration());s==null||s.showNotification(e,{body:t})}}class Ey extends yt{constructor(){super(),this._lastSessionHash=void 0}handleEvent(e){e.type==="hashchange"&&(this.emit(this.get()),this._storeHash(this.get()))}get(){return document.location.search.includes("loginToken")?document.location.search:document.location.hash}replaceUrlSilently(e){window.history.replaceState(null,null,e),this._storeHash(e)}pushUrlSilently(e){window.history.pushState(null,null,e),this._storeHash(e)}pushUrl(e){document.location.hash=e}urlAsPath(e){return e.startsWith("#")?e.substr(1):e}pathAsUrl(e){return`#${e}`}onSubscribeFirst(){var e;this._lastSessionHash=(e=window.localStorage)==null?void 0:e.getItem("hydrogen_last_url_hash"),window.addEventListener("hashchange",this)}onUnsubscribeLast(){window.removeEventListener("hashchange",this)}_storeHash(e){var t;(t=window.localStorage)==null||t.setItem("hydrogen_last_url_hash",e)}getLastSessionUrl(){return this._lastSessionHash}}class Ry extends yt{constructor(){super(),this._onOffline=this._onOffline.bind(this),this._onOnline=this._onOnline.bind(this)}_onOffline(){this.emit(!1)}_onOnline(){this.emit(!0)}get(){return navigator.onLine}onSubscribeFirst(){window.addEventListener("offline",this._onOffline),window.addEventListener("online",this._onOnline)}onUnsubscribeLast(){window.removeEventListener("offline",this._onOffline),window.removeEventListener("online",this._onOnline)}}function Ie(n,e){return n instanceof Promise?n:new Promise((t,s)=>{n.oncomplete=i=>t(i.target.result),n.onerror=()=>s(new Error("Crypto error on "+e))})}class Ty{constructor(e){this._subtleCrypto=e}async verify(e,t,s,i){const r={name:"HMAC",hash:{name:Rs(i)}},o=await Ie(this._subtleCrypto.importKey("raw",e,r,!1,["verify"]),"importKey");return await Ie(this._subtleCrypto.verify(r,o,t,s),"verify")}async compute(e,t,s){const i={name:"HMAC",hash:{name:Rs(s)}},r=await Ie(this._subtleCrypto.importKey("raw",e,i,!1,["sign"]),"importKey"),o=await Ie(this._subtleCrypto.sign(i,r,t),"sign");return new Uint8Array(o)}}class Ay{constructor(e,t,s){this._subtleCrypto=e,this._crypto=t,this._cryptoExtras=s}async pbkdf2(e,t,s,i,r){if(!this._subtleCrypto.deriveBits)throw new Error("PBKDF2 is not supported");const o=await Ie(this._subtleCrypto.importKey("raw",e,{name:"PBKDF2"},!1,["deriveBits"]),"importKey"),c=await Ie(this._subtleCrypto.deriveBits({name:"PBKDF2",salt:s,iterations:t,hash:Rs(i)},o,r),"deriveBits");return new Uint8Array(c)}async hkdf(e,t,s,i,r){if(!this._subtleCrypto.deriveBits)return this._cryptoExtras.hkdf(this._crypto,e,t,s,i,r);const o=await Ie(this._subtleCrypto.importKey("raw",e,{name:"HKDF"},!1,["deriveBits"]),"importKey"),c=await Ie(this._subtleCrypto.deriveBits({name:"HKDF",salt:t,info:s,hash:Rs(i)},o,r),"deriveBits");return new Uint8Array(c)}}class xy{constructor(e,t){this._subtleCrypto=e,this._crypto=t}async decryptCTR({key:e,jwkKey:t,iv:s,data:i,counterLength:r=64}){const o={name:"AES-CTR",counter:s,length:r};let c;try{const l=e||t,h=t?"jwk":"raw";c=await Ie(this._subtleCrypto.importKey(h,l,o,!1,["decrypt"]),"importKey")}catch(l){throw new Error(`Could not import key for AES-CTR decryption: ${l.message}`)}try{const l=await Ie(this._subtleCrypto.decrypt(o,c,i),"decrypt");return new Uint8Array(l)}catch(l){throw new Error(`Could not decrypt with AES-CTR: ${l.message}`)}}async encryptCTR({key:e,jwkKey:t,iv:s,data:i}){const r={name:"AES-CTR",counter:s,length:64};let o;const c=e||t,l=t?"jwk":"raw";try{o=await Ie(this._subtleCrypto.importKey(l,c,r,!1,["encrypt"]),"importKey")}catch(h){throw new Error(`Could not import key for AES-CTR encryption: ${h.message}`)}try{const h=await Ie(this._subtleCrypto.encrypt(r,o,i),"encrypt");return new Uint8Array(h)}catch(h){throw new Error(`Could not encrypt with AES-CTR: ${h.message}`)}}async generateKey(e,t=256){const s=await Ie(this._subtleCrypto.generateKey({name:"AES-CTR",length:t},!0,["encrypt","decrypt"]));return Ie(this._subtleCrypto.exportKey(e,s))}async generateIV(){return $c(this._crypto)}}function $c(n){const e=n.getRandomValues(new Uint8Array(8)),t=new Uint8Array(16);for(let s=0;s{this._resolve=s,this._reject=i}),this._message=e,this._pool=t,this._worker=null}abort(){this._isNotDisposed&&(this._pool._abortRequest(this),this._dispose())}response(){return this._promise}_dispose(){this._reject=null,this._resolve=null}get _isNotDisposed(){return this._resolve&&this._reject}}class Ky{constructor(e,t){this._workers=[];for(let s=0;s{this._init={resolve:t,reject:s}});return this.sendAll({type:"ping"}).then(this._init.resolve,this._init.reject).finally(()=>{this._init=null}),e}handleEvent(e){if(e.type==="message"){const t=e.data,s=this._requests.get(t.replyToId);if(s){if(s._worker.busy=!1,s._isNotDisposed){if(t.type==="success")s._resolve(t.payload);else if(t.type==="error"){const i=new Error(t.message);i.stack=t.stack,s._reject(i)}s._dispose()}this._requests.delete(t.replyToId)}this._sendPending()}else e.type==="error"&&(this._init&&this._init.reject(new Error("worker error during init")),console.error("worker error",e))}_getPendingRequest(){for(const e of this._requests.values())if(!e._worker)return e}_getFreeWorker(){for(const e of this._workers)if(!e.busy)return e}_sendPending(){this._pendingFlag=!1;let e;do{e=!1;const t=this._getPendingRequest();if(t){const s=this._getFreeWorker();s&&(this._sendWith(t,s),e=!0)}}while(e)}_sendWith(e,t){e._worker=t,t.busy=!0,t.worker.postMessage(e._message)}_enqueueRequest(e){this._counter+=1,e.id=this._counter;const t=new Ly(e,this);return this._requests.set(e.id,t),t}send(e){const t=this._enqueueRequest(e),s=this._getFreeWorker();return s&&this._sendWith(t,s),t}sendAll(e){const t=this._workers.map(s=>{const i=this._enqueueRequest(Object.assign({},e));return this._sendWith(i,s),i.response()});return Promise.all(t)}dispose(){for(const e of this._workers)e.detach(this),e.worker.terminate()}_trySendPendingInNextTick(){this._pendingFlag||(this._pendingFlag=!0,Promise.resolve().then(()=>{this._sendPending()}))}_abortRequest(e){e._reject(new rt),e._worker&&(e._worker.busy=!1),this._requests.delete(e._message.id),this._trySendPendingInNextTick()}}class ji{static async fromBlob(e){const t=await zo(e),{width:s,height:i}=t;return new ji(e,s,i,t)}constructor(e,t,s,i){this.blob=e,this.width=t,this.height=s,this._domElement=i}get maxDimension(){return Math.max(this.width,this.height)}async _getDomElement(){return this._domElement||(this._domElement=await zo(this.blob)),this._domElement}async scale(e){const t=this.width/this.height,s=Math.min(1,e/(t>=1?this.width:this.height)),i=Math.round(this.width*s),r=Math.round(this.height*s),o=document.createElement("canvas");o.width=i,o.height=r;const c=o.getContext("2d"),l=await this._getDomElement();c.drawImage(l,0,0,i,r);let h=this.blob.mimeType==="image/jpeg"?"image/jpeg":"image/png",a;if(o.toBlob)a=await new Promise(p=>o.toBlob(p,h));else if(o.msToBlob)h="image/png",a=o.msToBlob();else throw new Error("canvas can't be turned into blob");const u=Ts.fromBlobUnsafe(a);return new ji(u,i,r,null)}dispose(){this.blob.dispose()}}class Bn extends ji{get duration(){if(typeof this._domElement.duration=="number")return Math.round(this._domElement.duration*1e3)}static async fromBlob(e){const t=await $y(e),{videoWidth:s,videoHeight:i}=t;return new Bn(e,s,i,t)}}function By(){const n=document.createElement("canvas");n.width=1,n.height=1;const e=n.getContext("2d"),t=[Math.round(Math.random()*255),Math.round(Math.random()*255),Math.round(Math.random()*255)];e.fillStyle=`rgb(${t[0]}, ${t[1]}, ${t[2]})`,e.fillRect(0,0,1,1);const s=e.getImageData(0,0,1,1).data;return s[0]===t[0]&&s[1]===t[1]&&s[2]===t[2]}async function zo(n){const e=document.createElement("img"),t=Tr(e,"load");return e.src=n.url,await t,e}async function $y(n){const e=document.createElement("video");e.muted=!0;const t=Tr(e,"loadedmetadata");e.src=n.url,e.load(),await t;const s=Tr(e,"seeked");return await new Promise(i=>setTimeout(i,200)),e.currentTime=.1,await s,e}async function jy(n,e,t,s,i){let r=n.querySelector("iframe.downloadSandbox");if(!r){r=document.createElement("iframe"),r.setAttribute("sandbox","allow-scripts allow-downloads allow-downloads-without-user-activation"),r.setAttribute("src",e),r.className="hidden downloadSandbox",n.appendChild(r);let o;await new Promise((c,l)=>{o=()=>{r.removeEventListener("load",c),r.removeEventListener("error",l)},r.addEventListener("load",c),r.addEventListener("error",l)}),o()}if(i){const o=await t.readAsBuffer();r.contentWindow.postMessage({type:"downloadBuffer",buffer:o,mimeType:t.mimeType,filename:s},"*")}else r.contentWindow.postMessage({type:"downloadBlob",blob:t.nativeBlob,filename:s},"*")}/*! @license DOMPurify 2.3.0 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/2.3.0/LICENSE */function qy(n){if(Array.isArray(n)){for(var e=0,t=Array(n.length);e1?t-1:0),i=1;i/gm),rw=Bt(/^data-[\-\w.\u00B7-\uFFFF]/),nw=Bt(/^aria-[\-\w]+$/),ow=Bt(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),aw=Bt(/^(?:\w+script|data):/i),cw=Bt(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),xi=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(n){return typeof n}:function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n};function ut(n){if(Array.isArray(n)){for(var e=0,t=Array(n.length);e0&&arguments[0]!==void 0?arguments[0]:lw(),e=function(y){return qc(y)};if(e.version="2.3.0",e.removed=[],!n||!n.document||n.document.nodeType!==9)return e.isSupported=!1,e;var t=n.document,s=n.document,i=n.DocumentFragment,r=n.HTMLTemplateElement,o=n.Node,c=n.Element,l=n.NodeFilter,h=n.NamedNodeMap,a=h===void 0?n.NamedNodeMap||n.MozNamedAttrMap:h,u=n.Text,p=n.Comment,g=n.DOMParser,f=n.trustedTypes,v=c.prototype,M=mr(v,"cloneNode"),R=mr(v,"nextSibling"),N=mr(v,"childNodes"),F=mr(v,"parentNode");if(typeof r=="function"){var T=s.createElement("template");T.content&&T.content.ownerDocument&&(s=T.content.ownerDocument)}var D=hw(f,t),B=D&&us?D.createHTML(""):"",G=s,$e=G.implementation,Ns=G.createNodeIterator,di=G.createDocumentFragment,as=G.getElementsByTagName,cs=t.importNode,Ds={};try{Ds=zs(s).documentMode?s.documentMode:{}}catch{}var Ue={};e.isSupported=typeof F=="function"&&$e&&typeof $e.createHTMLDocument!="undefined"&&Ds!==9;var Us=sw,U=iw,zi=rw,Ht=nw,Wt=aw,ui=cw,Je=ow,re=null,Os=j({},[].concat(ut(Xo),ut(Wr),ut(zr),ut(Gr),ut(Zo))),ie=null,Ps=j({},[].concat(ut(ea),ut(Yr),ut(ta),ut(_r))),ls=null,hs=null,mi=!0,Fs=!0,_i=!1,vt=!1,zt=!1,Qe=!1,bt=!1,je=!1,ds=!1,we=!0,us=!1,pi=!0,gi=!0,St=!1,at={},Ls=j({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),Xe=null,Gt=j({},["audio","video","img","source","image","track"]),Ks=null,Gi=j({},["alt","class","for","id","label","name","pattern","placeholder","summary","title","value","style","xmlns"]),Bs="http://www.w3.org/1998/Math/MathML",$s="http://www.w3.org/2000/svg",Ze="http://www.w3.org/1999/xhtml",kt=Ze,js=!1,ge=null,ve=s.createElement("form"),Te=function(y){ge&&ge===y||((!y||(typeof y=="undefined"?"undefined":xi(y))!=="object")&&(y={}),y=zs(y),re="ALLOWED_TAGS"in y?j({},y.ALLOWED_TAGS):Os,ie="ALLOWED_ATTR"in y?j({},y.ALLOWED_ATTR):Ps,Ks="ADD_URI_SAFE_ATTR"in y?j(zs(Gi),y.ADD_URI_SAFE_ATTR):Gi,Xe="ADD_DATA_URI_TAGS"in y?j(zs(Gt),y.ADD_DATA_URI_TAGS):Gt,ls="FORBID_TAGS"in y?j({},y.FORBID_TAGS):{},hs="FORBID_ATTR"in y?j({},y.FORBID_ATTR):{},at="USE_PROFILES"in y?y.USE_PROFILES:!1,mi=y.ALLOW_ARIA_ATTR!==!1,Fs=y.ALLOW_DATA_ATTR!==!1,_i=y.ALLOW_UNKNOWN_PROTOCOLS||!1,vt=y.SAFE_FOR_TEMPLATES||!1,zt=y.WHOLE_DOCUMENT||!1,je=y.RETURN_DOM||!1,ds=y.RETURN_DOM_FRAGMENT||!1,we=y.RETURN_DOM_IMPORT!==!1,us=y.RETURN_TRUSTED_TYPE||!1,bt=y.FORCE_BODY||!1,pi=y.SANITIZE_DOM!==!1,gi=y.KEEP_CONTENT!==!1,St=y.IN_PLACE||!1,Je=y.ALLOWED_URI_REGEXP||Je,kt=y.NAMESPACE||Ze,vt&&(Fs=!1),ds&&(je=!0),at&&(re=j({},[].concat(ut(Zo))),ie=[],at.html===!0&&(j(re,Xo),j(ie,ea)),at.svg===!0&&(j(re,Wr),j(ie,Yr),j(ie,_r)),at.svgFilters===!0&&(j(re,zr),j(ie,Yr),j(ie,_r)),at.mathMl===!0&&(j(re,Gr),j(ie,ta),j(ie,_r))),y.ADD_TAGS&&(re===Os&&(re=zs(re)),j(re,y.ADD_TAGS)),y.ADD_ATTR&&(ie===Ps&&(ie=zs(ie)),j(ie,y.ADD_ATTR)),y.ADD_URI_SAFE_ATTR&&j(Ks,y.ADD_URI_SAFE_ATTR),gi&&(re["#text"]=!0),zt&&j(re,["html","head","body"]),re.table&&(j(re,["tbody"]),delete ls.tbody),Ce&&Ce(y),ge=y)},Ae=j({},["mi","mo","mn","ms","mtext"]),ms=j({},["foreignobject","desc","title","annotation-xml"]),qe=j({},Wr);j(qe,zr),j(qe,ew);var He=j({},Gr);j(He,tw);var xe=function(y){var b=F(y);(!b||!b.tagName)&&(b={namespaceURI:Ze,tagName:"template"});var C=vs(y.tagName),O=vs(b.tagName);if(y.namespaceURI===$s)return b.namespaceURI===Ze?C==="svg":b.namespaceURI===Bs?C==="svg"&&(O==="annotation-xml"||Ae[O]):Boolean(qe[C]);if(y.namespaceURI===Bs)return b.namespaceURI===Ze?C==="math":b.namespaceURI===$s?C==="math"&&ms[O]:Boolean(He[C]);if(y.namespaceURI===Ze){if(b.namespaceURI===$s&&!ms[O]||b.namespaceURI===Bs&&!Ae[O])return!1;var oe=j({},["title","style","font","a","script"]);return!He[C]&&(oe[C]||!qe[C])}return!1},Ve=function(y){Mi(e.removed,{element:y});try{y.parentNode.removeChild(y)}catch{try{y.outerHTML=B}catch{y.remove()}}},Yt=function(y,b){try{Mi(e.removed,{attribute:b.getAttributeNode(y),from:b})}catch{Mi(e.removed,{attribute:null,from:b})}if(b.removeAttribute(y),y==="is"&&!ie[y])if(je||ds)try{Ve(b)}catch{}else try{b.setAttribute(y,"")}catch{}},We=function(y){var b=void 0,C=void 0;if(bt)y=""+y;else{var O=Jo(y,/^[\r\n\t ]+/);C=O&&O[0]}var oe=D?D.createHTML(y):y;if(kt===Ze)try{b=new g().parseFromString(oe,"text/html")}catch{}if(!b||!b.documentElement){b=$e.createDocument(kt,"template",null);try{b.documentElement.innerHTML=js?"":oe}catch{}}var he=b.body||b.documentElement;return y&&C&&he.insertBefore(s.createTextNode(C),he.childNodes[0]||null),kt===Ze?as.call(b,zt?"html":"body")[0]:zt?b.documentElement:he},Ne=function(y){return Ns.call(y.ownerDocument||y,y,l.SHOW_ELEMENT|l.SHOW_COMMENT|l.SHOW_TEXT,null,!1)},Z=function(y){return y instanceof u||y instanceof p?!1:typeof y.nodeName!="string"||typeof y.textContent!="string"||typeof y.removeChild!="function"||!(y.attributes instanceof a)||typeof y.removeAttribute!="function"||typeof y.setAttribute!="function"||typeof y.namespaceURI!="string"||typeof y.insertBefore!="function"},Y=function(y){return(typeof o=="undefined"?"undefined":xi(o))==="object"?y instanceof o:y&&(typeof y=="undefined"?"undefined":xi(y))==="object"&&typeof y.nodeType=="number"&&typeof y.nodeName=="string"},le=function(y,b,C){!Ue[y]||Jy(Ue[y],function(O){O.call(e,b,C,ge)})},be=function(y){var b=void 0;if(le("beforeSanitizeElements",y,null),Z(y)||Jo(y.nodeName,/[\u0080-\uFFFF]/))return Ve(y),!0;var C=vs(y.nodeName);if(le("uponSanitizeElement",y,{tagName:C,allowedTags:re}),!Y(y.firstElementChild)&&(!Y(y.content)||!Y(y.content.firstElementChild))&&Qt(/<[/\w]/g,y.innerHTML)&&Qt(/<[/\w]/g,y.textContent))return Ve(y),!0;if(!re[C]||ls[C]){if(gi&&!Ls[C]){var O=F(y)||y.parentNode,oe=N(y)||y.childNodes;if(oe&&O)for(var he=oe.length,d=he-1;d>=0;--d)O.insertBefore(M(oe[d],!0),R(y))}return Ve(y),!0}return y instanceof c&&!xe(y)||(C==="noscript"||C==="noembed")&&Qt(/<\/no(script|embed)/i,y.innerHTML)?(Ve(y),!0):(vt&&y.nodeType===3&&(b=y.textContent,b=Jt(b,Us," "),b=Jt(b,U," "),y.textContent!==b&&(Mi(e.removed,{element:y.cloneNode()}),y.textContent=b)),le("afterSanitizeElements",y,null),!1)},I=function(y,b,C){if(pi&&(b==="id"||b==="name")&&(C in s||C in ve))return!1;if(!(Fs&&!hs[b]&&Qt(zi,b))){if(!(mi&&Qt(Ht,b))){if(!ie[b]||hs[b])return!1;if(!Ks[b]){if(!Qt(Je,Jt(C,ui,""))){if(!((b==="src"||b==="xlink:href"||b==="href")&&y!=="script"&&Qy(C,"data:")===0&&Xe[y])){if(!(_i&&!Qt(Wt,Jt(C,ui,"")))){if(C)return!1}}}}}}return!0},K=function(y){var b=void 0,C=void 0,O=void 0,oe=void 0;le("beforeSanitizeAttributes",y,null);var he=y.attributes;if(!!he){var d={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:ie};for(oe=he.length;oe--;){b=he[oe];var m=b,_=m.name,w=m.namespaceURI;if(C=Xy(b.value),O=vs(_),d.attrName=O,d.attrValue=C,d.keepAttr=!0,d.forceKeepAttr=void 0,le("uponSanitizeAttribute",y,d),C=d.attrValue,!d.forceKeepAttr&&(Yt(_,y),!!d.keepAttr)){if(Qt(/\/>/i,C)){Yt(_,y);continue}vt&&(C=Jt(C,Us," "),C=Jt(C,U," "));var k=y.nodeName.toLowerCase();if(!!I(k,O,C))try{w?y.setAttributeNS(w,_,C):y.setAttribute(_,C),Yo(e.removed)}catch{}}}le("afterSanitizeAttributes",y,null)}},x=function S(y){var b=void 0,C=Ne(y);for(le("beforeSanitizeShadowDOM",y,null);b=C.nextNode();)le("uponSanitizeShadowNode",b,null),!be(b)&&(b.content instanceof i&&S(b.content),K(b));le("afterSanitizeShadowDOM",y,null)};return e.sanitize=function(S,y){var b=void 0,C=void 0,O=void 0,oe=void 0,he=void 0;if(js=!S,js&&(S=""),typeof S!="string"&&!Y(S)){if(typeof S.toString!="function")throw Qo("toString is not a function");if(S=S.toString(),typeof S!="string")throw Qo("dirty is not a string, aborting")}if(!e.isSupported){if(xi(n.toStaticHTML)==="object"||typeof n.toStaticHTML=="function"){if(typeof S=="string")return n.toStaticHTML(S);if(Y(S))return n.toStaticHTML(S.outerHTML)}return S}if(Qe||Te(y),e.removed=[],typeof S=="string"&&(St=!1),!St)if(S instanceof o)b=We(""),C=b.ownerDocument.importNode(S,!0),C.nodeType===1&&C.nodeName==="BODY"||C.nodeName==="HTML"?b=C:b.appendChild(C);else{if(!je&&!vt&&!zt&&S.indexOf("<")===-1)return D&&us?D.createHTML(S):S;if(b=We(S),!b)return je?null:B}b&&bt&&Ve(b.firstChild);for(var d=Ne(St?S:b);O=d.nextNode();)O.nodeType===3&&O===oe||be(O)||(O.content instanceof i&&x(O.content),K(O),oe=O);if(oe=null,St)return S;if(je){if(ds)for(he=di.call(b.ownerDocument);b.firstChild;)he.appendChild(b.firstChild);else he=b;return we&&(he=cs.call(t,he,!0)),he}var m=zt?b.outerHTML:b.innerHTML;return vt&&(m=Jt(m,Us," "),m=Jt(m,U," ")),D&&us?D.createHTML(m):m},e.setConfig=function(S){Te(S),Qe=!0},e.clearConfig=function(){ge=null,Qe=!1},e.isValidAttribute=function(S,y,b){ge||Te({});var C=vs(S),O=vs(y);return I(C,O,b)},e.addHook=function(S,y){typeof y=="function"&&(Ue[S]=Ue[S]||[],Mi(Ue[S],y))},e.removeHook=function(S){Ue[S]&&Yo(Ue[S])},e.removeHooks=function(S){Ue[S]&&(Ue[S]=[])},e.removeAllHooks=function(){Ue={}},e}var dw=qc();class uw{constructor(e){this._bodyNode=e}get rootNodes(){return Array.from(this._bodyNode.childNodes)}getChildNodes(e){return Array.from(e.childNodes)}getAttributeNames(e){return Array.from(e.getAttributeNames())}getAttributeValue(e,t){return e.getAttribute(t)}isTextNode(e){return e.nodeType===Node.TEXT_NODE}getNodeText(e){return e.textContent}isElementNode(e){return e.nodeType===Node.ELEMENT_NODE}getNodeElementName(e){return e.tagName}}const mw={ALLOWED_URI_REGEXP:/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|xxx|mxc):|[^a-z]|[a-z+.-]+(?:[^a-z+.-:]|$))/i,FORBID_TAGS:["mx-reply"],KEEP_CONTENT:!1};function _w(n){const e=dw.sanitize(n,mw),t=new DOMParser().parseFromString(`${e}`,"text/html").body;return new uw(t)}const pw=200,gw=-60,fw=8;class yw{constructor(e){this.mediaDevices=e}enumerate(){return this.mediaDevices.enumerateDevices()}async getMediaTracks(e,t){const s=await this.mediaDevices.getUserMedia(this.getUserMediaContraints(e,t));return s.addEventListener("removetrack",i=>{console.log(`removing track ${i.track.id} (${i.track.kind}) from stream ${s.id}`)}),s}async getScreenShareTrack(){return await this.mediaDevices.getDisplayMedia(this.getScreenshareContraints())}getUserMediaContraints(e,t){const s=!!navigator.webkitGetUserMedia;return{audio:e?{deviceId:typeof e!="boolean"?{ideal:e.deviceId}:void 0}:!1,video:t?{deviceId:typeof t!="boolean"?{ideal:t.deviceId}:void 0,width:s?{exact:640}:{ideal:640},height:s?{exact:360}:{ideal:360}}:!1}}getScreenshareContraints(){return{audio:!1,video:!0}}createVolumeMeasurer(e,t){return new ww(e,t)}}class ww{constructor(e,t){this.measuringVolumeActivity=!1,this.speakingThreshold=gw,this.speaking=!1,this.volumeLooper=()=>{if(!this.analyser||!this.measuringVolumeActivity)return;this.analyser.getFloatFrequencyData(this.frequencyBinCount);let s=-1/0;for(let r=0;rs&&(s=this.frequencyBinCount[r]);this.speakingVolumeSamples.shift(),this.speakingVolumeSamples.push(s),this.callback();let i=!1;for(let r=0;rthis.speakingThreshold){i=!0;break}this.speaking!==i&&(this.speaking=i,this.callback()),this.volumeLooperTimeout=setTimeout(this.volumeLooper,pw)},this.stream=e,this.callback=t,this.speakingVolumeSamples=new Array(fw).fill(-1/0),this.initVolumeMeasuring(),this.measureVolumeActivity(!0)}get isSpeaking(){return this.speaking}measureVolumeActivity(e){if(e){if(!this.audioContext||!this.analyser||!this.frequencyBinCount)return;this.measuringVolumeActivity=!0,this.volumeLooper()}else this.measuringVolumeActivity=!1,this.speakingVolumeSamples.fill(-1/0),this.callback()}initVolumeMeasuring(){const e=window.AudioContext||window.webkitAudioContext;if(!e)return;this.audioContext=new e,this.analyser=this.audioContext.createAnalyser(),this.analyser.fftSize=512,this.analyser.smoothingTimeConstant=.1,this.audioContext.createMediaStreamSource(this.stream).connect(this.analyser),this.frequencyBinCount=new Float32Array(this.analyser.frequencyBinCount)}setSpeakingThreshold(e){this.speakingThreshold=e}stop(){var e;clearTimeout(this.volumeLooperTimeout),this.analyser.disconnect(),(e=this.audioContext)==null||e.close()}}class vw{createPeerConnection(e,t,s){const i=new RTCPeerConnection({iceTransportPolicy:e?"relay":void 0,iceServers:t,iceCandidatePoolSize:s});return new Proxy(i,{get(r,o,c){o==="close"&&console.trace("calling peerConnection.close");const l=r[o];return typeof l=="function"?l.bind(r):l}})}prepareSenderForPurpose(e,t,s){s===Zt.Screenshare&&this.getRidOfRTXCodecs(e,t)}getRidOfRTXCodecs(e,t){var c,l,h,a,u,p;if(!RTCRtpReceiver.getCapabilities||!RTCRtpSender.getCapabilities)return;const s=(l=(c=RTCRtpReceiver.getCapabilities("video"))==null?void 0:c.codecs)!=null?l:[],r=[...(a=(h=RTCRtpSender.getCapabilities("video"))==null?void 0:h.codecs)!=null?a:[],...s];for(const g of r)if(g.mimeType==="video/rtx"){const f=r.indexOf(g);r.splice(f,1)}const o=e.getTransceivers().find(g=>g.sender===t);o&&(((u=o.sender.track)==null?void 0:u.kind)==="video"||((p=o.receiver.track)==null?void 0:p.kind)==="video")&&o.setCodecPreferences(r)}}var es=(n=>(n[n.Dark=0]="Dark",n[n.Light=1]="Light",n))(es||{});function bw(n,e,t){let s=n.replaceAll("#ff00ff",e);if(s=s.replaceAll("#00ffff",t),n===s)throw new Error("svg-colorizer made no color replacements! The input svg should only contain colors #ff00ff (primary, case-sensitive) and #00ffff (secondary, case-sensitive).");return s}class Sw{constructor(e,t,s,i){this._platform=e,this._iconVariables=t,this._resolvedVariables=s,this._manifestLocation=i}async toVariables(){const{parsedStructure:e,promises:t}=await this._fetchAndParseIcons();return await Promise.all(t),this._produceColoredIconVariables(e)}async _fetchAndParseIcons(){const e=[],t={};for(const[s,i]of Object.entries(this._iconVariables)){const r=new URL(`https://${i}`),o=r.hostname,c=new URL(o,new URL(this._manifestLocation,window.location.origin)),l=this._platform.request(c,{method:"GET",format:"text",cache:!0}).response();e.push(l);const h=r.searchParams;t[s]={svg:l,primary:h.get("primary"),secondary:h.get("secondary")}}return{parsedStructure:t,promises:e}}async _produceColoredIconVariables(e){let t={};for(const[s,{svg:i,primary:r,secondary:o}]of Object.entries(e)){const{body:c}=await i;if(!r)throw new Error(`Primary color variable ${r} not in list of variables!`);const l=this._resolvedVariables[r],h=this._resolvedVariables[o],a=bw(c,l,h),u=`url('data:image/svg+xml;utf8,${encodeURIComponent(a)}')`;t[s]=u}return t}}var Or={exports:{}},kw=function(n){var e={};function t(s){if(e[s])return e[s].exports;var i=e[s]={i:s,l:!1,exports:{}};return n[s].call(i.exports,i,i.exports,t),i.l=!0,i.exports}return t.m=n,t.c=e,t.d=function(s,i,r){t.o(s,i)||Object.defineProperty(s,i,{enumerable:!0,get:r})},t.r=function(s){typeof Symbol!="undefined"&&Symbol.toStringTag&&Object.defineProperty(s,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(s,"__esModule",{value:!0})},t.t=function(s,i){if(1&i&&(s=t(s)),8&i||4&i&&typeof s=="object"&&s&&s.__esModule)return s;var r=Object.create(null);if(t.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:s}),2&i&&typeof s!="string")for(var o in s)t.d(r,o,function(c){return s[c]}.bind(null,o));return r},t.n=function(s){var i=s&&s.__esModule?function(){return s.default}:function(){return s};return t.d(i,"a",i),i},t.o=function(s,i){return Object.prototype.hasOwnProperty.call(s,i)},t.p="",t(t.s=0)}([function(n,e,t){function s(h){let a,u;const p={light:function(){return!f()},dark:f,lighten:R,darken:M,saturate:N,desaturate:function(T=0){return N(T*=-1)},increaseContrast:function(T=0){return F(T*=-1)},decreaseContrast:F,active:function(){return F(.123)},highlight:function(){return F(.1)},selected:function(){return F(.066)},text:function(){return u=v()?i("#333333"):i("#FFFFFF"),p},shadow:function(){return u=v()?i("#000000"):i("#FFFFFF"),p},hex:function(){const T=u;return u=a,"#"+T.map(D=>parseInt(D+"",10).toString(16).padStart(2,"0")).join("")},rgb:function(){const T=u;return u=a,`rgb(${T.join()})`},rgba:function(T=1){const D=u;return u=a,`rgba(${D.join()}, ${T})`},setHex:g,setRgb:function(T=[0,0,0]){let[D,B,G]=T;return D=l(D,0,255),B=l(B,0,255),G=l(G,0,255),a=[D,B,G],u=[D,B,G],p}};function g(T="#000000"){return a=i(T),u=a,p}function f(){const[T,D,B]=u;return u=a,(299*T+587*D+114*B)/1e3<128}function v(){const[T,D,B]=u;return(299*T+587*D+114*B)/1e3>=128}function M(T=0){return R(T*=-1)}function R(T=0){let[D,B,G]=c(u);return G=l(G+T,0,1),u=r([D,B,G]),p}function N(T=0){let[D,B,G]=c(u);return B=l(B+T,0,1),u=r([D,B,G]),p}function F(T=0){return v()?M(T):R(T)}return g(h),p}function i(h){if(typeof h!="string")throw new TypeError("Expected a string");(h=h.replace(/^#/,"")).length===3&&(h=h[0]+h[0]+h[1]+h[1]+h[2]+h[2]);var a=parseInt(h,16);return[a>>16,a>>8&255,255&a]}function r(h){const[a,u,p]=h;let g,f,v;if(u===0)g=f=v=p;else{const M=function(F,T,D){return D<0&&(D+=1),D>1&&(D-=1),D<.16666666666666666?F+6*(T-F)*D:D<.5?T:D<.6666666666666666?F+(T-F)*(.6666666666666666-D)*6:F},R=p<.5?p*(1+u):p+u-p*u,N=2*p-R;g=l(M(N,R,a+1/3),0,1),f=l(M(N,R,a),0,1),v=l(M(N,R,a-1/3),0,1)}return[Math.round(255*g),Math.round(255*f),Math.round(255*v)]}t.r(e),t.d(e,"offColor",function(){return s}),t.d(e,"hexRgb",function(){return i}),t.d(e,"hslToRgb",function(){return r}),t.d(e,"color",function(){return o}),t.d(e,"rgbToHsl",function(){return c});const o=s;function c(h){const a=h[0]/255,u=h[1]/255,p=h[2]/255,g=Math.max(a,u,p),f=Math.min(a,u,p);let v=(g+f)/2,M=(g+f)/2;const R=(g+f)/2;if(g===f)v=M=0;else{const N=g-f;switch(M=R>.5?N/(2-g-f):N/(g+f),g){case a:v=(u-p)/N+(u=a?h:a}}]);Or.exports=kw;var Hc=Or.exports,ra;const Jr=(ra=Or.exports.offColor)!=null?ra:Hc.offColor;function sa(n,e,t,s){const i=parseInt(t);switch(s&&(e==="darker"?e="lighter":e==="lighter"&&(e="darker")),e){case"darker":return Jr(n).darken(i/100).hex();case"lighter":return Jr(n).lighten(i/100).hex();case"alpha":return Jr(n).rgba(i/100)}}class Iw{constructor(e,t,s){this._aliases={},this._derivedAliases=[],this._baseVariables=e,this._variablesToDerive=t,this._isDark=s}toVariables(){var t;const e={};this._detectAliases();for(const s of this._variablesToDerive){const i=this._derive(s);i&&(e[s]=i)}for(const[s,i]of Object.entries(this._aliases))e[s]=(t=this._baseVariables[i])!=null?t:e[i];for(const s of this._derivedAliases){const i=this._deriveAlias(s,e);i&&(e[s]=i)}return e}_detectAliases(){const e=[];for(const t of this._variablesToDerive){const[s,i]=t.split("=");i?this._aliases[s]=i:e.push(t)}this._variablesToDerive=e}_derive(e){const t=/(.+)--(.+)-(.+)/,s=e.match(t);if(s){const[,i,r,o]=s,c=this._baseVariables[i];if(!c)if(this._aliases[i]){this._derivedAliases.push(e);return}else throw new Error(`Cannot find value for base variable "${i}"!`);return sa(c,r,o,this._isDark)}}_deriveAlias(e,t){const s=/(.+)--(.+)-(.+)/,i=e.match(s);if(i){const[,r,o,c]=i,l=t[r];if(!l)throw new Error(`Cannot find value for alias "${r}" when trying to derive ${e}!`);return sa(l,o,c,this._isDark)}}}var na;(na=Or.exports.offColor)!=null||Hc.offColor;class Mw{constructor(e,t){this._themeMapping={},this._preferredColorScheme=t,this._platform=e}async parse(e,t,s,i){await i.wrap("RuntimeThemeParser.parse",async()=>{var u;const{cssLocation:r,derivedVariables:o,icons:c}=this._getSourceData(t,s,i),l=e.name;if(!l)throw new Error("Theme name not found in manifest!");let h={},a={};for(const[p,g]of Object.entries((u=e.values)==null?void 0:u.variants))try{const f=`${e.id}-${p}`,{name:v,default:M,dark:R,variables:N}=g,F=new Iw(N,o,R).toVariables();Object.assign(N,F);const T=await new Sw(this._platform,c,N,s).toVariables();Object.assign(N,F,T);const D=`${l} ${v}`;if(M){Object.assign(R?h:a,{variantName:v,id:f,cssLocation:r,variables:N});continue}this._themeMapping[D]={cssLocation:r,id:f,variables:N}}catch(f){console.error(f);continue}if(h.id&&a.id){const p=this._preferredColorScheme===es.Dark?h:a;this._themeMapping[l]={dark:h,light:a,default:p}}else{const p=h.id?h:a;this._themeMapping[`${l} ${p.variantName}`]={id:p.id,cssLocation:p.cssLocation}}})}_getSourceData(e,t,s){return s.wrap("getSourceData",()=>{var l,h,a;const i=(l=e.source)==null?void 0:l["runtime-asset"];if(!i)throw new Error(`Run-time asset not found in source section for theme at ${t}`);const r=new URL(i,new URL(t,window.location.origin)).href,o=(h=e.source)==null?void 0:h["derived-variables"];if(!o)throw new Error(`Derived variables not found in source section for theme at ${t}`);const c=(a=e.source)==null?void 0:a.icon;if(!c)throw new Error(`Icon mapping not found in source section for theme at ${t}`);return{cssLocation:r,derivedVariables:o,icons:c}})}get themeMapping(){return this._themeMapping}}class Cw{constructor(e){this._themeMapping={},this._preferredColorScheme=e}parse(e,t,s){s.wrap("BuiltThemeParser.parse",()=>{var l,h,a;const i=(l=e.source)==null?void 0:l["built-assets"],r=e.name;if(!r)throw new Error(`Theme name not found in manifest at ${t}`);let o={},c={};for(let[u,p]of Object.entries(i)){try{p=new URL(p,new URL(t,window.location.origin)).href}catch{continue}const g=(h=u.match(/.+-(.+)/))==null?void 0:h[1],f=(a=e.values)==null?void 0:a.variants[g];if(!f)throw new Error(`Variant ${g} is missing in manifest at ${t}`);const{name:v,default:M,dark:R}=f,N=`${r} ${v}`;if(M){const F=R?o:c;F.variantName=v,F.id=u,F.cssLocation=p;continue}this._themeMapping[N]={cssLocation:p,id:u}}if(o.id&&c.id){const u=this._preferredColorScheme===es.Dark?o:c;this._themeMapping[r]={dark:o,light:c,default:u}}else{const u=o.id?o:c;this._themeMapping[`${r} ${u.variantName}`]={id:u.id,cssLocation:u.cssLocation}}})}get themeMapping(){return this._themeMapping}}class Ew{constructor(e){this._platform=e}async init(e,t){await this._platform.logger.wrapOrRun(t,"ThemeLoader.init",async s=>{let i=!0;const r=[],o=[],c=await Promise.all(e.map(u=>this._platform.request(u,{method:"GET",format:"json",cache:!0}).response())),l=new Mw(this._platform,this.preferredColorScheme),h=new Cw(this.preferredColorScheme),a=[];for(let u=0;u=200&&g<=299)){console.error(`Failed to load manifest at ${e[u]}, status: ${g}`),s.log({l:"Manifest fetch failed",location:e[u],status:g},Ge.Error),r.push(e[u]);continue}i=!1;try{if(f.extends){const v=c.findIndex(F=>"value"in F&&F.value.body.id===f.extends);if(v===-1)throw new Error(`Base manifest for derived theme at ${e[u]} not found!`);const{body:M}=c[v].value,R=e[v],N=l.parse(f,M,R,s);a.push(N)}else h.parse(f,e[u],s)}catch(v){console.error(v),o.push(v.message)}}if(await Promise.all(a),this._themeMapping=It(It({},h.themeMapping),l.themeMapping),i)throw new Error(`All configured theme manifests failed to load, the following were tried: ${r.join(", ")}`);if(Object.keys(this._themeMapping).length===0&&o.length)throw new Error(`Failed to parse theme manifests, the following errors were encountered: ${o.join(", ")}`);this._addDefaultThemeToMapping(s),s.log({l:"Preferred colorscheme",scheme:this.preferredColorScheme===es.Dark?"dark":"light"}),s.log({l:"Result",themeMapping:this._themeMapping})})}async setTheme(e,t,s){await this._platform.logger.wrapOrRun(s,{l:"change theme",name:e,variant:t},async i=>{let r,o,c=this._themeMapping[e];if("id"in c)r=c.cssLocation,o=c.variables;else{if(!t)throw new Error("themeVariant is undefined!");r=c[t].cssLocation,o=c[t].variables}await this._platform.replaceStylesheet(r,i),o?(s==null||s.log({l:"Derived Theme",variables:o}),this._injectCSSVariables(o)):this._removePreviousCSSVariables(),this._platform.settingsStorage.setString("theme-name",e),t?this._platform.settingsStorage.setString("theme-variant",t):this._platform.settingsStorage.remove("theme-variant")})}_injectCSSVariables(e){const t=document.documentElement;for(const[s,i]of Object.entries(e))t.style.setProperty(`--${s}`,i);this._injectedVariables=e}_removePreviousCSSVariables(){if(!this._injectedVariables)return;const e=document.documentElement;for(const t of Object.keys(this._injectedVariables))e.style.removeProperty(`--${t}`);this._injectedVariables=void 0}get themeMapping(){return this._themeMapping}async getActiveTheme(){let e=await this._platform.settingsStorage.getString("theme-name"),t=await this._platform.settingsStorage.getString("theme-variant");return(!e||!this._themeMapping[e])&&(e="Default"in this._themeMapping?"Default":Object.keys(this._themeMapping)[0],this._themeMapping[e][t]||(t="default"in this._themeMapping[e]?"default":void 0)),{themeName:e,themeVariant:t}}getDefaultTheme(){var e,t;switch(this.preferredColorScheme){case es.Dark:return(e=this._platform.config.defaultTheme)==null?void 0:e.dark;case es.Light:return(t=this._platform.config.defaultTheme)==null?void 0:t.light}}_findThemeDetailsFromId(e){var t,s;for(const[i,r]of Object.entries(this._themeMapping)){if("id"in r&&r.id===e)return{themeName:i,themeData:r};if("light"in r&&((t=r.light)==null?void 0:t.id)===e)return{themeName:i,themeData:r.light};if("dark"in r&&((s=r.dark)==null?void 0:s.id)===e)return{themeName:i,themeData:r.dark}}}_addDefaultThemeToMapping(e){e.wrap("addDefaultThemeToMapping",t=>{const s=this.getDefaultTheme();if(s){const i=this._findThemeDetailsFromId(s);if(i){this._themeMapping.Default={id:"default",cssLocation:i.themeData.cssLocation};const r=i.themeData.variables;r&&(this._themeMapping.Default.variables=r)}}t.log({l:"Default Theme",theme:s})})}get preferredColorScheme(){if(window.matchMedia("(prefers-color-scheme: dark)").matches)return es.Dark;if(window.matchMedia("(prefers-color-scheme: light)").matches)return es.Light}}var Wc=(n=>(n[n.Minute=6e4]="Minute",n[n.Hours=36e5]="Hours",n[n.Day=864e5]="Day",n))(Wc||{});function Rw(n){let e=0,t=0,s=0;n>=864e5&&(e=Math.floor(n/864e5),n-=e*864e5),n>=36e5&&(t=Math.floor(n/36e5),n-=t*36e5),n>=6e4&&(s=Math.floor(n/6e4),n-=s*6e4);const i=Math.floor(n/1e3);let r="";return e&&(r=`${e}d `),(t||e)&&(r+=`${t}h `),(s||t||e)&&(r+=`${s}m `),r+=`${i}s`,r}class Tw{constructor(e){this.clock=e,this.todayMidnight=new Date,this.todayMidnight.setHours(0,0,0,0),this.relativeDayFormatter=new Intl.RelativeTimeFormat(void 0,{numeric:"auto"}),this.weekdayFormatter=new Intl.DateTimeFormat(void 0,{weekday:"long"}),this.currentYearFormatter=new Intl.DateTimeFormat(void 0,{weekday:"long",month:"long",day:"numeric"}),this.otherYearFormatter=new Intl.DateTimeFormat(void 0,{weekday:"long",year:"numeric",month:"long",day:"numeric"}),this.timeFormatter=new Intl.DateTimeFormat(void 0,{hour:"numeric",minute:"2-digit"})}formatTime(e){return this.timeFormatter.format(e)}formatMachineReadableDate(e){return`${e.getFullYear()}-${e.getMonth()+1}-${e.getDate()}`}formatRelativeDate(e){let t=Math.floor((e.getTime()-this.todayMidnight.getTime())/Wc.Day);return t>=-1&&t<=1?Aw(this.relativeDayFormatter.format(t,"day")):t>-7&&t<0?this.weekdayFormatter.format(e):this.todayMidnight.getFullYear()===e.getFullYear()?this.currentYearFormatter.format(e):this.otherYearFormatter.format(e)}formatDuration(e){return Rw(e)}}function Aw(n){return n.slice(0,1).toLocaleUpperCase()+n.slice(1)}function ia(n){return new Promise(function(e,t){var s=document.createElement("script");s.setAttribute("src",n),s.onload=e,s.onerror=t,document.body.appendChild(s)})}async function xw(n){return window.msCrypto&&!window.crypto&&(window.crypto=window.msCrypto),n?(window.WebAssembly?(await ia(n.wasmBundle),await window.Olm.init({locateFile:()=>n.wasm})):(await ia(n.legacyBundle),await window.Olm.init()),window.Olm):null}function Vw(n){return n.startsWith("/")?n:new URL(n,document.location.href).pathname}async function Nw(n){const e=new Ky(n.worker,4);return await e.init(),await e.sendAll({type:"load_olm",path:Vw(n.olm.legacyBundle)}),new kg(e)}function Dw(n){if(!window.visualViewport)return;const e=()=>{const t=n.querySelector(".SessionView");if(!t)return;const s=n.querySelector(".bottom-aligned-scroll");let i,r,o;s&&(i=s.scrollTop,r=s.offsetHeight);const c=t.offsetTop+t.offsetHeight-window.visualViewport.height;n.style.setProperty("--ios-viewport-height",window.visualViewport.height.toString()+"px"),n.style.setProperty("--ios-viewport-top",c.toString()+"px"),s&&(o=s.offsetHeight,s.scrollTop=i+r-o)};return window.visualViewport.addEventListener("resize",e),()=>{window.visualViewport.removeEventListener("resize",e)}}class Uw{constructor({container:e,assetPaths:t,config:s,configURL:i,logger:r,options:o=null,cryptoExtras:c=null}){this._container=e,this._assetPaths=t,this._config=s,this._configURL=i,this.settingsStorage=new ug("hydrogen_setting_v1_"),this.clock=new Iy,this.encoding=new Sg,this.random=Math.random,this.logger=r!=null?r:this._createLogger(o==null?void 0:o.development),this.history=new Ey,this.onlineStatus=new Ry,this.timeFormatter=new Tw,this._serviceWorkerHandler=null,this.sessionInfoStorage=new dg("hydrogen_sessions_v1"),t.serviceWorker&&"serviceWorker"in navigator&&(this._serviceWorkerHandler=new My(this.sessionInfoStorage),this._serviceWorkerHandler.registerAndStart(t.serviceWorker)),this.notificationService=void 0,this._assetPaths.olm&&(this.crypto=new Oy(c)),this.storageFactory=new zd(this._serviceWorkerHandler),this.estimateStorageUsage=Py,typeof fetch=="function"?this.request=hg(this.clock.createTimeout,this._serviceWorkerHandler):this.request=bc;const l=!!window.MSInputMethodContext&&!!document.documentMode;this.isIE11=l;const h=/iPad|iPhone|iPod/.test(navigator.platform)||navigator.platform==="MacIntel"&&navigator.maxTouchPoints>1&&!window.MSStream;this.isIOS=h,this._disposables=new li,this._olmPromise=void 0,this._workerPromise=void 0,this.mediaDevices=new yw(navigator.mediaDevices),this.webRTC=new vw,this._themeLoader=new Ew(this)}async init(){try{await this.logger.run("Platform init",async e=>{var t;if(!this._config){if(!this._configURL)throw new Error("Neither config nor configURL was provided!");const{status:s,body:i}=await this.request(this._configURL,{method:"GET",format:"json",cache:!0}).response();if(s===404)throw new Error(`Could not find ${this._configURL}. Did you copy over config.sample.json?`);if(s>=400)throw new Error(`Got status ${s} while trying to fetch ${this._configURL}`);this._config=i}if(this.notificationService=new Cy(this._serviceWorkerHandler,this._config.push),this._themeLoader){const s=this.config.themeManifests;await((t=this._themeLoader)==null?void 0:t.init(s,e));const{themeName:i,themeVariant:r}=await this._themeLoader.getActiveTheme();e.log({l:"Active theme",name:i,variant:r}),await this._themeLoader.setTheme(i,r,e)}})}catch(e){throw this._container.innerText=e.message,e}}_createLogger(e){const t=new Ag({platform:this}),s=r=>{var o;return(o=r.e)!=null&&o.stack&&(r.e.stack=r.e.stack.replace(/\/\?loginToken=(.+)/,"?loginToken=")),r},i=new Ig({name:"hydrogen_logs",platform:this,serializedTransformer:s});return t.addReporter(i),e&&t.addReporter(new Cg),t}get updateService(){return this._serviceWorkerHandler}loadOlm(){return this._olmPromise||(this._olmPromise=xw(this._assetPaths.olm)),this._olmPromise}get config(){return this._config}async loadOlmWorker(){if(!window.WebAssembly)return this._workerPromise||(this._workerPromise=Nw(this._assetPaths)),this._workerPromise}createAndMountRootView(e){if(this.isIE11&&(this._container.className+=" legacy"),this.isIOS){this._container.className+=" ios";const s=Dw(this._container);s&&this._disposables.track(s)}this._container.addEventListener("error",$o,!0),this._disposables.track(()=>this._container.removeEventListener("error",$o,!0)),window.__hydrogenViewModel=e;const t=new vy(e);this._container.appendChild(t.mount())}setNavigation(e){var t;(t=this._serviceWorkerHandler)==null||t.setNavigation(e)}createBlob(e,t){return Ts.fromBuffer(e,t)}saveFileAs(e,t){navigator.msSaveBlob?navigator.msSaveBlob(e.nativeBlob,t):jy(this._container,this._assetPaths.downloadSandbox,e,t,this.isIOS)}async copyPlaintext(e){return await jf(e)}restart(){document.location.reload()}openFile(e=null){const t=document.createElement("input");t.setAttribute("type","file"),t.className="hidden",e&&t.setAttribute("accept",e);const s=new Promise(i=>{const r=()=>{t.removeEventListener("change",r,!0);const o=t.files[0];this._container.removeChild(t),o?i({name:o.name,blob:Ts.fromBlobUnsafe(o)}):i()};t.addEventListener("change",r,!0)});return this._container.appendChild(t),t.click(),s}openUrl(e){location.href=e}parseHTML(e){return _w(e)}async loadImage(e){return ji.fromBlob(e)}async loadVideo(e){return Bn.fromBlob(e)}hasReadPixelPermission(){return By()}get devicePixelRatio(){return window.devicePixelRatio||1}get version(){return"0.5.1"}get themeLoader(){return this._themeLoader}async replaceStylesheet(e,t){const s=await this.logger.wrapOrRun(t,{l:"replaceStylesheet",location:e},async i=>{let r;const o=document.querySelector("head");document.querySelectorAll(".theme").forEach(h=>h.remove());const c=document.createElement("link");c.href=e,c.rel="stylesheet",c.type="text/css",c.className="theme";const l=new Promise(h=>{c.onerror=()=>{r=new Error(`Failed to load stylesheet from ${e}`),i.catch(r),h()},c.onload=()=>{h()}});return o.appendChild(c),await l,r});if(s)throw s}get description(){var e;return"web-"+((e=navigator.userAgent)!=null?e:"")}dispose(){this._disposables.dispose()}}var Ow="./config.json",Pw="./assets/download-sandbox.48a866e9.html",Fw="./assets/main.bdb9a925.js",Lw="./assets/olm.3fc8dbfe.wasm",Kw="./assets/olm.cf9a793b.js",Bw="./assets/olm_legacy.bc22f405.js",zc={downloadSandbox:Pw,worker:Fw,olm:{wasm:Lw,legacyBundle:Bw,wasmBundle:Kw}};zc.serviceWorker="sw.js";const $w=new Uw({container:document.body,assetPaths:zc,configURL:Ow,options:{development:!1}});ng($w); +//# sourceMappingURL=index.e65aa065.js.map diff --git a/hydrogen/assets/index.e65aa065.js.map b/hydrogen/assets/index.e65aa065.js.map new file mode 100644 index 0000000..dc31a12 --- /dev/null +++ b/hydrogen/assets/index.e65aa065.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.e65aa065.js","sources":["../../src/utils/enum.ts","../../src/matrix/well-known.js","../../src/utils/EventEmitter.ts","../../src/utils/AbortableOperation.ts","../../src/utils/error.ts","../../src/observable/BaseObservable.ts","../../src/observable/value/BaseObservableValue.ts","../../src/observable/value/EventObservableValue.ts","../../src/observable/value/ObservableValue.ts","../../src/observable/value/FlatMapObservableValue.ts","../../src/observable/value/PickMapObservableValue.ts","../../src/observable/value/RetainedObservableValue.ts","../../src/observable/list/BaseObservableList.ts","../../src/utils/sortedIndex.ts","../../src/observable/list/ObservableArray.ts","../../src/observable/list/common.ts","../../src/observable/list/SortedArray.ts","../../src/observable/list/BaseMappedList.ts","../../src/observable/list/AsyncMappedList.ts","../../src/observable/list/ConcatList.ts","../../src/observable/list/SortedMapList.js","../../src/observable/map/BaseObservableMap.ts","../../src/observable/map/ApplyMap.ts","../../src/observable/map/FilteredMap.ts","../../src/observable/map/JoinedMap.ts","../../src/observable/map/MappedMap.ts","../../src/observable/map/ObservableMap.ts","../../src/observable/map/ObservableValueMap.ts","../../src/observable/value/MapSizeObservableValue.ts","../../src/platform/web/dom/BlobHandle.js","../../src/matrix/net/common.ts","../../src/matrix/error.js","../../src/matrix/net/HomeServerRequest.ts","../../src/matrix/net/HomeServerApi.ts","../../src/matrix/net/ExponentialRetryDelay.ts","../../src/matrix/net/Reconnector.ts","../../src/matrix/e2ee/attachment.js","../../src/matrix/net/MediaRepository.ts","../../src/matrix/net/RequestScheduler.ts","../../src/matrix/Sync.js","../../node_modules/another-json/another-json.js","../../src/matrix/e2ee/common.ts","../../src/matrix/room/common.ts","../../src/matrix/room/RoomSummary.js","../../src/matrix/storage/common.ts","../../src/matrix/room/timeline/EventKey.ts","../../src/matrix/room/timeline/entries/BaseEntry.ts","../../src/matrix/room/timeline/relations.js","../../src/matrix/room/timeline/PendingAnnotation.js","../../src/matrix/room/timeline/entries/reply.js","../../src/matrix/room/timeline/entries/BaseEventEntry.js","../../src/matrix/room/timeline/entries/PendingEventEntry.js","../../src/utils/Deferred.ts","../../src/matrix/room/sending/PendingEvent.js","../../src/matrix/room/timeline/entries/EventEntry.js","../../src/matrix/room/timeline/persistence/common.js","../../src/matrix/room/members/RoomMember.js","../../src/matrix/room/timeline/common.js","../../src/matrix/room/timeline/FragmentIdComparer.js","../../vite/preload-helper","../../src/matrix/storage/idb/error.ts","../../src/matrix/storage/idb/utils.ts","../../src/matrix/storage/idb/QueryTarget.ts","../../src/matrix/storage/idb/Store.ts","../../src/utils/typedJSON.ts","../../src/matrix/storage/idb/stores/SessionStore.ts","../../src/matrix/storage/idb/stores/RoomSummaryStore.ts","../../src/matrix/storage/idb/stores/InviteStore.ts","../../src/logging/LogFilter.ts","../../src/logging/NullLogger.ts","../../src/matrix/storage/idb/stores/TimelineEventStore.ts","../../src/matrix/storage/idb/stores/common.ts","../../src/matrix/storage/idb/stores/TimelineRelationStore.ts","../../src/matrix/storage/idb/stores/RoomStateStore.ts","../../src/matrix/storage/idb/stores/RoomMemberStore.ts","../../src/matrix/storage/idb/stores/TimelineFragmentStore.ts","../../src/matrix/storage/idb/stores/PendingEventStore.ts","../../src/matrix/storage/idb/stores/UserIdentityStore.ts","../../src/matrix/storage/idb/stores/DeviceKeyStore.ts","../../src/matrix/storage/idb/stores/CrossSigningKeyStore.ts","../../src/matrix/storage/idb/stores/OlmSessionStore.ts","../../src/matrix/storage/idb/stores/InboundGroupSessionStore.ts","../../src/matrix/storage/idb/stores/OutboundGroupSessionStore.ts","../../src/matrix/storage/idb/stores/GroupSessionDecryptionStore.ts","../../src/matrix/storage/idb/stores/OperationStore.ts","../../src/matrix/storage/idb/stores/AccountDataStore.ts","../../src/matrix/storage/idb/stores/CallStore.ts","../../src/matrix/storage/idb/stores/SharedSecretStore.ts","../../src/matrix/storage/idb/Transaction.ts","../../src/matrix/storage/idb/Storage.ts","../../src/matrix/storage/idb/export.ts","../../src/matrix/verification/common.ts","../../src/matrix/verification/SAS/stages/BaseSASVerificationStage.ts","../../src/matrix/verification/SAS/channel/types.ts","../../src/matrix/verification/SAS/stages/constants.ts","../../src/matrix/verification/SAS/generator.ts","../../src/matrix/verification/SAS/mac.ts","../../src/matrix/verification/SAS/stages/SendDoneStage.ts","../../src/matrix/verification/SAS/stages/VerifyMacStage.ts","../../src/matrix/verification/SAS/stages/SendMacStage.ts","../../src/matrix/verification/SAS/VerificationCancelledError.ts","../../src/matrix/verification/SAS/stages/CalculateSASStage.ts","../../src/matrix/verification/SAS/stages/SendKeyStage.ts","../../src/matrix/verification/SAS/stages/SendAcceptVerificationStage.ts","../../src/matrix/verification/SAS/stages/SelectVerificationMethodStage.ts","../../src/matrix/verification/SAS/stages/SendRequestVerificationStage.ts","../../src/matrix/verification/SAS/stages/SendReadyStage.ts","../../__vite-browser-external","../../node_modules/@matrix-org/olm/olm.js","../../src/matrix/verification/SAS/SASVerification.ts","../../src/matrix/verification/SAS/channel/IChannel.ts","../../src/utils/groupBy.ts","../../src/matrix/common.js","../../src/utils/Disposables.ts","../../src/matrix/verification/SAS/channel/ToDeviceChannel.ts","../../src/matrix/verification/SAS/channel/RoomChannel.ts","../../src/matrix/verification/SAS/SASRequest.ts","../../src/matrix/verification/CrossSigning.ts","../../src/matrix/e2ee/DeviceTracker.ts","../../src/matrix/storage/idb/schema.ts","../../src/matrix/storage/idb/quirks.ts","../../src/matrix/storage/idb/StorageFactory.ts","../../src/matrix/room/timeline/persistence/RelationWriter.js","../../src/matrix/room/timeline/Direction.ts","../../src/matrix/room/timeline/entries/FragmentBoundaryEntry.js","../../src/matrix/room/timeline/persistence/SyncWriter.js","../../src/utils/LRUCache.ts","../../src/matrix/room/timeline/persistence/MemberWriter.js","../../src/matrix/room/timeline/persistence/GapWriter.js","../../src/matrix/room/timeline/persistence/TimelineReader.js","../../src/matrix/room/timeline/entries/NonPersistedEventEntry.js","../../src/utils/RetainedValue.ts","../../src/matrix/User.js","../../src/matrix/room/timeline/Timeline.js","../../src/matrix/room/members/load.js","../../src/matrix/room/members/MemberList.js","../../src/matrix/room/members/Heroes.js","../../src/matrix/room/ObservedEventMap.js","../../src/logging/utils.ts","../../src/matrix/room/PowerLevels.js","../../src/matrix/room/state/ObservedStateTypeMap.ts","../../src/matrix/room/state/ObservedStateKeyValue.ts","../../src/matrix/room/BaseRoom.js","../../src/matrix/room/sending/SendQueue.js","../../src/matrix/room/AttachmentUpload.js","../../src/matrix/room/Room.js","../../src/matrix/room/ArchivedRoom.js","../../src/matrix/profile.ts","../../src/matrix/room/RoomBeingCreated.ts","../../src/matrix/room/Invite.js","../../src/matrix/push/Pusher.ts","../../src/matrix/DeviceMessageHandler.js","../../src/matrix/e2ee/Account.js","../../src/matrix/ssss/common.ts","../../src/matrix/ssss/passphrase.ts","../../src/matrix/ssss/recoveryKey.ts","../../src/matrix/ssss/SecretFetcher.ts","../../src/matrix/ssss/SecretSharing.ts","../../src/matrix/ssss/SecretStorage.ts","../../src/matrix/ssss/index.ts","../../src/matrix/e2ee/Dehydration.js","../../src/utils/Lock.ts","../../src/matrix/e2ee/olm/Session.ts","../../src/matrix/e2ee/DecryptionResult.ts","../../src/matrix/e2ee/olm/types.ts","../../src/matrix/e2ee/olm/Decryption.ts","../../src/matrix/e2ee/olm/Encryption.ts","../../src/matrix/e2ee/megolm/decryption/DecryptionChanges.js","../../src/utils/mergeMap.ts","../../src/matrix/e2ee/megolm/decryption/DecryptionPreparation.js","../../src/matrix/e2ee/megolm/decryption/ReplayDetectionEntry.ts","../../src/matrix/e2ee/megolm/decryption/SessionDecryption.ts","../../src/matrix/e2ee/megolm/decryption/utils.ts","../../src/matrix/e2ee/megolm/decryption/RoomKey.ts","../../src/matrix/e2ee/megolm/Decryption.ts","../../src/matrix/e2ee/megolm/decryption/KeyLoader.ts","../../src/matrix/e2ee/megolm/keybackup/Curve25519.ts","../../src/matrix/e2ee/megolm/keybackup/KeyBackup.ts","../../src/matrix/e2ee/megolm/Encryption.js","../../src/matrix/e2ee/RoomEncryption.js","../../src/utils/LockMap.ts","../../src/utils/recursivelyAssign.ts","../../src/platform/types/MediaDevices.ts","../../src/matrix/calls/common.ts","../../src/matrix/calls/callEventTypes.ts","../../src/matrix/calls/PeerCall.ts","../../src/utils/ErrorBoundary.ts","../../src/matrix/calls/group/Member.ts","../../src/matrix/calls/group/GroupCall.ts","../../src/matrix/calls/TurnServerSource.ts","../../src/matrix/calls/CallHandler.ts","../../src/matrix/room/state/RoomStateHandlerSet.ts","../../src/features.ts","../../src/matrix/Session.js","../../src/matrix/login/PasswordLoginMethod.ts","../../src/matrix/login/TokenLoginMethod.ts","../../src/matrix/login/SSOLoginHelper.ts","../../src/matrix/registration/stages/BaseRegistrationStage.ts","../../src/matrix/registration/stages/DummyAuth.ts","../../src/matrix/registration/stages/TermsAuth.ts","../../src/matrix/registration/stages/TokenAuth.ts","../../src/matrix/registration/Registration.ts","../../src/matrix/Client.js","../../src/domain/ViewModel.ts","../../src/domain/avatar.ts","../../src/domain/session/leftpanel/BaseTileViewModel.js","../../src/domain/session/leftpanel/RoomTileViewModel.js","../../src/domain/session/leftpanel/common.js","../../src/domain/session/leftpanel/InviteTileViewModel.js","../../src/domain/session/leftpanel/RoomBeingCreatedTileViewModel.js","../../src/domain/session/leftpanel/RoomFilter.js","../../src/domain/navigation/Navigation.ts","../../src/domain/navigation/URLRouter.ts","../../src/domain/navigation/index.ts","../../src/domain/session/leftpanel/LeftPanelViewModel.js","../../src/domain/session/room/timeline/tiles/ITile.ts","../../src/domain/session/room/timeline/UpdateAction.js","../../src/domain/session/room/timeline/TilesCollection.js","../../src/domain/session/room/timeline/TimelineViewModel.js","../../src/domain/session/room/ComposerViewModel.js","../../src/domain/rageshake.ts","../../src/domain/ErrorViewModel.ts","../../src/domain/ErrorReportViewModel.ts","../../src/domain/session/room/CallViewModel.ts","../../src/domain/session/common.js","../../src/matrix/calls/LocalMedia.ts","../../src/domain/session/room/timeline/tiles/DateTile.ts","../../src/domain/session/room/timeline/tiles/SimpleTile.ts","../../src/domain/session/room/timeline/tiles/GapTile.js","../../src/domain/session/room/timeline/ReactionsViewModel.js","../../src/domain/session/room/timeline/tiles/BaseMessageTile.js","../../src/domain/session/room/timeline/linkify/regex.ts","../../src/domain/session/room/timeline/linkify/linkify.ts","../../src/domain/session/room/timeline/MessageBody.js","../../src/domain/session/room/timeline/tiles/BaseTextTile.js","../../src/domain/session/room/timeline/deserialize.js","../../src/domain/session/room/timeline/tiles/TextTile.js","../../src/domain/session/room/timeline/tiles/RedactedTile.js","../../src/domain/session/room/timeline/tiles/BaseMediaTile.js","../../src/domain/session/room/timeline/tiles/ImageTile.js","../../src/domain/session/room/timeline/tiles/VideoTile.js","../../src/utils/formatSize.ts","../../src/domain/session/room/timeline/tiles/FileTile.js","../../src/domain/session/room/timeline/tiles/LocationTile.js","../../src/domain/session/room/timeline/tiles/RoomNameTile.js","../../src/domain/session/room/timeline/tiles/RoomMemberTile.js","../../src/domain/session/room/timeline/tiles/EncryptedEventTile.js","../../src/domain/session/room/timeline/tiles/EncryptionEnabledTile.js","../../src/domain/session/room/timeline/tiles/MissingAttachmentTile.js","../../src/domain/session/room/timeline/tiles/CallTile.js","../../src/domain/session/room/timeline/tiles/VerificationTile.ts","../../src/domain/session/room/timeline/tiles/index.ts","../../src/matrix/room/joinRoom.ts","../../src/domain/session/room/RoomViewModel.js","../../src/domain/session/room/UnknownRoomViewModel.js","../../src/domain/session/room/InviteViewModel.js","../../src/domain/session/room/RoomBeingCreatedViewModel.js","../../src/domain/session/room/LightboxViewModel.js","../../src/domain/session/SessionStatusViewModel.js","../../src/domain/session/RoomGridViewModel.js","../../src/domain/session/settings/KeyBackupViewModel.ts","../../src/domain/session/settings/FeaturesViewModel.ts","../../src/domain/session/settings/SettingsViewModel.js","../../src/domain/session/CreateRoomViewModel.js","../../src/domain/session/JoinRoomViewModel.ts","../../src/domain/session/verification/stages/WaitingForOtherUserViewModel.ts","../../src/domain/session/verification/stages/DismissibleVerificationViewModel.ts","../../src/domain/session/verification/stages/VerificationCancelledViewModel.ts","../../src/domain/session/verification/stages/SelectMethodViewModel.ts","../../src/domain/session/verification/stages/VerifyEmojisViewModel.ts","../../src/domain/session/verification/stages/VerificationCompleteViewModel.ts","../../src/domain/session/verification/stages/MissingKeysViewModel.ts","../../src/domain/session/verification/DeviceVerificationViewModel.ts","../../src/domain/session/RoomViewModelObservable.js","../../src/domain/session/rightpanel/RoomDetailsViewModel.js","../../src/domain/session/rightpanel/MemberTileViewModel.js","../../src/domain/session/rightpanel/members/comparator.js","../../src/domain/session/rightpanel/members/disambiguator.js","../../src/domain/session/rightpanel/MemberListViewModel.js","../../src/domain/session/rightpanel/MemberDetailsViewModel.js","../../src/domain/session/rightpanel/InvitePanelViewModel.ts","../../src/domain/session/rightpanel/RightPanelViewModel.js","../../src/domain/session/toast/BaseToastNotificationViewModel.ts","../../src/domain/session/toast/calls/CallToastNotificationViewModel.ts","../../src/domain/session/toast/calls/CallsToastCollectionViewModel.ts","../../src/domain/session/toast/verification/VerificationToastNotificationViewModel.ts","../../src/domain/session/toast/verification/VerificationToastCollectionViewModel.ts","../../src/domain/session/toast/ToastCollectionViewModel.ts","../../src/domain/session/SessionViewModel.js","../../src/domain/AccountSetupViewModel.js","../../src/domain/SessionLoadViewModel.js","../../src/domain/login/PasswordLoginViewModel.ts","../../src/domain/login/StartSSOLoginViewModel.ts","../../src/domain/login/CompleteSSOLoginViewModel.ts","../../src/domain/login/LoginViewModel.ts","../../src/domain/LogoutViewModel.ts","../../src/domain/ForcedLogoutViewModel.ts","../../src/domain/SessionPickerViewModel.js","../../src/domain/RootViewModel.js","../../src/platform/web/main.js","../../src/utils/timeout.ts","../../src/platform/web/dom/request/common.js","../../src/platform/web/dom/request/xhr.js","../../src/platform/web/dom/request/fetch.js","../../src/matrix/sessioninfo/localstorage/SessionInfoStorage.ts","../../src/platform/web/dom/SettingsStorage.js","../../src/platform/web/dom/UTF8.js","../../node_modules/base64-arraybuffer/lib/base64-arraybuffer.js","../../src/platform/web/utils/Base64.js","../../scripts/package-overrides/buffer/index.js","../../node_modules/base-x/src/index.js","../../node_modules/bs58/index.js","../../src/platform/web/utils/Base58.js","../../src/platform/web/utils/Encoding.js","../../src/matrix/e2ee/OlmWorker.js","../../src/logging/IDBLogPersister.ts","../../src/logging/ConsoleReporter.ts","../../src/logging/LogItem.ts","../../src/logging/Logger.ts","../../src/platform/web/ui/general/html.ts","../../src/platform/web/ui/general/utils.ts","../../src/platform/web/ui/general/ListView.ts","../../src/platform/web/ui/general/BaseUpdateView.ts","../../src/platform/web/ui/general/TemplateView.ts","../../src/platform/web/ui/avatar.js","../../src/platform/web/ui/AvatarView.js","../../src/platform/web/ui/common.js","../../src/platform/web/ui/session/leftpanel/RoomTileView.js","../../src/platform/web/ui/general/Menu.js","../../src/platform/web/ui/general/Popup.js","../../src/platform/web/ui/session/leftpanel/LeftPanelView.js","../../src/platform/web/ui/session/room/TimelineView.ts","../../src/platform/web/ui/session/room/TimelineLoadingView.js","../../src/platform/web/ui/session/room/MessageComposer.js","../../src/platform/web/ui/session/room/DisabledComposerView.js","../../src/platform/web/ui/general/ErrorView.ts","../../src/platform/web/ui/session/room/CallView.ts","../../src/platform/web/ui/session/room/RoomView.js","../../src/platform/web/ui/session/room/UnknownRoomView.js","../../src/platform/web/ui/general/StaticView.js","../../src/platform/web/ui/general/LoadingView.js","../../src/platform/web/ui/session/room/RoomBeingCreatedView.js","../../src/platform/web/ui/session/room/InviteView.js","../../src/platform/web/ui/session/room/LightboxView.js","../../src/platform/web/ui/session/SessionStatusView.js","../../src/platform/web/ui/session/RoomGridView.js","../../src/platform/web/ui/session/settings/KeyBackupSettingsView.ts","../../src/platform/web/ui/session/settings/FeaturesView.ts","../../src/platform/web/ui/session/settings/SettingsView.js","../../src/platform/web/ui/session/CreateRoomView.js","../../src/platform/web/ui/session/rightpanel/RoomDetailsView.js","../../src/platform/web/ui/general/Range.ts","../../src/platform/web/ui/general/ListRange.ts","../../src/platform/web/ui/general/LazyListView.ts","../../src/platform/web/ui/session/rightpanel/MemberTileView.js","../../src/platform/web/ui/session/rightpanel/MemberListView.js","../../src/platform/web/ui/session/rightpanel/MemberDetailsView.js","../../src/platform/web/ui/session/verification/stages/WaitingForOtherUserView.ts","../../src/platform/web/ui/session/verification/stages/VerificationCancelledView.ts","../../src/platform/web/ui/session/verification/stages/SelectMethodView.ts","../../src/platform/web/ui/session/verification/stages/VerifyEmojisView.ts","../../src/platform/web/ui/session/verification/stages/VerificationCompleteView.ts","../../src/platform/web/ui/session/verification/stages/MissingKeysView.ts","../../src/platform/web/ui/session/verification/DeviceVerificationView.ts","../../src/platform/web/ui/session/rightpanel/InvitePanelView.ts","../../src/platform/web/ui/session/rightpanel/RightPanelView.js","../../src/platform/web/ui/session/room/timeline/ReactionsView.js","../../src/platform/web/ui/session/room/timeline/BaseMessageView.js","../../src/platform/web/ui/session/room/timeline/ReplyPreviewView.js","../../src/platform/web/ui/session/room/timeline/TextMessageView.js","../../src/platform/web/ui/session/room/timeline/BaseMediaView.js","../../src/platform/web/ui/session/room/timeline/ImageView.js","../../src/platform/web/dom/utils.ts","../../src/platform/web/ui/session/room/timeline/VideoView.js","../../src/platform/web/ui/session/room/timeline/FileView.js","../../src/platform/web/ui/session/room/timeline/LocationView.js","../../src/platform/web/ui/session/room/timeline/MissingAttachmentView.js","../../src/platform/web/ui/session/room/timeline/AnnouncementView.js","../../src/platform/web/ui/session/room/timeline/RedactedView.js","../../src/platform/web/ui/session/room/timeline/GapView.js","../../src/platform/web/ui/session/room/timeline/CallTileView.ts","../../src/platform/web/ui/session/room/timeline/DateHeaderView.ts","../../src/platform/web/ui/session/room/timeline/VerificationTileView.ts","../../src/platform/web/ui/session/room/common.ts","../../src/platform/web/ui/session/JoinRoomView.ts","../../src/platform/web/ui/session/toast/CallToastNotificationView.ts","../../src/platform/web/ui/session/toast/VerificationToastNotificationView.ts","../../src/platform/web/ui/session/toast/ToastCollectionView.ts","../../src/platform/web/ui/session/SessionView.js","../../src/platform/web/ui/login/common.js","../../src/platform/web/ui/login/PasswordLoginView.js","../../src/platform/web/ui/login/AccountSetupView.js","../../src/platform/web/ui/login/SessionLoadStatusView.js","../../src/platform/web/ui/login/CompleteSSOView.js","../../src/platform/web/ui/login/LoginView.js","../../src/platform/web/ui/LogoutView.js","../../src/platform/web/ui/ForcedLogoutView.js","../../src/platform/web/ui/login/SessionLoadView.js","../../src/platform/web/ui/login/SessionPickerView.js","../../src/platform/web/ui/RootView.js","../../src/platform/web/dom/Clock.js","../../src/platform/web/dom/ServiceWorkerHandler.js","../../src/platform/web/dom/NotificationService.js","../../src/platform/web/dom/History.js","../../src/platform/web/dom/OnlineStatus.js","../../src/platform/web/dom/Crypto.js","../../src/platform/web/dom/StorageEstimate.js","../../src/platform/web/dom/WorkerPool.js","../../src/platform/web/dom/ImageHandle.js","../../src/platform/web/dom/download.js","../../node_modules/dompurify/dist/purify.es.js","../../src/platform/web/parsehtml.js","../../src/platform/web/dom/MediaDevices.ts","../../src/platform/web/dom/WebRTC.ts","../../src/platform/web/theming/parsers/types.ts","../../src/platform/web/theming/shared/svg-colorizer.mjs","../../src/platform/web/theming/IconColorizer.ts","../../node_modules/off-color/cjs/index.min.js","../../node_modules/off-color/index.js","../../src/platform/web/theming/shared/color.mjs","../../src/platform/web/theming/DerivedVariables.ts","../../src/platform/web/theming/parsers/RuntimeThemeParser.ts","../../src/platform/web/theming/parsers/BuiltThemeParser.ts","../../src/platform/web/theming/ThemeLoader.ts","../../src/utils/timeFormatting.ts","../../src/platform/web/dom/TimeFormatter.ts","../../src/platform/web/Platform.js","../../src/platform/web/assets/config.json?url","../../src/platform/web/assets/download-sandbox.html?url","../../src/platform/web/worker/main.js?url","../../node_modules/@matrix-org/olm/olm.wasm?url","../../node_modules/@matrix-org/olm/olm.js?url","../../node_modules/@matrix-org/olm/olm_legacy.js?url","../../src/platform/web/sdk/paths/vite.js","../../src/platform/web/index.html?html-proxy&index=0.js"],"sourcesContent":["/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexport function createEnum(...values: string[]): Readonly<{}> {\n const obj = {};\n for (const value of values) {\n obj[value] = value;\n }\n return Object.freeze(obj);\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nfunction normalizeHomeserver(homeserver) {\n try {\n return new URL(homeserver).origin;\n } catch (err) {\n return new URL(`https://${homeserver}`).origin;\n }\n}\n\nasync function getWellKnownResponse(homeserver, request) {\n const requestOptions = {format: \"json\", timeout: 30000, method: \"GET\"};\n try {\n const wellKnownUrl = `${homeserver}/.well-known/matrix/client`;\n return await request(wellKnownUrl, requestOptions).response();\n } catch (err) {\n if (err.name === \"ConnectionError\") {\n // don't fail lookup on a ConnectionError,\n // there might be a missing CORS header on a 404 response or something,\n // which won't be a problem necessarily with homeserver requests later on ...\n return null;\n } else {\n throw err;\n }\n }\n}\n\nexport async function lookupHomeserver(homeserver, request) {\n homeserver = normalizeHomeserver(homeserver);\n const wellKnownResponse = await getWellKnownResponse(homeserver, request);\n if (wellKnownResponse && wellKnownResponse.status === 200) {\n const {body} = wellKnownResponse;\n const wellKnownHomeserver = body[\"m.homeserver\"]?.[\"base_url\"];\n if (typeof wellKnownHomeserver === \"string\") {\n homeserver = normalizeHomeserver(wellKnownHomeserver);\n }\n }\n return homeserver;\n}\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2021 Daniel Fedorin \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\ntype Handler = (value?: T) => void;\n\nexport class EventEmitter {\n private _handlersByName: { [event in keyof T]?: Set> }\n\n constructor() {\n this._handlersByName = {};\n }\n\n emit(name: K, value?: T[K]): void {\n const handlers = this._handlersByName[name];\n if (handlers) {\n handlers.forEach(h => h(value));\n }\n }\n\n disposableOn(name: K, callback: Handler): () => void {\n this.on(name, callback);\n return () => {\n this.off(name, callback);\n }\n }\n\n on(name: K, callback: Handler): void {\n let handlers = this._handlersByName[name];\n if (!handlers) {\n this.onFirstSubscriptionAdded(name);\n this._handlersByName[name] = handlers = new Set();\n }\n handlers.add(callback);\n }\n\n off(name: K, callback: Handler): void {\n const handlers = this._handlersByName[name];\n if (handlers) {\n handlers.delete(callback);\n if (handlers.size === 0) {\n delete this._handlersByName[name];\n this.onLastSubscriptionRemoved(name);\n }\n }\n }\n\n onFirstSubscriptionAdded(name: K): void {}\n\n onLastSubscriptionRemoved(name: K): void {}\n}\n\nexport function tests() {\n return {\n test_on_off(assert) {\n let counter = 0;\n const e = new EventEmitter<{ change: never }>();\n const callback = () => counter += 1;\n e.on(\"change\", callback);\n e.emit(\"change\");\n e.off(\"change\", callback);\n e.emit(\"change\");\n assert.equal(counter, 1);\n },\n\n test_emit_value(assert) {\n let value = 0;\n const e = new EventEmitter<{ change: number }>();\n const callback = (v) => value = v;\n e.on(\"change\", callback);\n e.emit(\"change\", 5);\n e.off(\"change\", callback);\n assert.equal(value, 5);\n },\n\n test_double_on(assert) {\n let counter = 0;\n const e = new EventEmitter<{ change: never }>();\n const callback = () => counter += 1;\n e.on(\"change\", callback);\n e.on(\"change\", callback);\n e.emit(\"change\");\n e.off(\"change\", callback);\n assert.equal(counter, 1);\n }\n };\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {EventEmitter} from \"../utils/EventEmitter\";\n\nexport interface IAbortable {\n abort();\n}\n\nexport type SetAbortableFn = (a: IAbortable) => typeof a;\nexport type SetProgressFn

    = (progress: P) => void;\ntype RunFn = (setAbortable: SetAbortableFn, setProgress: SetProgressFn

    ) => T;\n\nexport class AbortableOperation extends EventEmitter<{change: keyof AbortableOperation}> implements IAbortable {\n public readonly result: T;\n private _abortable?: IAbortable;\n private _progress?: P;\n\n constructor(run: RunFn) {\n super();\n this._abortable = undefined;\n const setAbortable: SetAbortableFn = abortable => {\n this._abortable = abortable;\n return abortable;\n };\n this._progress = undefined;\n const setProgress: SetProgressFn

    = (progress: P) => {\n this._progress = progress;\n this.emit(\"change\", \"progress\");\n };\n this.result = run(setAbortable, setProgress);\n }\n\n get progress(): P | undefined {\n return this._progress;\n }\n\n abort() {\n this._abortable?.abort();\n this._abortable = undefined;\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexport class AbortError extends Error {\n get name(): string {\n return \"AbortError\";\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n// we return undefined so you can reassign any member\n// that uses `member?: T` syntax in one statement.\nexport type SubscriptionHandle = () => undefined;\n\nexport abstract class BaseObservable {\n protected _handlers: Set = new Set();\n\n onSubscribeFirst(): void {\n\n }\n\n onUnsubscribeLast(): void {\n\n }\n\n subscribe(handler: T): SubscriptionHandle {\n this._handlers.add(handler);\n if (this._handlers.size === 1) {\n this.onSubscribeFirst();\n }\n return (): undefined => {\n return this.unsubscribe(handler);\n };\n }\n\n unsubscribe(handler?: T): undefined {\n if (handler) {\n this._handlers.delete(handler);\n if (this._handlers.size === 0) {\n this.onUnsubscribeLast();\n }\n }\n return undefined;\n }\n\n unsubscribeAll(): void {\n if (this._handlers.size !== 0) {\n this._handlers.clear();\n this.onUnsubscribeLast();\n }\n }\n\n get hasSubscriptions(): boolean {\n return this._handlers.size !== 0;\n }\n\n // Add iterator over handlers here\n}\n\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nexport function tests() {\n class Collection extends BaseObservable<{}> {\n firstSubscribeCalls: number = 0;\n firstUnsubscribeCalls: number = 0;\n\n onSubscribeFirst(): void { this.firstSubscribeCalls += 1; }\n onUnsubscribeLast(): void { this.firstUnsubscribeCalls += 1; }\n }\n\n return {\n test_unsubscribe(assert): void {\n const c = new Collection();\n const unsubscribe = c.subscribe({});\n unsubscribe();\n assert.equal(c.firstSubscribeCalls, 1);\n assert.equal(c.firstUnsubscribeCalls, 1);\n }\n };\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {AbortError} from \"../../utils/error\";\nimport {BaseObservable} from \"../BaseObservable\";\nimport type {SubscriptionHandle} from \"../BaseObservable\";\nimport {FlatMapObservableValue} from \"./index\";\n\n// like an EventEmitter, but doesn't have an event type\nexport abstract class BaseObservableValue extends BaseObservable<(value: T) => void> {\n emit(argument: T): void {\n for (const h of this._handlers) {\n h(argument);\n }\n }\n\n abstract get(): T;\n\n waitFor(predicate: (value: T) => boolean): IWaitHandle {\n if (predicate(this.get())) {\n return new ResolvedWaitForHandle(Promise.resolve(this.get()));\n } else {\n return new WaitForHandle(this, predicate);\n }\n }\n\n flatMap(mapper: (value: T) => (BaseObservableValue | undefined)): BaseObservableValue {\n return new FlatMapObservableValue(this, mapper);\n }\n}\n\ninterface IWaitHandle {\n promise: Promise;\n dispose(): void;\n}\n\nclass WaitForHandle implements IWaitHandle {\n private _promise: Promise\n private _reject: ((reason?: any) => void) | null;\n private _subscription: (() => void) | null;\n\n constructor(observable: BaseObservableValue, predicate: (value: T) => boolean) {\n this._promise = new Promise((resolve, reject) => {\n this._reject = reject;\n this._subscription = observable.subscribe(v => {\n if (predicate(v)) {\n this._reject = null;\n resolve(v);\n this.dispose();\n }\n });\n });\n }\n\n get promise(): Promise {\n return this._promise;\n }\n\n dispose(): void {\n if (this._subscription) {\n this._subscription();\n this._subscription = null;\n }\n if (this._reject) {\n this._reject(new AbortError());\n this._reject = null;\n }\n }\n}\n\nclass ResolvedWaitForHandle implements IWaitHandle {\n constructor(public promise: Promise) {}\n dispose(): void {}\n}\n","/*\nCopyright 2022 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {BaseObservableValue} from \"./index\";\nimport {EventEmitter} from \"../../utils/EventEmitter\";\n\nexport class EventObservableValue> extends BaseObservableValue {\n private eventSubscription: () => void;\n\n constructor(\n private readonly value: V,\n private readonly eventName: keyof T\n ) {\n super();\n }\n\n onSubscribeFirst(): void {\n this.eventSubscription = this.value.disposableOn(this.eventName, () => {\n this.emit(this.value);\n });\n super.onSubscribeFirst();\n }\n\n onUnsubscribeLast(): void {\n this.eventSubscription!();\n super.onUnsubscribeLast();\n }\n\n get(): V {\n return this.value;\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {AbortError} from \"../../utils/error\";\nimport {BaseObservableValue} from \"./index\";\n\nexport class ObservableValue extends BaseObservableValue {\n private _value: T;\n\n constructor(initialValue: T) {\n super();\n this._value = initialValue;\n }\n\n get(): T {\n return this._value;\n }\n\n set(value: T): void {\n if (value !== this._value) {\n this._value = value;\n this.emit(this._value);\n }\n }\n}\n\nexport function tests() {\n return {\n \"set emits an update\": (assert): void => {\n const a = new ObservableValue(0);\n let fired = false;\n const subscription = a.subscribe(v => {\n fired = true;\n assert.strictEqual(v, 5);\n });\n a.set(5);\n assert(fired);\n subscription();\n },\n \"set doesn't emit if value hasn't changed\": (assert): void => {\n const a = new ObservableValue(5);\n let fired = false;\n const subscription = a.subscribe(() => {\n fired = true;\n });\n a.set(5);\n a.set(5);\n assert(!fired);\n subscription();\n },\n \"waitFor promise resolves on matching update\": async (assert): Promise => {\n const a = new ObservableValue(5);\n const handle = a.waitFor(v => v === 6);\n await Promise.resolve().then(() => {\n a.set(6);\n });\n await handle.promise;\n assert.strictEqual(a.get(), 6);\n },\n \"waitFor promise rejects when disposed\": async (assert): Promise => {\n const a = new ObservableValue(0);\n const handle = a.waitFor(() => false);\n await Promise.resolve().then(() => {\n handle.dispose();\n });\n await assert.rejects(handle.promise, AbortError);\n },\n };\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {BaseObservableValue} from \"./index\";\nimport type {SubscriptionHandle} from \"../BaseObservable\";\n\nexport class FlatMapObservableValue extends BaseObservableValue {\n private sourceSubscription?: SubscriptionHandle;\n private targetSubscription?: SubscriptionHandle;\n\n constructor(\n private readonly source: BaseObservableValue

    ,\n private readonly mapper: (value: P) => (BaseObservableValue | undefined)\n ) {\n super();\n }\n\n onUnsubscribeLast(): void {\n super.onUnsubscribeLast();\n this.sourceSubscription = this.sourceSubscription!();\n if (this.targetSubscription) {\n this.targetSubscription = this.targetSubscription();\n }\n }\n\n onSubscribeFirst(): void {\n super.onSubscribeFirst();\n this.sourceSubscription = this.source.subscribe(() => {\n this.updateTargetSubscription();\n this.emit(this.get());\n });\n this.updateTargetSubscription();\n }\n\n private updateTargetSubscription(): void {\n const sourceValue = this.source.get();\n if (sourceValue) {\n const target = this.mapper(sourceValue);\n if (target) {\n if (!this.targetSubscription) {\n this.targetSubscription = target.subscribe(() => this.emit(this.get()));\n }\n return;\n }\n }\n // if no sourceValue or target\n if (this.targetSubscription) {\n this.targetSubscription = this.targetSubscription();\n }\n }\n\n get(): C | undefined {\n const sourceValue = this.source.get();\n if (!sourceValue) {\n return undefined;\n }\n const mapped = this.mapper(sourceValue);\n return mapped?.get();\n }\n}\n\nimport {ObservableValue} from \"./ObservableValue\";\n\nexport function tests() {\n return {\n \"flatMap.get\": (assert): void => {\n const a = new ObservableValue}>(undefined);\n const countProxy = a.flatMap(a => a!.count);\n assert.strictEqual(countProxy.get(), undefined);\n const count = new ObservableValue(0);\n a.set({count});\n assert.strictEqual(countProxy.get(), 0);\n },\n \"flatMap update from source\": (assert): void => {\n const a = new ObservableValue}>(undefined);\n const updates: (number | undefined)[] = [];\n a.flatMap(a => a!.count).subscribe(count => {\n updates.push(count);\n });\n const count = new ObservableValue(0);\n a.set({count});\n assert.deepEqual(updates, [0]);\n },\n \"flatMap update from target\": (assert): void => {\n const a = new ObservableValue}>(undefined);\n const updates: (number | undefined)[] = [];\n a.flatMap(a => a!.count).subscribe(count => {\n updates.push(count);\n });\n const count = new ObservableValue(0);\n a.set({count});\n count.set(5);\n assert.deepEqual(updates, [0, 5]);\n }\n };\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {BaseObservableValue} from \"./index\";\nimport {BaseObservableMap, IMapObserver} from \"../map/BaseObservableMap\";\nimport {SubscriptionHandle} from \"../BaseObservable\";\n\nfunction pickLowestKey(currentKey: K, newKey: K): boolean {\n return newKey < currentKey;\n}\n\nexport class PickMapObservableValue extends BaseObservableValue implements IMapObserver{\n\n private key?: K;\n private mapSubscription?: SubscriptionHandle;\n\n constructor(\n private readonly map: BaseObservableMap,\n private readonly pickKey: (currentKey: K, newKey: K) => boolean = pickLowestKey\n ) {\n super();\n }\n\n private updateKey(newKey: K): boolean {\n if (this.key === undefined || this.pickKey(this.key, newKey)) {\n this.key = newKey;\n return true;\n }\n return false;\n }\n\n onReset(): void {\n this.key = undefined;\n this.emit(this.get());\n }\n\n onAdd(key: K, value:V): void {\n if (this.updateKey(key)) {\n this.emit(this.get());\n }\n }\n\n onUpdate(key: K, value: V, params: any): void {\n this.emit(this.get());\n }\n\n onRemove(key: K, value: V): void {\n if (key === this.key) {\n this.key = undefined;\n // try to see if there is another key that fullfills pickKey\n for (const [key] of this.map) {\n this.updateKey(key);\n }\n this.emit(this.get());\n }\n }\n\n onSubscribeFirst(): void {\n this.mapSubscription = this.map.subscribe(this);\n for (const [key] of this.map) {\n this.updateKey(key);\n }\n }\n\n onUnsubscribeLast(): void {\n this.mapSubscription!();\n this.key = undefined;\n }\n\n get(): V | undefined {\n if (this.key !== undefined) {\n return this.map.get(this.key);\n }\n return undefined;\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {ObservableValue} from \"./index\";\n\nexport class RetainedObservableValue extends ObservableValue {\n\n constructor(initialValue: T, private freeCallback: () => void, private startCallback: () => void = () => {}) {\n super(initialValue);\n }\n\n onSubscribeFirst(): void {\n this.startCallback();\n }\n\n onUnsubscribeLast(): void {\n super.onUnsubscribeLast();\n this.freeCallback();\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {BaseObservable} from \"../BaseObservable\";\n\nexport interface IListObserver {\n onReset(list: BaseObservableList): void;\n onAdd(index: number, value:T, list: BaseObservableList): void;\n onUpdate(index: number, value: T, params: any, list: BaseObservableList): void;\n onRemove(index: number, value: T, list: BaseObservableList): void\n onMove(from: number, to: number, value: T, list: BaseObservableList): void\n}\n\nexport function defaultObserverWith(overrides: { [key in keyof IListObserver]?: IListObserver[key] }): IListObserver {\n const defaults = {\n onReset(): void {},\n onAdd(): void {},\n onUpdate(): void {},\n onRemove(): void {},\n onMove(): void {},\n };\n return Object.assign(defaults, overrides);\n}\n\nexport abstract class BaseObservableList extends BaseObservable> implements Iterable {\n emitReset(): void {\n for(let h of this._handlers) {\n h.onReset(this);\n }\n }\n // we need batch events, mostly on index based collection though?\n // maybe we should get started without?\n emitAdd(index: number, value: T): void {\n for(let h of this._handlers) {\n h.onAdd(index, value, this);\n }\n }\n\n emitUpdate(index: number, value: T, params?: any): void {\n for(let h of this._handlers) {\n h.onUpdate(index, value, params, this);\n }\n }\n\n emitRemove(index: number, value: T): void {\n for(let h of this._handlers) {\n h.onRemove(index, value, this);\n }\n }\n\n // toIdx assumes the item has already\n // been removed from its fromIdx\n emitMove(fromIdx: number, toIdx: number, value: T): void {\n for(let h of this._handlers) {\n h.onMove(fromIdx, toIdx, value, this);\n }\n }\n\n abstract [Symbol.iterator](): Iterator;\n abstract get length(): number;\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * @license\n * Based off baseSortedIndex function in Lodash \n * Copyright JS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\nexport function sortedIndex(array: T[], value: T, comparator: (x:T, y:T) => number): number {\n let low = 0;\n let high = array.length;\n\n while (low < high) {\n let mid = (low + high) >>> 1;\n let cmpResult = comparator(value, array[mid]);\n\n if (cmpResult > 0) {\n low = mid + 1;\n } else if (cmpResult < 0) {\n high = mid;\n } else {\n low = high = mid;\n }\n }\n return high;\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {BaseObservableList} from \"./BaseObservableList\";\n\nexport class ObservableArray extends BaseObservableList {\n private _items: T[];\n\n constructor(initialValues: T[] = []) {\n super();\n this._items = initialValues;\n }\n\n append(item: T): void {\n this._items.push(item);\n this.emitAdd(this._items.length - 1, item);\n }\n\n remove(idx: number): void {\n const [item] = this._items.splice(idx, 1);\n this.emitRemove(idx, item);\n }\n\n insertMany(idx: number, items: T[]): void {\n for(let item of items) {\n this.insert(idx, item);\n idx += 1;\n }\n }\n\n insert(idx: number, item: T): void {\n this._items.splice(idx, 0, item);\n this.emitAdd(idx, item);\n }\n\n move(fromIdx: number, toIdx: number): void {\n if (fromIdx < this._items.length && toIdx < this._items.length) {\n const [item] = this._items.splice(fromIdx, 1);\n this._items.splice(toIdx, 0, item);\n this.emitMove(fromIdx, toIdx, item);\n }\n }\n\n update(idx: number, item: T, params: any = null): void {\n if (idx < this._items.length) {\n this._items[idx] = item;\n this.emitUpdate(idx, item, params);\n }\n }\n\n get array(): Readonly {\n return this._items;\n }\n\n at(idx: number): T | undefined {\n if (this._items && idx >= 0 && idx < this._items.length) {\n return this._items[idx];\n }\n }\n\n get length(): number {\n return this._items.length;\n }\n\n [Symbol.iterator](): IterableIterator {\n return this._items.values();\n }\n}\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nimport {BaseObservableList} from \"./BaseObservableList\";\n\n/* inline update of item in collection backed by array, without replacing the preexising item */\nexport function findAndUpdateInArray(\n predicate: (value: T) => boolean,\n array: T[],\n observable: BaseObservableList,\n updater: (value: T) => any | false\n): boolean {\n const index = array.findIndex(predicate);\n if (index !== -1) {\n const value = array[index];\n // allow bailing out of sending an emit if updater determined its not needed\n const params = updater(value);\n if (params !== false) {\n observable.emitUpdate(index, value, params);\n }\n // found\n return true;\n }\n return false;\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {BaseObservableList} from \"./BaseObservableList\";\nimport {sortedIndex} from \"../../utils/sortedIndex\";\nimport {findAndUpdateInArray} from \"./common\";\n\nexport class SortedArray extends BaseObservableList {\n private _comparator: (left: T, right: T) => number;\n private _items: T[] = [];\n\n constructor(comparator: (left: T, right: T) => number) {\n super();\n this._comparator = comparator;\n }\n\n setManyUnsorted(items: T[]): void {\n this.setManySorted(items);\n }\n\n setManySorted(items: T[]): void {\n // TODO: we can make this way faster by only looking up the first and last key,\n // and merging whatever is inbetween with items\n // if items is not sorted, 💩🌀 will follow!\n // should we check?\n // Also, once bulk events are supported in collections,\n // we can do a bulk add event here probably if there are no updates\n // BAD CODE!\n for(let item of items) {\n this.set(item);\n }\n }\n\n findAndUpdate(predicate: (value: T) => boolean, updater: (value: T) => any | false): boolean {\n return findAndUpdateInArray(predicate, this._items, this, updater);\n }\n\n getAndUpdate(item: T, updater: (existing: T, item: T) => any, updateParams: any = null): void {\n const idx = this.indexOf(item);\n if (idx !== -1) {\n const existingItem = this._items[idx];\n const newItem = updater(existingItem, item);\n this._items[idx] = newItem;\n this.emitUpdate(idx, newItem, updateParams);\n }\n }\n\n update(item: T, updateParams: any = null): void {\n const idx = this.indexOf(item);\n if (idx !== -1) {\n this._items[idx] = item;\n this.emitUpdate(idx, item, updateParams);\n }\n }\n\n indexOf(item: T): number {\n const idx = sortedIndex(this._items, item, this._comparator);\n if (idx < this._items.length && this._comparator(this._items[idx], item) === 0) {\n return idx;\n } else {\n return -1;\n }\n }\n\n _getNext(item: T): T | undefined {\n let idx = sortedIndex(this._items, item, this._comparator);\n while(idx < this._items.length && this._comparator(this._items[idx], item) <= 0) {\n idx += 1;\n }\n return this.get(idx);\n }\n\n set(item: T, updateParams: any = null): void {\n const idx = sortedIndex(this._items, item, this._comparator);\n if (idx >= this._items.length || this._comparator(this._items[idx], item) !== 0) {\n this._items.splice(idx, 0, item);\n this.emitAdd(idx, item);\n } else {\n this._items[idx] = item;\n this.emitUpdate(idx, item, updateParams);\n }\n }\n\n get(idx: number): T | undefined {\n return this._items[idx];\n }\n\n remove(idx: number): void {\n const item = this._items[idx];\n this._items.splice(idx, 1);\n this.emitRemove(idx, item);\n }\n\n get array(): T[] {\n return this._items;\n }\n\n get length(): number {\n return this._items.length;\n }\n\n [Symbol.iterator](): Iterator {\n return new Iterator(this);\n }\n}\n\n// iterator that works even if the current value is removed while iterating\nclass Iterator {\n private _sortedArray: SortedArray;\n private _current: T | null | undefined;\n private _consumed: boolean = false;\n\n constructor(sortedArray: SortedArray) {\n this._sortedArray = sortedArray;\n this._current = null;\n }\n\n next(): IteratorResult {\n if (this._consumed) {\n return {value: undefined, done: true};\n }\n this._current = this._current? this._sortedArray._getNext(this._current): this._sortedArray.get(0);\n if (!this._current) {\n this._consumed = true;\n }\n return { value: this._current, done: this._consumed } as IteratorResult;\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nexport function tests() {\n return {\n \"setManyUnsorted\": (assert): void => {\n const sa = new SortedArray((a, b) => a.localeCompare(b));\n sa.setManyUnsorted([\"b\", \"a\", \"c\"]);\n assert.equal(sa.length, 3);\n assert.equal(sa.get(0), \"a\");\n assert.equal(sa.get(1), \"b\");\n assert.equal(sa.get(2), \"c\");\n },\n \"_getNext\": (assert): void => {\n const sa = new SortedArray((a, b) => a.localeCompare(b));\n sa.setManyUnsorted([\"b\", \"a\", \"f\"]);\n assert.equal(sa._getNext(\"a\"), \"b\");\n assert.equal(sa._getNext(\"b\"), \"f\");\n // also finds the next if the value is not in the collection\n assert.equal(sa._getNext(\"c\"), \"f\");\n assert.equal(sa._getNext(\"f\"), undefined);\n },\n \"iterator with removals\": (assert): void => {\n const queue = new SortedArray<{idx: number}>((a, b) => a.idx - b.idx);\n queue.setManyUnsorted([{idx: 5}, {idx: 3}, {idx: 1}, {idx: 4}, {idx: 2}]);\n const it = queue[Symbol.iterator]();\n assert.equal(it.next().value.idx, 1);\n assert.equal(it.next().value.idx, 2);\n queue.remove(1);\n assert.equal(it.next().value.idx, 3);\n queue.remove(1);\n assert.equal(it.next().value.idx, 4);\n queue.remove(1);\n assert.equal(it.next().value.idx, 5);\n queue.remove(1);\n assert.equal(it.next().done, true);\n // check done persists\n assert.equal(it.next().done, true);\n }\n };\n}\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {BaseObservableList} from \"./BaseObservableList\";\nimport {findAndUpdateInArray} from \"./common\";\n\nexport type Mapper = (value: F) => T\nexport type Updater = (mappedValue: T, params: any, value: F) => void;\n\nexport class BaseMappedList extends BaseObservableList {\n protected _sourceList: BaseObservableList;\n protected _sourceUnsubscribe: (() => void) | null = null;\n _mapper: Mapper;\n _updater?: Updater;\n _removeCallback?: (value: T) => void;\n _mappedValues: T[] | null = null;\n\n constructor(sourceList: BaseObservableList, mapper: Mapper, updater?: Updater, removeCallback?: (value: T) => void) {\n super();\n this._sourceList = sourceList;\n this._mapper = mapper;\n this._updater = updater;\n this._removeCallback = removeCallback;\n }\n\n findAndUpdate(predicate: (value: T) => boolean, updater: (value: T) => any | false): boolean {\n return findAndUpdateInArray(predicate, this._mappedValues!, this, updater);\n }\n\n get length(): number {\n return this._mappedValues!.length;\n }\n\n [Symbol.iterator](): IterableIterator {\n return this._mappedValues!.values();\n }\n}\n\nexport function runAdd(list: BaseMappedList, index: number, mappedValue: T): void {\n list._mappedValues!.splice(index, 0, mappedValue);\n list.emitAdd(index, mappedValue);\n}\n\nexport function runUpdate(list: BaseMappedList, index: number, value: F, params: any): void {\n const mappedValue = list._mappedValues![index];\n if (list._updater) {\n list._updater(mappedValue, params, value);\n }\n list.emitUpdate(index, mappedValue, params);\n}\n\nexport function runRemove(list: BaseMappedList, index: number): void {\n const mappedValue = list._mappedValues![index];\n list._mappedValues!.splice(index, 1);\n if (list._removeCallback) {\n list._removeCallback(mappedValue);\n }\n list.emitRemove(index, mappedValue);\n}\n\nexport function runMove(list: BaseMappedList, fromIdx: number, toIdx: number): void {\n const mappedValue = list._mappedValues![fromIdx];\n list._mappedValues!.splice(fromIdx, 1);\n list._mappedValues!.splice(toIdx, 0, mappedValue);\n list.emitMove(fromIdx, toIdx, mappedValue);\n}\n\nexport function runReset(list: BaseMappedList): void {\n list._mappedValues = [];\n list.emitReset();\n}\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {IListObserver} from \"./BaseObservableList\";\nimport {BaseMappedList, runAdd, runUpdate, runRemove, runMove, runReset} from \"./BaseMappedList\";\n\nexport class AsyncMappedList extends BaseMappedList> implements IListObserver {\n private _eventQueue: AsyncEvent[] | null = null;\n private _flushing: boolean = false;\n\n onSubscribeFirst(): void {\n this._sourceUnsubscribe = this._sourceList.subscribe(this);\n this._eventQueue = [];\n this._mappedValues = [];\n let idx = 0;\n for (const item of this._sourceList) {\n this._eventQueue.push(new AddEvent(idx, item));\n idx += 1;\n }\n void this._flush();\n }\n\n async _flush(): Promise {\n if (this._flushing) {\n return;\n }\n this._flushing = true;\n try {\n while (this._eventQueue!.length) {\n const event = this._eventQueue!.shift();\n await event!.run(this);\n }\n } finally {\n this._flushing = false;\n }\n }\n\n onReset(): void {\n if (this._eventQueue) {\n this._eventQueue.push(new ResetEvent());\n void this._flush();\n }\n }\n\n onAdd(index: number, value: F): void {\n if (this._eventQueue) {\n this._eventQueue.push(new AddEvent(index, value));\n void this._flush();\n }\n }\n\n onUpdate(index: number, value: F, params: any): void {\n if (this._eventQueue) {\n this._eventQueue.push(new UpdateEvent(index, value, params));\n void this._flush();\n }\n }\n\n onRemove(index: number): void {\n if (this._eventQueue) {\n this._eventQueue.push(new RemoveEvent(index));\n void this._flush();\n }\n }\n\n onMove(fromIdx: number, toIdx: number): void {\n if (this._eventQueue) {\n this._eventQueue.push(new MoveEvent(fromIdx, toIdx));\n void this._flush();\n }\n }\n\n onUnsubscribeLast(): void {\n this._sourceUnsubscribe!();\n this._eventQueue = null;\n this._mappedValues = null;\n }\n}\n\ntype AsyncEvent = AddEvent | UpdateEvent | RemoveEvent | MoveEvent | ResetEvent\n\nclass AddEvent {\n constructor(public index: number, public value: F) {}\n\n async run(list: AsyncMappedList): Promise {\n const mappedValue = await list._mapper(this.value);\n runAdd(list, this.index, mappedValue);\n }\n}\n\nclass UpdateEvent {\n constructor(public index: number, public value: F, public params: any) {}\n\n async run(list: AsyncMappedList): Promise {\n runUpdate(list, this.index, this.value, this.params);\n }\n}\n\nclass RemoveEvent {\n constructor(public index: number) {}\n\n async run(list: AsyncMappedList): Promise {\n runRemove(list, this.index);\n }\n}\n\nclass MoveEvent {\n constructor(public fromIdx: number, public toIdx: number) {}\n\n async run(list: AsyncMappedList): Promise {\n runMove(list, this.fromIdx, this.toIdx);\n }\n}\n\nclass ResetEvent {\n async run(list: AsyncMappedList): Promise {\n runReset(list);\n }\n}\n\nimport {ObservableArray} from \"./ObservableArray\";\nimport {ListObserver} from \"../../mocks/ListObserver.js\";\n\n\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nexport function tests() {\n return {\n \"events are emitted in order\": async (assert): Promise => {\n const double = (n: number): number => n * n;\n const source = new ObservableArray();\n const mapper = new AsyncMappedList(source, async n => {\n await new Promise(r => setTimeout(r, n));\n return {n: double(n)};\n }, (o, params, n) => {\n o.n = double(n);\n });\n const observer = new ListObserver();\n mapper.subscribe(observer);\n source.append(2); // will sleep this amount, so second append would take less time\n source.append(1);\n source.update(0, 7, \"lucky seven\");\n source.remove(0);\n {\n const {type, index, value} = await observer.next();\n assert.equal(mapper.length, 1);\n assert.equal(type, \"add\");\n assert.equal(index, 0);\n assert.equal(value.n, 4);\n }\n {\n const {type, index, value} = await observer.next();\n assert.equal(mapper.length, 2);\n assert.equal(type, \"add\");\n assert.equal(index, 1);\n assert.equal(value.n, 1);\n }\n {\n const {type, index, value, params} = await observer.next();\n assert.equal(mapper.length, 2);\n assert.equal(type, \"update\");\n assert.equal(index, 0);\n assert.equal(value.n, 49);\n assert.equal(params, \"lucky seven\");\n }\n {\n const {type, index, value} = await observer.next();\n assert.equal(mapper.length, 1);\n assert.equal(type, \"remove\");\n assert.equal(index, 0);\n assert.equal(value.n, 49);\n }\n }\n };\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {BaseObservableList, IListObserver} from \"./BaseObservableList\";\n\nexport class ConcatList extends BaseObservableList implements IListObserver {\n protected _sourceLists: BaseObservableList[];\n protected _sourceUnsubscribes: (() => void)[] | null = null;\n\n constructor(...sourceLists: BaseObservableList[]) {\n super();\n this._sourceLists = sourceLists;\n }\n\n _offsetForSource(sourceList: BaseObservableList): number {\n const listIdx = this._sourceLists.indexOf(sourceList);\n let offset = 0;\n for (let i = 0; i < listIdx; ++i) {\n offset += this._sourceLists[i].length;\n }\n return offset;\n }\n\n onSubscribeFirst(): void {\n this._sourceUnsubscribes = this._sourceLists.map(sourceList => sourceList.subscribe(this));\n }\n\n onUnsubscribeLast(): void {\n for (const sourceUnsubscribe of this._sourceUnsubscribes!) {\n sourceUnsubscribe();\n }\n }\n\n onReset(): void {\n // TODO: not ideal if other source lists are large\n // but working impl for now\n // reset, and\n this.emitReset();\n let idx = 0;\n for(const item of this) {\n this.emitAdd(idx, item);\n idx += 1;\n }\n }\n\n onAdd(index: number, value: T, sourceList: BaseObservableList): void {\n this.emitAdd(this._offsetForSource(sourceList) + index, value);\n }\n\n onUpdate(index: number, value: T, params: any, sourceList: BaseObservableList): void {\n // if an update is emitted while calling source.subscribe() from onSubscribeFirst, ignore it\n // as we are not supposed to call `length` on any uninitialized list\n if (!this._sourceUnsubscribes) {\n return;\n }\n this.emitUpdate(this._offsetForSource(sourceList) + index, value, params);\n }\n\n onRemove(index: number, value: T, sourceList: BaseObservableList): void {\n this.emitRemove(this._offsetForSource(sourceList) + index, value);\n }\n\n onMove(fromIdx: number, toIdx: number, value: T, sourceList: BaseObservableList): void {\n const offset = this._offsetForSource(sourceList);\n this.emitMove(offset + fromIdx, offset + toIdx, value);\n }\n\n get length(): number {\n let len = 0;\n for (let i = 0; i < this._sourceLists.length; ++i) {\n len += this._sourceLists[i].length;\n }\n return len;\n }\n\n [Symbol.iterator](): Iterator {\n let sourceListIdx = 0;\n let it = this._sourceLists[0][Symbol.iterator]();\n return {\n next: (): IteratorResult => {\n let result = it.next();\n while (result.done) {\n sourceListIdx += 1;\n if (sourceListIdx >= this._sourceLists.length) {\n return result; //done\n }\n it = this._sourceLists[sourceListIdx][Symbol.iterator]();\n result = it.next();\n }\n return result;\n }\n };\n }\n}\n\nimport {ObservableArray} from \"./ObservableArray\";\nimport {defaultObserverWith} from \"./BaseObservableList\";\n\n\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nexport async function tests() {\n return {\n test_length(assert): void {\n const all = new ConcatList(\n new ObservableArray([1, 2, 3]),\n new ObservableArray([11, 12, 13])\n );\n assert.equal(all.length, 6);\n },\n test_iterator(assert): void {\n const all = new ConcatList(\n new ObservableArray([1, 2, 3]),\n new ObservableArray([11, 12, 13])\n );\n const it = all[Symbol.iterator]();\n assert.equal(it.next().value, 1);\n assert.equal(it.next().value, 2);\n assert.equal(it.next().value, 3);\n assert.equal(it.next().value, 11);\n assert.equal(it.next().value, 12);\n assert.equal(it.next().value, 13);\n assert(it.next().done);\n },\n test_add(assert): void {\n const list1 = new ObservableArray([1, 2, 3]);\n const list2 = new ObservableArray([11, 12, 13]);\n const all = new ConcatList(list1, list2);\n let fired = false;\n all.subscribe(defaultObserverWith({\n onAdd(index, value) {\n fired = true;\n assert.equal(index, 4);\n assert.equal(value, 11.5);\n }\n }));\n list2.insert(1, 11.5);\n assert(fired);\n },\n test_update(assert): void {\n const list1 = new ObservableArray([1, 2, 3]);\n const list2 = new ObservableArray([11, 12, 13]);\n const all = new ConcatList(list1, list2);\n let fired = false;\n all.subscribe(defaultObserverWith({\n onUpdate(index, value) {\n fired = true;\n assert.equal(index, 4);\n assert.equal(value, 10);\n }\n }));\n list2.emitUpdate(1, 10);\n assert(fired);\n },\n };\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {BaseObservableList} from \"./BaseObservableList\";\nimport {sortedIndex} from \"../../utils/sortedIndex\";\n\n/*\n\nwhen a value changes, it sorting order can change. It would still be at the old index prior to firing an onUpdate event.\nSo how do you know where it was before it changed, if not by going over all values?\n\nhow to make this fast?\n\nseems hard to solve with an array, because you need to map the key to it's previous location somehow, to efficiently find it,\nand move it.\n\nI wonder if we could do better with a binary search tree (BST).\nThe tree has a value with {key, value}. There is a plain Map mapping keys to this tuple,\nfor easy lookup. Now how do we find the index of this tuple in the BST?\n\neither we store in every node the amount of nodes on the left and right, or we decend into the part\nof the tree preceding the node we want to know about. Updating the counts upwards would probably be fine as this is log2 of\nthe size of the container.\n\nto be able to go from a key to an index, the value would have the have a link with the tree node though\n\nso key -> Map -> value -> node -> *parentNode -> rootNode\nwith a node containing {value, leftCount, rightCount, leftNode, rightNode, parentNode}\n*/\n\n// does not assume whether or not the values are reference\n// types modified outside of the collection (and affecting sort order) or not\n\n// no duplicates allowed for now\nexport class SortedMapList extends BaseObservableList {\n constructor(sourceMap, comparator) {\n super();\n this._sourceMap = sourceMap;\n this._comparator = (a, b) => comparator(a.value, b.value);\n this._sortedPairs = null;\n this._mapSubscription = null;\n }\n\n onAdd(key, value) {\n const pair = {key, value};\n const idx = sortedIndex(this._sortedPairs, pair, this._comparator);\n this._sortedPairs.splice(idx, 0, pair);\n this.emitAdd(idx, value);\n }\n\n onRemove(key, value) {\n const pair = {key, value};\n const idx = sortedIndex(this._sortedPairs, pair, this._comparator);\n // assert key === this._sortedPairs[idx].key;\n this._sortedPairs.splice(idx, 1);\n this.emitRemove(idx, value);\n }\n\n onUpdate(key, value, params) {\n // if an update is emitted while calling source.subscribe() from onSubscribeFirst, ignore it\n if (!this._sortedPairs) {\n return;\n }\n // TODO: suboptimal for performance, see above for idea with BST to speed this up if we need to\n const oldIdx = this._sortedPairs.findIndex(p => p.key === key);\n // neccesary to remove pair from array before\n // doing sortedIndex as it relies on being sorted\n this._sortedPairs.splice(oldIdx, 1);\n const pair = {key, value};\n const newIdx = sortedIndex(this._sortedPairs, pair, this._comparator);\n this._sortedPairs.splice(newIdx, 0, pair);\n if (oldIdx !== newIdx) {\n this.emitMove(oldIdx, newIdx, value);\n }\n this.emitUpdate(newIdx, value, params);\n }\n\n onReset() {\n this._sortedPairs = [];\n this.emitReset();\n }\n\n onSubscribeFirst() {\n this._mapSubscription = this._sourceMap.subscribe(this);\n this._sortedPairs = new Array(this._sourceMap.size);\n let i = 0;\n for (let [key, value] of this._sourceMap) {\n this._sortedPairs[i] = {key, value};\n ++i;\n }\n this._sortedPairs.sort(this._comparator);\n super.onSubscribeFirst();\n }\n\n onUnsubscribeLast() {\n super.onUnsubscribeLast();\n this._sortedPairs = null;\n this._mapSubscription = this._mapSubscription();\n }\n\n get(index) {\n return this._sortedPairs[index].value;\n }\n\n get length() {\n return this._sourceMap.size;\n }\n\n [Symbol.iterator]() {\n const it = this._sortedPairs.values();\n return {\n next() {\n const v = it.next();\n if (v.value) {\n v.value = v.value.value;\n }\n return v;\n }\n };\n }\n}\n\nimport {ObservableMap} from \"../\";\n\nexport function tests() {\n return {\n test_sortIndex(assert) {\n const a = [1, 5, 6, 8];\n const cmp = (a, b) => a - b;\n let idx = sortedIndex(a, 0, cmp);\n assert.equal(idx, 0);\n idx = sortedIndex(a, 3, cmp);\n assert.equal(idx, 1);\n idx = sortedIndex(a, 5, cmp);\n assert.equal(idx, 1);\n idx = sortedIndex(a, 8, cmp);\n assert.equal(idx, 3);\n },\n\n test_sortIndex_reverse(assert) {\n let idx = sortedIndex([8, 6, 5, 1], 6, (a, b) => b - a);\n assert.equal(idx, 1);\n },\n\n test_sortIndex_comparator_Array_compatible(assert) {\n const a = [5, 1, 8, 2];\n const cmp = (a, b) => a - b;\n a.sort(cmp);\n assert.deepEqual(a, [1, 2, 5, 8]);\n let idx = sortedIndex(a, 2, cmp);\n assert.equal(idx, 1);\n },\n\n test_initial_values(assert) {\n const map = new ObservableMap([\n [\"a\", 50],\n [\"b\", 6],\n [\"c\", -5],\n ]);\n const list = new SortedMapList(map, (a, b) => a - b);\n list.subscribe({}); //needed to populate iterator\n assert.deepEqual(Array.from(list), [-5, 6, 50]);\n assert.equal(list.length, 3);\n },\n\n test_add(assert) {\n const map = new ObservableMap([[\"a\", 50], [\"b\", 6], [\"c\", -5]]);\n const list = new SortedMapList(map, (a, b) => a - b);\n let fired = 0;\n list.subscribe({\n onAdd(idx, value) {\n fired++;\n assert.equal(idx, 2);\n assert.equal(value, 20);\n }\n });\n map.add(\"d\", 20);\n assert.equal(fired, 1);\n assert.equal(list.length, 4);\n },\n\n test_remove(assert) {\n const map = new ObservableMap([[\"a\", 50], [\"b\", 6], [\"c\", -5]]);\n const list = new SortedMapList(map, (a, b) => a - b);\n let fired = 0;\n list.subscribe({\n onRemove(idx, value) {\n fired++;\n assert.equal(idx, 2);\n assert.equal(value, 50);\n }\n });\n map.remove(\"a\");\n assert.equal(fired, 1);\n assert.equal(list.length, 2);\n },\n\n test_move_reference(assert) {\n const a = {number: 3};\n const map = new ObservableMap([\n [\"a\", a],\n [\"b\", {number: 11}],\n [\"c\", {number: 1}],\n ]);\n const list = new SortedMapList(map, (a, b) => a.number - b.number);\n let updateFired = 0, moveFired = 0;\n list.subscribe({\n onUpdate(idx, value, param) {\n updateFired++;\n assert.equal(idx, 2);\n assert.equal(value, a);\n assert.equal(param, \"number\");\n },\n\n onMove(oldIdx, newIdx, value) {\n moveFired++;\n assert.equal(oldIdx, 1);\n assert.equal(newIdx, 2);\n assert.equal(value, a);\n }\n });\n a.number = 111;\n map.update(\"a\", \"number\");\n assert.equal(moveFired, 1);\n assert.equal(updateFired, 1);\n },\n\n test_update_without_move(assert) {\n const a = {number: 3};\n const map = new ObservableMap([\n [\"a\", a],\n [\"b\", {number: 11}],\n [\"c\", {number: 1}],\n ]);\n const list = new SortedMapList(map, (a, b) => a.number - b.number);\n let updateFired = 0, moveFired = 0;\n list.subscribe({\n onUpdate(idx, value, param) {\n updateFired++;\n assert.equal(idx, 1);\n assert.equal(value, a);\n assert.equal(param, \"number\");\n },\n\n onMove() {\n moveFired++;\n }\n });\n assert.deepEqual(Array.from(list).map(v => v.number), [1, 3, 11]);\n // asume some part of a that doesn't affect\n // sorting order has changed here\n map.update(\"a\", \"number\");\n assert.equal(moveFired, 0);\n assert.equal(updateFired, 1);\n assert.deepEqual(Array.from(list).map(v => v.number), [1, 3, 11]);\n },\n };\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {BaseObservable} from \"../BaseObservable\";\nimport {JoinedMap} from \"./index\";\nimport {MappedMap} from \"./index\";\nimport {FilteredMap} from \"./index\";\nimport {BaseObservableValue, MapSizeObservableValue} from \"../value/index\";\nimport {SortedMapList} from \"../list/SortedMapList.js\";\n\n\nexport interface IMapObserver {\n onReset(): void;\n onAdd(key: K, value:V): void;\n onUpdate(key: K, value: V, params: any): void;\n onRemove(key: K, value: V): void\n}\n\n/*\nThis class MUST never be imported directly from here.\nInstead, it MUST be imported from index.ts. See the\ntop level comment in index.ts for details.\n*/\nexport abstract class BaseObservableMap extends BaseObservable> {\n\n constructor() {\n super();\n }\n\n emitReset(): void {\n for(let h of this._handlers) {\n h.onReset();\n }\n }\n // we need batch events, mostly on index based collection though?\n // maybe we should get started without?\n emitAdd(key: K, value: V): void {\n for(let h of this._handlers) {\n h.onAdd(key, value);\n }\n }\n\n emitUpdate(key: K, value: V, params: any): void {\n for(let h of this._handlers) {\n h.onUpdate(key, value, params);\n }\n }\n\n emitRemove(key: K, value: V): void {\n for(let h of this._handlers) {\n h.onRemove(key, value);\n }\n }\n\n join>(...otherMaps: Array): JoinedMap {\n return new JoinedMap([this as BaseObservableMap].concat(otherMaps));\n }\n\n mapValues(mapper: Mapper, updater?: Updater): MappedMap {\n return new MappedMap(this, mapper, updater);\n }\n\n sortValues(comparator: Comparator): SortedMapList {\n return new SortedMapList(this, comparator);\n }\n\n filterValues(filter: Filter): FilteredMap {\n return new FilteredMap(this, filter);\n }\n\n observeSize(): BaseObservableValue {\n return new MapSizeObservableValue(this);\n }\n\n abstract [Symbol.iterator](): Iterator<[K, V]>;\n abstract get size(): number;\n abstract get(key: K): V | undefined;\n}\n\nexport type Mapper = (\n value: V,\n emitSpontaneousUpdate: any,\n) => MappedV;\n\nexport type Updater = (params: any, mappedValue?: MappedV, value?: V) => void;\n\nexport type Comparator = (a: V, b: V) => number;\n\nexport type Filter = (v: V, k: K) => boolean;\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {BaseObservableMap} from \"./index\";\nimport {SubscriptionHandle} from \"../BaseObservable\";\n\n\n/*\nThis class MUST never be imported directly from here.\nInstead, it MUST be imported from index.ts. See the\ntop level comment in index.ts for details.\n*/\nexport class ApplyMap extends BaseObservableMap {\n private _source: BaseObservableMap;\n private _subscription?: SubscriptionHandle;\n private _apply?: Apply;\n\n constructor(source: BaseObservableMap, apply?: Apply) {\n super();\n this._source = source;\n this._apply = apply;\n }\n\n hasApply(): boolean {\n return !!this._apply;\n }\n\n setApply(apply?: Apply): void {\n this._apply = apply;\n if (this._apply) {\n this.applyOnce(this._apply);\n }\n }\n\n applyOnce(apply: Apply): void {\n for (const [key, value] of this._source) {\n apply(key, value);\n }\n }\n\n onAdd(key: K, value: V): void {\n if (this._apply) {\n this._apply(key, value);\n }\n this.emitAdd(key, value);\n }\n\n onRemove(key: K, value: V): void {\n this.emitRemove(key, value);\n }\n\n onUpdate(key: K, value: V, params: any): void {\n if (this._apply) {\n this._apply(key, value, params);\n }\n this.emitUpdate(key, value, params);\n }\n\n onSubscribeFirst(): void {\n this._subscription = this._source.subscribe(this);\n if (this._apply) {\n this.applyOnce(this._apply);\n }\n super.onSubscribeFirst();\n }\n\n onUnsubscribeLast(): void {\n super.onUnsubscribeLast();\n if (this._subscription) {\n this._subscription = this._subscription();\n }\n }\n\n onReset(): void {\n if (this._apply) {\n this.applyOnce(this._apply);\n }\n this.emitReset();\n }\n\n [Symbol.iterator](): Iterator<[K, V]> {\n return this._source[Symbol.iterator]();\n }\n\n get size(): number {\n return this._source.size;\n }\n\n get(key: K): V | undefined {\n return this._source.get(key);\n }\n}\n\ntype Apply = (key: K, value: V, params?: any) => void;","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {BaseObservableMap, Filter} from \"./index\";\nimport {SubscriptionHandle} from \"../BaseObservable\";\n\n\n/*\nThis class MUST never be imported directly from here.\nInstead, it MUST be imported from index.ts. See the\ntop level comment in index.ts for details.\n*/\nexport class FilteredMap extends BaseObservableMap {\n private _source: BaseObservableMap;\n private _filter: Filter;\n private _included?: Map;\n private _subscription?: SubscriptionHandle;\n\n constructor(source: BaseObservableMap, filter: Filter) {\n super();\n this._source = source;\n this._filter = filter;\n }\n\n setFilter(filter: Filter): void {\n this._filter = filter;\n if (this._subscription) {\n this._reapplyFilter();\n }\n }\n\n /**\n * reapply the filter\n */\n _reapplyFilter(silent = false): void {\n if (this._filter) {\n this._included = this._included || new Map();\n for (const [key, value] of this._source) {\n const isIncluded = this._filter(value, key);\n const oldIncluded = this._included.get(key);\n this._included.set(key, isIncluded);\n if (!silent) {\n const wasIncluded = oldIncluded ? oldIncluded : true;\n this._emitForUpdate(wasIncluded, isIncluded, key, value);\n }\n }\n } else { // no filter\n // did we have a filter before?\n if (this._included && !silent) {\n // add any non-included items again\n for (const [key, value] of this._source) {\n if (!this._included.get(key)) {\n this.emitAdd(key, value);\n }\n }\n }\n this._included = undefined;\n }\n }\n\n onAdd(key: K, value: V): void {\n if (this._filter) {\n if (this._included) {\n const included = this._filter(value, key);\n this._included.set(key, included);\n if (!included) {\n return;\n }\n } else {\n throw new Error(\"Internal logic error: FilteredMap._included used before initialized\");\n }\n }\n this.emitAdd(key, value);\n }\n\n onRemove(key: K, value: V): void {\n const wasIncluded = !this._filter || this._included?.get(key);\n if (this._included) {\n this._included.delete(key);\n if (wasIncluded) {\n this.emitRemove(key, value);\n }\n } else {\n throw new Error(\"Internal logic error: FilteredMap._included used before initialized\");\n }\n }\n\n onUpdate(key: K, value: V, params: any): void {\n // if an update is emitted while calling source.subscribe() from onSubscribeFirst, ignore it\n if (!this._included) {\n return;\n }\n if (this._filter) {\n const wasIncluded = this._included.get(key);\n const isIncluded = this._filter(value, key);\n this._included.set(key, isIncluded);\n this._emitForUpdate(wasIncluded, isIncluded, key, value, params);\n } else {\n this.emitUpdate(key, value, params);\n }\n }\n\n _emitForUpdate(wasIncluded: boolean | undefined, isIncluded: boolean, key: K, value: V, params: any = null): void {\n if (wasIncluded && !isIncluded) {\n this.emitRemove(key, value);\n } else if (!wasIncluded && isIncluded) {\n this.emitAdd(key, value);\n } else if (wasIncluded && isIncluded) {\n this.emitUpdate(key, value, params);\n }\n }\n\n onSubscribeFirst(): void {\n this._subscription = this._source.subscribe(this);\n this._reapplyFilter(true);\n super.onSubscribeFirst();\n }\n\n onUnsubscribeLast(): void {\n super.onUnsubscribeLast();\n this._included = undefined;\n if (this._subscription) {\n this._subscription = this._subscription();\n }\n }\n\n onReset(): void {\n this._reapplyFilter();\n this.emitReset();\n }\n\n [Symbol.iterator](): FilterIterator {\n return new FilterIterator(this._source, this._included);\n }\n\n get size(): number {\n let count = 0;\n this._included?.forEach(included => {\n if (included) {\n count += 1;\n }\n });\n return count;\n }\n\n get(key: K): V | undefined {\n const value = this._source.get(key);\n if (value && this._filter(value, key)) {\n return value;\n }\n }\n}\n\nclass FilterIterator {\n private _included?: Map\n private _sourceIterator: Iterator<[K, V], any, undefined>\n constructor(map: BaseObservableMap, included?: Map) {\n this._included = included;\n this._sourceIterator = map[Symbol.iterator]();\n }\n\n next(): IteratorResult<[K, V]> {\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const sourceResult = this._sourceIterator.next();\n if (sourceResult.done) {\n return sourceResult;\n }\n const key = sourceResult.value[0];\n if (this._included?.get(key)) {\n return sourceResult;\n }\n }\n }\n}\n\nimport {ObservableMap} from \"..\";\n\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nexport function tests() {\n return {\n \"filter preloaded list\": (assert): void => {\n const source = new ObservableMap();\n source.add(\"one\", 1);\n source.add(\"two\", 2);\n source.add(\"three\", 3);\n const oddNumbers = new FilteredMap(source, (x: number) => x % 2 !== 0);\n // can only iterate after subscribing\n oddNumbers.subscribe({\n onAdd() {\n return;\n },\n onRemove() {\n return;\n },\n onUpdate() {\n return;\n },\n onReset() {\n return;\n },\n });\n assert.equal(oddNumbers.size, 2);\n const it = oddNumbers[Symbol.iterator]();\n assert.deepEqual(it.next().value, [\"one\", 1]);\n assert.deepEqual(it.next().value, [\"three\", 3]);\n assert.equal(it.next().done, true);\n },\n // \"filter added values\": (assert): void => {\n\n // },\n // \"filter removed values\": (assert): void => {\n\n // },\n // \"filter changed values\": (assert): void => {\n\n // },\n\n \"emits must trigger once\": (assert): void => {\n const source = new ObservableMap();\n let count_add = 0, count_update = 0, count_remove = 0;\n source.add(\"num1\", 1);\n source.add(\"num2\", 2);\n source.add(\"num3\", 3);\n const oddMap = new FilteredMap(source, (x: number) => x % 2 !== 0);\n oddMap.subscribe({\n onAdd() {\n count_add += 1;\n },\n onRemove() {\n count_remove += 1;\n },\n onUpdate() {\n count_update += 1;\n },\n onReset() {\n return;\n }\n });\n source.set(\"num3\", 4);\n source.set(\"num3\", 5);\n source.set(\"num3\", 7);\n assert.strictEqual(count_add, 1);\n assert.strictEqual(count_update, 1);\n assert.strictEqual(count_remove, 1);\n }\n };\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {BaseObservableMap} from \".\";\nimport {SubscriptionHandle} from \"../BaseObservable\";\n\n\n/*\nThis class MUST never be imported directly from here.\nInstead, it MUST be imported from index.ts. See the\ntop level comment in index.ts for details.\n*/\nexport class JoinedMap extends BaseObservableMap {\n protected _sources: BaseObservableMap[];\n private _subscriptions?: SourceSubscriptionHandler[];\n\n constructor(sources: BaseObservableMap[]) {\n super();\n this._sources = sources;\n }\n\n onAdd(source: BaseObservableMap, key: K, value: V): void {\n if (!this._isKeyAtSourceOccluded(source, key)) {\n const occludingValue = this._getValueFromOccludedSources(source, key);\n if (occludingValue !== undefined) {\n // adding a value that will occlude another one should\n // first emit a remove\n this.emitRemove(key, occludingValue);\n }\n this.emitAdd(key, value);\n }\n }\n\n onRemove(source: BaseObservableMap, key: K, value: V): void {\n if (!this._isKeyAtSourceOccluded(source, key)) {\n this.emitRemove(key, value);\n const occludedValue = this._getValueFromOccludedSources(source, key);\n if (occludedValue !== undefined) {\n // removing a value that so far occluded another one should\n // emit an add for the occluded value after the removal\n this.emitAdd(key, occludedValue);\n }\n }\n }\n\n onUpdate(source: BaseObservableMap, key: K, value: V, params: any): void {\n // if an update is emitted while calling source.subscribe() from onSubscribeFirst, ignore it\n if (!this._subscriptions) {\n return;\n }\n if (!this._isKeyAtSourceOccluded(source, key)) {\n this.emitUpdate(key, value, params);\n }\n }\n\n onReset(): void {\n this.emitReset();\n }\n\n onSubscribeFirst(): void {\n this._subscriptions = this._sources.map(source => new SourceSubscriptionHandler(source, this).subscribe());\n super.onSubscribeFirst();\n }\n\n _isKeyAtSourceOccluded(source: BaseObservableMap, key: K): boolean {\n // sources that come first in the sources array can\n // hide the keys in later sources, to prevent events\n // being emitted for the same key and different values,\n // so check the key is not present in earlier sources\n const index = this._sources.indexOf(source);\n for (let i = 0; i < index; i += 1) {\n if (this._sources[i].get(key) !== undefined) {\n return true;\n }\n }\n return false;\n }\n\n // get the value that the given source and key occlude, if any\n _getValueFromOccludedSources(source: BaseObservableMap, key: K): V | undefined{\n // sources that come first in the sources array can\n // hide the keys in later sources, to prevent events\n // being emitted for the same key and different values,\n // so check the key is not present in earlier sources\n const index = this._sources.indexOf(source);\n for (let i = index + 1; i < this._sources.length; i += 1) {\n const source = this._sources[i];\n const occludedValue = source.get(key);\n if (occludedValue !== undefined) {\n return occludedValue;\n }\n }\n return undefined;\n }\n\n onUnsubscribeLast(): void {\n super.onUnsubscribeLast();\n if (this._subscriptions) {\n for (const s of this._subscriptions) {\n s.dispose();\n }\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n [Symbol.iterator]() {\n return new JoinedIterator(this._sources);\n }\n\n get size(): number {\n return this._sources.reduce((sum, s) => sum + s.size, 0);\n }\n\n get(key: K): V | undefined {\n for (const s of this._sources) {\n const value = s.get(key);\n if (value) {\n return value;\n }\n }\n return undefined;\n }\n}\n\nclass JoinedIterator implements Iterator<[K, V]> {\n private _sources: {[Symbol.iterator](): Iterator<[K, V]>}[];\n private _sourceIndex = -1;\n private _encounteredKeys = new Set();\n private _currentIterator?: Iterator<[K, V]>\n\n constructor(sources: {[Symbol.iterator](): Iterator<[K, V]>}[]) {\n this._sources = sources;\n }\n\n next(): IteratorYieldResult<[K, V]> | IteratorReturnResult {\n let result: IteratorYieldResult<[K, V]> | undefined = undefined;\n while (!result) {\n if (!this._currentIterator) {\n this._sourceIndex += 1;\n if (this._sources.length <= this._sourceIndex) {\n return {done: true, value: null};\n }\n this._currentIterator = this._sources[this._sourceIndex][Symbol.iterator]();\n }\n const sourceResult = this._currentIterator?.next();\n if (!sourceResult || sourceResult.done) {\n this._currentIterator = undefined;\n continue;\n } else {\n const key = sourceResult.value[0];\n if (!this._encounteredKeys.has(key)) {\n this._encounteredKeys.add(key);\n result = sourceResult;\n }\n }\n }\n return result;\n }\n}\n\nclass SourceSubscriptionHandler {\n private _source: BaseObservableMap;\n private _joinedMap: JoinedMap;\n private _subscription?: SubscriptionHandle;\n\n constructor(source: BaseObservableMap, joinedMap: JoinedMap) {\n this._source = source;\n this._joinedMap = joinedMap;\n this._subscription = undefined;\n }\n\n subscribe(): this {\n this._subscription = this._source.subscribe(this);\n return this;\n }\n\n dispose(): void {\n if (this._subscription) this._subscription = this._subscription();\n }\n\n onAdd(key: K, value: V): void {\n this._joinedMap.onAdd(this._source, key, value);\n }\n\n onRemove(key: K, value: V): void {\n this._joinedMap.onRemove(this._source, key, value);\n }\n\n onUpdate(key: K, value: V, params: any): void {\n this._joinedMap.onUpdate(this._source, key, value, params);\n }\n\n onReset(): void {\n this._joinedMap.onReset();\n }\n}\n\n\nimport {ObservableMap} from \"..\";\n\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nexport function tests() {\n function observeMap(map: JoinedMap): { type: string; key: any; value: any; params?: any; }[] {\n const events: { type: string, key: any, value: any, params?: any }[] = [];\n map.subscribe({\n onAdd(key, value) { events.push({ type: \"add\", key, value }); },\n onRemove(key, value) { events.push({ type: \"remove\", key, value }); },\n onUpdate(key, value, params) { events.push({ type: \"update\", key, value, params }); },\n onReset: function (): void {\n return;\n }\n });\n return events;\n }\n\n return {\n \"joined iterator\": (assert): void => {\n const firstKV: [string, number] = [\"a\", 1];\n const secondKV: [string, number] = [\"b\", 2];\n const thirdKV: [string, number] = [\"c\", 3];\n const it = new JoinedIterator([[firstKV, secondKV], [thirdKV]]);\n assert.equal(it.next().value, firstKV);\n assert.equal(it.next().value, secondKV);\n assert.equal(it.next().value, thirdKV);\n assert.equal(it.next().done, true);\n },\n \"prevent key collision during iteration\": (assert): void => {\n const first = new ObservableMap();\n const second = new ObservableMap();\n const join = new JoinedMap([first, second]);\n second.add(\"a\", 2);\n second.add(\"b\", 3);\n first.add(\"a\", 1);\n const it = join[Symbol.iterator]();\n assert.deepEqual(it.next().value, [\"a\", 1]);\n assert.deepEqual(it.next().value, [\"b\", 3]);\n assert.equal(it.next().done, true);\n },\n \"adding occluded key doesn't emit add\": (assert): void => {\n const first = new ObservableMap();\n const second = new ObservableMap();\n const join = new JoinedMap([first, second]);\n const events = observeMap(join);\n first.add(\"a\", 1);\n second.add(\"a\", 2);\n assert.equal(events.length, 1);\n assert.equal(events[0].type, \"add\");\n assert.equal(events[0].key, \"a\");\n assert.equal(events[0].value, 1);\n },\n \"updating occluded key doesn't emit update\": (assert): void => {\n const first = new ObservableMap();\n const second = new ObservableMap();\n const join = new JoinedMap([first, second]);\n first.add(\"a\", 1);\n second.add(\"a\", 2);\n const events = observeMap(join);\n second.update(\"a\", 3);\n assert.equal(events.length, 0);\n },\n \"removal of occluding key emits add after remove\": (assert): void => {\n const first = new ObservableMap();\n const second = new ObservableMap();\n const join = new JoinedMap([first, second]);\n first.add(\"a\", 1);\n second.add(\"a\", 2);\n const events = observeMap(join);\n first.remove(\"a\");\n assert.equal(events.length, 2);\n assert.equal(events[0].type, \"remove\");\n assert.equal(events[0].key, \"a\");\n assert.equal(events[0].value, 1);\n assert.equal(events[1].type, \"add\");\n assert.equal(events[1].key, \"a\");\n assert.equal(events[1].value, 2);\n },\n \"adding occluding key emits remove first\": (assert): void => {\n const first = new ObservableMap();\n const second = new ObservableMap();\n const join = new JoinedMap([first, second]);\n second.add(\"a\", 2);\n const events = observeMap(join);\n first.add(\"a\", 1);\n assert.equal(events.length, 2);\n assert.equal(events[0].type, \"remove\");\n assert.equal(events[0].key, \"a\");\n assert.equal(events[0].value, 2);\n assert.equal(events[1].type, \"add\");\n assert.equal(events[1].key, \"a\");\n assert.equal(events[1].value, 1);\n }\n };\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {BaseObservableMap, Mapper, Updater} from \"./index\";\nimport {SubscriptionHandle} from \"../BaseObservable\";\n\n\n/*\nso a mapped value can emit updates on it's own with this._emitSpontaneousUpdate that is passed in the mapping function\nhow should the mapped value be notified of an update though? and can it then decide to not propagate the update?\n*/\n/*\nThis class MUST never be imported directly from here.\nInstead, it MUST be imported from index.ts. See the\ntop level comment in index.ts for details.\n*/\nexport class MappedMap extends BaseObservableMap {\n private _source: BaseObservableMap;\n private _mapper: Mapper;\n private _updater?: Updater;\n private _mappedValues: Map;\n private _subscription?: SubscriptionHandle;\n\n\n constructor(\n source: BaseObservableMap,\n mapper: Mapper,\n updater?: Updater\n ) {\n super();\n this._source = source;\n this._mapper = mapper;\n this._updater = updater;\n this._mappedValues = new Map();\n }\n\n _emitSpontaneousUpdate(key: K, params: any): void {\n const value = this._mappedValues.get(key);\n if (value) {\n this.emitUpdate(key, value, params);\n }\n }\n\n onAdd(key: K, value: V): void {\n const emitSpontaneousUpdate = this._emitSpontaneousUpdate.bind(this, key);\n const mappedValue = this._mapper(value, emitSpontaneousUpdate);\n this._mappedValues.set(key, mappedValue);\n this.emitAdd(key, mappedValue);\n }\n\n onRemove(key: K/*, _value*/): void {\n const mappedValue = this._mappedValues.get(key);\n if (this._mappedValues.delete(key)) {\n if (mappedValue) {\n this.emitRemove(key, mappedValue);\n }\n }\n }\n\n onUpdate(key: K, value: V, params: any): void {\n // if an update is emitted while calling source.subscribe() from onSubscribeFirst, ignore it\n if (!this._mappedValues) {\n return;\n }\n const mappedValue = this._mappedValues.get(key);\n if (mappedValue !== undefined) {\n this._updater?.(params, mappedValue, value);\n // TODO: map params somehow if needed?\n this.emitUpdate(key, mappedValue, params);\n }\n }\n\n onSubscribeFirst(): void {\n this._subscription = this._source.subscribe(this);\n for (let [key, value] of this._source) {\n const emitSpontaneousUpdate = this._emitSpontaneousUpdate.bind(this, key);\n const mappedValue = this._mapper(value, emitSpontaneousUpdate);\n this._mappedValues.set(key, mappedValue);\n }\n super.onSubscribeFirst();\n }\n\n onUnsubscribeLast(): void {\n super.onUnsubscribeLast();\n if (this._subscription) {\n this._subscription = this._subscription();\n }\n this._mappedValues.clear();\n }\n\n onReset(): void {\n this._mappedValues.clear();\n this.emitReset();\n }\n\n [Symbol.iterator](): IterableIterator<[K, MappedV]> {\n return this._mappedValues.entries();\n }\n\n get size(): number {\n return this._mappedValues.size;\n }\n\n get(key: K): MappedV | undefined {\n return this._mappedValues.get(key);\n }\n}","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {BaseObservableMap} from \"./index\";\n\n\n/*\nThis class MUST never be imported directly from here.\nInstead, it MUST be imported from index.ts. See the\ntop level comment in index.ts for details.\n*/\nexport class ObservableMap extends BaseObservableMap {\n private readonly _values: Map;\n\n constructor(initialValues?: (readonly [K, V])[]) {\n super();\n this._values = new Map(initialValues);\n }\n\n update(key: K, params?: any): boolean {\n const value = this._values.get(key);\n if (value !== undefined) {\n // could be the same value, so it's already updated\n // but we don't assume this here\n this._values.set(key, value);\n this.emitUpdate(key, value, params);\n return true;\n }\n return false; // or return existing value?\n }\n\n add(key: K, value: V): boolean {\n if (!this._values.has(key)) {\n this._values.set(key, value);\n this.emitAdd(key, value);\n return true;\n }\n return false; // or return existing value?\n }\n\n remove(key: K): boolean {\n const value = this._values.get(key);\n if (value !== undefined) {\n this._values.delete(key);\n this.emitRemove(key, value);\n return true;\n } else {\n return false;\n }\n }\n\n set(key: K, value: V): boolean {\n if (this._values.has(key)) {\n // We set the value here because update only supports inline updates\n this._values.set(key, value);\n return this.update(key, undefined);\n }\n else {\n return this.add(key, value);\n }\n }\n\n reset(): void {\n this._values.clear();\n this.emitReset();\n }\n\n get(key: K): V | undefined {\n return this._values.get(key);\n }\n\n get size(): number {\n return this._values.size;\n }\n\n [Symbol.iterator](): IterableIterator<[K, V]> {\n return this._values.entries();\n }\n\n values(): IterableIterator {\n return this._values.values();\n }\n\n keys(): IterableIterator {\n return this._values.keys();\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nexport function tests() {\n return {\n test_initial_values(assert): void {\n const map = new ObservableMap([\n [\"a\", 5],\n [\"b\", 10]\n ]);\n assert.equal(map.size, 2);\n assert.equal(map.get(\"a\"), 5);\n assert.equal(map.get(\"b\"), 10);\n },\n\n test_add(assert): void {\n let fired = 0;\n const map = new ObservableMap();\n map.subscribe({\n onAdd(key, value) {\n fired += 1;\n assert.equal(key, 1);\n assert.deepEqual(value, {value: 5});\n },\n onUpdate() {},\n onRemove() {},\n onReset() {}\n });\n map.add(1, {value: 5});\n assert.equal(map.size, 1);\n assert.equal(fired, 1);\n },\n\n test_update(assert): void {\n let fired = 0;\n const map = new ObservableMap();\n const value = {number: 5};\n map.add(1, value);\n map.subscribe({\n onUpdate(key, value, params) {\n fired += 1;\n assert.equal(key, 1);\n assert.deepEqual(value, {number: 6});\n assert.equal(params, \"test\");\n },\n onAdd() {},\n onRemove() {},\n onReset() {}\n });\n value.number = 6;\n map.update(1, \"test\");\n assert.equal(fired, 1);\n },\n\n test_update_unknown(assert): void {\n let fired = 0;\n const map = new ObservableMap();\n map.subscribe({\n onUpdate() { fired += 1; },\n onAdd() {},\n onRemove() {},\n onReset() {}\n });\n const result = map.update(1);\n assert.equal(fired, 0);\n assert.equal(result, false);\n },\n\n test_set(assert): void {\n let add_fired = 0, update_fired = 0;\n const map = new ObservableMap();\n map.subscribe({\n onAdd(key, value) {\n add_fired += 1;\n assert.equal(key, 1);\n assert.deepEqual(value, {value: 5});\n },\n onUpdate(key, value/*, params*/) {\n update_fired += 1;\n assert.equal(key, 1);\n assert.deepEqual(value, {value: 7});\n },\n onRemove() {},\n onReset() {}\n });\n // Add\n map.set(1, {value: 5});\n assert.equal(map.size, 1);\n assert.equal(add_fired, 1);\n // Update\n map.set(1, {value: 7});\n assert.equal(map.size, 1);\n assert.equal(update_fired, 1);\n },\n\n test_remove(assert): void {\n let fired = 0;\n const map = new ObservableMap();\n const value = {value: 5};\n map.add(1, value);\n map.subscribe({\n onRemove(key, value) {\n fired += 1;\n assert.equal(key, 1);\n assert.deepEqual(value, {value: 5});\n },\n onAdd() {},\n onUpdate() {},\n onReset() {}\n });\n map.remove(1);\n assert.equal(map.size, 0);\n assert.equal(fired, 1);\n },\n\n test_iterate(assert): void {\n const results: any[] = [];\n const map = new ObservableMap();\n map.add(1, {number: 5});\n map.add(2, {number: 6});\n map.add(3, {number: 7});\n for (let e of map) {\n results.push(e);\n }\n assert.equal(results.length, 3);\n assert.equal(results.find(([key]) => key === 1)[1].number, 5);\n assert.equal(results.find(([key]) => key === 2)[1].number, 6);\n assert.equal(results.find(([key]) => key === 3)[1].number, 7);\n },\n test_size(assert): void {\n const map = new ObservableMap();\n map.add(1, {number: 5});\n map.add(2, {number: 6});\n assert.equal(map.size, 2);\n },\n };\n}\n","/*\nCopyright 2022 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {BaseObservableMap} from \"./BaseObservableMap\";\nimport {BaseObservableValue} from \"../value/BaseObservableValue\";\nimport {SubscriptionHandle} from \"../BaseObservable\";\n\nexport class ObservableValueMap extends BaseObservableMap {\n private subscription?: SubscriptionHandle;\n\n constructor(private readonly key: K, private readonly observableValue: BaseObservableValue) {\n super();\n }\n\n onSubscribeFirst() {\n this.subscription = this.observableValue.subscribe(value => {\n this.emitUpdate(this.key, value, undefined);\n });\n super.onSubscribeFirst();\n }\n\n onUnsubscribeLast() {\n this.subscription!();\n super.onUnsubscribeLast();\n }\n\n *[Symbol.iterator](): Iterator<[K, V]> {\n yield [this.key, this.observableValue.get()];\n }\n \n get size(): number {\n return 1;\n }\n\n get(key: K): V | undefined {\n if (key == this.key) {\n return this.observableValue.get();\n }\n }\n}\n","/*\nCopyright 2022 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {BaseObservableValue} from \"./index\";\nimport {BaseObservableMap} from \"../map/index\";\nimport type {SubscriptionHandle} from \"../BaseObservable\";\n\nexport class MapSizeObservableValue extends BaseObservableValue {\n private subscription?: SubscriptionHandle;\n\n constructor(private readonly map: BaseObservableMap)\n {\n super();\n }\n\n onSubscribeFirst(): void {\n this.subscription = this.map.subscribe({\n onAdd: (key: K, value: V) => {\n this.emit(this.get());\n },\n onRemove: (key: K, value: V) => {\n this.emit(this.get());\n },\n onUpdate: (key: K, value: V) => {},\n onReset: () => {\n this.emit(this.get());\n },\n });\n }\n\n onUnsubscribeLast(): void {\n this.subscription = this.subscription?.();\n }\n\n get(): number {\n return this.map.size;\n }\n}\n\nimport {ObservableMap} from \"../map/index\";\n\nexport function tests() {\n return {\n \"emits update on add and remove\": assert => {\n const map = new ObservableMap();\n const size = new MapSizeObservableValue(map);\n const updates: number[] = [];\n size.subscribe(size => {\n updates.push(size);\n });\n map.add(\"hello\", 1);\n map.add(\"world\", 2);\n map.remove(\"world\");\n map.remove(\"hello\");\n assert.deepEqual(updates, [1, 2, 1, 0]);\n }\n };\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n\n// WARNING: We have to be very careful about what mime-types we allow into blobs.\n//\n// This means that the content is rendered using the origin of the script which\n// called createObjectURL(), and so if the content contains any scripting then it\n// will pose a XSS vulnerability when the browser renders it. This is particularly\n// bad if the user right-clicks the URI and pastes it into a new window or tab,\n// as the blob will then execute with access to Element's full JS environment(!)\n//\n// See https://github.com/matrix-org/matrix-react-sdk/pull/1820#issuecomment-385210647\n// for details.\n//\n// We mitigate this by only allowing mime-types into blobs which we know don't\n// contain any scripting, and instantiate all others as application/octet-stream\n// regardless of what mime-type the event claimed. Even if the payload itself\n// is some malicious HTML, the fact we instantiate it with a media mimetype or\n// application/octet-stream means the browser doesn't try to render it as such.\n//\n// One interesting edge case is image/svg+xml, which empirically *is* rendered\n// correctly if the blob is set to the src attribute of an img tag (for thumbnails)\n// *even if the mimetype is application/octet-stream*. However, empirically JS\n// in the SVG isn't executed in this scenario, so we seem to be okay.\n//\n// Tested on Chrome 65 and Firefox 60\n//\n// The list below is taken mainly from\n// https://developer.mozilla.org/en-US/docs/Web/HTML/Supported_media_formats\n// N.B. Matrix doesn't currently specify which mimetypes are valid in given\n// events, so we pick the ones which HTML5 browsers should be able to display\n//\n// For the record, mime-types which must NEVER enter this list below include:\n// text/html, text/xhtml, image/svg, image/svg+xml, image/pdf, and similar.\n\nconst ALLOWED_BLOB_MIMETYPES = {\n 'image/jpeg': true,\n 'image/gif': true,\n 'image/png': true,\n\n 'video/mp4': true,\n 'video/webm': true,\n 'video/ogg': true,\n 'video/quicktime': true,\n 'video/VP8': true,\n\n 'audio/mp4': true,\n 'audio/webm': true,\n 'audio/aac': true,\n 'audio/mpeg': true,\n 'audio/ogg': true,\n 'audio/wave': true,\n 'audio/wav': true,\n 'audio/x-wav': true,\n 'audio/x-pn-wav': true,\n 'audio/flac': true,\n 'audio/x-flac': true,\n};\n\nconst DEFAULT_MIMETYPE = 'application/octet-stream';\n\nexport class BlobHandle {\n /** \n * @internal\n * Don't use the constructor directly, instead use fromBuffer or fromBlobUnsafe\n * */\n constructor(blob, buffer = null) {\n this._blob = blob;\n this._buffer = buffer;\n this._url = null;\n }\n\n static fromBuffer(buffer, mimetype) {\n mimetype = mimetype ? mimetype.split(\";\")[0].trim() : '';\n if (!ALLOWED_BLOB_MIMETYPES[mimetype]) {\n mimetype = DEFAULT_MIMETYPE;\n }\n return new BlobHandle(new Blob([buffer], {type: mimetype}), buffer);\n }\n\n /** Does not filter out mimetypes that could execute embedded javascript.\n * It's up to the callee of this method to ensure that the blob won't be\n * rendered by the browser in a way that could allow cross-signing scripting. */\n static fromBlobUnsafe(blob) {\n return new BlobHandle(blob);\n }\n\n get nativeBlob() {\n return this._blob;\n }\n\n async readAsBuffer() {\n if (this._buffer) {\n return this._buffer;\n } else {\n const reader = new FileReader();\n const promise = new Promise((resolve, reject) => {\n reader.addEventListener(\"load\", evt => resolve(evt.target.result)); \n reader.addEventListener(\"error\", evt => reject(evt.target.error)); \n });\n reader.readAsArrayBuffer(this._blob);\n return promise;\n }\n }\n\n get url() {\n if (!this._url) {\n this._url = URL.createObjectURL(this._blob);\n }\n return this._url;\n }\n\n get size() {\n return this._blob.size;\n }\n\n get mimeType() {\n return this._blob.type || DEFAULT_MIMETYPE;\n }\n\n dispose() {\n if (this._url) {\n URL.revokeObjectURL(this._url);\n this._url = null;\n }\n }\n}\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {BlobHandle} from \"../../platform/web/dom/BlobHandle.js\";\n\nexport type RequestBody = BlobHandle | string | Map;\n\nexport type EncodedBody = {\n mimeType: string;\n // the map gets transformed to a FormData object on the web\n body: RequestBody\n}\n\nexport function encodeQueryParams(queryParams?: object): string {\n return Object.entries(queryParams || {})\n .filter(([, value]) => value !== undefined)\n .map(([name, value]) => {\n if (typeof value === \"object\") {\n value = JSON.stringify(value);\n }\n return `${encodeURIComponent(name)}=${encodeURIComponent(value)}`;\n })\n .join(\"&\");\n}\n\nexport function encodeBody(body: BlobHandle | object): EncodedBody {\n if (body instanceof BlobHandle) {\n const blob = body as BlobHandle;\n return {\n mimeType: blob.mimeType,\n body: blob // will be unwrapped in request fn\n };\n } else if (body instanceof Map) {\n return {\n mimeType: \"multipart/form-data\",\n body: body\n }\n } else if (typeof body === \"object\") {\n const json = JSON.stringify(body);\n return {\n mimeType: \"application/json\",\n body: json\n }\n } else {\n throw new Error(\"Unknown body type: \" + body);\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexport class WrappedError extends Error {\n constructor(message, cause) {\n super(`${message}: ${cause.message}`);\n this.cause = cause;\n }\n\n get name() {\n return \"WrappedError\";\n }\n}\n\nexport class HomeServerError extends Error {\n constructor(method, url, body, status) {\n super(`${body ? body.error : status} on ${method} ${url}`);\n this.errcode = body ? body.errcode : null;\n this.retry_after_ms = body ? body.retry_after_ms : 0;\n this.statusCode = status;\n }\n\n get name() {\n return \"HomeServerError\";\n }\n}\n\nexport {AbortError} from \"../utils/error\";\n\nexport class ConnectionError extends Error {\n constructor(message, isTimeout) {\n super(message || \"ConnectionError\");\n this.isTimeout = isTimeout;\n }\n\n get name() {\n return \"ConnectionError\";\n }\n}\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {HomeServerError, ConnectionError} from \"../error.js\";\nimport type {RequestResult} from \"../../platform/web/dom/request/fetch.js\";\nimport type {ILogItem} from \"../../logging/types\";\n\nexport interface IHomeServerRequest {\n abort(): void;\n response(): Promise;\n responseCode(): Promise;\n}\n\ntype HomeServerRequestOptions = {\n log?: ILogItem;\n allowedStatusCodes?: number[];\n};\n\nexport class HomeServerRequest implements IHomeServerRequest {\n private readonly _log?: ILogItem;\n private _sourceRequest?: RequestResult;\n // as we add types for expected responses from hs, this could be a generic class instead\n private readonly _promise: Promise;\n\n constructor(method: string, url: string, sourceRequest: RequestResult, options?: HomeServerRequestOptions) {\n let log: ILogItem | undefined;\n if (options?.log) {\n const parent = options?.log;\n log = parent.child({ t: \"network\", url, method, }, parent.level.Info);\n }\n this._log = log;\n this._sourceRequest = sourceRequest;\n this._promise = sourceRequest.response().then(response => {\n log?.set(\"status\", response.status);\n // ok?\n if (response.status >= 200 && response.status < 300 || options?.allowedStatusCodes?.includes(response.status)) {\n log?.finish();\n return response.body;\n } else {\n if (response.status >= 500) {\n const err = new ConnectionError(`Internal Server Error`);\n log?.catch(err);\n throw err;\n } else if (response.status >= 400 && !response.body?.errcode) {\n const err = new ConnectionError(`HTTP error status ${response.status} without errcode in body, assume this is a load balancer complaining the server is offline.`);\n log?.catch(err);\n throw err;\n } else {\n const err = new HomeServerError(method, url, response.body, response.status);\n log?.set(\"errcode\", err.errcode);\n log?.catch(err);\n throw err;\n }\n }\n }, err => {\n // if this._sourceRequest is still set,\n // the abort error came not from calling abort here\n if (err.name === \"AbortError\" && this._sourceRequest) {\n // The service worker sometimes (only on Firefox, on long, large request,\n // perhaps it has its own timeout?) aborts the request, see #187.\n // When it happens, the best thing to do seems to be to retry.\n // \n // In the service worker, we will also actively abort all\n // ongoing requests when trying to get a new service worker to activate\n // (this may surface in the app as a TypeError, which already gets mapped\n // to a ConnectionError in the request function, or an AbortError,\n // depending on the browser), as the service worker will only be\n // replaced when there are no more (fetch) events for the\n // current one to handle.\n // \n // In that case, the request function (in fetch.js) will check \n // the haltRequests flag on the service worker handler, and\n // block any new requests, as that would break the update process.\n // \n // So it is OK to return a ConnectionError here.\n // If we're updating the service worker, the /versions polling will\n // be blocked at the fetch level because haltRequests is set.\n // And for #187, retrying is the right thing to do.\n const err = new ConnectionError(`Service worker aborted, either updating or hit #187.`);\n log?.catch(err);\n throw err;\n } else {\n if (err.name === \"ConnectionError\") {\n log?.set(\"timeout\", err.isTimeout);\n }\n log?.catch(err);\n throw err;\n }\n });\n }\n\n abort(): void {\n if (this._sourceRequest) {\n this._log?.set(\"aborted\", true);\n this._sourceRequest.abort();\n // to mark that it was on purpose in above rejection handler\n this._sourceRequest = undefined;\n }\n }\n\n response(): Promise {\n return this._promise;\n }\n\n async responseCode(): Promise {\n const response = await this._sourceRequest.response();\n return response.status;\n }\n}\n\nimport {Request as MockRequest} from \"../../mocks/Request.js\";\nimport {AbortError} from \"../error.js\";\n\nexport function tests() {\n return {\n \"Response is passed through\": async assert => {\n const request = new MockRequest();\n const hsRequest = new HomeServerRequest(\"GET\", \"https://hs.tld/foo\", request);\n request.respond(200, \"foo\");\n assert.equal(await hsRequest.response(), \"foo\");\n },\n \"Unexpected AbortError is mapped to ConnectionError\": async assert => {\n const request = new MockRequest();\n const hsRequest = new HomeServerRequest(\"GET\", \"https://hs.tld/foo\", request);\n request.reject(new AbortError());\n await assert.rejects(hsRequest.response(), ConnectionError);\n },\n \"500 response is mapped to ConnectionError\": async assert => {\n const request = new MockRequest();\n const hsRequest = new HomeServerRequest(\"GET\", \"https://hs.tld/foo\", request);\n request.respond(500);\n await assert.rejects(hsRequest.response(), ConnectionError);\n },\n \"4xx response is mapped to HomeServerError\": async assert => {\n const request = new MockRequest();\n const hsRequest = new HomeServerRequest(\"GET\", \"https://hs.tld/foo\", request);\n request.respond(400, {errcode: \"FOO\"});\n await assert.rejects(hsRequest.response(), HomeServerError);\n },\n \"4xx response without errcode is mapped to ConnectionError\": async assert => {\n const request = new MockRequest();\n const hsRequest = new HomeServerRequest(\"GET\", \"https://hs.tld/foo\", request);\n request.respond(400);\n await assert.rejects(hsRequest.response(), ConnectionError);\n },\n \"Other errors are passed through\": async assert => {\n class MyError extends Error {}\n const request = new MockRequest();\n const hsRequest = new HomeServerRequest(\"GET\", \"https://hs.tld/foo\", request);\n request.reject(new MyError());\n await assert.rejects(hsRequest.response(), MyError);\n },\n };\n}\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {encodeQueryParams, encodeBody} from \"./common\";\nimport {HomeServerRequest} from \"./HomeServerRequest\";\nimport type {IHomeServerRequest} from \"./HomeServerRequest\";\nimport type {Reconnector} from \"./Reconnector\";\nimport type {EncodedBody} from \"./common\";\nimport type {RequestFunction} from \"../../platform/types/types\";\nimport type {ILogItem} from \"../../logging/types\";\n\ntype RequestMethod = \"POST\" | \"GET\" | \"PUT\";\n\nconst CS_R0_PREFIX = \"/_matrix/client/r0\";\nconst CS_V3_PREFIX = \"/_matrix/client/v3\";\nconst DEHYDRATION_PREFIX = \"/_matrix/client/unstable/org.matrix.msc2697.v2\";\n\ntype Options = {\n homeserver: string;\n accessToken: string;\n request: RequestFunction;\n reconnector: Reconnector;\n};\n\ntype BaseRequestOptions = {\n log?: ILogItem;\n allowedStatusCodes?: number[];\n uploadProgress?: (loadedBytes: number) => void;\n timeout?: number;\n prefix?: string;\n};\n\nexport class HomeServerApi {\n private readonly _homeserver: string;\n private _accessToken: string;\n private readonly _requestFn: RequestFunction;\n private readonly _reconnector: Reconnector;\n\n constructor({homeserver, accessToken, request, reconnector}: Options) {\n // store these both in a closure somehow so it's harder to get at in case of XSS?\n // one could change the homeserver as well so the token gets sent there, so both must be protected from read/write\n this._homeserver = homeserver;\n this._accessToken = accessToken;\n this._requestFn = request;\n this._reconnector = reconnector;\n }\n\n private _url(csPath: string, prefix: string = CS_R0_PREFIX): string {\n return this._homeserver + prefix + csPath;\n }\n\n private _baseRequest(method: RequestMethod, url: string, queryParams?: Record, body?: Record, options?: BaseRequestOptions, accessToken?: string): IHomeServerRequest {\n const queryString = encodeQueryParams(queryParams);\n url = `${url}?${queryString}`;\n let encodedBody: EncodedBody[\"body\"];\n const headers: Map = new Map();\n if (accessToken) {\n headers.set(\"Authorization\", `Bearer ${accessToken}`);\n }\n headers.set(\"Accept\", \"application/json\");\n if (body) {\n const encoded = encodeBody(body);\n headers.set(\"Content-Type\", encoded.mimeType);\n encodedBody = encoded.body;\n }\n\n const requestResult = this._requestFn(url, {\n method,\n headers,\n body: encodedBody,\n timeout: options?.timeout,\n uploadProgress: options?.uploadProgress,\n format: \"json\", // response format\n cache: method !== \"GET\",\n });\n\n const hsRequest = new HomeServerRequest(method, url, requestResult, options);\n \n if (this._reconnector) {\n hsRequest.response().catch(err => {\n // Some endpoints such as /sync legitimately time-out\n // (which is also reported as a ConnectionError) and will re-attempt,\n // but spinning up the reconnector in this case is ok,\n // as all code ran on session and sync start should be reentrant\n if (err.name === \"ConnectionError\") {\n this._reconnector.onRequestFailed(this);\n }\n });\n }\n\n return hsRequest;\n }\n\n private _unauthedRequest(method: RequestMethod, url: string, queryParams?: Record, body?: Record, options?: BaseRequestOptions): IHomeServerRequest {\n return this._baseRequest(method, url, queryParams, body, options);\n }\n\n private _authedRequest(method: RequestMethod, url: string, queryParams?: Record, body?: Record, options?: BaseRequestOptions): IHomeServerRequest {\n return this._baseRequest(method, url, queryParams, body, options, this._accessToken);\n }\n\n private _post(csPath: string, queryParams: Record, body: Record, options?: BaseRequestOptions): IHomeServerRequest {\n return this._authedRequest(\"POST\", this._url(csPath, options?.prefix || CS_R0_PREFIX), queryParams, body, options);\n }\n\n private _put(csPath: string, queryParams: Record, body?: Record, options?: BaseRequestOptions): IHomeServerRequest {\n return this._authedRequest(\"PUT\", this._url(csPath, options?.prefix || CS_R0_PREFIX), queryParams, body, options);\n }\n\n private _get(csPath: string, queryParams?: Record, body?: Record, options?: BaseRequestOptions): IHomeServerRequest {\n return this._authedRequest(\"GET\", this._url(csPath, options?.prefix || CS_R0_PREFIX), queryParams, body, options);\n }\n\n /**\n * Update the access token used by the API.\n * @param token \n */\n public updateAccessToken(token: string) {\n this._accessToken = token;\n }\n\n sync(since: string, filter: string, timeout: number, options?: BaseRequestOptions): IHomeServerRequest {\n return this._get(\"/sync\", {since, timeout, filter}, undefined, options);\n }\n\n context(roomId: string, eventId: string, limit: number, filter: string): IHomeServerRequest {\n return this._get(`/rooms/${encodeURIComponent(roomId)}/context/${encodeURIComponent(eventId)}`, {filter, limit});\n }\n\n // params is from, dir and optionally to, limit, filter.\n messages(roomId: string, params: Record, options?: BaseRequestOptions): IHomeServerRequest {\n return this._get(`/rooms/${encodeURIComponent(roomId)}/messages`, params, undefined, options);\n }\n\n // params is at, membership and not_membership\n members(roomId: string, params: Record, options?: BaseRequestOptions): IHomeServerRequest {\n return this._get(`/rooms/${encodeURIComponent(roomId)}/members`, params, undefined, options);\n }\n\n send(roomId: string, eventType: string, txnId: string, content: Record, options?: BaseRequestOptions): IHomeServerRequest {\n return this._put(`/rooms/${encodeURIComponent(roomId)}/send/${encodeURIComponent(eventType)}/${encodeURIComponent(txnId)}`, {}, content, options);\n }\n\n redact(roomId: string, eventId: string, txnId: string, content: Record, options?: BaseRequestOptions): IHomeServerRequest {\n return this._put(`/rooms/${encodeURIComponent(roomId)}/redact/${encodeURIComponent(eventId)}/${encodeURIComponent(txnId)}`, {}, content, options);\n }\n\n receipt(roomId: string, receiptType: string, eventId: string, options?: BaseRequestOptions): IHomeServerRequest {\n return this._post(`/rooms/${encodeURIComponent(roomId)}/receipt/${encodeURIComponent(receiptType)}/${encodeURIComponent(eventId)}`,\n {}, {}, options);\n }\n\n state(roomId: string, eventType: string, stateKey: string, options?: BaseRequestOptions): IHomeServerRequest {\n return this._get(`/rooms/${encodeURIComponent(roomId)}/state/${encodeURIComponent(eventType)}/${encodeURIComponent(stateKey)}`, {}, undefined, options);\n }\n \n sendState(roomId: string, eventType: string, stateKey: string, content: Record, options?: BaseRequestOptions): IHomeServerRequest {\n return this._put(`/rooms/${encodeURIComponent(roomId)}/state/${encodeURIComponent(eventType)}/${encodeURIComponent(stateKey)}`, {}, content, options);\n }\n\n getLoginFlows(): IHomeServerRequest {\n return this._unauthedRequest(\"GET\", this._url(\"/login\"));\n }\n\n register(username: string | null, password: string, initialDeviceDisplayName: string, auth?: Record, inhibitLogin: boolean = false , options: BaseRequestOptions = {}): IHomeServerRequest {\n options.allowedStatusCodes = [401];\n const body: any = {\n auth,\n password,\n initial_device_displayname: initialDeviceDisplayName,\n inhibit_login: inhibitLogin,\n };\n if (username) {\n // username is optional for registration\n body.username = username;\n }\n return this._unauthedRequest( \"POST\", this._url(\"/register\", CS_V3_PREFIX), undefined, body, options);\n }\n\n passwordLogin(username: string, password: string, initialDeviceDisplayName: string, options?: BaseRequestOptions): IHomeServerRequest {\n return this._unauthedRequest(\"POST\", this._url(\"/login\"), undefined, {\n \"type\": \"m.login.password\",\n \"identifier\": {\n \"type\": \"m.id.user\",\n \"user\": username\n },\n \"password\": password,\n \"initial_device_display_name\": initialDeviceDisplayName\n }, options);\n }\n\n tokenLogin(loginToken: string, txnId: string, initialDeviceDisplayName: string, options?: BaseRequestOptions): IHomeServerRequest {\n return this._unauthedRequest(\"POST\", this._url(\"/login\"), undefined, {\n \"type\": \"m.login.token\",\n \"identifier\": {\n \"type\": \"m.id.user\",\n },\n \"token\": loginToken,\n \"txn_id\": txnId,\n \"initial_device_display_name\": initialDeviceDisplayName\n }, options);\n }\n\n createFilter(userId: string, filter: Record, options?: BaseRequestOptions): IHomeServerRequest {\n return this._post(`/user/${encodeURIComponent(userId)}/filter`, {}, filter, options);\n }\n\n versions(options?: BaseRequestOptions): IHomeServerRequest {\n return this._unauthedRequest(\"GET\", `${this._homeserver}/_matrix/client/versions`, undefined, undefined, options);\n }\n\n uploadKeys(dehydratedDeviceId: string, payload: Record, options?: BaseRequestOptions): IHomeServerRequest {\n let path = \"/keys/upload\";\n if (dehydratedDeviceId) {\n path = path + `/${encodeURIComponent(dehydratedDeviceId)}`;\n }\n return this._post(path, {}, payload, options);\n }\n\n uploadSignatures(payload: Record, options?: BaseRequestOptions): IHomeServerRequest {\n return this._post(\"/keys/signatures/upload\", {}, payload, options);\n }\n\n queryKeys(queryRequest: Record, options?: BaseRequestOptions): IHomeServerRequest {\n return this._post(\"/keys/query\", {}, queryRequest, options);\n }\n\n claimKeys(payload: Record, options?: BaseRequestOptions): IHomeServerRequest {\n return this._post(\"/keys/claim\", {}, payload, options);\n }\n\n sendToDevice(type: string, payload: Record, txnId: string, options?: BaseRequestOptions): IHomeServerRequest {\n return this._put(`/sendToDevice/${encodeURIComponent(type)}/${encodeURIComponent(txnId)}`, {}, payload, options);\n }\n \n roomKeysVersion(version?: string, options?: BaseRequestOptions): IHomeServerRequest {\n let versionPart = \"\";\n if (version) {\n versionPart = `/${encodeURIComponent(version)}`;\n }\n return this._get(`/room_keys/version${versionPart}`, undefined, undefined, options);\n }\n\n roomKeyForRoomAndSession(version: string, roomId: string, sessionId: string, options?: BaseRequestOptions): IHomeServerRequest {\n return this._get(`/room_keys/keys/${encodeURIComponent(roomId)}/${encodeURIComponent(sessionId)}`, {version}, undefined, options);\n }\n\n uploadRoomKeysToBackup(version: string, payload: Record, options: BaseRequestOptions = {}): IHomeServerRequest {\n options.prefix = CS_V3_PREFIX;\n return this._put(`/room_keys/keys`, {version}, payload, options);\n }\n\n uploadAttachment(blob: Blob, filename: string, options?: BaseRequestOptions): IHomeServerRequest {\n return this._authedRequest(\"POST\", `${this._homeserver}/_matrix/media/r0/upload`, {filename}, blob, options);\n }\n\n setPusher(pusher: Record, options?: BaseRequestOptions): IHomeServerRequest {\n return this._post(\"/pushers/set\", {}, pusher, options);\n }\n\n getPushers(options?: BaseRequestOptions): IHomeServerRequest {\n return this._get(\"/pushers\", undefined, undefined, options);\n }\n\n invite(roomId: string, userId: string, reason?: string, options?: BaseRequestOptions): IHomeServerRequest {\n return this._post(\n `/rooms/${encodeURIComponent(roomId)}/invite`,\n {},\n { user_id: userId, reason },\n options\n );\n }\n\n join(roomId: string, options?: BaseRequestOptions): IHomeServerRequest {\n return this._post(`/rooms/${encodeURIComponent(roomId)}/join`, {}, {}, options);\n }\n\n joinIdOrAlias(roomIdOrAlias: string, options?: BaseRequestOptions): IHomeServerRequest {\n return this._post(`/join/${encodeURIComponent(roomIdOrAlias)}`, {}, {}, options);\n }\n\n leave(roomId: string, options?: BaseRequestOptions): IHomeServerRequest {\n return this._post(`/rooms/${encodeURIComponent(roomId)}/leave`, {}, {}, options);\n }\n\n forget(roomId: string, options?: BaseRequestOptions): IHomeServerRequest {\n return this._post(`/rooms/${encodeURIComponent(roomId)}/forget`, {}, {}, options);\n }\n\n logout(options?: BaseRequestOptions): IHomeServerRequest {\n return this._post(`/logout`, {}, {}, options);\n }\n\n getDehydratedDevice(options: BaseRequestOptions = {}): IHomeServerRequest {\n options.prefix = DEHYDRATION_PREFIX;\n return this._get(`/dehydrated_device`, undefined, undefined, options);\n }\n\n createDehydratedDevice(payload: Record, options: BaseRequestOptions = {}): IHomeServerRequest {\n options.prefix = DEHYDRATION_PREFIX;\n return this._put(`/dehydrated_device`, {}, payload, options);\n }\n\n claimDehydratedDevice(deviceId: string, options: BaseRequestOptions = {}): IHomeServerRequest {\n options.prefix = DEHYDRATION_PREFIX;\n return this._post(`/dehydrated_device/claim`, {}, {device_id: deviceId}, options);\n }\n\n profile(userId: string, options?: BaseRequestOptions): IHomeServerRequest {\n return this._get(`/profile/${encodeURIComponent(userId)}`);\n }\n\n createRoom(payload: Record, options?: BaseRequestOptions): IHomeServerRequest {\n return this._post(`/createRoom`, {}, payload, options);\n }\n\n setAccountData(ownUserId: string, type: string, content: Record, options?: BaseRequestOptions): IHomeServerRequest {\n return this._put(`/user/${encodeURIComponent(ownUserId)}/account_data/${encodeURIComponent(type)}`, {}, content, options);\n }\n\n getTurnServer(options?: BaseRequestOptions): IHomeServerRequest {\n return this._get(`/voip/turnServer`, undefined, undefined, options);\n }\n}\n\nimport {Request as MockRequest} from \"../../mocks/Request.js\";\n\nexport function tests() {\n return {\n \"superficial happy path for GET\": async assert => {\n // @ts-ignore\n const hsApi = new HomeServerApi({\n request: () => new MockRequest().respond(200, 42),\n homeserver: \"https://hs.tld\",\n });\n // @ts-ignore\n const result = await hsApi._get(\"foo\").response();\n assert.strictEqual(result, 42);\n }\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {AbortError} from \"../../utils/error\";\nimport type {Timeout} from \"../../platform/web/dom/Clock.js\";\n\ntype TimeoutCreator = (ms: number) => Timeout;\n\nconst enum Default { start = 2000 }\n\nexport class ExponentialRetryDelay {\n private readonly _start: number = Default.start;\n private _current: number = Default.start;\n private readonly _createTimeout: TimeoutCreator;\n private readonly _max: number;\n private _timeout?: Timeout;\n\n constructor(createTimeout: TimeoutCreator) {\n const start = 2000;\n this._start = start;\n this._current = start;\n this._createTimeout = createTimeout;\n this._max = 60 * 5 * 1000; //5 min\n }\n\n async waitForRetry(): Promise {\n this._timeout = this._createTimeout(this._current);\n try {\n await this._timeout.elapsed();\n // only increase delay if we didn't get interrupted\n const next = 2 * this._current;\n this._current = Math.min(this._max, next);\n } catch(err) {\n // swallow AbortError, means abort was called\n if (!(err instanceof AbortError)) {\n throw err;\n }\n } finally {\n this._timeout = undefined;\n }\n }\n\n abort(): void {\n if (this._timeout) {\n this._timeout.abort();\n }\n }\n\n reset(): void {\n this._current = this._start;\n this.abort();\n }\n\n get nextValue(): number {\n return this._current;\n }\n}\n\n\nimport {Clock as MockClock} from \"../../mocks/Clock.js\";\n\nexport function tests() {\n return {\n \"test sequence\": async assert => {\n const clock = new MockClock();\n const retryDelay = new ExponentialRetryDelay(clock.createTimeout);\n let promise;\n\n assert.strictEqual(retryDelay.nextValue, 2000);\n promise = retryDelay.waitForRetry();\n clock.elapse(2000);\n await promise;\n\n assert.strictEqual(retryDelay.nextValue, 4000);\n promise = retryDelay.waitForRetry();\n clock.elapse(4000);\n await promise;\n\n assert.strictEqual(retryDelay.nextValue, 8000);\n promise = retryDelay.waitForRetry();\n clock.elapse(8000);\n await promise;\n\n assert.strictEqual(retryDelay.nextValue, 16000);\n promise = retryDelay.waitForRetry();\n clock.elapse(16000);\n await promise;\n\n assert.strictEqual(retryDelay.nextValue, 32000);\n promise = retryDelay.waitForRetry();\n clock.elapse(32000);\n await promise;\n\n assert.strictEqual(retryDelay.nextValue, 64000);\n promise = retryDelay.waitForRetry();\n clock.elapse(64000);\n await promise;\n\n assert.strictEqual(retryDelay.nextValue, 128000);\n promise = retryDelay.waitForRetry();\n clock.elapse(128000);\n await promise;\n\n assert.strictEqual(retryDelay.nextValue, 256000);\n promise = retryDelay.waitForRetry();\n clock.elapse(256000);\n await promise;\n\n assert.strictEqual(retryDelay.nextValue, 300000);\n promise = retryDelay.waitForRetry();\n clock.elapse(300000);\n await promise;\n\n assert.strictEqual(retryDelay.nextValue, 300000);\n promise = retryDelay.waitForRetry();\n clock.elapse(300000);\n await promise;\n },\n }\n \n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {ObservableValue} from \"../../observable/value\";\nimport type {ExponentialRetryDelay} from \"./ExponentialRetryDelay\";\nimport type {TimeMeasure} from \"../../platform/web/dom/Clock.js\";\nimport type {OnlineStatus} from \"../../platform/web/dom/OnlineStatus.js\";\nimport type {VersionResponse} from \"./types/response\";\nimport type {HomeServerApi} from \"./HomeServerApi\";\n\nexport enum ConnectionStatus {\n \"Waiting\",\n \"Reconnecting\",\n \"Online\"\n};\n\ntype Ctor = {\n retryDelay: ExponentialRetryDelay;\n createMeasure: () => TimeMeasure;\n onlineStatus: OnlineStatus\n};\n\nexport class Reconnector {\n private readonly _retryDelay: ExponentialRetryDelay;\n private readonly _createTimeMeasure: () => TimeMeasure;\n private readonly _onlineStatus: OnlineStatus;\n private readonly _state: ObservableValue;\n private _isReconnecting: boolean;\n private _versionsResponse?: VersionResponse;\n private _stateSince: TimeMeasure;\n\n constructor({retryDelay, createMeasure, onlineStatus}: Ctor) {\n this._onlineStatus = onlineStatus;\n this._retryDelay = retryDelay;\n this._createTimeMeasure = createMeasure;\n // assume online, and do our thing when something fails\n this._state = new ObservableValue(ConnectionStatus.Online);\n this._isReconnecting = false;\n }\n\n get lastVersionsResponse(): VersionResponse | undefined {\n return this._versionsResponse;\n }\n\n get connectionStatus(): ObservableValue {\n return this._state;\n }\n\n get retryIn(): number {\n if (this._state.get() === ConnectionStatus.Waiting) {\n return this._retryDelay.nextValue - this._stateSince.measure();\n }\n return 0;\n }\n\n async onRequestFailed(hsApi: HomeServerApi): Promise {\n if (!this._isReconnecting) { \n this._isReconnecting = true;\n \n const onlineStatusSubscription = this._onlineStatus && this._onlineStatus.subscribe(online => {\n if (online) {\n this.tryNow();\n }\n });\n\n try {\n await this._reconnectLoop(hsApi);\n } catch (err) {\n // nothing is catching the error above us,\n // so just log here\n console.error(err);\n } finally {\n if (onlineStatusSubscription) {\n // unsubscribe from this._onlineStatus\n onlineStatusSubscription();\n }\n this._isReconnecting = false;\n }\n }\n }\n\n tryNow(): void {\n if (this._retryDelay) {\n // this will interrupt this._retryDelay.waitForRetry() in _reconnectLoop\n this._retryDelay.abort();\n }\n }\n\n private _setState(state: ConnectionStatus): void {\n if (state !== this._state.get()) {\n if (state === ConnectionStatus.Waiting) {\n this._stateSince = this._createTimeMeasure();\n } else {\n this._stateSince = null;\n }\n this._state.set(state);\n }\n }\n \n private async _reconnectLoop(hsApi: HomeServerApi): Promise {\n this._versionsResponse = undefined;\n this._retryDelay.reset();\n\n while (!this._versionsResponse) {\n try {\n this._setState(ConnectionStatus.Reconnecting);\n // use 30s timeout, as a tradeoff between not giving up\n // too quickly on a slow server, and not waiting for\n // a stale connection when we just came online again\n const versionsRequest = hsApi.versions({timeout: 30000});\n this._versionsResponse = await versionsRequest.response();\n this._setState(ConnectionStatus.Online);\n } catch (err) {\n if (err.name === \"ConnectionError\") {\n this._setState(ConnectionStatus.Waiting);\n await this._retryDelay.waitForRetry();\n } else {\n throw err;\n }\n }\n }\n }\n}\n\n\nimport {Clock as MockClock} from \"../../mocks/Clock.js\";\nimport {ExponentialRetryDelay as _ExponentialRetryDelay} from \"./ExponentialRetryDelay\";\nimport {ConnectionError} from \"../error.js\"\n\nexport function tests() {\n function createHsApiMock(remainingFailures) {\n return {\n versions() {\n return {\n response() {\n if (remainingFailures) {\n remainingFailures -= 1;\n return Promise.reject(new ConnectionError());\n } else {\n return Promise.resolve(42);\n }\n }\n };\n }\n }\n }\n\n return {\n \"test reconnecting with 1 failure\": async assert => {\n const clock = new MockClock();\n const {createMeasure} = clock;\n const onlineStatus = new ObservableValue(false);\n const retryDelay = new _ExponentialRetryDelay(clock.createTimeout);\n const reconnector = new Reconnector({retryDelay, onlineStatus, createMeasure});\n const {connectionStatus} = reconnector;\n const statuses: ConnectionStatus[] = [];\n const subscription = reconnector.connectionStatus.subscribe(s => {\n statuses.push(s);\n });\n // @ts-ignore\n reconnector.onRequestFailed(createHsApiMock(1));\n await connectionStatus.waitFor(s => s === ConnectionStatus.Waiting).promise;\n clock.elapse(2000);\n await connectionStatus.waitFor(s => s === ConnectionStatus.Online).promise;\n assert.deepEqual(statuses, [\n ConnectionStatus.Reconnecting,\n ConnectionStatus.Waiting,\n ConnectionStatus.Reconnecting,\n ConnectionStatus.Online\n ]);\n assert.strictEqual(reconnector.lastVersionsResponse, 42);\n subscription();\n },\n \"test reconnecting with onlineStatus\": async assert => {\n const clock = new MockClock();\n const {createMeasure} = clock;\n const onlineStatus = new ObservableValue(false);\n const retryDelay = new _ExponentialRetryDelay(clock.createTimeout);\n const reconnector = new Reconnector({retryDelay, onlineStatus, createMeasure});\n const {connectionStatus} = reconnector;\n // @ts-ignore\n reconnector.onRequestFailed(createHsApiMock(1));\n await connectionStatus.waitFor(s => s === ConnectionStatus.Waiting).promise;\n onlineStatus.set(true); //skip waiting\n await connectionStatus.waitFor(s => s === ConnectionStatus.Online).promise;\n assert.equal(connectionStatus.get(), ConnectionStatus.Online);\n assert.strictEqual(reconnector.lastVersionsResponse, 42);\n },\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * Decrypt an attachment.\n * @param {ArrayBuffer} ciphertextBuffer The encrypted attachment data buffer.\n * @param {Object} info The information needed to decrypt the attachment.\n * @param {Object} info.key AES-CTR JWK key object.\n * @param {string} info.iv Base64 encoded 16 byte AES-CTR IV.\n * @param {string} info.hashes.sha256 Base64 encoded SHA-256 hash of the ciphertext.\n * @return {Promise} A promise that resolves with an ArrayBuffer when the attachment is decrypted.\n */\nexport async function decryptAttachment(platform, ciphertextBuffer, info) {\n if (info === undefined || info.key === undefined || info.iv === undefined\n || info.hashes === undefined || info.hashes.sha256 === undefined) {\n throw new Error(\"Invalid info. Missing info.key, info.iv or info.hashes.sha256 key\");\n }\n\n const {crypto} = platform;\n const {base64} = platform.encoding;\n var ivArray = base64.decode(info.iv);\n // re-encode to not deal with padded vs unpadded\n var expectedSha256base64 = base64.encode(base64.decode(info.hashes.sha256));\n // Check the sha256 hash\n const digestResult = await crypto.digest(\"SHA-256\", ciphertextBuffer);\n if (base64.encode(new Uint8Array(digestResult)) != expectedSha256base64) {\n throw new Error(\"Mismatched SHA-256 digest\");\n }\n var counterLength;\n if (info.v == \"v1\" || info.v == \"v2\") {\n // Version 1 and 2 use a 64 bit counter.\n counterLength = 64;\n } else {\n // Version 0 uses a 128 bit counter.\n counterLength = 128;\n }\n\n const decryptedBuffer = await crypto.aes.decryptCTR({\n jwkKey: info.key,\n iv: ivArray,\n data: ciphertextBuffer,\n counterLength\n });\n return decryptedBuffer;\n}\n\nexport async function encryptAttachment(platform, blob) {\n const {crypto} = platform;\n const {base64} = platform.encoding;\n const iv = await crypto.aes.generateIV();\n const key = await crypto.aes.generateKey(\"jwk\", 256);\n const buffer = await blob.readAsBuffer();\n const ciphertext = await crypto.aes.encryptCTR({jwkKey: key, iv, data: buffer});\n const digest = await crypto.digest(\"SHA-256\", ciphertext);\n return {\n blob: platform.createBlob(ciphertext, 'application/octet-stream'),\n info: {\n v: \"v2\",\n key,\n iv: base64.encodeUnpadded(iv),\n hashes: {\n sha256: base64.encodeUnpadded(digest)\n }\n }\n };\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { encodeQueryParams } from \"./common\";\nimport { decryptAttachment } from \"../e2ee/attachment.js\";\nimport { Platform } from \"../../platform/web/Platform.js\";\nimport { BlobHandle } from \"../../platform/web/dom/BlobHandle.js\";\nimport type {\n Attachment,\n EncryptedFile,\n VersionResponse,\n} from \"./types/response\";\n\ntype ServerVersions = VersionResponse[\"versions\"];\n\ntype Params = {\n homeserver: string;\n platform: Platform;\n serverVersions: ServerVersions;\n};\n\nexport class MediaRepository {\n private readonly homeserver: string;\n private readonly platform: Platform;\n // Depends on whether the server supports authenticated media\n private mediaUrlPart: string;\n\n constructor(params: Params) {\n this.homeserver = params.homeserver;\n this.platform = params.platform;\n this.generateMediaUrl(params.serverVersions);\n }\n\n /**\n * Calculate and store the correct media endpoint depending\n * on whether the homeserver supports authenticated media (MSC3916)\n * @see https://github.com/matrix-org/matrix-spec-proposals/pull/3916\n * @param serverVersions List of supported spec versions\n */\n private generateMediaUrl(serverVersions: ServerVersions) {\n const VERSION_WITH_AUTHENTICATION = \"v1.11\";\n if (serverVersions.includes(VERSION_WITH_AUTHENTICATION)) {\n this.mediaUrlPart = \"_matrix/client/v1/media\";\n } else {\n this.mediaUrlPart = \"_matrix/media/v3\";\n }\n }\n\n mxcUrlThumbnail(\n url: string,\n width: number,\n height: number,\n method: \"crop\" | \"scale\"\n ): string | undefined {\n const parts = this.parseMxcUrl(url);\n if (parts) {\n const [serverName, mediaId] = parts;\n const httpUrl = `${this.homeserver}/${\n this.mediaUrlPart\n }/thumbnail/${encodeURIComponent(serverName)}/${encodeURIComponent(\n mediaId\n )}`;\n return (\n httpUrl +\n \"?\" +\n encodeQueryParams({\n width: Math.round(width),\n height: Math.round(height),\n method,\n })\n );\n }\n return undefined;\n }\n\n mxcUrl(url: string): string | undefined {\n const parts = this.parseMxcUrl(url);\n if (parts) {\n const [serverName, mediaId] = parts;\n return `${this.homeserver}/${\n this.mediaUrlPart\n }/download/${encodeURIComponent(serverName)}/${encodeURIComponent(\n mediaId\n )}`;\n }\n return undefined;\n }\n\n private parseMxcUrl(url: string): string[] | undefined {\n const prefix = \"mxc://\";\n if (url.startsWith(prefix)) {\n return url.slice(prefix.length).split(\"/\", 2);\n } else {\n return undefined;\n }\n }\n\n async downloadEncryptedFile(\n fileEntry: EncryptedFile,\n cache: boolean = false\n ): Promise {\n const url = this.mxcUrl(fileEntry.url);\n const { body: encryptedBuffer } = await this.platform\n .request(url, { method: \"GET\", format: \"buffer\", cache })\n .response();\n const decryptedBuffer = await decryptAttachment(\n this.platform,\n encryptedBuffer,\n fileEntry\n );\n return this.platform.createBlob(decryptedBuffer, fileEntry.mimetype);\n }\n\n async downloadPlaintextFile(\n mxcUrl: string,\n mimetype: string,\n cache: boolean = false\n ): Promise {\n const url = this.mxcUrl(mxcUrl);\n const { body: buffer } = await this.platform\n .request(url, { method: \"GET\", format: \"buffer\", cache })\n .response();\n return this.platform.createBlob(buffer, mimetype);\n }\n\n async downloadAttachment(\n content: Attachment,\n cache: boolean = false\n ): Promise {\n if (content.file) {\n return this.downloadEncryptedFile(content.file, cache);\n } else {\n return this.downloadPlaintextFile(\n content.url!,\n content.info?.mimetype,\n cache\n );\n }\n }\n}\n\nexport function tests() {\n return {\n \"Uses correct endpoint when server supports authenticated media\": (\n assert\n ) => {\n const homeserver = \"matrix.org\";\n const platform = {};\n // Is it enough to check if v1.11 is present?\n // or do we check if maxVersion > v1.11\n const serverVersions = [\"v1.1\", \"v1.11\", \"v1.10\"];\n const mediaRepository = new MediaRepository({\n homeserver,\n platform,\n serverVersions,\n });\n\n const mxcUrl = \"mxc://matrix.org/foobartest\";\n assert.match(\n mediaRepository.mxcUrl(mxcUrl),\n /_matrix\\/client\\/v1\\/media/\n );\n },\n\n \"Uses correct endpoint when server does not supports authenticated media\":\n (assert) => {\n const homeserver = \"matrix.org\";\n const platform = {};\n const serverVersions = [\"v1.1\", \"v1.11\", \"v1.10\"];\n const mediaRepository = new MediaRepository({\n homeserver,\n platform,\n serverVersions,\n });\n\n const mxcUrl = \"mxc://matrix.org/foobartest\";\n assert.match(\n mediaRepository.mxcUrl(mxcUrl),\n /_matrix\\/client\\/v1\\/media/\n );\n },\n };\n}\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {AbortError} from \"../../utils/error\";\nimport {HomeServerError} from \"../error.js\";\nimport {HomeServerApi} from \"./HomeServerApi\";\nimport {ExponentialRetryDelay} from \"./ExponentialRetryDelay\";\nimport {Clock} from \"../../platform/web/dom/Clock.js\";\nimport type {IHomeServerRequest} from \"./HomeServerRequest.js\";\n\nclass Request implements IHomeServerRequest {\n public readonly methodName: string;\n public readonly args: any[];\n private responseResolve: (result: any) => void;\n public responseReject: (error: Error) => void;\n private responseCodeResolve?: (result: any) => void;\n private responseCodeReject?: (result: any) => void;\n private _requestResult?: IHomeServerRequest;\n private readonly _responsePromise: Promise;\n private _responseCodePromise: Promise;\n\n constructor(methodName: string, args: any[]) {\n this.methodName = methodName;\n this.args = args;\n this._responsePromise = new Promise((resolve, reject) => {\n this.responseResolve = resolve;\n this.responseReject = reject;\n });\n }\n\n abort(): void {\n if (this._requestResult) {\n this._requestResult.abort();\n } else {\n this.responseReject(new AbortError());\n this.responseCodeReject?.(new AbortError());\n }\n }\n\n response(): Promise {\n return this._responsePromise;\n }\n\n responseCode(): Promise {\n if (this.requestResult) {\n return this.requestResult.responseCode();\n }\n if (!this._responseCodePromise) {\n this._responseCodePromise = new Promise((resolve, reject) => {\n this.responseCodeResolve = resolve;\n this.responseCodeReject = reject;\n });\n }\n return this._responseCodePromise;\n }\n\n async setRequestResult(result) {\n this._requestResult = result;\n const response = await this._requestResult?.response();\n this.responseResolve(response);\n const responseCode = await this._requestResult?.responseCode();\n this.responseCodeResolve?.(responseCode);\n }\n\n get requestResult() {\n return this._requestResult;\n }\n}\n\nclass HomeServerApiWrapper {\n private readonly _scheduler: RequestScheduler;\n\n constructor(scheduler: RequestScheduler) {\n this._scheduler = scheduler;\n }\n}\n\n// add request-wrapping methods to prototype\nfor (const methodName of Object.getOwnPropertyNames(HomeServerApi.prototype)) {\n if (methodName !== \"constructor\" && !methodName.startsWith(\"_\")) {\n HomeServerApiWrapper.prototype[methodName] = function(...args) {\n return this._scheduler._hsApiRequest(methodName, args);\n };\n }\n}\n\nexport class RequestScheduler {\n private readonly _hsApi: HomeServerApi;\n private readonly _clock: Clock;\n private readonly _requests: Set = new Set();\n private _stopped = false;\n private _wrapper = new HomeServerApiWrapper(this);\n\n constructor({ hsApi, clock }: { hsApi: HomeServerApi; clock: Clock }) {\n this._hsApi = hsApi;\n this._clock = clock;\n }\n\n get hsApi(): HomeServerApi {\n return this._wrapper as unknown as HomeServerApi;\n }\n\n stop(): void {\n this._stopped = true;\n for (const request of this._requests) {\n request.abort();\n }\n this._requests.clear();\n }\n\n start(): void {\n this._stopped = false;\n }\n\n private _hsApiRequest(name: string, args: any[]): Request {\n const request = new Request(name, args);\n this._doSend(request);\n return request;\n }\n\n private async _doSend(request: Request): Promise {\n this._requests.add(request);\n try {\n let retryDelay: ExponentialRetryDelay | undefined;\n while (!this._stopped) {\n try {\n const requestResult = this._hsApi[\n request.methodName\n ].apply(this._hsApi, request.args);\n // so the request can be aborted\n await request.setRequestResult(requestResult);\n return;\n } catch (err) {\n if (\n err instanceof HomeServerError &&\n err.errcode === \"M_LIMIT_EXCEEDED\"\n ) {\n if (Number.isSafeInteger(err.retry_after_ms)) {\n await this._clock\n .createTimeout(err.retry_after_ms)\n .elapsed();\n } else {\n if (!retryDelay) {\n retryDelay = new ExponentialRetryDelay(\n this._clock.createTimeout\n );\n }\n await retryDelay.waitForRetry();\n }\n } else {\n request.responseReject(err);\n return;\n }\n }\n }\n if (this._stopped) {\n request.abort();\n }\n } finally {\n this._requests.delete(request);\n }\n }\n}\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2020, 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {ObservableValue} from \"../observable/value\";\nimport {createEnum} from \"../utils/enum\";\n\nconst INCREMENTAL_TIMEOUT = 30000;\n\nexport const SyncStatus = createEnum(\n \"InitialSync\",\n \"CatchupSync\",\n \"Syncing\",\n \"Stopped\"\n);\n\nfunction timelineIsEmpty(roomResponse) {\n try {\n const events = roomResponse?.timeline?.events;\n return Array.isArray(events) && events.length === 0;\n } catch (err) {\n return true;\n }\n}\n\n/**\n * Sync steps in js-pseudocode:\n * ```js\n * // can only read some stores\n * const preparation = await room.prepareSync(roomResponse, membership, newRoomKeys, prepareTxn);\n * // can do async work that is not related to storage (such as decryption)\n * await room.afterPrepareSync(preparation);\n * // writes and calculates changes\n * const changes = await room.writeSync(roomResponse, isInitialSync, preparation, syncTxn);\n * // applies and emits changes once syncTxn is committed\n * room.afterSync(changes);\n * // can do network requests\n * await room.afterSyncCompleted(changes);\n * ```\n */\nexport class Sync {\n constructor({hsApi, session, storage, logger}) {\n this._hsApi = hsApi;\n this._logger = logger;\n this._session = session;\n this._storage = storage;\n this._currentRequest = null;\n this._status = new ObservableValue(SyncStatus.Stopped);\n this._error = null;\n }\n\n get status() {\n return this._status;\n }\n\n /** the error that made the sync stop */\n get error() {\n return this._error;\n }\n\n start() {\n // not already syncing?\n if (this._status.get() !== SyncStatus.Stopped) {\n return;\n }\n this._error = null;\n let syncToken = this._session.syncToken;\n if (syncToken) {\n this._status.set(SyncStatus.CatchupSync);\n } else {\n this._status.set(SyncStatus.InitialSync);\n }\n this._syncLoop(syncToken);\n }\n\n async _syncLoop(syncToken) {\n // if syncToken is falsy, it will first do an initial sync ... \n while(this._status.get() !== SyncStatus.Stopped) {\n let roomStates;\n let sessionChanges;\n let wasCatchupOrInitial = this._status.get() === SyncStatus.CatchupSync || this._status.get() === SyncStatus.InitialSync;\n await this._logger.run(\"sync\", async log => {\n log.set(\"token\", syncToken);\n log.set(\"status\", this._status.get());\n try {\n // unless we are happily syncing already, we want the server to return\n // as quickly as possible, even if there are no events queued. This\n // serves two purposes:\n //\n // * When the connection dies, we want to know asap when it comes back,\n // so that we can hide the error from the user. (We don't want to\n // have to wait for an event or a timeout).\n //\n // * We want to know if the server has any to_device messages queued up\n // for us. We do that by calling it with a zero timeout until it\n // doesn't give us any more to_device messages.\n const timeout = this._status.get() === SyncStatus.Syncing ? INCREMENTAL_TIMEOUT : 0; \n const syncResult = await this._syncRequest(syncToken, timeout, log);\n syncToken = syncResult.syncToken;\n roomStates = syncResult.roomStates;\n sessionChanges = syncResult.sessionChanges;\n // initial sync or catchup sync\n if (this._status.get() !== SyncStatus.Syncing && syncResult.hadToDeviceMessages) {\n this._status.set(SyncStatus.CatchupSync);\n } else {\n this._status.set(SyncStatus.Syncing);\n }\n } catch (err) {\n // retry same request on timeout\n if (err.name === \"ConnectionError\" && err.isTimeout) {\n // don't run afterSyncCompleted\n return;\n }\n this._error = err;\n if (err.name !== \"AbortError\") {\n // sync wasn't asked to stop, but is stopping\n // because of the error.\n log.error = err;\n log.logLevel = log.level.Fatal;\n }\n log.set(\"stopping\", true);\n this._status.set(SyncStatus.Stopped);\n }\n if (this._status.get() !== SyncStatus.Stopped) {\n // TODO: if we're not going to run this phase in parallel with the next\n // sync request (because this causes OTKs to be uploaded twice)\n // should we move this inside _syncRequest?\n // Alternatively, we can try to fix the OTK upload issue while still\n // running in parallel.\n await log.wrap(\"afterSyncCompleted\", log => this._runAfterSyncCompleted(sessionChanges, roomStates, log));\n }\n },\n this._logger.level.Info,\n (filter, log) => {\n if (log.durationWithoutType(\"network\") >= 2000 || log.error || wasCatchupOrInitial) {\n return filter.minLevel(log.level.Detail);\n } else {\n return filter.minLevel(log.level.Info);\n }\n });\n }\n }\n\n async _runAfterSyncCompleted(sessionChanges, roomStates, log) {\n const isCatchupSync = this._status.get() === SyncStatus.CatchupSync;\n const sessionPromise = (async () => {\n try {\n await log.wrap(\"session\", log => this._session.afterSyncCompleted(sessionChanges, isCatchupSync, log));\n } catch (err) {} // error is logged, but don't fail sessionPromise\n })();\n const roomsPromises = roomStates.map(async rs => {\n try {\n await rs.room.afterSyncCompleted(rs.changes, log);\n } catch (err) {} // error is logged, but don't fail roomsPromises\n });\n // run everything in parallel,\n // we don't want to delay the next sync too much\n // Also, since all promises won't reject (as they have a try/catch)\n // it's fine to use Promise.all\n await Promise.all(roomsPromises.concat(sessionPromise));\n }\n\n async _syncRequest(syncToken, timeout, log) {\n let {syncFilterId} = this._session;\n if (typeof syncFilterId !== \"string\") {\n this._currentRequest = this._hsApi.createFilter(this._session.user.id, {room: {state: {lazy_load_members: true}}}, {log});\n syncFilterId = (await this._currentRequest.response()).filter_id;\n }\n const totalRequestTimeout = timeout + (80 * 1000); // same as riot-web, don't get stuck on wedged long requests\n this._currentRequest = this._hsApi.sync(syncToken, syncFilterId, timeout, {timeout: totalRequestTimeout, log});\n const response = await this._currentRequest.response();\n\n const isInitialSync = !syncToken;\n const sessionState = new SessionSyncProcessState();\n const inviteStates = this._parseInvites(response.rooms);\n const {roomStates, archivedRoomStates} = await this._parseRoomsResponse(\n response.rooms, inviteStates, isInitialSync, log);\n\n try {\n // take a lock on olm sessions used in this sync so sending a message doesn't change them while syncing\n sessionState.lock = await log.wrap(\"obtainSyncLock\", () => this._session.obtainSyncLock(response));\n await log.wrap(\"prepare\", log => this._prepareSync(sessionState, roomStates, response, log));\n await log.wrap(\"afterPrepareSync\", log => Promise.all(roomStates.map(rs => {\n return rs.room.afterPrepareSync(rs.preparation, log);\n })));\n await log.wrap(\"write\", async log => this._writeSync(\n sessionState, inviteStates, roomStates, archivedRoomStates,\n response, syncFilterId, isInitialSync, log));\n } finally {\n sessionState.dispose();\n }\n // sync txn comitted, emit updates and apply changes to in-memory state\n log.wrap(\"after\", log => this._afterSync(\n sessionState, inviteStates, roomStates, archivedRoomStates, log));\n\n const toDeviceEvents = response.to_device?.events;\n return {\n syncToken: response.next_batch,\n roomStates,\n sessionChanges: sessionState.changes,\n hadToDeviceMessages: Array.isArray(toDeviceEvents) && toDeviceEvents.length > 0,\n };\n }\n\n _openPrepareSyncTxn() {\n const storeNames = this._storage.storeNames;\n return this._storage.readTxn([\n storeNames.deviceKeys, // to read device from olm messages\n storeNames.olmSessions,\n storeNames.inboundGroupSessions,\n // to read fragments when loading sync writer when rejoining archived room\n storeNames.timelineFragments,\n // to read fragments when loading sync writer when rejoining archived room\n // to read events that can now be decrypted\n storeNames.timelineEvents,\n ]);\n }\n\n async _prepareSync(sessionState, roomStates, response, log) {\n const prepareTxn = await this._openPrepareSyncTxn();\n sessionState.preparation = await log.wrap(\"session\", log => this._session.prepareSync(\n response, sessionState.lock, prepareTxn, log));\n\n const newKeysByRoom = sessionState.preparation?.newKeysByRoom;\n\n // add any rooms with new keys but no sync response to the list of rooms to be synced\n if (newKeysByRoom) {\n const {hasOwnProperty} = Object.prototype;\n for (const roomId of newKeysByRoom.keys()) {\n const isRoomInResponse = response.rooms?.join && hasOwnProperty.call(response.rooms.join, roomId);\n if (!isRoomInResponse) {\n let room = this._session.rooms.get(roomId);\n if (room) {\n roomStates.push(new RoomSyncProcessState(room, false, {}, room.membership));\n }\n }\n }\n }\n \n await Promise.all(roomStates.map(async rs => {\n const newKeys = newKeysByRoom?.get(rs.room.id);\n rs.preparation = await log.wrap(\"room\", async log => {\n // if previously joined and we still have the timeline for it,\n // this loads the syncWriter at the correct position to continue writing the timeline\n if (rs.isNewRoom) {\n await rs.room.load(null, prepareTxn, log);\n }\n return rs.room.prepareSync(\n rs.roomResponse, rs.membership, newKeys, prepareTxn, log)\n }, log.level.Detail);\n }));\n\n // This is needed for safari to not throw TransactionInactiveErrors on the syncTxn. See docs/INDEXEDDB.md\n await prepareTxn.complete();\n }\n\n async _writeSync(sessionState, inviteStates, roomStates, archivedRoomStates, response, syncFilterId, isInitialSync, log) {\n const syncTxn = await this._openSyncTxn();\n try {\n sessionState.changes = await log.wrap(\"session\", log => this._session.writeSync(\n response, syncFilterId, sessionState.preparation, syncTxn, log));\n await Promise.all(inviteStates.map(async is => {\n is.changes = await log.wrap(\"invite\", log => is.invite.writeSync(\n is.membership, is.roomResponse, syncTxn, log));\n }));\n await Promise.all(roomStates.map(async rs => {\n rs.changes = await log.wrap(\"room\", log => rs.room.writeSync(\n rs.roomResponse, isInitialSync, rs.preparation, syncTxn, log));\n }));\n // important to do this after roomStates,\n // as we're referring to the roomState to get the summaryChanges\n await Promise.all(archivedRoomStates.map(async ars => {\n const summaryChanges = ars.roomState?.summaryChanges;\n ars.changes = await log.wrap(\"archivedRoom\", log => ars.archivedRoom.writeSync(\n summaryChanges, ars.roomResponse, ars.membership, syncTxn, log));\n }));\n } catch(err) {\n // avoid corrupting state by only\n // storing the sync up till the point\n // the exception occurred\n syncTxn.abort(log);\n throw syncTxn.getCause(err);\n }\n await syncTxn.complete(log);\n }\n\n _afterSync(sessionState, inviteStates, roomStates, archivedRoomStates, log) {\n log.wrap(\"session\", log => this._session.afterSync(sessionState.changes, log), log.level.Detail);\n for(let ars of archivedRoomStates) {\n log.wrap(\"archivedRoom\", log => {\n ars.archivedRoom.afterSync(ars.changes, log);\n ars.archivedRoom.release();\n }, log.level.Detail);\n }\n for(let rs of roomStates) {\n log.wrap(\"room\", log => rs.room.afterSync(rs.changes, log), log.level.Detail);\n }\n for(let is of inviteStates) {\n log.wrap(\"invite\", log => is.invite.afterSync(is.changes, log), log.level.Detail);\n }\n this._session.applyRoomCollectionChangesAfterSync(inviteStates, roomStates, archivedRoomStates, log);\n }\n\n _openSyncTxn() {\n const storeNames = this._storage.storeNames;\n return this._storage.readWriteTxn([\n storeNames.session,\n storeNames.roomSummary,\n storeNames.archivedRoomSummary,\n storeNames.invites,\n storeNames.roomState,\n storeNames.roomMembers,\n storeNames.timelineEvents,\n storeNames.timelineRelations,\n storeNames.timelineFragments,\n storeNames.pendingEvents,\n storeNames.userIdentities,\n storeNames.groupSessionDecryptions,\n storeNames.deviceKeys,\n // to discard outbound session when somebody leaves a room\n // and to create room key messages when somebody joins\n storeNames.outboundGroupSessions,\n storeNames.operations,\n storeNames.accountData,\n // to decrypt and store new room keys\n storeNames.olmSessions,\n storeNames.inboundGroupSessions,\n storeNames.calls,\n ]);\n }\n \n async _parseRoomsResponse(roomsSection, inviteStates, isInitialSync, log) {\n const roomStates = [];\n const archivedRoomStates = [];\n if (roomsSection) {\n const allMemberships = [\"join\", \"leave\"];\n for(const membership of allMemberships) {\n const membershipSection = roomsSection[membership];\n if (membershipSection) {\n for (const [roomId, roomResponse] of Object.entries(membershipSection)) {\n // ignore rooms with empty timelines during initial sync,\n // see https://github.com/vector-im/hydrogen-web/issues/15\n if (isInitialSync && timelineIsEmpty(roomResponse)) {\n continue;\n }\n const invite = this._session.invites.get(roomId);\n // if there is an existing invite, add a process state for it\n // so its writeSync and afterSync will run and remove the invite\n if (invite) {\n inviteStates.push(new InviteSyncProcessState(invite, false, null, membership));\n }\n const roomState = this._createRoomSyncState(roomId, roomResponse, membership, isInitialSync);\n if (roomState) {\n roomStates.push(roomState);\n }\n const ars = await this._createArchivedRoomSyncState(roomId, roomState, roomResponse, membership, isInitialSync, log);\n if (ars) {\n archivedRoomStates.push(ars);\n }\n }\n }\n }\n }\n return {roomStates, archivedRoomStates};\n }\n\n _createRoomSyncState(roomId, roomResponse, membership, isInitialSync) {\n let isNewRoom = false;\n let room = this._session.rooms.get(roomId);\n // create room only either on new join,\n // or for an archived room during initial sync,\n // where we create the summaryChanges with a joined\n // room to then adopt by the archived room.\n // This way the limited timeline, members, ...\n // we receive also gets written.\n // In any case, don't create a room for a rejected invite\n if (!room && (membership === \"join\" || (isInitialSync && membership === \"leave\"))) {\n room = this._session.createJoinedRoom(roomId);\n isNewRoom = true;\n }\n if (room) {\n return new RoomSyncProcessState(\n room, isNewRoom, roomResponse, membership);\n }\n }\n\n async _createArchivedRoomSyncState(roomId, roomState, roomResponse, membership, isInitialSync, log) {\n let archivedRoom;\n if (roomState?.shouldAdd && !isInitialSync) {\n // when adding a joined room during incremental sync,\n // always create the archived room to write the removal\n // of the archived summary\n archivedRoom = this._session.createOrGetArchivedRoomForSync(roomId);\n } else if (membership === \"leave\") {\n if (roomState) {\n // we still have a roomState, so we just left it\n // in this case, create a new archivedRoom\n archivedRoom = this._session.createOrGetArchivedRoomForSync(roomId);\n } else {\n // this is an update of an already left room, restore\n // it from storage first, so we can increment it.\n // this happens for example when our membership changes\n // after leaving (e.g. being (un)banned, possibly after being kicked), etc\n archivedRoom = await this._session.loadArchivedRoom(roomId, log);\n }\n }\n if (archivedRoom) {\n return new ArchivedRoomSyncProcessState(\n archivedRoom, roomState, roomResponse, membership);\n }\n }\n\n _parseInvites(roomsSection) {\n const inviteStates = [];\n if (roomsSection?.invite) {\n for (const [roomId, roomResponse] of Object.entries(roomsSection.invite)) {\n let invite = this._session.invites.get(roomId);\n let isNewInvite = false;\n if (!invite) {\n invite = this._session.createInvite(roomId);\n isNewInvite = true;\n }\n inviteStates.push(new InviteSyncProcessState(invite, isNewInvite, roomResponse, \"invite\"));\n }\n }\n return inviteStates;\n }\n\n stop() {\n if (this._status.get() === SyncStatus.Stopped) {\n return;\n }\n this._status.set(SyncStatus.Stopped);\n if (this._currentRequest) {\n this._currentRequest.abort();\n this._currentRequest = null;\n }\n }\n}\n\nclass SessionSyncProcessState {\n constructor() {\n this.lock = null;\n this.preparation = null;\n this.changes = null;\n }\n\n dispose() {\n this.lock?.release();\n }\n}\n\nclass RoomSyncProcessState {\n constructor(room, isNewRoom, roomResponse, membership) {\n this.room = room;\n this.isNewRoom = isNewRoom;\n this.roomResponse = roomResponse;\n this.membership = membership;\n this.preparation = null;\n this.changes = null;\n }\n\n get id() {\n return this.room.id;\n }\n\n get shouldAdd() {\n return this.isNewRoom && this.membership === \"join\";\n }\n\n get shouldRemove() {\n return !this.isNewRoom && this.membership !== \"join\";\n }\n\n get summaryChanges() {\n return this.changes?.summaryChanges;\n }\n}\n\n\nclass ArchivedRoomSyncProcessState {\n constructor(archivedRoom, roomState, roomResponse, membership, isInitialSync) {\n this.archivedRoom = archivedRoom;\n this.roomState = roomState;\n this.roomResponse = roomResponse;\n this.membership = membership;\n this.isInitialSync = isInitialSync;\n this.changes = null;\n }\n\n get id() {\n return this.archivedRoom.id;\n }\n\n get shouldAdd() {\n return (this.roomState || this.isInitialSync) && this.membership === \"leave\";\n }\n\n get shouldRemove() {\n return this.membership === \"join\";\n }\n}\n\nclass InviteSyncProcessState {\n constructor(invite, isNewInvite, roomResponse, membership) {\n this.invite = invite;\n this.isNewInvite = isNewInvite;\n this.membership = membership;\n this.roomResponse = roomResponse;\n this.changes = null;\n }\n\n get id() {\n return this.invite.id;\n }\n\n get shouldAdd() {\n return this.isNewInvite;\n }\n\n get shouldRemove() {\n return this.membership !== \"invite\";\n }\n}\n","/* Copyright 2015 Mark Haines\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n'use strict';\n\nvar escaped = /[\\\\\\\"\\x00-\\x1F]/g;\nvar escapes = {};\nfor (var i = 0; i < 0x20; ++i) {\n escapes[String.fromCharCode(i)] = (\n '\\\\U' + ('0000' + i.toString(16)).slice(-4).toUpperCase()\n );\n}\nescapes['\\b'] = '\\\\b';\nescapes['\\t'] = '\\\\t';\nescapes['\\n'] = '\\\\n';\nescapes['\\f'] = '\\\\f';\nescapes['\\r'] = '\\\\r';\nescapes['\\\"'] = '\\\\\\\"';\nescapes['\\\\'] = '\\\\\\\\';\n\nfunction escapeString(value) {\n escaped.lastIndex = 0;\n return value.replace(escaped, function(c) { return escapes[c]; });\n}\n\nfunction stringify(value) {\n switch (typeof value) {\n case 'string':\n return '\"' + escapeString(value) + '\"';\n case 'number':\n return isFinite(value) ? value : 'null';\n case 'boolean':\n return value;\n case 'object':\n if (value === null) {\n return 'null';\n }\n if (Array.isArray(value)) {\n return stringifyArray(value);\n }\n return stringifyObject(value);\n default:\n throw new Error('Cannot stringify: ' + typeof value);\n }\n}\n\nfunction stringifyArray(array) {\n var sep = '[';\n var result = '';\n for (var i = 0; i < array.length; ++i) {\n result += sep;\n sep = ',';\n result += stringify(array[i]);\n }\n if (sep != ',') {\n return '[]';\n } else {\n return result + ']';\n }\n}\n\nfunction stringifyObject(object) {\n var sep = '{';\n var result = '';\n var keys = Object.keys(object);\n keys.sort();\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n result += sep + '\"' + escapeString(key) + '\":';\n sep = ',';\n result += stringify(object[key]);\n }\n if (sep != ',') {\n return '{}';\n } else {\n return result + '}';\n }\n}\n\n/** */\nmodule.exports = {stringify: stringify};\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport anotherjson from \"another-json\";\n\nimport type {UnsentStateEvent} from \"../room/common\";\nimport type {ILogItem} from \"../../logging/types\";\nimport type * as OlmNamespace from \"@matrix-org/olm\";\ntype Olm = typeof OlmNamespace;\n\nexport enum DecryptionSource {\n Sync, Timeline, Retry\n};\n\n// use common prefix so it's easy to clear properties that are not e2ee related during session clear\nexport const SESSION_E2EE_KEY_PREFIX = \"e2ee:\";\nexport const OLM_ALGORITHM = \"m.olm.v1.curve25519-aes-sha2\";\nexport const MEGOLM_ALGORITHM = \"m.megolm.v1.aes-sha2\";\n\nexport class DecryptionError extends Error {\n constructor(private readonly code: string, private readonly event: object, private readonly detailsObj?: object) {\n super(`Decryption error ${code}${detailsObj ? \": \"+JSON.stringify(detailsObj) : \"\"}`);\n }\n}\n\nexport const SIGNATURE_ALGORITHM = \"ed25519\";\n\nexport type SignedValue = {\n signatures?: {[userId: string]: {[keyId: string]: string}}\n unsigned?: object\n}\n\n// we store device keys (and cross-signing) in the format we get them from the server\n// as that is what the signature is calculated on, so to verify and sign, we need\n// it in this format anyway.\nexport type DeviceKey = SignedValue & {\n readonly user_id: string;\n readonly device_id: string;\n readonly algorithms: ReadonlyArray;\n readonly keys: {[keyId: string]: string};\n readonly unsigned: {\n device_display_name?: string\n }\n}\n\nexport function getDeviceEd25519Key(deviceKey: DeviceKey): string {\n return deviceKey.keys[`ed25519:${deviceKey.device_id}`];\n}\n\nexport function getDeviceCurve25519Key(deviceKey: DeviceKey): string {\n return deviceKey.keys[`curve25519:${deviceKey.device_id}`];\n}\n\nexport function getEd25519Signature(signedValue: SignedValue, userId: string, deviceOrKeyId: string): string | undefined {\n return signedValue?.signatures?.[userId]?.[`${SIGNATURE_ALGORITHM}:${deviceOrKeyId}`];\n}\n\nexport enum SignatureVerification {\n Valid,\n Invalid,\n NotSigned,\n}\n\nexport function verifyEd25519Signature(olmUtil: Olm.Utility, userId: string, deviceOrKeyId: string, ed25519Key: string, value: SignedValue, log?: ILogItem): SignatureVerification {\n const signature = getEd25519Signature(value, userId, deviceOrKeyId);\n if (!signature) {\n log?.set(\"no_signature\", true);\n return SignatureVerification.NotSigned;\n }\n const clone = Object.assign({}, value) as object;\n delete clone[\"unsigned\"];\n delete clone[\"signatures\"];\n const canonicalJson = anotherjson.stringify(clone);\n try {\n // throws when signature is invalid\n olmUtil.ed25519_verify(ed25519Key, canonicalJson, signature);\n return SignatureVerification.Valid;\n } catch (err) {\n if (log) {\n const logItem = log.log({l: \"Invalid signature, ignoring.\", ed25519Key, canonicalJson, signature});\n logItem.error = err;\n logItem.logLevel = log.level.Warn;\n }\n return SignatureVerification.Invalid;\n }\n}\n\nexport function createRoomEncryptionEvent(): UnsentStateEvent {\n return {\n \"type\": \"m.room.encryption\",\n \"state_key\": \"\",\n \"content\": {\n \"algorithm\": MEGOLM_ALGORITHM,\n \"rotation_period_ms\": 604800000,\n \"rotation_period_msgs\": 100\n }\n }\n}\n\nexport enum HistoryVisibility {\n Joined = \"joined\",\n Invited = \"invited\",\n WorldReadable = \"world_readable\",\n Shared = \"shared\",\n};\n\nexport function shouldShareKey(membership: string, historyVisibility: HistoryVisibility) {\n switch (historyVisibility) {\n case HistoryVisibility.WorldReadable:\n return true;\n case HistoryVisibility.Shared:\n // was part of room at some time\n return membership !== undefined;\n case HistoryVisibility.Joined:\n return membership === \"join\";\n case HistoryVisibility.Invited:\n return membership === \"invite\" || membership === \"join\";\n default:\n return false;\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport type {StateEvent} from \"../storage/types\";\n\nexport function getPrevContentFromStateEvent(event) {\n // where to look for prev_content is a bit of a mess,\n // see https://matrix.to/#/!NasysSDfxKxZBzJJoE:matrix.org/$DvrAbZJiILkOmOIuRsNoHmh2v7UO5CWp_rYhlGk34fQ?via=matrix.org&via=pixie.town&via=amorgan.xyz\n return event.unsigned?.prev_content || event.prev_content;\n}\n\nexport const REDACTION_TYPE = \"m.room.redaction\";\n\nexport function isRedacted(event) {\n return !!event?.unsigned?.redacted_because;\n}\n\nexport type UnsentStateEvent = { type: string; state_key: string; content: Record };\n\nexport enum RoomStatus {\n None = 1 << 0,\n BeingCreated = 1 << 1,\n Invited = 1 << 2,\n Joined = 1 << 3,\n Replaced = 1 << 4,\n Archived = 1 << 5,\n}\n\nexport enum RoomType {\n DirectMessage,\n Private,\n Public\n}\n\ntype RoomResponse = {\n state?: {\n events?: Array\n },\n timeline?: {\n events?: Array\n }\n}\n\n/** iterates over any state events in a sync room response, in the order that they should be applied (from older to younger events) */\n\nexport function iterateResponseStateEvents(roomResponse: RoomResponse, callback: (StateEvent) => Promise | void): Promise | void {\n let promises: Promise[] | undefined = undefined;\n const callCallback = stateEvent => {\n const result = callback(stateEvent);\n if (result instanceof Promise) {\n promises = promises ?? [];\n promises.push(result);\n }\n };\n // first iterate over state events, they precede the timeline\n const stateEvents = roomResponse.state?.events;\n if (stateEvents) {\n for (let i = 0; i < stateEvents.length; i++) {\n callCallback(stateEvents[i]);\n }\n }\n // now see if there are any state events within the timeline\n let timelineEvents = roomResponse.timeline?.events;\n if (timelineEvents) {\n for (let i = 0; i < timelineEvents.length; i++) {\n const event = timelineEvents[i];\n if (typeof event.state_key === \"string\") {\n callCallback(event);\n }\n }\n }\n if (promises) {\n return Promise.all(promises).then(() => undefined);\n }\n}\n\nexport function tests() {\n return {\n \"test iterateResponseStateEvents with both state and timeline sections\": assert => {\n const roomResponse = {\n state: {\n events: [\n {type: \"m.room.member\", state_key: \"1\"},\n {type: \"m.room.member\", state_key: \"2\", content: {a: 1}},\n ]\n },\n timeline: {\n events: [\n {type: \"m.room.message\"},\n {type: \"m.room.member\", state_key: \"3\"},\n {type: \"m.room.message\"},\n {type: \"m.room.member\", state_key: \"2\", content: {a: 2}},\n ]\n }\n } as unknown as RoomResponse;\n const expectedStateKeys = [\"1\", \"2\", \"3\", \"2\"];\n const expectedAForMember2 = [1, 2];\n iterateResponseStateEvents(roomResponse, event => {\n assert.strictEqual(event.type, \"m.room.member\");\n assert.strictEqual(expectedStateKeys.shift(), event.state_key);\n if (event.state_key === \"2\") {\n assert.strictEqual(expectedAForMember2.shift(), event.content.a);\n }\n });\n assert.strictEqual(expectedStateKeys.length, 0);\n assert.strictEqual(expectedAForMember2.length, 0);\n },\n \"test iterateResponseStateEvents with empty response\": assert => {\n iterateResponseStateEvents({}, () => {\n assert.fail(\"no events expected\");\n });\n }\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {MEGOLM_ALGORITHM} from \"../e2ee/common\";\nimport {iterateResponseStateEvents} from \"./common\";\n\nfunction applyTimelineEntries(data, timelineEntries, isInitialSync, canMarkUnread, ownUserId) {\n if (timelineEntries.length) {\n data = timelineEntries.reduce((data, entry) => {\n return processTimelineEvent(data, entry,\n isInitialSync, canMarkUnread, ownUserId);\n }, data);\n }\n return data;\n}\n\nfunction applySyncResponse(data, roomResponse, membership, ownUserId) {\n if (roomResponse.summary) {\n data = updateSummary(data, roomResponse.summary);\n }\n if (membership !== data.membership) {\n data = data.cloneIfNeeded();\n data.membership = membership;\n }\n if (roomResponse.account_data) {\n data = roomResponse.account_data.events.reduce(processRoomAccountData, data);\n }\n // process state events in state and in timeline.\n // non-state events are handled by applyTimelineEntries\n // so decryption is handled properly\n iterateResponseStateEvents(roomResponse, event => {\n data = processStateEvent(data, event, ownUserId);\n });\n const unreadNotifications = roomResponse.unread_notifications;\n if (unreadNotifications) {\n data = processNotificationCounts(data, unreadNotifications);\n }\n\n return data;\n}\n\nfunction processNotificationCounts(data, unreadNotifications) {\n const highlightCount = unreadNotifications.highlight_count || 0;\n if (highlightCount !== data.highlightCount) {\n data = data.cloneIfNeeded();\n data.highlightCount = highlightCount;\n }\n const notificationCount = unreadNotifications.notification_count;\n if (notificationCount !== data.notificationCount) {\n data = data.cloneIfNeeded();\n data.notificationCount = notificationCount;\n }\n return data;\n} \n\nfunction processRoomAccountData(data, event) {\n if (event?.type === \"m.tag\") {\n let tags = event?.content?.tags;\n if (!tags || Array.isArray(tags) || typeof tags !== \"object\") {\n tags = null;\n }\n data = data.cloneIfNeeded();\n data.tags = tags;\n }\n return data;\n}\n\nexport function processStateEvent(data, event, ownUserId) {\n if (event.type === \"m.room.create\") {\n data = data.cloneIfNeeded();\n data.lastMessageTimestamp = event.origin_server_ts;\n } else if (event.type === \"m.room.encryption\") {\n const algorithm = event.content?.algorithm;\n if (!data.encryption && algorithm === MEGOLM_ALGORITHM) {\n data = data.cloneIfNeeded();\n data.encryption = event.content;\n }\n } else if (event.type === \"m.room.name\") {\n const newName = event.content?.name;\n if (newName !== data.name) {\n data = data.cloneIfNeeded();\n data.name = newName;\n }\n } else if (event.type === \"m.room.avatar\") {\n const newUrl = event.content?.url;\n if (newUrl !== data.avatarUrl) {\n data = data.cloneIfNeeded();\n data.avatarUrl = newUrl;\n }\n } else if (event.type === \"m.room.canonical_alias\") {\n const content = event.content;\n data = data.cloneIfNeeded();\n data.canonicalAlias = content.alias;\n } else if (event.type === \"m.room.member\") {\n const content = event.content;\n if (content.is_direct === true && content.membership === \"invite\" && !data.isDirectMessage) {\n let other;\n if (event.sender === ownUserId) {\n other = event.state_key;\n } else if (event.state_key === ownUserId) {\n other = event.sender;\n }\n if (other) {\n data = data.cloneIfNeeded();\n data.isDirectMessage = true;\n data.dmUserId = other;\n }\n } else if (content.membership === \"leave\" && data.isDirectMessage && data.dmUserId === event.state_key) {\n data = data.cloneIfNeeded();\n data.isDirectMessage = false;\n data.dmUserId = null;\n }\n }\n return data;\n}\n\nfunction processTimelineEvent(data, eventEntry, isInitialSync, canMarkUnread, ownUserId) {\n if (eventEntry.eventType === \"m.room.message\") {\n if (!data.lastMessageTimestamp || eventEntry.timestamp > data.lastMessageTimestamp) {\n data = data.cloneIfNeeded();\n data.lastMessageTimestamp = eventEntry.timestamp;\n }\n if (!isInitialSync && eventEntry.sender !== ownUserId && canMarkUnread) {\n data = data.cloneIfNeeded();\n data.isUnread = true;\n }\n }\n return data;\n}\n\nfunction updateSummary(data, summary) {\n const heroes = summary[\"m.heroes\"];\n const joinCount = summary[\"m.joined_member_count\"];\n const inviteCount = summary[\"m.invited_member_count\"];\n // TODO: we could easily calculate if all members are available here and set hasFetchedMembers?\n // so we can avoid calling /members...\n // we'd need to do a count query in the roomMembers store though ...\n if (heroes && Array.isArray(heroes)) {\n data = data.cloneIfNeeded();\n data.heroes = heroes;\n }\n if (Number.isInteger(inviteCount)) {\n data = data.cloneIfNeeded();\n data.inviteCount = inviteCount;\n }\n if (Number.isInteger(joinCount)) {\n data = data.cloneIfNeeded();\n data.joinCount = joinCount;\n }\n return data;\n}\n\nexport class SummaryData {\n constructor(copy, roomId) {\n this.roomId = copy ? copy.roomId : roomId;\n this.name = copy ? copy.name : null;\n this.lastMessageTimestamp = copy ? copy.lastMessageTimestamp : null;\n this.isUnread = copy ? copy.isUnread : false;\n this.encryption = copy ? copy.encryption : null;\n this.membership = copy ? copy.membership : null;\n this.inviteCount = copy ? copy.inviteCount : 0;\n this.joinCount = copy ? copy.joinCount : 0;\n this.heroes = copy ? copy.heroes : null;\n this.canonicalAlias = copy ? copy.canonicalAlias : null;\n this.hasFetchedMembers = copy ? copy.hasFetchedMembers : false;\n this.isTrackingMembers = copy ? copy.isTrackingMembers : false;\n this.avatarUrl = copy ? copy.avatarUrl : null;\n this.notificationCount = copy ? copy.notificationCount : 0;\n this.highlightCount = copy ? copy.highlightCount : 0;\n this.tags = copy ? copy.tags : null;\n this.isDirectMessage = copy ? copy.isDirectMessage : false;\n this.dmUserId = copy ? copy.dmUserId : null;\n this.cloned = copy ? true : false;\n }\n\n changedKeys(other) {\n const props = Object.getOwnPropertyNames(this);\n return props.filter(prop => {\n return prop !== \"cloned\" && this[prop] !== other[prop]\n });\n }\n\n cloneIfNeeded() {\n if (this.cloned) {\n return this;\n } else {\n return new SummaryData(this);\n }\n }\n\n serialize() {\n return Object.entries(this).reduce((obj, [key, value]) => {\n if (key !== \"cloned\" && value !== null) {\n obj[key] = value;\n }\n return obj;\n }, {});\n }\n\n applyTimelineEntries(timelineEntries, isInitialSync, canMarkUnread, ownUserId) {\n return applyTimelineEntries(this, timelineEntries, isInitialSync, canMarkUnread, ownUserId);\n }\n\n applySyncResponse(roomResponse, membership, ownUserId) {\n return applySyncResponse(this, roomResponse, membership, ownUserId);\n }\n\n get needsHeroes() {\n return !this.name && !this.canonicalAlias && this.heroes && this.heroes.length > 0;\n }\n\n isNewJoin(oldData) {\n return this.membership === \"join\" && oldData.membership !== \"join\";\n }\n}\n\nexport class RoomSummary {\n\tconstructor(roomId) {\n this._data = null;\n this.applyChanges(new SummaryData(null, roomId));\n\t}\n\n get data() {\n return this._data;\n }\n\n writeClearUnread(txn) {\n const data = new SummaryData(this._data);\n data.isUnread = false;\n data.notificationCount = 0;\n data.highlightCount = 0;\n txn.roomSummary.set(data.serialize());\n return data;\n }\n\n writeHasFetchedMembers(value, txn) {\n const data = new SummaryData(this._data);\n data.hasFetchedMembers = value;\n txn.roomSummary.set(data.serialize());\n return data;\n }\n\n writeIsTrackingMembers(value, txn) {\n const data = new SummaryData(this._data);\n data.isTrackingMembers = value;\n txn.roomSummary.set(data.serialize());\n return data;\n }\n\n\twriteData(data, txn) {\n\t\tif (data !== this._data) {\n txn.roomSummary.set(data.serialize());\n return data;\n\t\t}\n\t}\n\n /** move summary to archived store when leaving the room */\n writeArchivedData(data, txn) {\n if (data !== this._data) {\n txn.archivedRoomSummary.set(data.serialize());\n return data;\n }\n }\n\n async writeAndApplyData(data, storage) {\n if (data === this._data) {\n return false;\n }\n const txn = await storage.readWriteTxn([\n storage.storeNames.roomSummary,\n ]);\n try {\n txn.roomSummary.set(data.serialize());\n } catch (err) {\n txn.abort();\n throw err;\n }\n await txn.complete();\n this.applyChanges(data);\n return true;\n }\n\n applyChanges(data) {\n this._data = data;\n // clear cloned flag, so cloneIfNeeded makes a copy and\n // this._data is not modified if any field is changed.\n this._data.cloned = false;\n }\n\n\tasync load(summary) {\n this.applyChanges(new SummaryData(summary));\n\t}\n}\n\nexport function tests() {\n return {\n \"serialize doesn't include null fields or cloned\": assert => {\n const roomId = \"!123:hs.tld\";\n const data = new SummaryData(null, roomId);\n const clone = data.cloneIfNeeded();\n const serialized = clone.serialize();\n assert.strictEqual(serialized.cloned, undefined);\n assert.equal(serialized.roomId, roomId);\n const nullCount = Object.values(serialized).reduce((count, value) => count + value === null ? 1 : 0, 0);\n assert.strictEqual(nullCount, 0);\n }\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexport enum StoreNames {\n session = \"session\",\n roomState = \"roomState\",\n roomSummary = \"roomSummary\",\n archivedRoomSummary = \"archivedRoomSummary\",\n invites = \"invites\",\n roomMembers = \"roomMembers\",\n timelineEvents = \"timelineEvents\",\n timelineRelations = \"timelineRelations\",\n timelineFragments = \"timelineFragments\",\n pendingEvents = \"pendingEvents\",\n userIdentities = \"userIdentities\",\n deviceKeys = \"deviceKeys\",\n olmSessions = \"olmSessions\",\n inboundGroupSessions = \"inboundGroupSessions\",\n outboundGroupSessions = \"outboundGroupSessions\",\n groupSessionDecryptions = \"groupSessionDecryptions\",\n operations = \"operations\",\n accountData = \"accountData\",\n calls = \"calls\",\n crossSigningKeys = \"crossSigningKeys\",\n sharedSecrets = \"sharedSecrets\",\n}\n\nexport const STORE_NAMES: Readonly = Object.values(StoreNames);\n\nexport class StorageError extends Error {\n errcode?: string;\n cause: Error | null;\n\n constructor(message: string, cause: Error | null = null) {\n super(message);\n if (cause) {\n this.errcode = cause.name;\n }\n this.cause = cause;\n }\n\n get name(): string {\n return \"StorageError\";\n }\n}\n\nexport const KeyLimits = {\n get minStorageKey(): number {\n // for indexeddb, we use unsigned 32 bit integers as keys\n return 0;\n },\n \n get middleStorageKey(): number {\n // for indexeddb, we use unsigned 32 bit integers as keys\n return 0x7FFFFFFF;\n },\n\n get maxStorageKey(): number {\n // for indexeddb, we use unsigned 32 bit integers as keys\n return 0xFFFFFFFF;\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {KeyLimits} from \"../../storage/common\";\nimport {Direction} from \"./Direction\";\n\n// key for events in the timelineEvents store\nexport class EventKey {\n constructor(\n public fragmentId: number,\n public eventIndex: number\n ) {\n }\n\n nextFragmentKey(): EventKey {\n // could take MIN_EVENT_INDEX here if it can't be paged back\n return new EventKey(this.fragmentId + 1, KeyLimits.middleStorageKey);\n }\n\n nextKeyForDirection(direction: Direction): EventKey {\n if (direction.isForward) {\n return this.nextKey();\n } else {\n return this.previousKey();\n }\n }\n\n previousKey(): EventKey {\n return new EventKey(this.fragmentId, this.eventIndex - 1);\n }\n\n nextKey(): EventKey {\n return new EventKey(this.fragmentId, this.eventIndex + 1);\n }\n\n static get maxKey(): EventKey {\n return new EventKey(KeyLimits.maxStorageKey, KeyLimits.maxStorageKey);\n }\n\n static get minKey(): EventKey {\n return new EventKey(KeyLimits.minStorageKey, KeyLimits.minStorageKey);\n }\n\n static get defaultLiveKey(): EventKey {\n return EventKey.defaultFragmentKey(KeyLimits.minStorageKey);\n }\n\n static defaultFragmentKey(fragmentId: number): EventKey {\n return new EventKey(fragmentId, KeyLimits.middleStorageKey);\n }\n\n toString(): string {\n return `[${this.fragmentId}/${this.eventIndex}]`;\n }\n\n equals(other: EventKey): boolean {\n return this.fragmentId === other?.fragmentId && this.eventIndex === other?.eventIndex;\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n//entries can be sorted, first by fragment, then by entry index.\nimport {EventKey} from \"../EventKey\";\nexport const PENDING_FRAGMENT_ID = Number.MAX_SAFE_INTEGER;\n\ninterface FragmentIdComparer {\n compare: (a: number, b: number) => number\n}\n\nexport abstract class BaseEntry {\n constructor(\n protected readonly _fragmentIdComparer: FragmentIdComparer\n ) {\n }\n\n abstract get fragmentId(): number;\n abstract get entryIndex(): number;\n abstract updateFrom(other: BaseEntry): void;\n\n compare(otherEntry: BaseEntry): number {\n if (this.fragmentId === otherEntry.fragmentId) {\n return this.entryIndex - otherEntry.entryIndex;\n } else if (this.fragmentId === PENDING_FRAGMENT_ID) {\n return 1;\n } else if (otherEntry.fragmentId === PENDING_FRAGMENT_ID) {\n return -1;\n } else {\n // This might throw if the relation of two fragments is unknown.\n return this._fragmentIdComparer.compare(this.fragmentId, otherEntry.fragmentId);\n }\n }\n\n asEventKey(): EventKey {\n return new EventKey(this.fragmentId, this.entryIndex);\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {REDACTION_TYPE} from \"../common\";\n\nexport const REACTION_TYPE = \"m.reaction\";\nexport const ANNOTATION_RELATION_TYPE = \"m.annotation\";\nexport const REFERENCE_RELATION_TYPE = \"m.reference\";\n\nexport function createAnnotation(targetId, key) {\n return {\n \"m.relates_to\": {\n \"event_id\": targetId,\n key,\n \"rel_type\": ANNOTATION_RELATION_TYPE\n }\n };\n}\n\nexport function createReference(targetId) {\n return {\n \"m.relates_to\": {\n \"event_id\": targetId,\n \"rel_type\": REFERENCE_RELATION_TYPE\n }\n };\n}\n\nexport function getRelationTarget(relation) {\n return relation.event_id || relation[\"m.in_reply_to\"]?.event_id\n}\n\nexport function setRelationTarget(relation, target) {\n if (relation.event_id !== undefined) {\n relation.event_id = target;\n } else if (relation[\"m.in_reply_to\"]) {\n relation[\"m.in_reply_to\"].event_id = target;\n }\n}\n\nexport function getRelatedEventId(event) {\n\tif (event.type === REDACTION_TYPE) {\n return event.redacts;\n } else {\n const relation = getRelation(event);\n if (relation) {\n return getRelationTarget(relation);\n }\n }\n return null;\n}\n\nexport function getRelationFromContent(content) {\n return content?.[\"m.relates_to\"];\n}\n\nexport function getRelation(event) {\n\treturn getRelationFromContent(event.content);\n}\n\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexport class PendingAnnotation {\n constructor() {\n // TODO: use simple member for reaction and redaction as we can't/shouldn't really have more than 2 entries\n // this contains both pending annotation entries, and pending redactions of remote annotation entries \n this._entries = [];\n }\n\n get firstTimestamp() {\n return this._entries.reduce((ts, e) => {\n if (e.isRedaction) {\n return ts;\n }\n return Math.min(e.timestamp, ts);\n }, Number.MAX_SAFE_INTEGER);\n }\n\n get annotationEntry() {\n return this._entries.find(e => !e.isRedaction);\n }\n\n get redactionEntry() {\n return this._entries.find(e => e.isRedaction);\n }\n\n get count() {\n return this._entries.reduce((count, e) => {\n return count + (e.isRedaction ? -1 : 1);\n }, 0);\n }\n\n add(entry) {\n this._entries.push(entry);\n }\n\n remove(entry) {\n const idx = this._entries.indexOf(entry);\n if (idx === -1) {\n return false;\n }\n this._entries.splice(idx, 1);\n return true;\n }\n\n get willAnnotate() {\n const lastEntry = this._entries.reduce((lastEntry, e) => {\n if (!lastEntry || e.pendingEvent.queueIndex > lastEntry.pendingEvent.queueIndex) {\n return e;\n }\n return lastEntry;\n }, null);\n if (lastEntry) {\n return !lastEntry.isRedaction;\n }\n return false;\n }\n\n get isEmpty() {\n return this._entries.length === 0;\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nfunction htmlEscape(string) {\n return string.replace(/&/g, \"&\").replace(//g, \">\");\n}\n\nfunction fallbackForNonTextualMessage(msgtype) {\n switch (msgtype) {\n case \"m.file\":\n return \"sent a file.\";\n case \"m.image\":\n return \"sent an image.\";\n case \"m.video\":\n return \"sent a video.\";\n case \"m.audio\":\n return \"sent an audio file.\";\n }\n return null;\n}\n\nfunction fallbackPrefix(msgtype) {\n return msgtype === \"m.emote\" ? \"* \" : \"\";\n}\n\nfunction _createReplyContent(targetId, msgtype, body, formattedBody) {\n return {\n msgtype,\n body,\n \"format\": \"org.matrix.custom.html\",\n \"formatted_body\": formattedBody,\n \"m.relates_to\": {\n \"m.in_reply_to\": {\n \"event_id\": targetId\n }\n }\n };\n}\n\nexport function createReplyContent(entry, msgtype, body) {\n // TODO check for absense of sender / body / msgtype / etc?\n const nonTextual = fallbackForNonTextualMessage(entry.content.msgtype);\n const prefix = fallbackPrefix(entry.content.msgtype);\n const sender = entry.sender;\n const name = entry.displayName || sender;\n\n const formattedBody = nonTextual || entry.content.formatted_body ||\n (entry.content.body && htmlEscape(entry.content.body)) || \"\";\n const formattedFallback = `

    In reply to ${prefix}` +\n `${name}
    ` +\n `${formattedBody}
    `;\n\n const plainBody = nonTextual || entry.content.body || \"\";\n const bodyLines = plainBody.split(\"\\n\");\n bodyLines[0] = `> ${prefix}<${sender}> ${bodyLines[0]}`\n const plainFallback = bodyLines.join(\"\\n> \");\n\n const newBody = plainFallback + '\\n\\n' + body;\n const newFormattedBody = formattedFallback + htmlEscape(body);\n return _createReplyContent(entry.id, msgtype, newBody, newFormattedBody);\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {BaseEntry} from \"./BaseEntry\";\nimport {REDACTION_TYPE} from \"../../common\";\nimport {createAnnotation, ANNOTATION_RELATION_TYPE, getRelationFromContent, REFERENCE_RELATION_TYPE} from \"../relations.js\";\nimport {PendingAnnotation} from \"../PendingAnnotation.js\";\nimport {createReplyContent} from \"./reply.js\"\n\n/** Deals mainly with local echo for relations and redactions,\n * so it is shared between PendingEventEntry and EventEntry */\nexport class BaseEventEntry extends BaseEntry {\n constructor(fragmentIdComparer) {\n super(fragmentIdComparer);\n this._pendingRedactions = null;\n this._pendingAnnotations = null;\n this._contextEntry = null;\n this._contextForEntries = null;\n }\n\n get isReply() {\n return !!this.relation?.[\"m.in_reply_to\"];\n }\n\n get isReference() {\n return this.relation?.rel_type === REFERENCE_RELATION_TYPE;\n }\n\n get isRedacting() {\n return !!this._pendingRedactions;\n }\n\n get isRedacted() {\n return this.isRedacting;\n }\n\n get isRedaction() {\n return this.eventType === REDACTION_TYPE;\n }\n\n get redactionReason() {\n if (this._pendingRedactions) {\n return this._pendingRedactions[0].content?.reason;\n }\n return null;\n }\n\n setContextEntry(entry) {\n this._contextEntry = entry;\n entry._setAsContextOf(this);\n }\n\n _setAsContextOf(entry) {\n if (!this._contextForEntries) {\n this._contextForEntries = [];\n }\n this._contextForEntries.push(entry);\n }\n\n get contextForEntries() {\n return this._contextForEntries;\n }\n\n get contextEntry() {\n return this._contextEntry;\n }\n\n /**\n Aggregates relation or redaction of remote relation. \n Used in two situations:\n - to aggregate local relation/redaction of remote relation\n - to mark this entry as being redacted in Timeline._updateEntriesFetchedFromHomeserver\n @return [string] returns the name of the field that has changed, if any\n */\n addLocalRelation(entry) {\n if (entry.eventType === REDACTION_TYPE && entry.isRelatedToId(this.id)) {\n if (!this._pendingRedactions) {\n this._pendingRedactions = [];\n }\n this._pendingRedactions.push(entry);\n if (this._pendingRedactions.length === 1) {\n return \"isRedacted\";\n }\n } else {\n const relationEntry = entry.redactingEntry || entry;\n if (relationEntry.isRelatedToId(this.id)) {\n if (relationEntry.relation.rel_type === ANNOTATION_RELATION_TYPE) {\n if (this._addPendingAnnotation(entry)) {\n return \"pendingAnnotations\";\n }\n }\n }\n }\n }\n \n /**\n deaggregates local relation or a local redaction of a remote relation.\n @return [string] returns the name of the field that has changed, if any\n */\n removeLocalRelation(entry) {\n if (entry.eventType === REDACTION_TYPE && entry.isRelatedToId(this.id) && this._pendingRedactions) {\n const countBefore = this._pendingRedactions.length;\n this._pendingRedactions = this._pendingRedactions.filter(e => e !== entry);\n if (this._pendingRedactions.length === 0) {\n this._pendingRedactions = null;\n if (countBefore !== 0) {\n return \"isRedacted\";\n }\n }\n } else {\n const relationEntry = entry.redactingEntry || entry;\n if (relationEntry.isRelatedToId(this.id)) {\n if (relationEntry.relation?.rel_type === ANNOTATION_RELATION_TYPE && this._pendingAnnotations) {\n if (this._removePendingAnnotation(entry)) {\n return \"pendingAnnotations\";\n }\n }\n }\n }\n }\n\n _addPendingAnnotation(entry) {\n if (!this._pendingAnnotations) {\n this._pendingAnnotations = new Map();\n }\n const {key} = (entry.redactingEntry || entry).relation;\n if (key) {\n let annotation = this._pendingAnnotations.get(key);\n if (!annotation) {\n annotation = new PendingAnnotation();\n this._pendingAnnotations.set(key, annotation);\n }\n annotation.add(entry);\n return true;\n }\n return false;\n }\n\n _removePendingAnnotation(entry) {\n const {key} = (entry.redactingEntry || entry).relation;\n if (key) {\n let annotation = this._pendingAnnotations.get(key);\n if (annotation.remove(entry) && annotation.isEmpty) {\n this._pendingAnnotations.delete(key);\n }\n if (this._pendingAnnotations.size === 0) {\n this._pendingAnnotations = null;\n }\n return true;\n }\n return false;\n }\n\n async abortPendingRedaction() {\n if (this._pendingRedactions) {\n for (const pee of this._pendingRedactions) {\n await pee.pendingEvent.abort();\n }\n // removing the pending events will call removeLocalRelation,\n // so don't clear _pendingRedactions here\n }\n }\n\n get pendingRedaction() {\n if (this._pendingRedactions) {\n return this._pendingRedactions[0];\n }\n return null;\n }\n\n annotate(key) {\n return createAnnotation(this.id, key);\n }\n\n createReplyContent(msgtype, body) {\n return createReplyContent(this, msgtype, body);\n }\n\n /** takes both remote event id and local txn id into account, see overriding in PendingEventEntry */\n isRelatedToId(id) {\n return id && this.relatedEventId === id;\n }\n\n haveAnnotation(key) {\n const haveRemoteReaction = this.annotations?.[key]?.me || false;\n const pendingAnnotation = this.pendingAnnotations?.get(key);\n const willAnnotate = pendingAnnotation?.willAnnotate || false;\n /*\n We have an annotation in these case:\n - remote annotation with me, no pending\n - remote annotation with me, pending redaction and then annotation\n - pending annotation without redaction after it\n */\n return (haveRemoteReaction && (!pendingAnnotation || willAnnotate)) ||\n (!haveRemoteReaction && willAnnotate);\n }\n\n get relation() {\n return getRelationFromContent(this.content);\n }\n\n get pendingAnnotations() {\n return this._pendingAnnotations;\n }\n\n get annotations() {\n return null; //overwritten in EventEntry\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {PENDING_FRAGMENT_ID} from \"./BaseEntry\";\nimport {BaseEventEntry} from \"./BaseEventEntry.js\";\n\nexport class PendingEventEntry extends BaseEventEntry {\n constructor({pendingEvent, member, clock, redactingEntry}) {\n super(null);\n this._pendingEvent = pendingEvent;\n /** @type {RoomMember} */\n this._member = member;\n // try to come up with a timestamp that is around construction time and\n // will be roughly sorted by queueIndex, so it can be used to as a secondary\n // sorting dimension for reactions\n this._timestamp = clock.now() - (100 - pendingEvent.queueIndex);\n this._redactingEntry = redactingEntry;\n }\n\n get fragmentId() {\n return PENDING_FRAGMENT_ID;\n }\n\n get entryIndex() {\n return this._pendingEvent.queueIndex;\n }\n\n get content() {\n return this._pendingEvent.content;\n }\n\n get event() {\n return null;\n }\n\n get eventType() {\n return this._pendingEvent.eventType;\n }\n\n get stateKey() {\n return null;\n }\n\n get sender() {\n return this._member?.userId;\n }\n\n get displayName() {\n return this._member?.name;\n }\n\n get avatarUrl() {\n return this._member?.avatarUrl;\n }\n\n get timestamp() {\n return this._timestamp;\n }\n\n get isPending() {\n return true;\n }\n\n get id() {\n return this._pendingEvent.txnId;\n }\n\n get pendingEvent() {\n return this._pendingEvent;\n }\n\n notifyUpdate() {\n \n }\n\n isRelatedToId(id) {\n if (id && id === this._pendingEvent.relatedTxnId) {\n return true;\n }\n return super.isRelatedToId(id);\n }\n\n get relatedEventId() {\n return this._pendingEvent.relatedEventId;\n }\n\n get redactingEntry() {\n return this._redactingEntry;\n }\n\n get contextEventId() {\n if (this.isReply) {\n return this._pendingEvent.relatedEventId ?? this._pendingEvent.relatedTxnId;\n }\n return null;\n }\n}\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexport class Deferred {\n public readonly promise: Promise;\n public readonly resolve: (value: T) => void;\n public readonly reject: (err: Error) => void;\n private _value?: T;\n\n constructor() {\n let resolve;\n let reject;\n this.promise = new Promise((_resolve, _reject) => {\n resolve = _resolve;\n reject = _reject;\n })\n this.resolve = (value: T) => {\n this._value = value;\n resolve(value);\n };\n this.reject = reject;\n }\n\n get value(): T | undefined {\n return this._value;\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nimport {createEnum} from \"../../../utils/enum\";\nimport {AbortError} from \"../../../utils/error\";\nimport {Deferred} from \"../../../utils/Deferred\";\nimport {REDACTION_TYPE} from \"../common\";\nimport {getRelationFromContent, getRelationTarget, setRelationTarget} from \"../timeline/relations.js\";\n\nexport const SendStatus = createEnum(\n \"Waiting\",\n \"EncryptingAttachments\",\n \"UploadingAttachments\",\n \"Encrypting\",\n \"Sending\",\n \"Sent\",\n \"Error\",\n);\n\nconst unencryptedContentFields = [ \"m.relates_to\" ];\n\nexport class PendingEvent {\n constructor({data, remove, emitUpdate, attachments}) {\n this._data = data;\n this._attachments = attachments;\n this._emitUpdate = emitUpdate;\n this._removeFromQueueCallback = remove;\n this._aborted = false;\n this._status = SendStatus.Waiting;\n this._sendRequest = null;\n this._attachmentsTotalBytes = 0;\n this._deferred = new Deferred()\n if (this._attachments) {\n this._attachmentsTotalBytes = Object.values(this._attachments).reduce((t, a) => t + a.size, 0);\n }\n }\n\n get roomId() { return this._data.roomId; }\n get queueIndex() { return this._data.queueIndex; }\n get eventType() { return this._data.eventType; }\n get txnId() { return this._data.txnId; }\n get remoteId() { return this._data.remoteId; }\n get content() { return this._data.content; }\n get relatedTxnId() { return this._data.relatedTxnId; }\n get relatedEventId() {\n const relation = getRelationFromContent(this.content);\n if (relation) {\n // may be null when target is not sent yet, is intended\n return getRelationTarget(relation);\n } else {\n return this._data.relatedEventId;\n }\n }\n\n setRelatedEventId(eventId) {\n const relation = getRelationFromContent(this.content);\n if (relation) {\n setRelationTarget(relation, eventId);\n } else {\n this._data.relatedEventId = eventId;\n }\n }\n\n get data() { return this._data; }\n\n getAttachment(key) {\n return this._attachments && this._attachments[key];\n }\n\n get needsSending() {\n return !this.remoteId && !this.aborted;\n }\n\n get needsEncryption() {\n return this._data.needsEncryption && !this.aborted;\n }\n\n get needsUpload() {\n return this._data.needsUpload && !this.aborted;\n }\n\n get isMissingAttachments() {\n return this.needsUpload && !this._attachments;\n }\n\n setEncrypting() {\n this._status = SendStatus.Encrypting;\n this._emitUpdate(\"status\");\n }\n\n get contentForEncryption() {\n const content = Object.assign({}, this._data.content);\n for (const field of unencryptedContentFields) {\n delete content[field];\n }\n return content;\n }\n\n _preserveContentFields(into) {\n const content = this._data.content;\n for (const field of unencryptedContentFields) {\n if (content[field] !== undefined) {\n into[field] = content[field];\n }\n }\n }\n\n setEncrypted(type, content) {\n this._preserveContentFields(content);\n this._data.encryptedEventType = type;\n this._data.encryptedContent = content;\n this._data.needsEncryption = false;\n }\n\n setError(error) {\n this._status = SendStatus.Error;\n this._error = error;\n this._emitUpdate(\"status\");\n }\n\n setWaiting() {\n this._status = SendStatus.Waiting;\n this._emitUpdate(\"status\");\n }\n\n get status() { return this._status; }\n get error() { return this._error; }\n\n get hasStartedSending() {\n return this._status === SendStatus.Sending || this._status === SendStatus.Sent;\n }\n\n get attachmentsTotalBytes() {\n return this._attachmentsTotalBytes;\n }\n\n get attachmentsSentBytes() {\n return this._attachments && Object.values(this._attachments).reduce((t, a) => t + a.sentBytes, 0);\n }\n\n async uploadAttachments(hsApi, log) {\n if (!this.needsUpload) {\n return;\n }\n if (!this._attachments) {\n throw new Error(\"attachments missing\");\n }\n if (this.needsEncryption) {\n this._status = SendStatus.EncryptingAttachments;\n this._emitUpdate(\"status\");\n for (const attachment of Object.values(this._attachments)) {\n await log.wrap(\"encrypt\", () => {\n log.set(\"size\", attachment.size);\n return attachment.encrypt();\n });\n if (this.aborted) {\n throw new AbortError();\n }\n }\n }\n this._status = SendStatus.UploadingAttachments;\n this._emitUpdate(\"status\");\n const entries = Object.entries(this._attachments);\n // upload smallest attachments first\n entries.sort(([, a1], [, a2]) => a1.size - a2.size);\n for (const [urlPath, attachment] of entries) {\n await log.wrap(\"upload\", log => {\n log.set(\"size\", attachment.size);\n return attachment.upload(hsApi, () => {\n this._emitUpdate(\"attachmentsSentBytes\");\n }, log);\n });\n attachment.applyToContent(urlPath, this.content);\n }\n this._data.needsUpload = false;\n }\n\n async abort() {\n if (!this._aborted) {\n this._aborted = true;\n if (this._attachments) {\n for (const attachment of Object.values(this._attachments)) {\n attachment.abort();\n }\n }\n this._sendRequest?.abort();\n await this._removeFromQueueCallback();\n }\n }\n\n get aborted() {\n return this._aborted;\n }\n\n async send(hsApi, log) {\n this._status = SendStatus.Sending;\n this._emitUpdate(\"status\");\n const eventType = this._data.encryptedEventType || this._data.eventType;\n const content = this._data.encryptedContent || this._data.content;\n if (eventType === REDACTION_TYPE) {\n this._sendRequest = hsApi.redact(\n this.roomId,\n this._data.relatedEventId,\n this.txnId,\n content,\n {log}\n );\n } else {\n this._sendRequest = hsApi.send(\n this.roomId,\n eventType,\n this.txnId,\n content,\n {log}\n );\n }\n const response = await this._sendRequest.response();\n this._sendRequest = null;\n // both /send and /redact have the same response format\n this._data.remoteId = response.event_id;\n this._deferred.resolve(response.event_id);\n log.set(\"id\", this._data.remoteId);\n this._status = SendStatus.Sent;\n this._emitUpdate(\"status\");\n }\n\n getRemoteId() {\n return this._deferred.promise;\n }\n\n dispose() {\n if (this._attachments) {\n for (const attachment of Object.values(this._attachments)) {\n attachment.dispose();\n }\n }\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {BaseEventEntry} from \"./BaseEventEntry.js\";\nimport {getPrevContentFromStateEvent, isRedacted} from \"../../common\";\nimport {getRelationFromContent, getRelatedEventId} from \"../relations.js\";\n\nexport class EventEntry extends BaseEventEntry {\n constructor(eventEntry, fragmentIdComparer) {\n super(fragmentIdComparer);\n this._eventEntry = eventEntry;\n this._decryptionError = null;\n this._decryptionResult = null;\n }\n\n clone() {\n const clone = new EventEntry(this._eventEntry, this._fragmentIdComparer);\n clone.updateFrom(this);\n return clone;\n }\n\n updateFrom(other) {\n // only update these when we attempted decryption, as some updates (like reactions) don't.\n if (other._decryptionResult) {\n this._decryptionResult = other._decryptionResult;\n }\n if (other._decryptionError) {\n this._decryptionError = other._decryptionError;\n }\n this._contextForEntries = other.contextForEntries;\n this._contextEntry = other.contextEntry;\n }\n\n get event() {\n return this._eventEntry.event;\n }\n\n get fragmentId() {\n return this._eventEntry.fragmentId;\n }\n\n get entryIndex() {\n return this._eventEntry.eventIndex;\n }\n\n get content() {\n return this._decryptionResult?.event?.content || this._eventEntry.event.content;\n }\n\n get prevContent() {\n // doesn't look at _decryptionResult because state events are not encrypted\n return getPrevContentFromStateEvent(this._eventEntry.event);\n }\n\n get eventType() {\n return this._decryptionResult?.event?.type || this._eventEntry.event.type;\n }\n\n get stateKey() {\n return this._eventEntry.event.state_key;\n }\n\n get sender() {\n return this._eventEntry.event.sender;\n }\n\n get displayName() {\n return this._eventEntry.displayName;\n }\n\n get avatarUrl() {\n return this._eventEntry.avatarUrl;\n }\n\n get timestamp() {\n return this._eventEntry.event.origin_server_ts;\n }\n\n get id() {\n return this._eventEntry.event.event_id;\n }\n\n setDecryptionResult(result) {\n this._decryptionResult = result;\n }\n\n get isEncrypted() {\n return this._eventEntry.event.type === \"m.room.encrypted\";\n }\n\n get isDecrypted() {\n return !!this._decryptionResult?.event;\n }\n\n get isVerified() {\n return this.isEncrypted && this._decryptionResult?.isVerified;\n }\n\n get isUnverified() {\n return this.isEncrypted && this._decryptionResult?.isUnverified;\n }\n\n setDecryptionError(err) {\n this._decryptionError = err;\n }\n\n get decryptionError() {\n return this._decryptionError;\n }\n\n get relatedEventId() {\n return getRelatedEventId(this.event);\n }\n\n get isRedacted() {\n return super.isRedacted || isRedacted(this._eventEntry.event);\n }\n\n get redactionReason() {\n const redactionEvent = this._eventEntry.event.unsigned?.redacted_because;\n if (redactionEvent) {\n return redactionEvent.content?.reason;\n }\n // fall back to local echo reason\n return super.redactionReason;\n }\n\n get annotations() {\n return this._eventEntry.annotations;\n }\n\n get relation() {\n const originalContent = this._eventEntry.event.content;\n const originalRelation = originalContent && getRelationFromContent(originalContent);\n return originalRelation || getRelationFromContent(this.content);\n }\n\n // similar to relatedEventID but only for replies and reference relations\n get contextEventId() {\n if (this.isReply || this.isReference) {\n return this.relatedEventId;\n }\n return null;\n }\n\n}\n\nimport {withTextBody, withContent, createEvent} from \"../../../../mocks/event.js\";\nimport {Clock as MockClock} from \"../../../../mocks/Clock.js\";\nimport {PendingEventEntry} from \"./PendingEventEntry.js\";\nimport {PendingEvent} from \"../../sending/PendingEvent.js\";\nimport {createAnnotation} from \"../relations.js\";\n\nexport function tests() {\n let queueIndex = 0;\n const clock = new MockClock();\n\n function addPendingReaction(target, key) {\n queueIndex += 1;\n target.addLocalRelation(new PendingEventEntry({\n pendingEvent: new PendingEvent({data: {\n eventType: \"m.reaction\",\n content: createAnnotation(target.id, key),\n queueIndex,\n txnId: `t${queueIndex}`\n }}),\n clock\n }));\n return target;\n }\n\n function addPendingRedaction(target, key) {\n const pendingReaction = target.pendingAnnotations?.get(key)?.annotationEntry;\n let redactingEntry = pendingReaction;\n // make up a remote entry if we don't have a pending reaction and have an aggregated remote entry\n if (!pendingReaction && target.annotations[key].me) {\n redactingEntry = new EventEntry({\n event: withContent(createAnnotation(target.id, key), createEvent(\"m.reaction\", \"!def\"))\n });\n }\n queueIndex += 1;\n target.addLocalRelation(new PendingEventEntry({\n pendingEvent: new PendingEvent({data: {\n eventType: \"m.room.redaction\",\n relatedTxnId: pendingReaction ? pendingReaction.id : null,\n relatedEventId: pendingReaction ? null : redactingEntry.id,\n queueIndex,\n txnId: `t${queueIndex}`\n }}),\n redactingEntry,\n clock\n }));\n return target;\n }\n\n function remoteAnnotation(key, me, count, obj = {}) {\n obj[key] = {me, count};\n return obj;\n }\n\n return {\n // testing it here because parent class always assumes annotations is null\n \"haveAnnotation\": assert => {\n const msgEvent = withTextBody(\"hi!\", createEvent(\"m.room.message\", \"!abc\"));\n const e1 = new EventEntry({event: msgEvent});\n assert.equal(false, e1.haveAnnotation(\"🚀\"));\n const e2 = new EventEntry({event: msgEvent, annotations: remoteAnnotation(\"🚀\", false, 1)});\n assert.equal(false, e2.haveAnnotation(\"🚀\"));\n const e3 = new EventEntry({event: msgEvent, annotations: remoteAnnotation(\"🚀\", true, 1)});\n assert.equal(true, e3.haveAnnotation(\"🚀\"));\n const e4 = new EventEntry({event: msgEvent, annotations: remoteAnnotation(\"🚀\", true, 2)});\n assert.equal(true, e4.haveAnnotation(\"🚀\"));\n const e5 = addPendingReaction(new EventEntry({event: msgEvent}), \"🚀\");\n assert.equal(true, e5.haveAnnotation(\"🚀\"));\n const e6 = addPendingRedaction(new EventEntry({event: msgEvent, annotations: remoteAnnotation(\"🚀\", true, 1)}), \"🚀\");\n assert.equal(false, e6.haveAnnotation(\"🚀\"));\n const e7 = addPendingReaction(\n addPendingRedaction(\n new EventEntry({event: msgEvent, annotations: remoteAnnotation(\"🚀\", true, 1)}),\n \"🚀\"),\n \"🚀\");\n assert.equal(true, e7.haveAnnotation(\"🚀\"));\n const e8 = addPendingRedaction(\n addPendingReaction(\n new EventEntry({event: msgEvent}),\n \"🚀\"),\n \"🚀\");\n assert.equal(false, e8.haveAnnotation(\"🚀\"));\n }\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexport function createEventEntry(key, roomId, event) {\n return {\n fragmentId: key.fragmentId,\n eventIndex: key.eventIndex,\n roomId,\n event: event,\n };\n}\n\nexport function directionalAppend(array, value, direction) {\n if (direction.isForward) {\n array.push(value);\n } else {\n array.unshift(value);\n }\n}\n\nexport function directionalConcat(array, otherArray, direction) {\n if (direction.isForward) {\n return array.concat(otherArray);\n } else {\n return otherArray.concat(array);\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {getPrevContentFromStateEvent} from \"../common\";\n\nexport const EVENT_TYPE = \"m.room.member\";\n\nexport class RoomMember {\n constructor(data) {\n this._data = data;\n }\n\n static fromUserId(roomId, userId, membership) {\n return new RoomMember({roomId, userId, membership});\n }\n\n static fromMemberEvent(roomId, memberEvent) {\n const userId = memberEvent?.state_key;\n if (typeof userId !== \"string\") {\n return;\n }\n const content = memberEvent.content;\n const prevContent = getPrevContentFromStateEvent(memberEvent);\n const membership = content?.membership;\n // fall back to prev_content for these as synapse doesn't (always?)\n // put them on content for \"leave\" memberships\n const displayName = content?.displayname || prevContent?.displayname;\n const avatarUrl = content?.avatar_url || prevContent?.avatar_url;\n return this._validateAndCreateMember(roomId, userId, membership, displayName, avatarUrl);\n }\n /**\n * Creates a (historical) member from a member event that is the next member event\n * after the point in time where we need a member for. This will use `prev_content`.\n */\n static fromReplacingMemberEvent(roomId, memberEvent) {\n const userId = memberEvent && memberEvent.state_key;\n if (typeof userId !== \"string\") {\n return;\n }\n const content = getPrevContentFromStateEvent(memberEvent);\n return this._validateAndCreateMember(roomId, userId,\n content?.membership,\n content?.displayname,\n content?.avatar_url\n );\n }\n\n static _validateAndCreateMember(roomId, userId, membership, displayName, avatarUrl) {\n if (typeof membership !== \"string\") {\n return;\n }\n return new RoomMember({\n roomId,\n userId,\n membership,\n avatarUrl,\n displayName,\n });\n }\n\n get membership() {\n return this._data.membership;\n }\n\n /**\n * @return {String?} the display name, if any\n */\n get displayName() {\n return this._data.displayName;\n }\n\n /**\n * @return {String} the display name or userId\n */\n get name() {\n return this._data.displayName || this._data.userId;\n }\n\n /**\n * @return {String?} the avatar mxc url, if any\n */\n get avatarUrl() {\n return this._data.avatarUrl;\n }\n\n get roomId() {\n return this._data.roomId;\n }\n\n get userId() {\n return this._data.userId;\n }\n\n serialize() {\n return this._data;\n }\n\n equals(other) {\n const data = this._data;\n const otherData = other._data;\n return data.roomId === otherData.roomId &&\n data.userId === otherData.userId &&\n data.membership === otherData.membership &&\n data.displayName === otherData.displayName &&\n data.avatarUrl === otherData.avatarUrl;\n }\n}\n\nexport class MemberChange {\n constructor(member, previousMembership) {\n this.member = member;\n this.previousMembership = previousMembership;\n }\n\n get roomId() {\n return this.member.roomId;\n }\n\n get userId() {\n return this.member.userId;\n }\n\n get membership() {\n return this.member.membership;\n }\n\n get wasInvited() {\n return this.previousMembership === \"invite\" && this.membership !== \"invite\";\n }\n\n get hasLeft() {\n return this.previousMembership === \"join\" && this.membership !== \"join\";\n }\n\n /** The result can be a false negative when all of these apply:\n * - the complete set of room members hasn't been fetched yet.\n * - the member event for this change was received in the\n * state section and wasn't present in the timeline section.\n * - the room response was limited, e.g. there was a gap.\n * \n * This is because during sync, in this case it is not possible\n * to distinguish between a new member that joined the room\n * during a gap and a lazy-loading member.\n * */\n get hasJoined() {\n return this.previousMembership !== \"join\" && this.membership === \"join\";\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexport function isValidFragmentId(id) {\n return typeof id === \"number\";\n}\n\n// copied over from matrix-js-sdk, copyright 2016 OpenMarket Ltd\n/* _REDACT_KEEP_KEY_MAP gives the keys we keep when an event is redacted\n *\n * This is specified here:\n * http://matrix.org/speculator/spec/HEAD/client_server/latest.html#redactions\n *\n * Also:\n * - We keep 'unsigned' since that is created by the local server\n * - We keep user_id for backwards-compat with v1\n */\nconst _REDACT_KEEP_KEY_MAP = [\n 'event_id', 'type', 'room_id', 'user_id', 'sender', 'state_key', 'prev_state',\n 'content', 'unsigned', 'origin_server_ts',\n].reduce(function(ret, val) {\n ret[val] = 1; return ret;\n}, {});\n\n// a map from event type to the .content keys we keep when an event is redacted\nconst _REDACT_KEEP_CONTENT_MAP = {\n 'm.room.member': {'membership': 1},\n 'm.room.create': {'creator': 1},\n 'm.room.join_rules': {'join_rule': 1},\n 'm.room.power_levels': {'ban': 1, 'events': 1, 'events_default': 1,\n 'kick': 1, 'redact': 1, 'state_default': 1,\n 'users': 1, 'users_default': 1,\n },\n 'm.room.aliases': {'aliases': 1},\n};\n// end of matrix-js-sdk code\n\nexport function redactEvent(redactionEvent, redactedEvent) {\n for (const key of Object.keys(redactedEvent)) {\n if (!_REDACT_KEEP_KEY_MAP[key]) {\n delete redactedEvent[key];\n }\n }\n const { content } = redactedEvent;\n const keepMap = _REDACT_KEEP_CONTENT_MAP[redactedEvent.type];\n for (const key of Object.keys(content)) {\n if (!keepMap?.[key]) {\n delete content[key];\n }\n }\n redactedEvent.unsigned = redactedEvent.unsigned || {};\n redactedEvent.unsigned.redacted_because = redactionEvent;\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/*\nlookups will be far more frequent than changing fragment order,\nso data structure should be optimized for fast lookup\n\nwe can have a Map: fragmentId to sortIndex\n\nchanging the order, we would need to rebuild the index\nlets do this the stupid way for now, changing any fragment rebuilds all islands\n\nto build this:\nfirst load all fragments\nput them in a map by id\nnow iterate through them\n\nuntil no more fragments\n get the first\n create an island array, and add to list with islands\n going backwards and forwards\n get and remove sibling and prepend/append it to island array\n stop when no more previous/next\n return list with islands\n\n*/\n\nimport {isValidFragmentId} from \"./common.js\";\n\nfunction findBackwardSiblingFragments(current, byId) {\n const sortedSiblings = [];\n while (isValidFragmentId(current.previousId)) {\n const previous = byId.get(current.previousId);\n if (!previous) {\n break;\n }\n if (previous.nextId !== current.id) {\n throw new Error(`Previous fragment ${previous.id} doesn't point back to ${current.id}`);\n }\n byId.delete(current.previousId);\n sortedSiblings.unshift(previous);\n current = previous;\n }\n return sortedSiblings;\n}\n\nfunction findForwardSiblingFragments(current, byId) {\n const sortedSiblings = [];\n while (isValidFragmentId(current.nextId)) {\n const next = byId.get(current.nextId);\n if (!next) {\n break;\n }\n if (next.previousId !== current.id) {\n throw new Error(`Next fragment ${next.id} doesn't point back to ${current.id}`);\n }\n byId.delete(current.nextId);\n sortedSiblings.push(next);\n current = next;\n }\n return sortedSiblings;\n}\n\n\nfunction createIslands(fragments) {\n const byId = new Map();\n for(let f of fragments) {\n byId.set(f.id, f);\n }\n\n const islands = [];\n while(byId.size) {\n const current = byId.values().next().value;\n byId.delete(current.id);\n // new island\n const previousSiblings = findBackwardSiblingFragments(current, byId);\n const nextSiblings = findForwardSiblingFragments(current, byId);\n const island = previousSiblings.concat(current, nextSiblings);\n islands.push(island);\n }\n return islands.map(a => new Island(a));\n}\n\nclass Fragment {\n constructor(id, previousId, nextId) {\n this.id = id;\n this.previousId = previousId;\n this.nextId = nextId;\n }\n}\n\nclass Island {\n constructor(sortedFragments) {\n this._idToSortIndex = new Map();\n sortedFragments.forEach((f, i) => {\n this._idToSortIndex.set(f.id, i);\n });\n }\n\n compare(idA, idB) {\n const sortIndexA = this._idToSortIndex.get(idA);\n if (sortIndexA === undefined) {\n throw new Error(`first id ${idA} isn't part of this island`);\n }\n const sortIndexB = this._idToSortIndex.get(idB);\n if (sortIndexB === undefined) {\n throw new Error(`second id ${idB} isn't part of this island`);\n }\n return sortIndexA - sortIndexB;\n }\n\n get fragmentIds() {\n return this._idToSortIndex.keys();\n }\n}\n\nexport class CompareError extends Error {\n get name() { return \"CompareError\"; }\n}\n\n/*\nindex for fast lookup of how two fragments can be sorted\n*/\nexport class FragmentIdComparer {\n constructor(fragments) {\n this._fragmentsById = fragments.reduce((map, f) => {map.set(f.id, f); return map;}, new Map());\n this.rebuild(fragments);\n }\n\n _getIsland(id) {\n const island = this._idToIsland.get(id);\n if (island === undefined) {\n throw new CompareError(`Unknown fragment id ${id}`);\n }\n return island;\n }\n\n compare(idA, idB) {\n if (idA === idB) {\n return 0;\n }\n const islandA = this._getIsland(idA);\n const islandB = this._getIsland(idB);\n if (islandA !== islandB) {\n throw new CompareError(`${idA} and ${idB} are on different islands, can't tell order`);\n }\n return islandA.compare(idA, idB);\n }\n\n rebuild(fragments) {\n const islands = createIslands(fragments);\n this._idToIsland = new Map();\n for(let island of islands) {\n for(let id of island.fragmentIds) {\n this._idToIsland.set(id, island);\n }\n }\n }\n\n /** use for fragments coming out of persistence, not newly created ones, or also fragments for a new island (like for a permalink) */\n add(fragment) {\n const copy = new Fragment(fragment.id, fragment.previousId, fragment.nextId);\n this._fragmentsById.set(fragment.id, copy);\n this.rebuild(this._fragmentsById.values());\n }\n\n /** use for appending newly created fragments */\n append(id, previousId) {\n const fragment = new Fragment(id, previousId, null);\n const prevFragment = this._fragmentsById.get(previousId);\n if (prevFragment) {\n prevFragment.nextId = id;\n }\n this._fragmentsById.set(id, fragment);\n this.rebuild(this._fragmentsById.values());\n }\n\n /** use for prepending newly created fragments */\n prepend(id, nextId) {\n const fragment = new Fragment(id, null, nextId);\n const nextFragment = this._fragmentsById.get(nextId);\n if (nextFragment) {\n nextFragment.previousId = id;\n }\n this._fragmentsById.set(id, fragment);\n this.rebuild(this._fragmentsById.values());\n }\n}\n\nexport function tests() {\n return {\n test_1_island_3_fragments(assert) {\n const index = new FragmentIdComparer([\n {id: 3, previousId: 2},\n {id: 1, nextId: 2},\n {id: 2, nextId: 3, previousId: 1},\n ]);\n assert(index.compare(1, 2) < 0);\n assert(index.compare(2, 1) > 0);\n\n assert(index.compare(1, 3) < 0);\n assert(index.compare(3, 1) > 0);\n \n assert(index.compare(2, 3) < 0);\n assert(index.compare(3, 2) > 0);\n \n assert.equal(index.compare(1, 1), 0);\n },\n test_falsy_id(assert) {\n const index = new FragmentIdComparer([\n {id: 0, nextId: 1},\n {id: 1, previousId: 0},\n ]);\n assert(index.compare(0, 1) < 0);\n assert(index.compare(1, 0) > 0);\n },\n test_falsy_id_reverse(assert) {\n const index = new FragmentIdComparer([\n {id: 1, previousId: 0},\n {id: 0, nextId: 1},\n ]);\n assert(index.compare(0, 1) < 0);\n assert(index.compare(1, 0) > 0);\n },\n test_allow_unknown_id(assert) {\n // as we tend to load fragments incrementally\n // as events come into view, we need to allow\n // unknown previousId/nextId in the fragments that we do load\n assert.doesNotThrow(() => {\n new FragmentIdComparer([\n {id: 1, previousId: 2},\n {id: 0, nextId: 3},\n ]);\n });\n },\n test_throw_on_link_mismatch(assert) {\n // as we tend to load fragments incrementally\n // as events come into view, we need to allow\n // unknown previousId/nextId in the fragments that we do load\n assert.throws(() => {\n new FragmentIdComparer([\n {id: 1, previousId: 0},\n {id: 0, nextId: 2},\n ]);\n });\n },\n test_2_island_dont_compare(assert) {\n const index = new FragmentIdComparer([\n {id: 1},\n {id: 2},\n ]);\n assert.throws(() => index.compare(1, 2));\n assert.throws(() => index.compare(2, 1));\n },\n test_2_island_compare_internally(assert) {\n const index = new FragmentIdComparer([\n {id: 1, nextId: 2},\n {id: 2, previousId: 1},\n {id: 11, nextId: 12},\n {id: 12, previousId: 11},\n \n ]);\n\n assert(index.compare(1, 2) < 0);\n assert(index.compare(11, 12) < 0);\n \n assert.throws(() => index.compare(1, 11));\n assert.throws(() => index.compare(12, 2));\n },\n test_unknown_id(assert) {\n const index = new FragmentIdComparer([{id: 1}]);\n assert.throws(() => index.compare(1, 2));\n assert.throws(() => index.compare(2, 1));\n },\n test_rebuild_flushes_old_state(assert) {\n const index = new FragmentIdComparer([\n {id: 1, nextId: 2},\n {id: 2, previousId: 1},\n ]);\n index.rebuild([\n {id: 11, nextId: 12},\n {id: 12, previousId: 11},\n ]);\n \n assert.throws(() => index.compare(1, 2));\n assert(index.compare(11, 12) < 0);\n },\n test_append(assert) {\n const index = new FragmentIdComparer([]);\n // add livefragment when opening timeline,\n // note that there is no nextId as the sync\n // hasn't come in yet\n index.add({id: 1});\n // now sync comes in and replaces the live fragment\n index.append(2, 1);\n assert(index.compare(1, 2) < 0);\n },\n test_prepend(assert) {\n const index = new FragmentIdComparer([]);\n index.add({id: 2});\n index.prepend(1, 2);\n assert(index.compare(1, 2) < 0);\n }\n }\n}\n","const scriptRel = (function detectScriptRel() {\n // @ts-ignore\n const relList = document.createElement('link').relList;\n // @ts-ignore\n return relList && relList.supports && relList.supports('modulepreload')\n ? 'modulepreload'\n : 'preload';\n})();const seen = {};const base = './';export const __vitePreload = function preload(baseModule, deps) {\n // @ts-ignore\n if (!__VITE_IS_MODERN__ || !deps || deps.length === 0) {\n return baseModule();\n }\n return Promise.all(deps.map((dep) => {\n // @ts-ignore\n dep = `${base}${dep}`;\n // @ts-ignore\n if (dep in seen)\n return;\n // @ts-ignore\n seen[dep] = true;\n const isCss = dep.endsWith('.css');\n const cssSelector = isCss ? '[rel=\"stylesheet\"]' : '';\n // @ts-ignore check if the file is already preloaded by SSR markup\n if (document.querySelector(`link[href=\"${dep}\"]${cssSelector}`)) {\n return;\n }\n // @ts-ignore\n const link = document.createElement('link');\n // @ts-ignore\n link.rel = isCss ? 'stylesheet' : scriptRel;\n if (!isCss) {\n link.as = 'script';\n link.crossOrigin = '';\n }\n link.href = dep;\n // @ts-ignore\n document.head.appendChild(link);\n if (isCss) {\n return new Promise((res, rej) => {\n link.addEventListener('load', res);\n link.addEventListener('error', () => rej(new Error(`Unable to preload CSS for ${dep}`)));\n });\n }\n })).then(() => baseModule());\n}","/*\nCopyright 2020 Bruno Windels \nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { StorageError } from \"../common\";\n\nfunction _sourceName(source: IDBIndex | IDBObjectStore): string {\n return \"objectStore\" in source ?\n `${source.objectStore.name}.${source.name}` :\n source.name;\n}\n\nfunction _sourceDatabase(source: IDBIndex | IDBObjectStore): string {\n return \"objectStore\" in source ?\n source.objectStore?.transaction?.db?.name :\n source.transaction?.db?.name;\n}\n\nexport class IDBError extends StorageError {\n storeName: string;\n databaseName: string;\n\n constructor(message: string, sourceOrCursor: IDBIndex | IDBCursor | IDBObjectStore | null, cause: DOMException | null = null) {\n const source = (sourceOrCursor && \"source\" in sourceOrCursor) ? sourceOrCursor.source : sourceOrCursor;\n const storeName = source ? _sourceName(source) : \"\";\n const databaseName = source ? _sourceDatabase(source) : \"\";\n let fullMessage = `${message} on ${databaseName}.${storeName}`;\n if (cause) {\n fullMessage += \": \";\n if (typeof cause.name === \"string\") {\n fullMessage += `(name: ${cause.name}) `;\n }\n if (typeof cause.code === \"number\") {\n fullMessage += `(code: ${cause.code}) `;\n }\n }\n if (cause) {\n fullMessage += cause.message;\n }\n super(fullMessage, cause);\n this.storeName = storeName;\n this.databaseName = databaseName;\n }\n}\n\nexport class IDBRequestError extends IDBError {\n private errorEvent: Event;\n\n constructor(errorEvent: Event) {\n const request = errorEvent.target as IDBRequest;\n const source = request.source;\n const cause = request.error;\n super(\"IDBRequest failed\", source, cause);\n this.errorEvent = errorEvent;\n }\n\n preventTransactionAbort() {\n this.errorEvent.preventDefault();\n }\n}\n\nexport class IDBRequestAttemptError extends IDBError {\n constructor(method: string, source: IDBIndex | IDBObjectStore, cause: DOMException, params: any[]) {\n super(`${method}(${params.map(p => JSON.stringify(p)).join(\", \")}) failed`, source, cause);\n }\n}\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { IDBRequestError } from \"./error\";\nimport { StorageError } from \"../common\";\nimport { AbortError } from \"../../../utils/error\";\n\nlet needsSyncPromise = false;\n\nexport const DONE = { done: true }\nexport const NOT_DONE = { done: false }\n\n/* should be called on legacy platforms to see\n if transactions close before draining the microtask queue (IE11 on Windows 7).\n If this is the case, promises need to be resolved\n synchronously from the idb request handler to prevent the transaction from closing prematurely.\n*/\nexport async function checkNeedsSyncPromise(): Promise {\n // important to have it turned off while doing the test,\n // otherwise reqAsPromise would not fail\n needsSyncPromise = false;\n const NAME = \"test-idb-needs-sync-promise\";\n const db = await openDatabase(NAME, db => {\n db.createObjectStore(\"test\", {keyPath: \"key\"});\n }, 1);\n const txn = db.transaction(\"test\", \"readonly\");\n try {\n await reqAsPromise(txn.objectStore(\"test\").get(1));\n await reqAsPromise(txn.objectStore(\"test\").get(2));\n } catch (err) {\n // err.name would be either TransactionInactiveError or InvalidStateError,\n // but let's not exclude any other failure modes\n needsSyncPromise = true;\n }\n // we could delete the store here, \n // but let's not create it on every page load on legacy platforms,\n // and just keep it around\n return needsSyncPromise;\n}\n\n// storage keys are defined to be unsigned 32bit numbers in KeyLimits, which is assumed by idb\nexport function encodeUint32(n: number): string {\n const hex = n.toString(16);\n return \"0\".repeat(8 - hex.length) + hex;\n}\n\n// used for logs where timestamp is part of key, which is larger than 32 bit\nexport function encodeUint64(n: number): string {\n const hex = n.toString(16);\n return \"0\".repeat(16 - hex.length) + hex;\n}\n\nexport function decodeUint32(str: string): number {\n return parseInt(str, 16);\n}\n\nexport type CreateObjectStore = (db : IDBDatabase, txn: IDBTransaction | null, oldVersion: number, version: number) => any\n\nexport function openDatabase(name: string, createObjectStore: CreateObjectStore, version: number, idbFactory: IDBFactory = window.indexedDB): Promise {\n const req = idbFactory.open(name, version);\n req.onupgradeneeded = async (ev : IDBVersionChangeEvent) => {\n const req = ev.target as IDBRequest;\n const db = req.result;\n const txn = req.transaction!;\n const oldVersion = ev.oldVersion;\n try {\n await createObjectStore(db, txn, oldVersion, version);\n } catch (err) {\n // try aborting on error, if that hasn't been done already\n try {\n txn.abort();\n } catch (err) {\n // No-op: `InvalidStateError` is only thrown if the transaction has\n // already been committed or aborted. Since we wanted the txn to\n // be aborted anyway, it doesn't matter if this fails.\n }\n }\n }; \n return reqAsPromise(req);\n}\n\nexport function reqAsPromise(req: IDBRequest): Promise {\n return new Promise((resolve, reject) => {\n req.addEventListener(\"success\", event => {\n resolve((event.target as IDBRequest).result);\n // @ts-ignore\n needsSyncPromise && Promise._flush && Promise._flush();\n });\n req.addEventListener(\"error\", event => {\n const error = new IDBRequestError(event);\n reject(error);\n // @ts-ignore\n needsSyncPromise && Promise._flush && Promise._flush();\n });\n });\n}\n\nexport function txnAsPromise(txn): Promise {\n let error;\n return new Promise((resolve, reject) => {\n txn.addEventListener(\"complete\", () => {\n resolve();\n // @ts-ignore\n needsSyncPromise && Promise._flush && Promise._flush();\n });\n txn.addEventListener(\"abort\", event => {\n reject(new AbortError());\n // @ts-ignore\n needsSyncPromise && Promise._flush && Promise._flush();\n });\n });\n}\n\n/**\n * This type is rather complicated, but I hope that this is for a good reason. There\n * are currently two uses for `iterateCursor`: iterating a regular cursor, and iterating\n * a key-only cursor, which does not have values. These two uses are distinct, and iteration\n * never stops or starts having a value halfway through.\n *\n * Each of the argument functions currently either assumes the value will be there, or that it won't. We thus can't\n * just accept a function argument `(T | undefined) => { done: boolean }`, since this messes with\n * the type safety in both cases: the former case will have to check for `undefined`, and\n * the latter would have an argument that can be `T`, even though it never will.\n *\n * So the approach here is to let TypeScript infer and accept (via generics) the type of\n * the cursor, which is either `IDBCursorWithValue` or `IDBCursor`. Since the type is accepted\n * via generics, we can actually vary the types of the actual function arguments depending on it.\n * Thus, when a value is available (an `IDBCursorWithValue` is given), we require a function `(T) => ...`, and when it is not, we require\n * a function `(undefined) => ...`.\n */\ntype CursorIterator = (value: I extends IDBCursorWithValue ? T : undefined, key: IDBValidKey, cursor: I) => { done: boolean, jumpTo?: IDBValidKey }\n\nexport function iterateCursor(cursorRequest: IDBRequest, processValue: CursorIterator): Promise {\n // TODO: does cursor already have a value here??\n return new Promise((resolve, reject) => {\n cursorRequest.onerror = event => {\n reject(new IDBRequestError(event));\n // @ts-ignore\n needsSyncPromise && Promise._flush && Promise._flush();\n };\n // collect results\n cursorRequest.onsuccess = (event) => {\n const cursor = (event.target as IDBRequest).result;\n if (!cursor) {\n resolve(false);\n // @ts-ignore\n needsSyncPromise && Promise._flush && Promise._flush();\n return; // end of results\n }\n const result = processValue(cursor[\"value\"], cursor.key, cursor);\n // TODO: don't use object for result and assume it's jumpTo when not === true/false or undefined\n const done = result?.done;\n const jumpTo = result?.jumpTo;\n\n if (done) {\n resolve(true);\n // @ts-ignore\n needsSyncPromise && Promise._flush && Promise._flush();\n } else if(jumpTo) {\n cursor.continue(jumpTo);\n } else {\n cursor.continue();\n }\n };\n }).catch(err => {\n throw new StorageError(\"iterateCursor failed\", err);\n });\n}\n\ntype Pred = (value: T) => boolean\n\nexport async function fetchResults(cursor: IDBRequest, isDone: Pred): Promise {\n const results: T[] = [];\n await iterateCursor(cursor, (value) => {\n results.push(value);\n return {done: isDone(results)};\n });\n return results;\n}\n\ntype ToCursor = (store: IDBObjectStore) => IDBRequest\n\nexport async function select(db: IDBDatabase, storeName: string, toCursor: ToCursor, isDone: Pred): Promise {\n if (!isDone) {\n isDone = () => false;\n }\n if (!toCursor) {\n toCursor = store => store.openCursor();\n }\n const tx = db.transaction([storeName], \"readonly\");\n const store = tx.objectStore(storeName);\n const cursor = toCursor(store);\n return await fetchResults(cursor, isDone);\n}\n\nexport async function findStoreValue(db: IDBDatabase, storeName: string, toCursor: ToCursor, matchesValue: Pred): Promise {\n if (!matchesValue) {\n matchesValue = () => true;\n }\n if (!toCursor) {\n toCursor = store => store.openCursor();\n }\n\n const tx = db.transaction([storeName], \"readwrite\");\n const store = tx.objectStore(storeName);\n const cursor = await reqAsPromise(toCursor(store));\n let match;\n const matched = await iterateCursor(cursor, (value) => {\n if (matchesValue(value)) {\n match = value;\n return DONE;\n }\n return NOT_DONE;\n });\n if (!matched) {\n throw new StorageError(\"Value not found\");\n }\n return match;\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {iterateCursor, DONE, NOT_DONE, reqAsPromise} from \"./utils\";\nimport {StorageError} from \"../common\";\nimport {ILogItem} from \"../../../logging/types\";\nimport {IDBKey} from \"./Transaction\";\n\n// this is the part of the Transaction class API that is used here and in the Store subclass,\n// to make it easier to replace it with alternative implementations in schema.ts and unit tests\nexport interface ITransaction {\n idbFactory: IDBFactory;\n IDBKeyRange: typeof IDBKeyRange;\n databaseName: string;\n addWriteError(error: StorageError, refItem: ILogItem | undefined, operationName: string, keys: IDBKey[] | undefined);\n}\n\ntype Reducer = (acc: B, val: A) => B\n\nexport type IDBQuery = IDBValidKey | IDBKeyRange | undefined | null\n\ninterface QueryTargetInterface {\n openCursor(range?: IDBQuery, direction?: IDBCursorDirection | undefined): IDBRequest;\n openKeyCursor(range?: IDBQuery, direction?: IDBCursorDirection | undefined): IDBRequest;\n supports(method: string): boolean;\n keyPath: string | string[];\n count(keyRange?: IDBKeyRange): IDBRequest;\n get(key: IDBValidKey | IDBKeyRange): IDBRequest;\n getKey(key: IDBValidKey | IDBKeyRange): IDBRequest;\n}\n\nexport class QueryTarget {\n protected _target: QueryTargetInterface;\n protected _transaction: ITransaction;\n\n constructor(target: QueryTargetInterface, transaction: ITransaction) {\n this._target = target;\n this._transaction = transaction;\n }\n\n get idbFactory(): IDBFactory {\n return this._transaction.idbFactory;\n }\n\n get IDBKeyRange(): typeof IDBKeyRange {\n return this._transaction.IDBKeyRange;\n }\n\n get databaseName(): string {\n return this._transaction.databaseName;\n }\n\n _openCursor(range?: IDBQuery, direction?: IDBCursorDirection): IDBRequest {\n if (range && direction) {\n return this._target.openCursor(range, direction);\n } else if (range) {\n return this._target.openCursor(range);\n } else if (direction) {\n return this._target.openCursor(null, direction);\n } else {\n return this._target.openCursor();\n }\n }\n\n supports(methodName: string): boolean {\n return this._target.supports(methodName);\n }\n\n count(keyRange?: IDBKeyRange): Promise {\n return reqAsPromise(this._target.count(keyRange));\n }\n\n get(key: IDBValidKey | IDBKeyRange): Promise {\n return reqAsPromise(this._target.get(key));\n }\n\n getKey(key: IDBValidKey | IDBKeyRange): Promise {\n if (this._target.supports(\"getKey\")) {\n return reqAsPromise(this._target.getKey(key));\n } else {\n return reqAsPromise(this._target.get(key)).then(value => {\n if (value) {\n let keyPath = this._target.keyPath;\n if (typeof keyPath === \"string\") {\n keyPath = [keyPath];\n }\n return keyPath.reduce((obj, key) => obj[key], value);\n }\n });\n }\n }\n\n reduce(range: IDBQuery, reducer: Reducer, initialValue: B): Promise {\n return this._reduce(range, reducer, initialValue, \"next\");\n }\n\n reduceReverse(range: IDBQuery, reducer: Reducer, initialValue: B): Promise {\n return this._reduce(range, reducer, initialValue, \"prev\");\n }\n \n selectLimit(range: IDBQuery, amount: number): Promise {\n return this._selectLimit(range, amount, \"next\");\n }\n\n selectLimitReverse(range: IDBQuery, amount: number): Promise {\n return this._selectLimit(range, amount, \"prev\");\n }\n\n selectWhile(range: IDBQuery, predicate: (v: T) => boolean): Promise {\n return this._selectWhile(range, predicate, \"next\");\n }\n\n selectWhileReverse(range: IDBQuery, predicate: (v: T) => boolean): Promise {\n return this._selectWhile(range, predicate, \"prev\");\n }\n\n async selectAll(range?: IDBQuery, direction?: IDBCursorDirection): Promise {\n const cursor = this._openCursor(range, direction);\n const results: T[] = [];\n await iterateCursor(cursor, (value) => {\n results.push(value);\n return NOT_DONE;\n });\n return results;\n }\n\n selectFirst(range: IDBQuery): Promise {\n return this._find(range, () => true, \"next\");\n }\n\n selectLast(range: IDBQuery): Promise {\n return this._find(range, () => true, \"prev\");\n }\n\n find(range: IDBQuery, predicate: (v: T) => boolean): Promise {\n return this._find(range, predicate, \"next\");\n }\n\n findReverse(range: IDBQuery, predicate: (v : T) => boolean): Promise {\n return this._find(range, predicate, \"prev\");\n }\n\n async findMaxKey(range: IDBQuery): Promise {\n const cursor = this._target.openKeyCursor(range, \"prev\");\n let maxKey;\n await iterateCursor(cursor, (_, key) => {\n maxKey = key;\n return DONE;\n });\n return maxKey;\n }\n\n\n async iterateValues(range: IDBQuery, callback: (val: T, key: IDBValidKey, cur: IDBCursorWithValue) => boolean): Promise {\n const cursor = this._target.openCursor(range, \"next\");\n await iterateCursor(cursor, (value, key, cur) => {\n return {done: callback(value, key, cur)};\n });\n }\n\n async iterateKeys(range: IDBQuery, callback: (key: IDBValidKey, cur: IDBCursor) => boolean): Promise {\n const cursor = this._target.openKeyCursor(range, \"next\");\n await iterateCursor(cursor, (_, key, cur) => {\n return {done: callback(key, cur)};\n });\n }\n\n /**\n * Checks if a given set of keys exist.\n * If the callback returns true, the search is halted and callback won't be called again.\n */\n async findExistingKeys(keys: IDBValidKey[], backwards: boolean, callback: (key: IDBValidKey, pk: IDBValidKey) => boolean): Promise {\n const compareKeys = (a, b) => backwards ? -this.idbFactory.cmp(a, b) : this.idbFactory.cmp(a, b);\n const sortedKeys = keys.slice().sort(compareKeys);\n const firstKey = sortedKeys[0];\n const lastKey = sortedKeys[sortedKeys.length - 1];\n const direction = backwards ? \"prev\" : \"next\";\n const cursor = this._target.openKeyCursor(this.IDBKeyRange.bound(firstKey, lastKey), direction);\n let index = 0;\n await iterateCursor(cursor, (value, key, cursor) => {\n while (index < sortedKeys.length && compareKeys(sortedKeys[index], key) < 0) {\n index += 1;\n }\n let done = false;\n if (sortedKeys[index] === key) {\n const pk = cursor.primaryKey;\n done = callback(key, pk);\n index += 1;\n }\n if (done || index >= sortedKeys.length) {\n return DONE;\n } else {\n return {\n done: false,\n jumpTo: sortedKeys[index],\n }\n }\n });\n }\n\n _reduce(range: IDBQuery, reducer: (reduced: B, value: T) => B, initialValue: B, direction: IDBCursorDirection): Promise {\n let reducedValue = initialValue;\n const cursor = this._openCursor(range, direction);\n return iterateCursor(cursor, (value) => {\n reducedValue = reducer(reducedValue, value);\n return NOT_DONE;\n });\n }\n\n _selectLimit(range: IDBQuery, amount: number, direction: IDBCursorDirection): Promise {\n return this._selectUntil(range, (results) => {\n return results.length === amount;\n }, direction);\n }\n\n async _selectUntil(range: IDBQuery, predicate: (vs: T[], v: T) => boolean, direction: IDBCursorDirection): Promise {\n const cursor = this._openCursor(range, direction);\n const results: T[] = [];\n await iterateCursor(cursor, (value) => {\n results.push(value);\n return {done: predicate(results, value)};\n });\n return results;\n }\n\n // allows you to fetch one too much that won't get added when the predicate fails\n async _selectWhile(range: IDBQuery, predicate: (v: T) => boolean, direction: IDBCursorDirection): Promise {\n const cursor = this._openCursor(range, direction);\n const results: T[] = [];\n await iterateCursor(cursor, (value) => {\n const passesPredicate = predicate(value);\n if (passesPredicate) {\n results.push(value);\n }\n return {done: !passesPredicate};\n });\n return results;\n }\n\n async iterateWhile(range: IDBQuery, predicate: (v: T) => boolean): Promise {\n const cursor = this._openCursor(range, \"next\");\n await iterateCursor(cursor, (value) => {\n const passesPredicate = predicate(value);\n return {done: !passesPredicate};\n });\n }\n\n async _find(range: IDBQuery, predicate: (v: T) => boolean, direction: IDBCursorDirection): Promise {\n const cursor = this._openCursor(range, direction);\n let result;\n const found = await iterateCursor(cursor, (value) => {\n const found = predicate(value);\n if (found) {\n result = value;\n }\n return {done: found};\n });\n if (found) {\n return result;\n }\n }\n}\n\nimport {createMockDatabase, createMockIDBFactory, getMockIDBKeyRange} from \"../../../mocks/Storage\";\nimport {txnAsPromise} from \"./utils\";\nimport {QueryTargetWrapper, Store} from \"./Store\";\n\nexport async function tests() {\n\n class MockTransaction {\n constructor(public readonly idbFactory: IDBFactory, readonly idbKeyRangeType: typeof IDBKeyRange) {}\n\n get IDBKeyRange(): typeof IDBKeyRange {\n return this.idbKeyRangeType;\n }\n get databaseName(): string { return \"mockdb\"; }\n addWriteError(error: StorageError, refItem: ILogItem | undefined, operationName: string, keys: IDBKey[] | undefined) {}\n }\n\n interface TestEntry {\n key: string\n }\n\n async function createTestStore(): Promise> {\n const idbFactory = await createMockIDBFactory();\n const idbKeyRangeType = await getMockIDBKeyRange();\n const mockImpl = new MockTransaction(idbFactory, idbKeyRangeType);\n const db = await createMockDatabase(\"findExistingKeys\", (db: IDBDatabase) => {\n db.createObjectStore(\"test\", {keyPath: \"key\"});\n }, idbFactory);\n const txn = db.transaction([\"test\"], \"readwrite\");\n return new Store(txn.objectStore(\"test\"), mockImpl);\n }\n\n return {\n \"findExistingKeys should not match on empty store\": async assert => {\n const store = await createTestStore();\n await store.findExistingKeys([\"2db1a709-d8f1-4c40-a835-f312badd277a\", \"fe7aa5c2-d4ed-4278-b3b0-f49d48d11df2\"], false, () => {\n assert.fail(\"no key should match\");\n return false;\n });\n },\n \"findExistingKeys should not match any existing keys (in between sorting order)\": async assert => {\n const store = await createTestStore();\n store.add({key: \"43cd16eb-a6b4-4b9d-ab36-ab87d1b038c3\"});\n store.add({key: \"b655e7c5-e02d-4823-a7af-4202b12de659\"});\n await store.findExistingKeys([\"2db1a709-d8f1-4c40-a835-f312badd277a\", \"fe7aa5c2-d4ed-4278-b3b0-f49d48d11df2\"], false, () => {\n assert.fail(\"no key should match\");\n return false;\n });\n },\n \"findExistingKeys should match only existing keys\": async assert => {\n const store = await createTestStore();\n store.add({key: \"2db1a709-d8f1-4c40-a835-f312badd277a\"});\n store.add({key: \"43cd16eb-a6b4-4b9d-ab36-ab87d1b038c3\"});\n store.add({key: \"fe7aa5c2-d4ed-4278-b3b0-f49d48d11df2\"});\n const found: string[] = [];\n await store.findExistingKeys([\n \"2db1a709-d8f1-4c40-a835-f312badd277a\",\n \"eac3ef5c-a48f-4e19-b41d-ebd1d84c53f2\",\n \"fe7aa5c2-d4ed-4278-b3b0-f49d48d11df2\"\n ], false, (key: IDBValidKey) => {\n found.push(key as string);\n return false;\n });\n assert.equal(found.length, 2);\n assert.equal(found[0], \"2db1a709-d8f1-4c40-a835-f312badd277a\");\n assert.equal(found[1], \"fe7aa5c2-d4ed-4278-b3b0-f49d48d11df2\");\n },\n \"findExistingKeys should match all if all exist\": async assert => {\n const store = await createTestStore();\n store.add({key: \"2db1a709-d8f1-4c40-a835-f312badd277a\"});\n store.add({key: \"fe7aa5c2-d4ed-4278-b3b0-f49d48d11df2\"});\n store.add({key: \"b655e7c5-e02d-4823-a7af-4202b12de659\"});\n const found: string[] = [];\n await store.findExistingKeys([\n \"2db1a709-d8f1-4c40-a835-f312badd277a\",\n \"b655e7c5-e02d-4823-a7af-4202b12de659\",\n \"fe7aa5c2-d4ed-4278-b3b0-f49d48d11df2\"\n ], false, (key: IDBValidKey) => {\n found.push(key as string);\n return false;\n });\n assert.equal(found.length, 3);\n assert.equal(found[0], \"2db1a709-d8f1-4c40-a835-f312badd277a\");\n assert.equal(found[1], \"b655e7c5-e02d-4823-a7af-4202b12de659\");\n assert.equal(found[2], \"fe7aa5c2-d4ed-4278-b3b0-f49d48d11df2\");\n },\n \"findExistingKeys should stop matching when callback returns true\": async assert => {\n const store = await createTestStore();\n store.add({key: \"2db1a709-d8f1-4c40-a835-f312badd277a\"});\n store.add({key: \"fe7aa5c2-d4ed-4278-b3b0-f49d48d11df2\"});\n store.add({key: \"b655e7c5-e02d-4823-a7af-4202b12de659\"});\n const found: string[] = [];\n await store.findExistingKeys([\n \"2db1a709-d8f1-4c40-a835-f312badd277a\",\n \"b655e7c5-e02d-4823-a7af-4202b12de659\",\n \"fe7aa5c2-d4ed-4278-b3b0-f49d48d11df2\"\n ], false, (key: IDBValidKey) => {\n found.push(key as string);\n return true;\n });\n assert.equal(found.length, 1);\n assert.equal(found[0], \"2db1a709-d8f1-4c40-a835-f312badd277a\");\n },\n \n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {QueryTarget, IDBQuery, ITransaction} from \"./QueryTarget\";\nimport {IDBRequestError, IDBRequestAttemptError} from \"./error\";\nimport {reqAsPromise} from \"./utils\";\nimport {Transaction, IDBKey} from \"./Transaction\";\nimport {ILogItem} from \"../../../logging/types\";\n\nconst LOG_REQUESTS = false;\n\nfunction logRequest(method: string, params: any[], source: any): void {\n const storeName = source?.name;\n const databaseName = source?.transaction?.db?.name;\n console.info(`${databaseName}.${storeName}.${method}(${params.map(p => JSON.stringify(p)).join(\", \")})`);\n}\n\nexport class QueryTargetWrapper {\n private _qt: IDBIndex | IDBObjectStore;\n\n constructor(qt: IDBIndex | IDBObjectStore) {\n this._qt = qt;\n }\n\n get keyPath(): string | string[] {\n return this._qtStore.keyPath;\n }\n\n get _qtStore(): IDBObjectStore {\n if (\"objectStore\" in this._qt) {\n return this._qt.objectStore;\n }\n return this._qt;\n }\n\n supports(methodName: string): boolean {\n return !!this._qt[methodName];\n }\n \n openKeyCursor(range?: IDBQuery, direction?: IDBCursorDirection | undefined): IDBRequest {\n try {\n // not supported on Edge 15\n if (!this._qt.openKeyCursor) {\n LOG_REQUESTS && logRequest(\"openCursor\", [range, direction], this._qt);\n return this.openCursor(range, direction);\n }\n LOG_REQUESTS && logRequest(\"openKeyCursor\", [range, direction], this._qt);\n return this._qt.openKeyCursor(range, direction)\n } catch(err) {\n throw new IDBRequestAttemptError(\"openKeyCursor\", this._qt, err, [range, direction]);\n }\n }\n \n openCursor(range?: IDBQuery, direction?: IDBCursorDirection | undefined): IDBRequest {\n try {\n LOG_REQUESTS && logRequest(\"openCursor\", [], this._qt);\n return this._qt.openCursor(range, direction)\n } catch(err) {\n throw new IDBRequestAttemptError(\"openCursor\", this._qt, err, [range, direction]);\n }\n }\n\n put(item: T, key?: IDBValidKey | undefined): IDBRequest {\n try {\n LOG_REQUESTS && logRequest(\"put\", [item, key], this._qt);\n return this._qtStore.put(item, key);\n } catch(err) {\n throw new IDBRequestAttemptError(\"put\", this._qt, err, [item, key]);\n }\n }\n\n add(item: T, key?: IDBValidKey | undefined): IDBRequest {\n try {\n LOG_REQUESTS && logRequest(\"add\", [item, key], this._qt);\n return this._qtStore.add(item, key);\n } catch(err) {\n throw new IDBRequestAttemptError(\"add\", this._qt, err, [item, key]);\n }\n }\n\n get(key: IDBValidKey | IDBKeyRange): IDBRequest {\n try {\n LOG_REQUESTS && logRequest(\"get\", [key], this._qt);\n return this._qt.get(key);\n } catch(err) {\n throw new IDBRequestAttemptError(\"get\", this._qt, err, [key]);\n }\n }\n \n getKey(key: IDBValidKey | IDBKeyRange): IDBRequest {\n try {\n LOG_REQUESTS && logRequest(\"getKey\", [key], this._qt);\n return this._qt.getKey(key)\n } catch(err) {\n throw new IDBRequestAttemptError(\"getKey\", this._qt, err, [key]);\n }\n }\n\n delete(key: IDBValidKey | IDBKeyRange): IDBRequest {\n try {\n LOG_REQUESTS && logRequest(\"delete\", [key], this._qt);\n return this._qtStore.delete(key);\n } catch(err) {\n throw new IDBRequestAttemptError(\"delete\", this._qt, err, [key]);\n }\n }\n\n clear(): IDBRequest {\n try {\n LOG_REQUESTS && logRequest(\"clear\", [], this._qt);\n return this._qtStore.clear();\n }\n catch (err) {\n throw new IDBRequestAttemptError(\"delete\", this._qt, err, []);\n }\n }\n\n count(keyRange?: IDBKeyRange): IDBRequest {\n try {\n return this._qt.count(keyRange);\n } catch(err) {\n throw new IDBRequestAttemptError(\"count\", this._qt, err, [keyRange]);\n }\n }\n\n index(name: string): IDBIndex {\n try {\n return this._qtStore.index(name);\n } catch(err) {\n // TODO: map to different error? this is not a request\n throw new IDBRequestAttemptError(\"index\", this._qt, err, [name]);\n }\n }\n\n get indexNames(): string[] {\n return Array.from(this._qtStore.indexNames);\n }\n}\n\nexport class Store extends QueryTarget {\n constructor(idbStore: IDBObjectStore, transaction: ITransaction) {\n super(new QueryTargetWrapper(idbStore), transaction);\n }\n\n get _idbStore(): QueryTargetWrapper {\n return (this._target as QueryTargetWrapper);\n }\n\n index(indexName: string): QueryTarget {\n return new QueryTarget(new QueryTargetWrapper(this._idbStore.index(indexName)), this._transaction);\n }\n\n put(value: T, log?: ILogItem): void {\n // If this request fails, the error will bubble up to the transaction and abort it,\n // which is the behaviour we want. Therefore, it is ok to not create a promise for this\n // request and await it.\n // \n // Perhaps at some later point, we will want to handle an error (like ConstraintError) for\n // individual write requests. In that case, we should add a method that returns a promise (e.g. putAndObserve)\n // and call preventDefault on the event to prevent it from aborting the transaction\n // \n // Note that this can still throw synchronously, like it does for TransactionInactiveError,\n // see https://www.w3.org/TR/IndexedDB-2/#transaction-lifetime-concept\n const request = this._idbStore.put(value);\n this._prepareErrorLog(request, log, \"put\", undefined, value);\n }\n\n add(value: T, log?: ILogItem): void {\n // ok to not monitor result of request, see comment in `put`.\n const request = this._idbStore.add(value);\n this._prepareErrorLog(request, log, \"add\", undefined, value);\n }\n\n async tryAdd(value: T, log: ILogItem): Promise {\n try {\n await reqAsPromise(this._idbStore.add(value));\n return true;\n } catch (err) {\n if (err instanceof IDBRequestError) {\n log.log({l: \"could not write\", id: this._getKeys(value), e: err}, log.level.Warn);\n err.preventTransactionAbort();\n return false;\n } else {\n throw err;\n }\n }\n }\n\n delete(keyOrKeyRange: IDBValidKey | IDBKeyRange, log?: ILogItem): void {\n // ok to not monitor result of request, see comment in `put`.\n const request = this._idbStore.delete(keyOrKeyRange);\n this._prepareErrorLog(request, log, \"delete\", keyOrKeyRange, undefined);\n }\n\n clear(log?: ILogItem): void {\n const request = this._idbStore.clear();\n this._prepareErrorLog(request, log, \"delete\", undefined, undefined);\n }\n\n private _prepareErrorLog(request: IDBRequest, log: ILogItem | undefined, operationName: string, key: IDBKey | undefined, value: T | undefined) {\n if (log) {\n log.ensureRefId();\n }\n reqAsPromise(request).catch(err => {\n let keys : IDBKey[] | undefined = undefined;\n if (value) {\n keys = this._getKeys(value);\n } else if (key) {\n keys = [key];\n }\n this._transaction.addWriteError(err, log, operationName, keys);\n });\n }\n\n private _getKeys(value: T): IDBValidKey[] {\n const keys: IDBValidKey[] = [];\n const {keyPath} = this._idbStore;\n try {\n keys.push(this._readKeyPath(value, keyPath));\n } catch (err) {\n console.warn(\"could not read keyPath\", keyPath);\n }\n for (const indexName of this._idbStore.indexNames) {\n try {\n const index = this._idbStore.index(indexName);\n keys.push(this._readKeyPath(value, index.keyPath));\n } catch (err) {\n console.warn(\"could not read index\", indexName);\n }\n }\n return keys;\n }\n\n private _readKeyPath(value: T, keyPath: string[] | string): IDBValidKey {\n if (Array.isArray(keyPath)) {\n let field: any = value;\n for (const part of keyPath) {\n if (typeof field === \"object\") {\n field = field[part];\n } else {\n break;\n }\n }\n return field as IDBValidKey;\n } else {\n return value[keyPath] as IDBValidKey;\n }\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexport function stringify(value: any): string {\n return JSON.stringify(encodeValue(value));\n}\n\nexport function parse(value: string): any {\n return decodeValue(JSON.parse(value));\n}\n\nfunction encodeValue(value: any): any {\n if (typeof value === \"object\" && value !== null && !Array.isArray(value)) {\n // TypedArray\n if (value.byteLength) {\n return {_type: value.constructor.name, value: Array.from(value)};\n }\n let newObj = {};\n for (const prop in value) {\n if (value.hasOwnProperty(prop)) {\n newObj[prop] = encodeValue(value[prop]);\n }\n }\n return newObj;\n } else {\n return value;\n }\n}\n\nfunction decodeValue(value: any): any {\n if (typeof value === \"object\" && value !== null && !Array.isArray(value)) {\n if (typeof value._type === \"string\") {\n switch (value._type) {\n case \"Int8Array\": return Int8Array.from(value.value);\n case \"Uint8Array\": return Uint8Array.from(value.value);\n case \"Uint8ClampedArray\": return Uint8ClampedArray.from(value.value);\n case \"Int16Array\": return Int16Array.from(value.value);\n case \"Uint16Array\": return Uint16Array.from(value.value);\n case \"Int32Array\": return Int32Array.from(value.value);\n case \"Uint32Array\": return Uint32Array.from(value.value);\n case \"Float32Array\": return Float32Array.from(value.value);\n case \"Float64Array\": return Float64Array.from(value.value);\n case \"BigInt64Array\": return BigInt64Array.from(value.value);\n case \"BigUint64Array\": return BigUint64Array.from(value.value);\n default:\n return value.value;\n }\n }\n let newObj = {};\n for (const prop in value) {\n if (value.hasOwnProperty(prop)) {\n newObj[prop] = decodeValue(value[prop]);\n }\n }\n return newObj;\n } else {\n return value;\n }\n}\n\nexport function tests() {\n return {\n \"Uint8Array and primitives\": assert => {\n const value = {\n foo: \"bar\",\n bar: 5,\n baz: false,\n fuzz: new Uint8Array([3, 1, 2])\n };\n const serialized = stringify(value);\n assert.strictEqual(typeof serialized, \"string\");\n const deserialized = parse(serialized);\n assert.strictEqual(deserialized.foo, \"bar\");\n assert.strictEqual(deserialized.bar, 5);\n assert.strictEqual(deserialized.baz, false);\n assert(deserialized.fuzz instanceof Uint8Array);\n assert.strictEqual(deserialized.fuzz.length, 3);\n assert.strictEqual(deserialized.fuzz[0], 3);\n assert.strictEqual(deserialized.fuzz[1], 1);\n assert.strictEqual(deserialized.fuzz[2], 2);\n }\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nimport {Store} from \"../Store\";\nimport {IDOMStorage} from \"../types\";\nimport {SESSION_E2EE_KEY_PREFIX} from \"../../../e2ee/common\";\nimport {parse, stringify} from \"../../../../utils/typedJSON\";\nimport type {ILogItem} from \"../../../../logging/types\";\n\nexport interface SessionEntry {\n key: string;\n value: any;\n}\n\nfunction getLocalStorageKeyPrefix(databaseName: string): string {\n return `${databaseName}.session.`;\n}\n\nexport function clearKeysFromLocalStorage(localStorage: IDOMStorage, databaseName: string): void {\n const keys: string[] = [];\n for (let i = 0; i < localStorage.length; i++) {\n const key = localStorage.key(i);\n if (key?.startsWith(getLocalStorageKeyPrefix(databaseName))) {\n keys.push(key);\n }\n }\n for (const key of keys) {\n localStorage.removeItem(key);\n }\n}\n\nexport class SessionStore {\n private _sessionStore: Store\n private _localStorage: IDOMStorage;\n\n constructor(sessionStore: Store, localStorage: IDOMStorage) {\n this._sessionStore = sessionStore;\n this._localStorage = localStorage;\n }\n\n private get _localStorageKeyPrefix(): string {\n return getLocalStorageKeyPrefix(this._sessionStore.databaseName);\n }\n\n async get(key: string): Promise {\n const entry = await this._sessionStore.get(key);\n if (entry) {\n return entry.value;\n }\n }\n\n _writeKeyToLocalStorage(key: string, value: any) {\n // we backup to localStorage so when idb gets cleared for some reason, we don't lose our e2ee identity\n try {\n const lsKey = this._localStorageKeyPrefix + key;\n const lsValue = stringify(value);\n this._localStorage.setItem(lsKey, lsValue);\n } catch (err) {\n console.error(\"could not write to localStorage\", err);\n }\n }\n\n writeE2EEIdentityToLocalStorage() {\n this._sessionStore.iterateValues(undefined, (entry: SessionEntry, key: string) => {\n if (key.startsWith(SESSION_E2EE_KEY_PREFIX)) {\n this._writeKeyToLocalStorage(key, entry.value);\n }\n return false;\n });\n }\n\n async tryRestoreE2EEIdentityFromLocalStorage(log: ILogItem): Promise {\n let success = false;\n const lsPrefix = this._localStorageKeyPrefix;\n const prefix = lsPrefix + SESSION_E2EE_KEY_PREFIX;\n for(let i = 0; i < this._localStorage.length; i += 1) {\n const lsKey = this._localStorage.key(i)!;\n if (lsKey.startsWith(prefix)) {\n const value = parse(this._localStorage.getItem(lsKey)!);\n const key = lsKey.substr(lsPrefix.length);\n // we check if we don't have this key already, as we don't want to override anything\n const hasKey = (await this._sessionStore.getKey(key)) === key;\n log.set(key, !hasKey);\n if (!hasKey) {\n this._sessionStore.put({key, value});\n success = true;\n }\n }\n }\n return success;\n }\n\n set(key: string, value: any): void {\n if (key.startsWith(SESSION_E2EE_KEY_PREFIX)) {\n this._writeKeyToLocalStorage(key, value);\n }\n this._sessionStore.put({key, value});\n }\n\n add(key: string, value: any): void {\n if (key.startsWith(SESSION_E2EE_KEY_PREFIX)) {\n this._writeKeyToLocalStorage(key, value);\n }\n this._sessionStore.add({key, value});\n }\n\n remove(key: string): void {\n if (key.startsWith(SESSION_E2EE_KEY_PREFIX)) {\n this._localStorage.removeItem(this._localStorageKeyPrefix + key);\n }\n this._sessionStore.delete(key);\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\nstore contains:\n\troomId\n\tname\n\tlastMessage\n\tunreadCount\n\tmentionCount\n\tisEncrypted\n\tisDirectMessage\n\tmembership\n\tinviteCount\n\tjoinCount\n*/\nimport {Store} from \"../Store\";\nimport {SummaryData} from \"../../../room/RoomSummary\";\n\n/** Used for both roomSummary and archivedRoomSummary stores */\nexport class RoomSummaryStore {\n private _summaryStore: Store;\n\n constructor(summaryStore: Store) {\n this._summaryStore = summaryStore;\n }\n\n getAll(): Promise {\n return this._summaryStore.selectAll();\n }\n\n set(summary: SummaryData): void {\n this._summaryStore.put(summary);\n }\n\n get(roomId: string): Promise {\n return this._summaryStore.get(roomId);\n }\n\n async has(roomId: string): Promise {\n const fetchedKey = await this._summaryStore.getKey(roomId);\n return roomId === fetchedKey;\n }\n\n remove(roomId: string): void {\n this._summaryStore.delete(roomId);\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nimport {Store} from \"../Store\";\nimport {MemberData} from \"./RoomMemberStore\";\n\n// TODO: Move to Invite when that's TypeScript.\nexport interface InviteData {\n roomId: string;\n isEncrypted: boolean;\n isDirectMessage: boolean;\n name?: string;\n avatarUrl?: string;\n avatarColorId: number;\n canonicalAlias?: string;\n timestamp: number;\n joinRule: string;\n inviter?: MemberData;\n}\n\nexport class InviteStore {\n private _inviteStore: Store;\n\n constructor(inviteStore: Store) {\n this._inviteStore = inviteStore;\n }\n\n getAll(): Promise {\n return this._inviteStore.selectAll();\n }\n\n set(invite: InviteData): void {\n this._inviteStore.put(invite);\n }\n\n remove(roomId: string): void {\n this._inviteStore.delete(roomId);\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport type {ILogItem, ISerializedItem} from \"./types\";\n\nexport enum LogLevel {\n All = 1,\n Debug,\n Detail,\n Info,\n Warn,\n Error,\n Fatal,\n Off\n}\n\nexport class LogFilter {\n private _min?: LogLevel;\n private _parentFilter?: LogFilter;\n\n constructor(parentFilter?: LogFilter) {\n this._parentFilter = parentFilter;\n }\n\n filter(item: ILogItem, children: ISerializedItem[] | null): boolean {\n if (this._parentFilter) {\n if (!this._parentFilter.filter(item, children)) {\n return false;\n }\n }\n // neither our children or us have a loglevel high enough, filter out.\n if (this._min !== undefined && !Array.isArray(children) && item.logLevel < this._min) {\n return false;\n } else {\n return true;\n }\n }\n\n /* methods to build the filter */\n minLevel(logLevel: LogLevel): LogFilter {\n this._min = logLevel;\n return this;\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nimport {LogLevel} from \"./LogFilter\";\nimport type {ILogger, ILogItem, ILogReporter, LabelOrValues, LogCallback, LogItemValues} from \"./types\";\n\nfunction noop (): void {}\n\nexport class NullLogger implements ILogger {\n public readonly item: ILogItem = new NullLogItem(this);\n\n log(labelOrValues: LabelOrValues): ILogItem {\n return this.item;\n }\n\n addReporter() {}\n\n get reporters(): ReadonlyArray {\n return [];\n }\n\n getOpenRootItems(): Iterable {\n return [];\n }\n\n forceFinish(): void {}\n\n child(labelOrValues: LabelOrValues): ILogItem {\n return this.item;\n }\n\n run(_, callback: LogCallback): T {\n return callback(this.item); \n }\n\n wrapOrRun(item: ILogItem | undefined, _, callback: LogCallback): T {\n if (item) {\n return item.wrap(_, callback);\n } else {\n return this.run(_, callback);\n }\n }\n\n runDetached(_, callback): ILogItem {\n new Promise(r => r(callback(this.item))).then(noop, noop);\n return this.item;\n }\n \n get level(): typeof LogLevel {\n return LogLevel;\n }\n}\n\nexport class NullLogItem implements ILogItem {\n public readonly logger: NullLogger;\n public readonly logLevel: LogLevel;\n public children?: Array;\n public values: LogItemValues;\n public error?: Error;\n\n constructor(logger: NullLogger) {\n this.logger = logger;\n }\n\n discard(): void {\n // noop\n }\n\n wrap(_: LabelOrValues, callback: LogCallback): T {\n return this.run(callback);\n }\n\n run(callback: LogCallback): T {\n return callback(this);\n }\n\n\n log(labelOrValues: LabelOrValues): ILogItem {\n return this;\n }\n \n set(labelOrValues: LabelOrValues): ILogItem { return this; }\n\n runDetached(_: LabelOrValues, callback: LogCallback): ILogItem {\n new Promise(r => r(callback(this))).then(noop, noop);\n return this;\n }\n\n wrapDetached(_: LabelOrValues, _callback: LogCallback): void {\n return this.refDetached();\n }\n\n refDetached(): void {}\n\n ensureRefId(): void {}\n\n get level(): typeof LogLevel {\n return LogLevel;\n }\n\n get duration(): 0 {\n return 0;\n }\n\n catch(err: Error): Error {\n return err;\n }\n\n child(): ILogItem {\n return this;\n }\n\n finish(): void {}\n forceFinish(): void {}\n\n serialize(): undefined {\n return undefined;\n }\n}\n\nexport const Instance = new NullLogger(); \n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {EventKey} from \"../../../room/timeline/EventKey\";\nimport { StorageError } from \"../../common\";\nimport { encodeUint32, decodeUint32 } from \"../utils\";\nimport {KeyLimits} from \"../../common\";\nimport {Store} from \"../Store\";\nimport {TimelineEvent, StateEvent} from \"../../types\";\nimport {ILogItem} from \"../../../../logging/types\";\n\ninterface Annotation {\n count: number;\n me: boolean;\n firstTimestamp: number;\n}\n\ninterface TimelineEventEntry {\n roomId: string;\n fragmentId: number;\n eventIndex: number;\n event: TimelineEvent | StateEvent;\n displayName?: string;\n avatarUrl?: string;\n annotations?: { [key : string]: Annotation };\n}\n\ntype TimelineEventStorageEntry = TimelineEventEntry & { key: string, eventIdKey: string };\n\nfunction encodeKey(roomId: string, fragmentId: number, eventIndex: number): string {\n return `${roomId}|${encodeUint32(fragmentId)}|${encodeUint32(eventIndex)}`;\n}\n\nfunction decodeKey(key: string): { roomId: string, eventKey: EventKey } {\n const [roomId, fragmentId, eventIndex] = key.split(\"|\");\n return {roomId, eventKey: new EventKey(decodeUint32(fragmentId), decodeUint32(eventIndex))};\n}\n\nfunction encodeEventIdKey(roomId: string, eventId: string): string {\n return `${roomId}|${eventId}`;\n}\n\nfunction decodeEventIdKey(eventIdKey: string): { roomId: string, eventId: string } {\n const [roomId, eventId] = eventIdKey.split(\"|\");\n return {roomId, eventId};\n}\n\nclass Range {\n private _IDBKeyRange: typeof IDBKeyRange;\n private _only?: EventKey;\n private _lower?: EventKey;\n private _upper?: EventKey;\n private _lowerOpen: boolean;\n private _upperOpen: boolean;\n\n constructor(_IDBKeyRange: any, only?: EventKey, lower?: EventKey, upper?: EventKey, lowerOpen: boolean = false, upperOpen: boolean = false) {\n this._IDBKeyRange = _IDBKeyRange;\n this._only = only;\n this._lower = lower;\n this._upper = upper;\n this._lowerOpen = lowerOpen;\n this._upperOpen = upperOpen;\n }\n\n asIDBKeyRange(roomId: string): IDBKeyRange | undefined {\n try {\n // only\n if (this._only) {\n return this._IDBKeyRange.only(encodeKey(roomId, this._only.fragmentId, this._only.eventIndex));\n }\n // lowerBound\n // also bound as we don't want to move into another roomId\n if (this._lower && !this._upper) {\n return this._IDBKeyRange.bound(\n encodeKey(roomId, this._lower.fragmentId, this._lower.eventIndex),\n encodeKey(roomId, this._lower.fragmentId, KeyLimits.maxStorageKey),\n this._lowerOpen,\n false\n );\n }\n // upperBound\n // also bound as we don't want to move into another roomId\n if (!this._lower && this._upper) {\n return this._IDBKeyRange.bound(\n encodeKey(roomId, this._upper.fragmentId, KeyLimits.minStorageKey),\n encodeKey(roomId, this._upper.fragmentId, this._upper.eventIndex),\n false,\n this._upperOpen\n );\n }\n // bound\n if (this._lower && this._upper) {\n return this._IDBKeyRange.bound(\n encodeKey(roomId, this._lower.fragmentId, this._lower.eventIndex),\n encodeKey(roomId, this._upper.fragmentId, this._upper.eventIndex),\n this._lowerOpen,\n this._upperOpen\n );\n }\n } catch(err) {\n throw new StorageError(`IDBKeyRange failed with data: ` + JSON.stringify(this), err);\n }\n }\n}\n/*\n * @typedef {Object} Gap\n * @property {?string} prev_batch the pagination token for this backwards facing gap\n * @property {?string} next_batch the pagination token for this forwards facing gap\n *\n * @typedef {Object} Event\n * @property {string} event_id the id of the event\n * @property {string} type the\n * @property {?string} state_key the state key of this state event\n *\n * @typedef {Object} Entry\n * @property {string} roomId\n * @property {EventKey} eventKey\n * @property {?Event} event if an event entry, the event\n * @property {?Gap} gap if a gap entry, the gap\n*/\nexport class TimelineEventStore {\n private _timelineStore: Store;\n\n constructor(timelineStore: Store) {\n this._timelineStore = timelineStore;\n }\n\n /** Creates a range that only includes the given key\n * @param eventKey the key\n * @return the created range\n */\n onlyRange(eventKey: EventKey): Range {\n return new Range(this._timelineStore.IDBKeyRange, eventKey);\n }\n\n /** Creates a range that includes all keys before eventKey, and optionally also the key itself.\n * @param eventKey the key\n * @param [open=false] whether the key is included (false) or excluded (true) from the range at the upper end.\n * @return the created range\n */\n upperBoundRange(eventKey: EventKey, open=false): Range {\n return new Range(this._timelineStore.IDBKeyRange, undefined, undefined, eventKey, undefined, open);\n }\n\n /** Creates a range that includes all keys after eventKey, and optionally also the key itself.\n * @param eventKey the key\n * @param [open=false] whether the key is included (false) or excluded (true) from the range at the lower end.\n * @return the created range\n */\n lowerBoundRange(eventKey: EventKey, open=false): Range {\n return new Range(this._timelineStore.IDBKeyRange, undefined, eventKey, undefined, open);\n }\n\n /** Creates a range that includes all keys between `lower` and `upper`, and optionally the given keys as well.\n * @param lower the lower key\n * @param upper the upper key\n * @param [lowerOpen=false] whether the lower key is included (false) or excluded (true) from the range.\n * @param [upperOpen=false] whether the upper key is included (false) or excluded (true) from the range.\n * @return the created range\n */\n boundRange(lower: EventKey, upper: EventKey, lowerOpen=false, upperOpen=false): Range {\n return new Range(this._timelineStore.IDBKeyRange, undefined, lower, upper, lowerOpen, upperOpen);\n }\n\n /** Looks up the last `amount` entries in the timeline for `roomId`.\n * @param roomId\n * @param fragmentId\n * @param amount\n * @return a promise resolving to an array with 0 or more entries, in ascending order.\n */\n async lastEvents(roomId: string, fragmentId: number, amount: number): Promise {\n const eventKey = EventKey.maxKey;\n eventKey.fragmentId = fragmentId;\n return this.eventsBefore(roomId, eventKey, amount);\n }\n\n /** Looks up the first `amount` entries in the timeline for `roomId`.\n * @param roomId\n * @param fragmentId\n * @param amount\n * @return a promise resolving to an array with 0 or more entries, in ascending order.\n */\n async firstEvents(roomId: string, fragmentId: number, amount: number): Promise {\n const eventKey = EventKey.minKey;\n eventKey.fragmentId = fragmentId;\n return this.eventsAfter(roomId, eventKey, amount);\n }\n\n /** Looks up `amount` entries after `eventKey` in the timeline for `roomId` within the same fragment.\n * The entry for `eventKey` is not included.\n * @param roomId\n * @param eventKey\n * @param amount\n * @return a promise resolving to an array with 0 or more entries, in ascending order.\n */\n eventsAfter(roomId: string, eventKey: EventKey, amount: number): Promise {\n const idbRange = this.lowerBoundRange(eventKey, true).asIDBKeyRange(roomId);\n return this._timelineStore.selectLimit(idbRange, amount);\n }\n\n /** Looks up `amount` entries before `eventKey` in the timeline for `roomId` within the same fragment.\n * The entry for `eventKey` is not included.\n * @param roomId\n * @param eventKey\n * @param amount\n * @return a promise resolving to an array with 0 or more entries, in ascending order.\n */\n async eventsBefore(roomId: string, eventKey: EventKey, amount: number): Promise {\n const range = this.upperBoundRange(eventKey, true).asIDBKeyRange(roomId);\n const events = await this._timelineStore.selectLimitReverse(range, amount);\n events.reverse(); // because we fetched them backwards\n return events;\n }\n\n async getEventKeysForIds(roomId: string, eventIds: string[]): Promise> {\n const byEventId = this._timelineStore.index(\"byEventId\");\n const keys = eventIds.map(eventId => encodeEventIdKey(roomId, eventId));\n const results = new Map();\n await byEventId.findExistingKeys(keys, false, (indexKey, pk) => {\n const {eventId} = decodeEventIdKey(indexKey as string);\n const {eventKey} = decodeKey(pk as string);\n results.set(eventId, eventKey);\n return false;\n });\n return results;\n }\n\n /** Finds the first eventId that occurs in the store, if any.\n * For optimal performance, `eventIds` should be in chronological order.\n *\n * The order in which results are returned might be different than `eventIds`.\n * Call the return value to obtain the next {id, event} pair.\n * @param roomId\n * @param eventIds\n * @return\n */\n // performance comment from above refers to the fact that there *might*\n // be a correlation between event_id sorting order and chronology.\n // In that case we could avoid running over all eventIds, as the reported order by findExistingKeys\n // would match the order of eventIds. That's why findLast is also passed as backwards to keysExist.\n // also passing them in chronological order makes sense as that's how we'll receive them almost always.\n async findFirstOccurringEventId(roomId: string, eventIds: string[]): Promise {\n const byEventId = this._timelineStore.index(\"byEventId\");\n const keys = eventIds.map(eventId => encodeEventIdKey(roomId, eventId));\n const results = new Array(keys.length);\n let firstFoundKey: string | undefined;\n\n // find first result that is found and has no undefined results before it\n function firstFoundAndPrecedingResolved(): string | undefined {\n for(let i = 0; i < results.length; ++i) {\n if (results[i] === undefined) {\n return;\n } else if(results[i] === true) {\n return keys[i];\n }\n }\n }\n\n await byEventId.findExistingKeys(keys, false, (key, found) => {\n // T[].search(T, number), but we want T[].search(R, number), so cast\n const index = (keys as IDBValidKey[]).indexOf(key);\n results[index] = found;\n firstFoundKey = firstFoundAndPrecedingResolved();\n return !!firstFoundKey;\n });\n return firstFoundKey && decodeEventIdKey(firstFoundKey).eventId;\n }\n\n /** Inserts a new entry into the store.\n * \n * If the event already exists in the store (either the eventKey or the event id\n * are already known for the given roomId), this operation has no effect.\n * \n * Returns if the event was not yet known and the entry was written.\n */\n tryInsert(entry: TimelineEventEntry, log: ILogItem): Promise {\n (entry as TimelineEventStorageEntry).key = encodeKey(entry.roomId, entry.fragmentId, entry.eventIndex);\n (entry as TimelineEventStorageEntry).eventIdKey = encodeEventIdKey(entry.roomId, entry.event.event_id);\n return this._timelineStore.tryAdd(entry as TimelineEventStorageEntry, log);\n }\n\n /** Updates the entry into the store with the given [roomId, eventKey] combination.\n * If not yet present, will insert. Might be slower than add.\n * @param entry the entry to update.\n * @return nothing. To wait for the operation to finish, await the transaction it's part of.\n */\n update(entry: TimelineEventEntry): void {\n this._timelineStore.put(entry as TimelineEventStorageEntry);\n }\n\n get(roomId: string, eventKey: EventKey): Promise {\n return this._timelineStore.get(encodeKey(roomId, eventKey.fragmentId, eventKey.eventIndex));\n }\n\n getByEventId(roomId: string, eventId: string): Promise {\n return this._timelineStore.index(\"byEventId\").get(encodeEventIdKey(roomId, eventId));\n }\n\n removeAllForRoom(roomId: string): void {\n const minKey = encodeKey(roomId, KeyLimits.minStorageKey, KeyLimits.minStorageKey);\n const maxKey = encodeKey(roomId, KeyLimits.maxStorageKey, KeyLimits.maxStorageKey);\n const range = this._timelineStore.IDBKeyRange.bound(minKey, maxKey);\n this._timelineStore.delete(range);\n }\n}\n\nimport {createMockStorage} from \"../../../../mocks/Storage\";\nimport {createEvent, withTextBody} from \"../../../../mocks/event.js\";\nimport {createEventEntry} from \"../../../room/timeline/persistence/common.js\";\nimport {Instance as nullLogger} from \"../../../../logging/NullLogger\";\n\nexport function tests() {\n\n const sortedIds = [\n \"$2wZy1W-QdcwaAwz68nfz1oc-3SsZKVDy8d86ERP1Pm0\",\n \"$4RWaZ5142grUgTnQyr_5qiPTOwzAOimt5MsXg6m1diM\",\n \"$4izqHE2Wf5US_-e_za942pZ10CDNJjDncUMmhqBUVQw\",\n \"$Oil2Afq2cBLqMAeJTAHjA3Is9T5Wmaa2ogVRlFJ_gzE\",\n \"$Wyl-7u-YqnPJElkPufIRXRFTYP-eFxQ4iD-SmLQo2Rw\",\n \"$b-eWaZtp22vL9mp0h7odbpphOZQ-rnp54qjyTQPARgo\",\n \"$sS9rTv8u2m9o4RaMI2jGOnpMtb9t8_0euiQLhNFW380\",\n \"$uZLkB9rzTKvJAK2QrQNX-prwQ2Niajdi0fvvRnyCtz8\",\n \"$vGecIBZFex9_vlQf1E1LjtQXE3q5GwERIHMiy4mOWv0\",\n \"$vdLgAnwjHj0cicU3MA4ynLHUBGOIFhvvksY3loqzjF\",\n ];\n\n const insertedIds = [\n sortedIds[5],\n sortedIds[3],\n sortedIds[9],\n sortedIds[7],\n sortedIds[1],\n ];\n\n const checkedIds = [\n sortedIds[2],\n sortedIds[4],\n sortedIds[3],\n sortedIds[0],\n sortedIds[8],\n sortedIds[9],\n sortedIds[6],\n ];\n\n const roomId = \"!fjsdf423423jksdfdsf:hs.tld\";\n\n function createEventWithId(id) {\n return withTextBody(\"hello\", createEvent(\"m.room.message\", id, \"@alice:hs.tld\"));\n }\n\n return {\n \"getEventKeysForIds\": async assert => {\n const storage = await createMockStorage();\n const txn = await storage.readWriteTxn([storage.storeNames.timelineEvents]);\n let eventKey = EventKey.defaultFragmentKey(109);\n for (const insertedId of insertedIds) {\n const entry = createEventEntry(eventKey.nextKey(), roomId, createEventWithId(insertedId));\n assert(await txn.timelineEvents.tryInsert(entry, nullLogger.item));\n eventKey = eventKey.nextKey();\n }\n const eventKeyMap = await txn.timelineEvents.getEventKeysForIds(roomId, checkedIds);\n assert.equal(eventKeyMap.size, 2);\n const eventKey1 = eventKeyMap.get(\"$Oil2Afq2cBLqMAeJTAHjA3Is9T5Wmaa2ogVRlFJ_gzE\")!;\n assert.equal(eventKey1.fragmentId, 109);\n assert.equal(eventKey1.eventIndex, 0x80000001);\n const eventKey2 = eventKeyMap.get(\"$vdLgAnwjHj0cicU3MA4ynLHUBGOIFhvvksY3loqzjF\")!;\n assert.equal(eventKey2.fragmentId, 109);\n assert.equal(eventKey2.eventIndex, 0x80000002);\n }\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexport const MIN_UNICODE = \"\\u{0}\";\nexport const MAX_UNICODE = \"\\u{10FFFF}\";\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nimport {MIN_UNICODE, MAX_UNICODE} from \"./common\";\nimport {Store} from \"../Store\";\n\nfunction encodeKey(roomId: string, targetEventId: string, relType: string, sourceEventId: string): string {\n return `${roomId}|${targetEventId}|${relType}|${sourceEventId}`;\n}\n\ninterface RelationEntry {\n roomId: string;\n targetEventId: string;\n sourceEventId: string;\n relType: string;\n}\n\nfunction decodeKey(key: string): RelationEntry {\n const [roomId, targetEventId, relType, sourceEventId] = key.split(\"|\");\n return {roomId, targetEventId, relType, sourceEventId};\n}\n\nexport class TimelineRelationStore {\n private _store: Store<{ key: string }>;\n\n constructor(store: Store<{ key: string }>) {\n this._store = store;\n }\n\n add(roomId: string, targetEventId: string, relType: string, sourceEventId: string): void {\n this._store.add({key: encodeKey(roomId, targetEventId, relType, sourceEventId)});\n }\n\n remove(roomId: string, targetEventId: string, relType: string, sourceEventId: string): void {\n this._store.delete(encodeKey(roomId, targetEventId, relType, sourceEventId));\n }\n\n removeAllForTarget(roomId: string, targetId: string): void {\n const range = this._store.IDBKeyRange.bound(\n encodeKey(roomId, targetId, MIN_UNICODE, MIN_UNICODE),\n encodeKey(roomId, targetId, MAX_UNICODE, MAX_UNICODE),\n true,\n true\n );\n this._store.delete(range);\n }\n\n removeAllForRoom(roomId: string) {\n const range = this._store.IDBKeyRange.bound(\n encodeKey(roomId, MIN_UNICODE, MIN_UNICODE, MIN_UNICODE),\n encodeKey(roomId, MAX_UNICODE, MAX_UNICODE, MAX_UNICODE),\n true,\n true\n );\n this._store.delete(range);\n }\n\n async getForTargetAndType(roomId: string, targetId: string, relType: string): Promise {\n // exclude both keys as they are theoretical min and max,\n // but we should't have a match for just the room id, or room id with max\n const range = this._store.IDBKeyRange.bound(\n encodeKey(roomId, targetId, relType, MIN_UNICODE),\n encodeKey(roomId, targetId, relType, MAX_UNICODE),\n true,\n true\n );\n const items = await this._store.selectAll(range);\n return items.map(i => decodeKey(i.key));\n }\n\n async getAllForTarget(roomId: string, targetId: string): Promise {\n // exclude both keys as they are theoretical min and max,\n // but we should't have a match for just the room id, or room id with max\n const range = this._store.IDBKeyRange.bound(\n encodeKey(roomId, targetId, MIN_UNICODE, MIN_UNICODE),\n encodeKey(roomId, targetId, MAX_UNICODE, MAX_UNICODE),\n true,\n true\n );\n const items = await this._store.selectAll(range);\n return items.map(i => decodeKey(i.key));\n }\n}\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {MIN_UNICODE, MAX_UNICODE} from \"./common\";\nimport {Store} from \"../Store\";\nimport {StateEvent} from \"../../types\";\n\nfunction encodeKey(roomId: string, eventType: string, stateKey: string) {\n return `${roomId}|${eventType}|${stateKey}`;\n}\n\nexport interface RoomStateEntry {\n roomId: string;\n event: StateEvent;\n key: string;\n}\n\nexport class RoomStateStore {\n private _roomStateStore: Store;\n\n constructor(idbStore: Store) {\n this._roomStateStore = idbStore;\n }\n\n get(roomId: string, type: string, stateKey: string): Promise {\n const key = encodeKey(roomId, type, stateKey);\n return this._roomStateStore.get(key);\n }\n\n getAllForType(roomId: string, type: string): Promise {\n const range = this._roomStateStore.IDBKeyRange.bound(\n encodeKey(roomId, type, \"\"),\n encodeKey(roomId, type, MAX_UNICODE),\n false,\n true\n );\n return this._roomStateStore.selectAll(range);\n }\n\n set(roomId: string, event: StateEvent): void {\n const key = encodeKey(roomId, event.type, event.state_key);\n const entry = {roomId, event, key};\n this._roomStateStore.put(entry);\n }\n\n removeAllForRoom(roomId: string): void {\n // exclude both keys as they are theoretical min and max,\n // but we should't have a match for just the room id, or room id with max\n const range = this._roomStateStore.IDBKeyRange.bound(roomId, `${roomId}|${MAX_UNICODE}`, true, true);\n this._roomStateStore.delete(range);\n }\n}\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2020, 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {MAX_UNICODE} from \"./common\";\nimport {Store} from \"../Store\";\n\nfunction encodeKey(roomId: string, userId: string) {\n return `${roomId}|${userId}`;\n}\n\nfunction decodeKey(key: string): { roomId: string, userId: string } {\n const [roomId, userId] = key.split(\"|\");\n return {roomId, userId};\n}\n\n// TODO: Move to RoomMember when that's TypeScript.\nexport interface MemberData {\n roomId: string;\n userId: string;\n avatarUrl: string;\n displayName: string;\n membership: \"join\" | \"leave\" | \"invite\" | \"ban\";\n}\n\ntype MemberStorageEntry = MemberData & { key: string }\n\n// no historical members\nexport class RoomMemberStore {\n private _roomMembersStore: Store;\n\n constructor(roomMembersStore: Store) {\n this._roomMembersStore = roomMembersStore;\n }\n\n get(roomId: string, userId: string): Promise {\n return this._roomMembersStore.get(encodeKey(roomId, userId));\n }\n\n set(member: MemberData): void {\n // Object.assign would be more typesafe, but small objects \n (member as MemberStorageEntry).key = encodeKey(member.roomId, member.userId);\n this._roomMembersStore.put(member as MemberStorageEntry);\n }\n\n getAll(roomId: string): Promise {\n const range = this._roomMembersStore.IDBKeyRange.lowerBound(encodeKey(roomId, \"\"));\n return this._roomMembersStore.selectWhile(range, member => {\n return member.roomId === roomId;\n });\n }\n\n async getAllUserIds(roomId: string): Promise {\n const userIds: string[] = [];\n const range = this._roomMembersStore.IDBKeyRange.lowerBound(encodeKey(roomId, \"\"));\n await this._roomMembersStore.iterateKeys(range, key => {\n const decodedKey = decodeKey(key as string);\n // prevent running into the next room\n if (decodedKey.roomId === roomId) {\n userIds.push(decodedKey.userId);\n return false; // fetch more\n }\n return true; // done\n });\n return userIds;\n }\n\n removeAllForRoom(roomId: string): void {\n // exclude both keys as they are theoretical min and max,\n // but we should't have a match for just the room id, or room id with max\n const range = this._roomMembersStore.IDBKeyRange.bound(roomId, `${roomId}|${MAX_UNICODE}`, true, true);\n this._roomMembersStore.delete(range);\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { StorageError } from \"../../common\";\nimport {KeyLimits} from \"../../common\";\nimport { encodeUint32 } from \"../utils\";\nimport {Store} from \"../Store\";\n\ninterface Fragment {\n roomId: string;\n id: number;\n previousId: number | null;\n nextId: number | null;\n previousToken: string | null;\n nextToken: string | null;\n}\n\ntype FragmentEntry = Fragment & { key: string }\n\nfunction encodeKey(roomId: string, fragmentId: number): string {\n return `${roomId}|${encodeUint32(fragmentId)}`;\n}\n\nexport class TimelineFragmentStore {\n private _store: Store;\n\n constructor(store: Store) {\n this._store = store;\n }\n\n _allRange(roomId: string): IDBKeyRange {\n try {\n return this._store.IDBKeyRange.bound(\n encodeKey(roomId, KeyLimits.minStorageKey),\n encodeKey(roomId, KeyLimits.maxStorageKey)\n );\n } catch (err) {\n throw new StorageError(`error from IDBKeyRange with roomId ${roomId}`, err);\n }\n }\n\n all(roomId: string): Promise {\n return this._store.selectAll(this._allRange(roomId));\n }\n\n /** Returns the fragment without a nextToken and without nextId,\n if any, with the largest id if there are multiple (which should not happen) */\n liveFragment(roomId: string): Promise {\n // why do we need this?\n // Ok, take the case where you've got a /context fragment and a /sync fragment\n // They are not connected. So, upon loading the persister, which one do we take? We can't sort them ...\n // we assume that the one without a nextToken and without a nextId is a live one\n // there should really be only one like this\n\n // reverse because assuming live fragment has bigger id than non-live ones\n return this._store.findReverse(this._allRange(roomId), fragment => {\n return typeof fragment.nextId !== \"number\" && typeof fragment.nextToken !== \"string\";\n });\n }\n\n // should generate an id an return it?\n // depends if we want to do anything smart with fragment ids,\n // like give them meaning depending on range. not for now probably ...\n add(fragment: Fragment): void {\n (fragment as FragmentEntry).key = encodeKey(fragment.roomId, fragment.id);\n this._store.add(fragment as FragmentEntry);\n }\n\n update(fragment: FragmentEntry): void {\n this._store.put(fragment);\n }\n\n get(roomId: string, fragmentId: number): Promise {\n return this._store.get(encodeKey(roomId, fragmentId));\n }\n\n removeAllForRoom(roomId: string): void {\n this._store.delete(this._allRange(roomId));\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { encodeUint32, decodeUint32 } from \"../utils\";\nimport {KeyLimits} from \"../../common\";\nimport {Store} from \"../Store\";\nimport {Content} from \"../../types\";\n\ninterface PendingEntry {\n roomId: string;\n queueIndex: number;\n eventType: string;\n content: Content;\n relatexTxnId: string | null;\n relatedEventId: string | null;\n txnId?: string;\n needsEncryption: boolean;\n needsUpload: boolean;\n key: string;\n}\n\nfunction encodeKey(roomId: string, queueIndex: number): string {\n return `${roomId}|${encodeUint32(queueIndex)}`;\n}\n\nfunction decodeKey(key: string): { roomId: string, queueIndex: number } {\n const [roomId, encodedQueueIndex] = key.split(\"|\");\n const queueIndex = decodeUint32(encodedQueueIndex);\n return {roomId, queueIndex};\n}\n\nexport class PendingEventStore {\n private _eventStore: Store;\n\n constructor(eventStore: Store) {\n this._eventStore = eventStore;\n }\n\n async getMaxQueueIndex(roomId: string): Promise {\n const range = this._eventStore.IDBKeyRange.bound(\n encodeKey(roomId, KeyLimits.minStorageKey),\n encodeKey(roomId, KeyLimits.maxStorageKey),\n false,\n false,\n );\n const maxKey = await this._eventStore.findMaxKey(range);\n if (maxKey) {\n return decodeKey(maxKey as string).queueIndex;\n }\n }\n\n remove(roomId: string, queueIndex: number) {\n const keyRange = this._eventStore.IDBKeyRange.only(encodeKey(roomId, queueIndex));\n this._eventStore.delete(keyRange);\n }\n\n async exists(roomId: string, queueIndex: number): Promise {\n const keyRange = this._eventStore.IDBKeyRange.only(encodeKey(roomId, queueIndex));\n const key = await this._eventStore.getKey(keyRange);\n return !!key;\n }\n \n add(pendingEvent: PendingEntry): void {\n pendingEvent.key = encodeKey(pendingEvent.roomId, pendingEvent.queueIndex);\n this._eventStore.add(pendingEvent);\n }\n\n update(pendingEvent: PendingEntry): void {\n this._eventStore.put(pendingEvent);\n }\n\n getAll(): Promise {\n return this._eventStore.selectAll();\n }\n\n removeAllForRoom(roomId: string): void {\n const minKey = encodeKey(roomId, KeyLimits.minStorageKey);\n const maxKey = encodeKey(roomId, KeyLimits.maxStorageKey);\n const range = this._eventStore.IDBKeyRange.bound(minKey, maxKey);\n this._eventStore.delete(range);\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nimport {Store} from \"../Store\";\nimport type {UserIdentity} from \"../../../e2ee/DeviceTracker\";\n\nexport class UserIdentityStore {\n private _store: Store;\n\n constructor(store: Store) {\n this._store = store;\n }\n\n get(userId: string): Promise {\n return this._store.get(userId);\n }\n\n set(userIdentity: UserIdentity): void {\n this._store.put(userIdentity);\n }\n\n remove(userId: string): void {\n this._store.delete(userId);\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {MAX_UNICODE, MIN_UNICODE} from \"./common\";\nimport {Store} from \"../Store\";\nimport {getDeviceCurve25519Key} from \"../../../e2ee/common\";\nimport type {DeviceKey} from \"../../../e2ee/common\";\n\ntype DeviceKeyEntry = {\n key: string; // key in storage, not a crypto key\n curve25519Key: string;\n deviceKey: DeviceKey\n}\n\nfunction encodeKey(userId: string, deviceId: string): string {\n return `${userId}|${deviceId}`;\n}\n\nfunction decodeKey(key: string): { userId: string, deviceId: string } {\n const [userId, deviceId] = key.split(\"|\");\n return {userId, deviceId};\n}\n\nexport class DeviceKeyStore {\n private _store: Store;\n \n constructor(store: Store) {\n this._store = store;\n }\n\n async getAllForUserId(userId: string): Promise {\n const range = this._store.IDBKeyRange.lowerBound(encodeKey(userId, MIN_UNICODE));\n const entries = await this._store.selectWhile(range, device => {\n return device.deviceKey.user_id === userId;\n });\n return entries.map(e => e.deviceKey);\n }\n\n async getAllDeviceIds(userId: string): Promise {\n const deviceIds: string[] = [];\n const range = this._store.IDBKeyRange.lowerBound(encodeKey(userId, MIN_UNICODE));\n await this._store.iterateKeys(range, key => {\n const decodedKey = decodeKey(key as string);\n // prevent running into the next room\n if (decodedKey.userId === userId) {\n deviceIds.push(decodedKey.deviceId);\n return false; // fetch more\n }\n return true; // done\n });\n return deviceIds;\n }\n\n async get(userId: string, deviceId: string): Promise {\n return (await this._store.get(encodeKey(userId, deviceId)))?.deviceKey;\n }\n\n set(deviceKey: DeviceKey): void {\n this._store.put({\n key: encodeKey(deviceKey.user_id, deviceKey.device_id),\n curve25519Key: getDeviceCurve25519Key(deviceKey)!,\n deviceKey\n });\n }\n\n async getByCurve25519Key(curve25519Key: string): Promise {\n const entry = await this._store.index(\"byCurve25519Key\").get(curve25519Key);\n return entry?.deviceKey;\n }\n\n remove(userId: string, deviceId: string): void {\n this._store.delete(encodeKey(userId, deviceId));\n }\n\n removeAllForUser(userId: string): void {\n // exclude both keys as they are theoretical min and max,\n // but we should't have a match for just the room id, or room id with max\n const range = this._store.IDBKeyRange.bound(encodeKey(userId, MIN_UNICODE), encodeKey(userId, MAX_UNICODE), true, true);\n this._store.delete(range);\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {MAX_UNICODE, MIN_UNICODE} from \"./common\";\nimport {Store} from \"../Store\";\nimport type {CrossSigningKey} from \"../../../verification/CrossSigning\";\n\ntype CrossSigningKeyEntry = {\n crossSigningKey: CrossSigningKey\n key: string; // key in storage, not a crypto key\n}\n\nfunction encodeKey(userId: string, usage: string): string {\n return `${userId}|${usage}`;\n}\n\nfunction decodeKey(key: string): { userId: string, usage: string } {\n const [userId, usage] = key.split(\"|\");\n return {userId, usage};\n}\n\nexport class CrossSigningKeyStore {\n private _store: Store;\n \n constructor(store: Store) {\n this._store = store;\n }\n\n async get(userId: string, deviceId: string): Promise {\n return (await this._store.get(encodeKey(userId, deviceId)))?.crossSigningKey;\n }\n\n set(crossSigningKey: CrossSigningKey): void {\n this._store.put({\n key:encodeKey(crossSigningKey[\"user_id\"], crossSigningKey.usage[0]),\n crossSigningKey\n });\n }\n\n remove(userId: string, usage: string): void {\n this._store.delete(encodeKey(userId, usage));\n }\n\n removeAllForUser(userId: string): void {\n // exclude both keys as they are theoretical min and max,\n // but we should't have a match for just the room id, or room id with max\n const range = this._store.IDBKeyRange.bound(encodeKey(userId, MIN_UNICODE), encodeKey(userId, MAX_UNICODE), true, true);\n this._store.delete(range);\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nimport {Store} from \"../Store\";\n\nfunction encodeKey(senderKey: string, sessionId: string): string {\n return `${senderKey}|${sessionId}`;\n}\n\nfunction decodeKey(key: string): { senderKey: string, sessionId: string } {\n const [senderKey, sessionId] = key.split(\"|\");\n return {senderKey, sessionId};\n}\n\nexport type OlmSessionEntry = {\n session: string;\n sessionId: string;\n senderKey: string;\n lastUsed: number;\n}\n\ntype OlmSessionStoredEntry = OlmSessionEntry & { key: string };\n\nexport class OlmSessionStore {\n private _store: Store;\n\n constructor(store: Store) {\n this._store = store;\n }\n\n async getSessionIds(senderKey: string): Promise {\n const sessionIds: string[] = [];\n const range = this._store.IDBKeyRange.lowerBound(encodeKey(senderKey, \"\"));\n await this._store.iterateKeys(range, key => {\n const decodedKey = decodeKey(key as string);\n // prevent running into the next room\n if (decodedKey.senderKey === senderKey) {\n sessionIds.push(decodedKey.sessionId);\n return false; // fetch more\n }\n return true; // done\n });\n return sessionIds;\n }\n\n getAll(senderKey: string): Promise {\n const range = this._store.IDBKeyRange.lowerBound(encodeKey(senderKey, \"\"));\n return this._store.selectWhile(range, session => {\n return session.senderKey === senderKey;\n });\n }\n\n get(senderKey: string, sessionId: string): Promise {\n return this._store.get(encodeKey(senderKey, sessionId));\n }\n\n set(session: OlmSessionEntry): void {\n (session as OlmSessionStoredEntry).key = encodeKey(session.senderKey, session.sessionId);\n this._store.put(session as OlmSessionStoredEntry);\n }\n\n remove(senderKey: string, sessionId: string): void {\n this._store.delete(encodeKey(senderKey, sessionId));\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {MIN_UNICODE, MAX_UNICODE} from \"./common\";\nimport {Store} from \"../Store\";\n\nexport enum BackupStatus {\n NotBackedUp = 0,\n BackedUp = 1\n}\n\nexport enum KeySource {\n DeviceMessage = 1,\n Backup,\n Outbound\n}\n\nexport interface InboundGroupSessionEntry {\n roomId: string;\n senderKey: string;\n sessionId: string;\n session?: string;\n claimedKeys?: { [algorithm : string] : string };\n eventIds?: string[];\n backup: BackupStatus,\n source: KeySource\n}\n\ntype InboundGroupSessionStorageEntry = InboundGroupSessionEntry & { key: string };\n\n\nfunction encodeKey(roomId: string, senderKey: string, sessionId: string): string {\n return `${roomId}|${senderKey}|${sessionId}`;\n}\n\nexport class InboundGroupSessionStore {\n private _store: Store;\n\n constructor(store: Store) {\n this._store = store;\n }\n\n async has(roomId: string, senderKey: string, sessionId: string): Promise {\n const key = encodeKey(roomId, senderKey, sessionId);\n const fetchedKey = await this._store.getKey(key);\n return key === fetchedKey;\n }\n\n get(roomId: string, senderKey: string, sessionId: string): Promise {\n return this._store.get(encodeKey(roomId, senderKey, sessionId));\n }\n\n set(session: InboundGroupSessionEntry): void {\n const storageEntry = session as InboundGroupSessionStorageEntry;\n storageEntry.key = encodeKey(session.roomId, session.senderKey, session.sessionId);\n this._store.put(storageEntry);\n }\n\n removeAllForRoom(roomId: string) {\n const range = this._store.IDBKeyRange.bound(\n encodeKey(roomId, MIN_UNICODE, MIN_UNICODE),\n encodeKey(roomId, MAX_UNICODE, MAX_UNICODE)\n );\n this._store.delete(range);\n }\n countNonBackedUpSessions(): Promise {\n return this._store.index(\"byBackup\").count(this._store.IDBKeyRange.only(BackupStatus.NotBackedUp));\n }\n\n getFirstNonBackedUpSessions(amount: number): Promise {\n return this._store.index(\"byBackup\").selectLimit(this._store.IDBKeyRange.only(BackupStatus.NotBackedUp), amount);\n }\n\n async markAsBackedUp(roomId: string, senderKey: string, sessionId: string): Promise {\n const entry = await this._store.get(encodeKey(roomId, senderKey, sessionId));\n if (entry) {\n entry.backup = BackupStatus.BackedUp;\n this._store.put(entry);\n }\n }\n\n async markAllAsNotBackedUp(): Promise {\n const backedUpKey = this._store.IDBKeyRange.only(BackupStatus.BackedUp);\n let count = 0;\n await this._store.index(\"byBackup\").iterateValues(backedUpKey, (val: InboundGroupSessionEntry, key: IDBValidKey, cur: IDBCursorWithValue) => {\n val.backup = BackupStatus.NotBackedUp;\n cur.update(val);\n count += 1;\n return false;\n });\n return count;\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nimport {Store} from \"../Store\";\n\ninterface OutboundSession {\n roomId: string;\n session: string;\n createdAt: number;\n}\n\nexport class OutboundGroupSessionStore {\n private _store: Store;\n\n constructor(store: Store) {\n this._store = store;\n }\n\n remove(roomId: string): void {\n this._store.delete(roomId);\n }\n\n get(roomId: string): Promise {\n return this._store.get(roomId);\n }\n\n set(session: OutboundSession): void {\n this._store.put(session);\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {MIN_UNICODE, MAX_UNICODE} from \"./common\";\nimport {Store} from \"../Store\";\n\nfunction encodeKey(roomId: string, sessionId: string, messageIndex: number | string): string {\n return `${roomId}|${sessionId}|${messageIndex}`;\n}\n\ninterface GroupSessionDecryption {\n eventId: string;\n timestamp: number;\n}\n\ntype GroupSessionEntry = GroupSessionDecryption & { key: string }\n\nexport class GroupSessionDecryptionStore {\n private _store: Store;\n\n constructor(store: Store) {\n this._store = store;\n }\n\n get(roomId: string, sessionId: string, messageIndex: number): Promise {\n return this._store.get(encodeKey(roomId, sessionId, messageIndex));\n }\n\n set(roomId: string, sessionId: string, messageIndex: number, decryption: GroupSessionDecryption): void {\n (decryption as GroupSessionEntry).key = encodeKey(roomId, sessionId, messageIndex);\n this._store.put(decryption as GroupSessionEntry);\n }\n \n removeAllForRoom(roomId: string): void {\n const range = this._store.IDBKeyRange.bound(\n encodeKey(roomId, MIN_UNICODE, MIN_UNICODE),\n encodeKey(roomId, MAX_UNICODE, MAX_UNICODE)\n );\n this._store.delete(range);\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nimport {MIN_UNICODE, MAX_UNICODE} from \"./common\";\nimport {Store} from \"../Store\";\n\nexport function encodeScopeTypeKey(scope: string, type: string): string {\n return `${scope}|${type}`;\n}\n\ninterface BaseOperation {\n id: string;\n scope: string;\n userIds: string[];\n}\n\ntype OperationType = { type: \"share_room_key\"; roomKeyMessage: RoomKeyMessage; }\n\ntype Operation = BaseOperation & OperationType\n\ntype OperationEntry = Operation & { scopeTypeKey: string; }\n\ninterface RoomKeyMessage {\n room_id: string;\n session_id: string;\n session_key: string;\n algorithm: string;\n chain_index: number;\n}\n\nexport class OperationStore {\n private _store: Store;\n\n constructor(store: Store) {\n this._store = store;\n }\n\n getAll(): Promise {\n return this._store.selectAll();\n }\n\n async getAllByTypeAndScope(type: string, scope: string): Promise {\n const key = encodeScopeTypeKey(scope, type);\n const results: Operation[] = [];\n await this._store.index(\"byScopeAndType\").iterateWhile(key, value => {\n if (value.scopeTypeKey !== key) {\n return false;\n }\n results.push(value);\n return true;\n });\n return results;\n }\n\n add(operation: Operation): void {\n (operation as OperationEntry).scopeTypeKey = encodeScopeTypeKey(operation.scope, operation.type);\n this._store.add(operation as OperationEntry);\n }\n\n update(operation: Operation): void {\n this._store.put(operation as OperationEntry);\n }\n\n remove(id: string): void {\n this._store.delete(id);\n }\n\n async removeAllForScope(scope: string): Promise {\n const range = this._store.IDBKeyRange.bound(\n encodeScopeTypeKey(scope, MIN_UNICODE),\n encodeScopeTypeKey(scope, MAX_UNICODE)\n );\n const index = this._store.index(\"byScopeAndType\");\n await index.iterateValues(range, (_, __, cur) => {\n cur.delete();\n return true;\n });\n return;\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nimport {Store} from \"../Store\";\nimport {Content} from \"../../types\";\n\nexport interface AccountDataEntry {\n type: string;\n content: Content;\n}\n\nexport class AccountDataStore {\n private _store: Store;\n\n constructor(store: Store) {\n this._store = store;\n }\n\n async get(type: string): Promise {\n return await this._store.get(type);\n }\n\n set(event: AccountDataEntry): void {\n this._store.put(event);\n }\n\n async getAll(): Promise> {\n return await this._store.selectAll();\n }\n}\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {Store} from \"../Store\";\nimport {StateEvent} from \"../../types\";\nimport {MIN_UNICODE, MAX_UNICODE} from \"./common\";\n\nfunction encodeKey(intent: string, roomId: string, callId: string) {\n return `${intent}|${roomId}|${callId}`;\n}\n\nfunction decodeStorageEntry(storageEntry: CallStorageEntry): CallEntry {\n const [intent, roomId, callId] = storageEntry.key.split(\"|\");\n return {intent, roomId, callId, timestamp: storageEntry.timestamp};\n}\n\nexport interface CallEntry {\n intent: string;\n roomId: string;\n callId: string;\n timestamp: number;\n}\n\ntype CallStorageEntry = {\n key: string;\n timestamp: number;\n}\n\nexport class CallStore {\n private _callStore: Store;\n\n constructor(idbStore: Store) {\n this._callStore = idbStore;\n }\n\n async getByIntent(intent: string): Promise {\n const range = this._callStore.IDBKeyRange.bound(\n encodeKey(intent, MIN_UNICODE, MIN_UNICODE),\n encodeKey(intent, MAX_UNICODE, MAX_UNICODE),\n true,\n true\n );\n const storageEntries = await this._callStore.selectAll(range);\n return storageEntries.map(e => decodeStorageEntry(e));\n }\n\n async getByIntentAndRoom(intent: string, roomId: string): Promise {\n const range = this._callStore.IDBKeyRange.bound(\n encodeKey(intent, roomId, MIN_UNICODE),\n encodeKey(intent, roomId, MAX_UNICODE),\n true,\n true\n );\n const storageEntries = await this._callStore.selectAll(range);\n return storageEntries.map(e => decodeStorageEntry(e));\n }\n\n add(entry: CallEntry) {\n const storageEntry: CallStorageEntry = {\n key: encodeKey(entry.intent, entry.roomId, entry.callId),\n timestamp: entry.timestamp\n };\n this._callStore.add(storageEntry);\n }\n\n remove(intent: string, roomId: string, callId: string): void {\n this._callStore.delete(encodeKey(intent, roomId, callId));\n }\n}\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nimport {Store} from \"../Store\";\n\ntype SharedSecret = any;\n\nexport class SharedSecretStore {\n private _store: Store;\n\n constructor(store: Store) {\n this._store = store;\n }\n\n get(name: string): Promise {\n return this._store.get(name);\n }\n\n set(name: string, secret: SharedSecret): void {\n secret.key = name;\n this._store.put(secret);\n }\n\n remove(name: string): void {\n this._store.delete(name);\n }\n\n deleteAllSecrets(): void {\n this._store.clear();\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {StoreNames} from \"../common\";\nimport {txnAsPromise} from \"./utils\";\nimport {StorageError} from \"../common\";\nimport {Store} from \"./Store\";\nimport {Storage} from \"./Storage\";\nimport {SessionStore} from \"./stores/SessionStore\";\nimport {RoomSummaryStore} from \"./stores/RoomSummaryStore\";\nimport {InviteStore} from \"./stores/InviteStore\";\nimport {TimelineEventStore} from \"./stores/TimelineEventStore\";\nimport {TimelineRelationStore} from \"./stores/TimelineRelationStore\";\nimport {RoomStateStore} from \"./stores/RoomStateStore\";\nimport {RoomMemberStore} from \"./stores/RoomMemberStore\";\nimport {TimelineFragmentStore} from \"./stores/TimelineFragmentStore\";\nimport {PendingEventStore} from \"./stores/PendingEventStore\";\nimport {UserIdentityStore} from \"./stores/UserIdentityStore\";\nimport {DeviceKeyStore} from \"./stores/DeviceKeyStore\";\nimport {CrossSigningKeyStore} from \"./stores/CrossSigningKeyStore\";\nimport {OlmSessionStore} from \"./stores/OlmSessionStore\";\nimport {InboundGroupSessionStore} from \"./stores/InboundGroupSessionStore\";\nimport {OutboundGroupSessionStore} from \"./stores/OutboundGroupSessionStore\";\nimport {GroupSessionDecryptionStore} from \"./stores/GroupSessionDecryptionStore\";\nimport {OperationStore} from \"./stores/OperationStore\";\nimport {AccountDataStore} from \"./stores/AccountDataStore\";\nimport {CallStore} from \"./stores/CallStore\";\nimport {SharedSecretStore} from \"./stores/SharedSecretStore\";\nimport type {ILogger, ILogItem} from \"../../../logging/types\";\n\nexport type IDBKey = IDBValidKey | IDBKeyRange;\n\nclass WriteErrorInfo {\n constructor(\n public readonly error: StorageError,\n public readonly refItem: ILogItem | undefined,\n public readonly operationName: string,\n public readonly keys: IDBKey[] | undefined,\n ) {}\n}\n\nexport class Transaction {\n private _txn: IDBTransaction;\n private _allowedStoreNames: StoreNames[];\n private _stores: { [storeName in StoreNames]?: any };\n private _storage: Storage;\n private _writeErrors: WriteErrorInfo[];\n\n constructor(txn: IDBTransaction, allowedStoreNames: StoreNames[], storage: Storage) {\n this._txn = txn;\n this._allowedStoreNames = allowedStoreNames;\n this._stores = {};\n this._storage = storage;\n this._writeErrors = [];\n }\n\n get idbFactory(): IDBFactory {\n return this._storage.idbFactory;\n }\n\n get IDBKeyRange(): typeof IDBKeyRange {\n return this._storage.IDBKeyRange;\n }\n\n get databaseName(): string {\n return this._storage.databaseName;\n }\n\n get logger(): ILogger {\n return this._storage.logger;\n }\n\n _idbStore(name: StoreNames): Store {\n if (!this._allowedStoreNames.includes(name)) {\n // more specific error? this is a bug, so maybe not ...\n throw new StorageError(`Invalid store for transaction: ${name}, only ${this._allowedStoreNames.join(\", \")} are allowed.`);\n }\n return new Store(this._txn.objectStore(name), this);\n }\n\n _store(name: StoreNames, mapStore: (idbStore: Store) => T): T {\n if (!this._stores[name]) {\n const idbStore = this._idbStore(name);\n this._stores[name] = mapStore(idbStore);\n }\n return this._stores[name];\n }\n\n get session(): SessionStore {\n return this._store(StoreNames.session, idbStore => new SessionStore(idbStore, this._storage.localStorage));\n }\n\n get roomSummary(): RoomSummaryStore {\n return this._store(StoreNames.roomSummary, idbStore => new RoomSummaryStore(idbStore));\n }\n \n get archivedRoomSummary(): RoomSummaryStore {\n return this._store(StoreNames.archivedRoomSummary, idbStore => new RoomSummaryStore(idbStore));\n }\n\n get invites(): InviteStore {\n return this._store(StoreNames.invites, idbStore => new InviteStore(idbStore));\n }\n\n get timelineFragments(): TimelineFragmentStore {\n return this._store(StoreNames.timelineFragments, idbStore => new TimelineFragmentStore(idbStore));\n }\n\n get timelineEvents(): TimelineEventStore {\n return this._store(StoreNames.timelineEvents, idbStore => new TimelineEventStore(idbStore));\n }\n\n get timelineRelations(): TimelineRelationStore {\n return this._store(StoreNames.timelineRelations, idbStore => new TimelineRelationStore(idbStore));\n }\n\n get roomState(): RoomStateStore {\n return this._store(StoreNames.roomState, idbStore => new RoomStateStore(idbStore));\n }\n\n get roomMembers(): RoomMemberStore {\n return this._store(StoreNames.roomMembers, idbStore => new RoomMemberStore(idbStore));\n }\n\n get pendingEvents(): PendingEventStore {\n return this._store(StoreNames.pendingEvents, idbStore => new PendingEventStore(idbStore));\n }\n\n get userIdentities(): UserIdentityStore {\n return this._store(StoreNames.userIdentities, idbStore => new UserIdentityStore(idbStore));\n }\n\n get deviceKeys(): DeviceKeyStore {\n return this._store(StoreNames.deviceKeys, idbStore => new DeviceKeyStore(idbStore));\n }\n \n get crossSigningKeys(): CrossSigningKeyStore {\n return this._store(StoreNames.crossSigningKeys, idbStore => new CrossSigningKeyStore(idbStore));\n }\n \n get olmSessions(): OlmSessionStore {\n return this._store(StoreNames.olmSessions, idbStore => new OlmSessionStore(idbStore));\n }\n \n get inboundGroupSessions(): InboundGroupSessionStore {\n return this._store(StoreNames.inboundGroupSessions, idbStore => new InboundGroupSessionStore(idbStore));\n }\n \n get outboundGroupSessions(): OutboundGroupSessionStore {\n return this._store(StoreNames.outboundGroupSessions, idbStore => new OutboundGroupSessionStore(idbStore));\n }\n\n get groupSessionDecryptions(): GroupSessionDecryptionStore {\n return this._store(StoreNames.groupSessionDecryptions, idbStore => new GroupSessionDecryptionStore(idbStore));\n }\n\n get operations(): OperationStore {\n return this._store(StoreNames.operations, idbStore => new OperationStore(idbStore));\n }\n\n get accountData(): AccountDataStore {\n return this._store(StoreNames.accountData, idbStore => new AccountDataStore(idbStore));\n }\n \n get calls(): CallStore {\n return this._store(StoreNames.calls, idbStore => new CallStore(idbStore));\n }\n\n get sharedSecrets(): SharedSecretStore {\n return this._store(StoreNames.sharedSecrets, idbStore => new SharedSecretStore(idbStore));\n }\n\n async complete(log?: ILogItem): Promise {\n try {\n await txnAsPromise(this._txn);\n } catch (err) {\n if (this._writeErrors.length) {\n this._logWriteErrors(log);\n throw this._writeErrors[0].error;\n }\n throw err;\n }\n }\n\n getCause(error: Error) {\n if (error instanceof StorageError) {\n if (error.errcode === \"AbortError\" && this._writeErrors.length) {\n return this._writeErrors[0].error;\n }\n }\n return error;\n }\n\n abort(log?: ILogItem): void {\n // TODO: should we wrap the exception in a StorageError?\n try {\n this._txn.abort();\n } catch (abortErr) {\n log?.set(\"couldNotAbortTxn\", true);\n }\n if (this._writeErrors.length) {\n this._logWriteErrors(log);\n }\n }\n\n addWriteError(error: StorageError, refItem: ILogItem | undefined, operationName: string, keys: IDBKey[] | undefined) {\n // don't log subsequent `AbortError`s\n if (error.errcode !== \"AbortError\" || this._writeErrors.length === 0) {\n this._writeErrors.push(new WriteErrorInfo(error, refItem, operationName, keys));\n }\n }\n\n private _logWriteErrors(parentItem: ILogItem | undefined) {\n const callback = errorGroupItem => {\n // we don't have context when there is no parentItem, so at least log stores\n if (!parentItem) {\n errorGroupItem.set(\"allowedStoreNames\", this._allowedStoreNames);\n }\n for (const info of this._writeErrors) {\n errorGroupItem.wrap({l: info.operationName, id: info.keys}, item => {\n if (info.refItem) {\n item.refDetached(info.refItem);\n }\n item.catch(info.error);\n });\n }\n };\n const label = `${this._writeErrors.length} storage write operation(s) failed`;\n if (parentItem) {\n parentItem.wrap(label, callback);\n } else {\n this.logger.run(label, callback);\n }\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {IDOMStorage} from \"./types\";\nimport {Transaction} from \"./Transaction\";\nimport { STORE_NAMES, StoreNames, StorageError } from \"../common\";\nimport { reqAsPromise } from \"./utils\";\nimport { ILogger } from \"../../../logging/types\";\n\nconst WEBKITEARLYCLOSETXNBUG_BOGUS_KEY = \"782rh281re38-boguskey\";\n\nexport class Storage {\n private _db: IDBDatabase;\n private _hasWebkitEarlyCloseTxnBug: boolean;\n\n readonly logger: ILogger;\n readonly idbFactory: IDBFactory\n readonly IDBKeyRange: typeof IDBKeyRange;\n readonly storeNames: typeof StoreNames;\n readonly localStorage: IDOMStorage;\n\n constructor(idbDatabase: IDBDatabase, idbFactory: IDBFactory, _IDBKeyRange: typeof IDBKeyRange, hasWebkitEarlyCloseTxnBug: boolean, localStorage: IDOMStorage, logger: ILogger) {\n this._db = idbDatabase;\n this.idbFactory = idbFactory;\n this.IDBKeyRange = _IDBKeyRange;\n this._hasWebkitEarlyCloseTxnBug = hasWebkitEarlyCloseTxnBug;\n this.storeNames = StoreNames;\n this.localStorage = localStorage;\n this.logger = logger;\n }\n\n _validateStoreNames(storeNames: StoreNames[]): void {\n const idx = storeNames.findIndex(name => !STORE_NAMES.includes(name));\n if (idx !== -1) {\n throw new StorageError(`Tried top, a transaction unknown store ${storeNames[idx]}`);\n }\n }\n\n async readTxn(storeNames: StoreNames[]): Promise {\n this._validateStoreNames(storeNames);\n try {\n const txn = this._db.transaction(storeNames, \"readonly\");\n // https://bugs.webkit.org/show_bug.cgi?id=222746 workaround,\n // await a bogus idb request on the new txn so it doesn't close early if we await a microtask first\n if (this._hasWebkitEarlyCloseTxnBug) {\n await reqAsPromise(txn.objectStore(storeNames[0]).get(WEBKITEARLYCLOSETXNBUG_BOGUS_KEY));\n }\n return new Transaction(txn, storeNames, this);\n } catch(err) {\n throw new StorageError(\"readTxn failed\", err);\n }\n }\n\n async readWriteTxn(storeNames: StoreNames[]): Promise {\n this._validateStoreNames(storeNames);\n try {\n const txn = this._db.transaction(storeNames, \"readwrite\");\n // https://bugs.webkit.org/show_bug.cgi?id=222746 workaround,\n // await a bogus idb request on the new txn so it doesn't close early if we await a microtask first\n if (this._hasWebkitEarlyCloseTxnBug) {\n await reqAsPromise(txn.objectStore(storeNames[0]).get(WEBKITEARLYCLOSETXNBUG_BOGUS_KEY));\n }\n return new Transaction(txn, storeNames, this);\n } catch(err) {\n throw new StorageError(\"readWriteTxn failed\", err);\n }\n }\n\n close(): void {\n this._db.close();\n }\n\n get databaseName(): string {\n return this._db.name;\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { iterateCursor, NOT_DONE, txnAsPromise } from \"./utils\";\nimport { STORE_NAMES, StoreNames } from \"../common\";\n\nexport type Export = { [storeName in StoreNames] : any[] }\n\nexport async function exportSession(db: IDBDatabase): Promise {\n const txn = db.transaction(STORE_NAMES, \"readonly\");\n const data = {};\n await Promise.all(STORE_NAMES.map(async name => {\n const results: any[] = data[name] = []; // initialize in deterministic order\n const store = txn.objectStore(name);\n await iterateCursor(store.openCursor(), (value) => {\n results.push(value);\n return NOT_DONE;\n });\n }));\n return data as Export;\n}\n\nexport async function importSession(db: IDBDatabase, data: Export): Promise {\n const txn = db.transaction(STORE_NAMES, \"readwrite\");\n for (const name of STORE_NAMES) {\n const store = txn.objectStore(name);\n for (const value of data[name]) {\n store.add(value);\n }\n }\n await txnAsPromise(txn);\n}\n","/*\nCopyright 2016-2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { PkSigning } from \"@matrix-org/olm\";\nimport anotherjson from \"another-json\";\nimport type {SignedValue} from \"../e2ee/common\";\nimport type * as OlmNamespace from \"@matrix-org/olm\";\ntype Olm = typeof OlmNamespace;\n\n// from matrix-js-sdk\n/**\n * Sign a JSON object using public key cryptography\n * @param obj - Object to sign. The object will be modified to include\n * the new signature\n * @param key - the signing object or the private key\n * seed\n * @param userId - The user ID who owns the signing key\n * @param pubKey - The public key (ignored if key is a seed)\n * @returns the signature for the object\n */\n export function pkSign(olmUtil: Olm, obj: SignedValue, key: Uint8Array | PkSigning, userId: string, pubKey: string): string {\n let createdKey = false;\n if (key instanceof Uint8Array) {\n const keyObj = new olmUtil.PkSigning();\n pubKey = keyObj.init_with_seed(key);\n key = keyObj;\n createdKey = true;\n }\n const sigs = obj.signatures || {};\n delete obj.signatures;\n const unsigned = obj.unsigned;\n if (obj.unsigned) delete obj.unsigned;\n try {\n const mysigs = sigs[userId] || {};\n sigs[userId] = mysigs;\n\n return (mysigs[\"ed25519:\" + pubKey] = key.sign(anotherjson.stringify(obj)));\n } finally {\n obj.signatures = sigs;\n if (unsigned) obj.unsigned = unsigned;\n if (createdKey) {\n key.free();\n }\n }\n}\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nimport type {ILogItem} from \"../../../../logging/types\";\nimport type {Account} from \"../../../e2ee/Account.js\";\nimport type {DeviceTracker} from \"../../../e2ee/DeviceTracker.js\";\nimport {IChannel} from \"../channel/IChannel\";\nimport {HomeServerApi} from \"../../../net/HomeServerApi\";\nimport {SASProgressEvents} from \"../types\";\nimport {EventEmitter} from \"../../../../utils/EventEmitter\";\n\nexport type Options = {\n ourUserId: string;\n ourUserDeviceId: string;\n otherUserId: string;\n log: ILogItem;\n olmSas: Olm.SAS;\n olmUtil: Olm.Utility;\n channel: IChannel;\n e2eeAccount: Account;\n deviceTracker: DeviceTracker;\n hsApi: HomeServerApi;\n eventEmitter: EventEmitter\n}\n\nexport abstract class BaseSASVerificationStage {\n protected ourUserId: string;\n protected ourUserDeviceId: string;\n protected otherUserId: string;\n protected log: ILogItem;\n protected olmSAS: Olm.SAS;\n protected olmUtil: Olm.Utility;\n protected _nextStage: BaseSASVerificationStage;\n protected channel: IChannel;\n protected options: Options;\n protected e2eeAccount: Account;\n protected deviceTracker: DeviceTracker;\n protected hsApi: HomeServerApi;\n protected eventEmitter: EventEmitter;\n\n constructor(options: Options) {\n this.options = options;\n this.ourUserId = options.ourUserId;\n this.ourUserDeviceId = options.ourUserDeviceId\n this.otherUserId = options.otherUserId;\n this.log = options.log;\n this.olmSAS = options.olmSas;\n this.olmUtil = options.olmUtil;\n this.channel = options.channel;\n this.e2eeAccount = options.e2eeAccount;\n this.deviceTracker = options.deviceTracker;\n this.hsApi = options.hsApi;\n this.eventEmitter = options.eventEmitter;\n }\n\n setNextStage(stage: BaseSASVerificationStage) {\n this._nextStage = stage;\n }\n\n get nextStage(): BaseSASVerificationStage {\n return this._nextStage;\n }\n\n get otherUserDeviceId(): string {\n const id = this.channel.otherUserDeviceId;\n if (!id) {\n throw new Error(\"Accessed otherUserDeviceId before it was set in channel!\");\n }\n return id;\n }\n\n abstract completeStage(): Promise;\n}\n","export const enum VerificationEventType {\n Request = \"m.key.verification.request\",\n Ready = \"m.key.verification.ready\",\n Start = \"m.key.verification.start\",\n Accept = \"m.key.verification.accept\",\n Key = \"m.key.verification.key\",\n Cancel = \"m.key.verification.cancel\",\n Mac = \"m.key.verification.mac\",\n Done = \"m.key.verification.done\",\n}\n\nexport const enum CancelReason {\n UserCancelled = \"m.user\",\n TimedOut = \"m.timeout\",\n UnknownTransaction = \"m.unknown_transaction\",\n UnknownMethod = \"m.unknown_method\",\n UnexpectedMessage = \"m.unexpected_message\",\n KeyMismatch = \"m.key_mismatch\",\n UserMismatch = \"m.user_mismatch\",\n InvalidMessage = \"m.invalid_message\",\n OtherDeviceAccepted = \"m.accepted\",\n // SAS specific\n MismatchedCommitment = \"m.mismatched_commitment\",\n MismatchedSAS = \"m.mismatched_sas\",\n}\n","// From element-web\nexport type KeyAgreement = \"curve25519-hkdf-sha256\" | \"curve25519\";\nexport type MacMethod = \"hkdf-hmac-sha256.v2\" | \"org.matrix.msc3783.hkdf-hmac-sha256\" | \"hkdf-hmac-sha256\" | \"hmac-sha256\";\n\nexport const KEY_AGREEMENT_LIST: KeyAgreement[] = [\"curve25519-hkdf-sha256\", \"curve25519\"];\nexport const HASHES_LIST = [\"sha256\"];\nexport const MAC_LIST: MacMethod[] = [\n \"hkdf-hmac-sha256.v2\",\n \"org.matrix.msc3783.hkdf-hmac-sha256\",\n \"hkdf-hmac-sha256\",\n \"hmac-sha256\",\n];\nexport const SAS_LIST = [\"decimal\", \"emoji\"];\nexport const SAS_SET = new Set(SAS_LIST);\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n// Copied from element-web\n\ntype EmojiMapping = [emoji: string, name: string];\n\nconst emojiMapping: EmojiMapping[] = [\n [\"🐶\", \"dog\"], // 0\n [\"🐱\", \"cat\"], // 1\n [\"🦁\", \"lion\"], // 2\n [\"🐎\", \"horse\"], // 3\n [\"🦄\", \"unicorn\"], // 4\n [\"🐷\", \"pig\"], // 5\n [\"🐘\", \"elephant\"], // 6\n [\"🐰\", \"rabbit\"], // 7\n [\"🐼\", \"panda\"], // 8\n [\"🐓\", \"rooster\"], // 9\n [\"🐧\", \"penguin\"], // 10\n [\"🐢\", \"turtle\"], // 11\n [\"🐟\", \"fish\"], // 12\n [\"🐙\", \"octopus\"], // 13\n [\"🦋\", \"butterfly\"], // 14\n [\"🌷\", \"flower\"], // 15\n [\"🌳\", \"tree\"], // 16\n [\"🌵\", \"cactus\"], // 17\n [\"🍄\", \"mushroom\"], // 18\n [\"🌏\", \"globe\"], // 19\n [\"🌙\", \"moon\"], // 20\n [\"☁️\", \"cloud\"], // 21\n [\"🔥\", \"fire\"], // 22\n [\"🍌\", \"banana\"], // 23\n [\"🍎\", \"apple\"], // 24\n [\"🍓\", \"strawberry\"], // 25\n [\"🌽\", \"corn\"], // 26\n [\"🍕\", \"pizza\"], // 27\n [\"🎂\", \"cake\"], // 28\n [\"❤️\", \"heart\"], // 29\n [\"🙂\", \"smiley\"], // 30\n [\"🤖\", \"robot\"], // 31\n [\"🎩\", \"hat\"], // 32\n [\"👓\", \"glasses\"], // 33\n [\"🔧\", \"spanner\"], // 34\n [\"🎅\", \"santa\"], // 35\n [\"👍\", \"thumbs up\"], // 36\n [\"☂️\", \"umbrella\"], // 37\n [\"⌛\", \"hourglass\"], // 38\n [\"⏰\", \"clock\"], // 39\n [\"🎁\", \"gift\"], // 40\n [\"💡\", \"light bulb\"], // 41\n [\"📕\", \"book\"], // 42\n [\"✏️\", \"pencil\"], // 43\n [\"📎\", \"paperclip\"], // 44\n [\"✂️\", \"scissors\"], // 45\n [\"🔒\", \"lock\"], // 46\n [\"🔑\", \"key\"], // 47\n [\"🔨\", \"hammer\"], // 48\n [\"☎️\", \"telephone\"], // 49\n [\"🏁\", \"flag\"], // 50\n [\"🚂\", \"train\"], // 51\n [\"🚲\", \"bicycle\"], // 52\n [\"✈️\", \"aeroplane\"], // 53\n [\"🚀\", \"rocket\"], // 54\n [\"🏆\", \"trophy\"], // 55\n [\"⚽\", \"ball\"], // 56\n [\"🎸\", \"guitar\"], // 57\n [\"🎺\", \"trumpet\"], // 58\n [\"🔔\", \"bell\"], // 59\n [\"⚓️\", \"anchor\"], // 60\n [\"🎧\", \"headphones\"], // 61\n [\"📁\", \"folder\"], // 62\n [\"📌\", \"pin\"], // 63\n];\n\nexport function generateEmojiSas(sasBytes: number[]): EmojiMapping[] {\n const emojis = [\n // just like base64 encoding\n sasBytes[0] >> 2,\n ((sasBytes[0] & 0x3) << 4) | (sasBytes[1] >> 4),\n ((sasBytes[1] & 0xf) << 2) | (sasBytes[2] >> 6),\n sasBytes[2] & 0x3f,\n sasBytes[3] >> 2,\n ((sasBytes[3] & 0x3) << 4) | (sasBytes[4] >> 4),\n ((sasBytes[4] & 0xf) << 2) | (sasBytes[5] >> 6),\n ];\n return emojis.map((num) => emojiMapping[num]);\n}\n\n/**\n * Implementation of decimal encoding of SAS as per:\n * https://spec.matrix.org/v1.4/client-server-api/#sas-method-decimal\n * @param sasBytes - the five bytes generated by HKDF\n * @returns the derived three numbers between 1000 and 9191 inclusive\n */\nexport function generateDecimalSas(sasBytes: number[]): [number, number, number] {\n /*\n * +--------+--------+--------+--------+--------+\n * | Byte 0 | Byte 1 | Byte 2 | Byte 3 | Byte 4 |\n * +--------+--------+--------+--------+--------+\n * bits: 87654321 87654321 87654321 87654321 87654321\n * \\____________/\\_____________/\\____________/\n * 1st number 2nd number 3rd number\n */\n return [\n ((sasBytes[0] << 5) | (sasBytes[1] >> 3)) + 1000,\n (((sasBytes[1] & 0x7) << 10) | (sasBytes[2] << 2) | (sasBytes[3] >> 6)) + 1000,\n (((sasBytes[3] & 0x3f) << 7) | (sasBytes[4] >> 1)) + 1000,\n ];\n}\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nimport type {ILogItem} from \"../../../logging/types\";\nimport type {MacMethod} from \"./stages/constants\";\n\nconst macMethods: Record = {\n \"hkdf-hmac-sha256\": \"calculate_mac\",\n \"org.matrix.msc3783.hkdf-hmac-sha256\": \"calculate_mac_fixed_base64\",\n \"hkdf-hmac-sha256.v2\": \"calculate_mac_fixed_base64\",\n \"hmac-sha256\": \"calculate_mac_long_kdf\",\n};\n\nexport function createCalculateMAC(olmSAS: Olm.SAS, method: MacMethod) {\n return function (input: string, info: string, log: ILogItem): string {\n return log.wrap({ l: \"calculate MAC\", method}, () => {\n const mac = olmSAS[macMethods[method]](input, info);\n return mac;\n });\n };\n}\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nimport {BaseSASVerificationStage} from \"./BaseSASVerificationStage\";\nimport {VerificationEventType} from \"../channel/types\";\n\nexport class SendDoneStage extends BaseSASVerificationStage {\n async completeStage() {\n await this.log.wrap(\"SendDoneStage.completeStage\", async (log) => {\n await this.channel.send(VerificationEventType.Done, {}, log);\n await this.channel.waitForEvent(VerificationEventType.Done);\n this.eventEmitter.emit(\"VerificationCompleted\", this.otherUserDeviceId);\n });\n }\n}\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nimport {BaseSASVerificationStage} from \"./BaseSASVerificationStage\";\nimport {ILogItem} from \"../../../../logging/types\";\nimport {CancelReason, VerificationEventType} from \"../channel/types\";\nimport {createCalculateMAC} from \"../mac\";\nimport {SendDoneStage} from \"./SendDoneStage\";\nimport {KeyUsage, getKeyEd25519Key} from \"../../CrossSigning\";\nimport {getDeviceEd25519Key} from \"../../../e2ee/common\";\n\nexport type KeyVerifier = (keyId: string, publicKey: string, keyInfo: string) => boolean;\n\nexport class VerifyMacStage extends BaseSASVerificationStage {\n async completeStage() {\n await this.log.wrap(\"VerifyMacStage.completeStage\", async (log) => {\n const acceptMessage = this.channel.acceptMessage.content;\n const macMethod = acceptMessage.message_authentication_code;\n const calculateMAC = createCalculateMAC(this.olmSAS, macMethod);\n await this.checkMAC(calculateMAC, log);\n this.setNextStage(new SendDoneStage(this.options));\n });\n }\n\n private async checkMAC(calculateMAC: (input: string, info: string, log: ILogItem) => string, log: ILogItem): Promise {\n const {content} = this.channel.getReceivedMessage(VerificationEventType.Mac);\n const baseInfo =\n \"MATRIX_KEY_VERIFICATION_MAC\" +\n this.otherUserId +\n this.otherUserDeviceId +\n this.ourUserId +\n this.ourUserDeviceId +\n this.channel.id;\n\n const calculatedMAC = calculateMAC(Object.keys(content.mac).sort().join(\",\"), baseInfo + \"KEY_IDS\", log);\n if (content.keys !== calculatedMAC) {\n log.log({ l: \"MAC verification failed for keys field\", keys: content.keys, calculated: calculatedMAC });\n this.channel.cancelVerification(CancelReason.KeyMismatch);\n return;\n }\n\n await this.verifyKeys(content.mac, (keyId, key, keyInfo) => {\n const calculatedMAC = calculateMAC(key, baseInfo + keyId, log);\n const matches = keyInfo === calculatedMAC;\n if (!matches) {\n log.log({ l: \"Mac verification failed for key\", keyMac: keyInfo, calculatedMAC, keyId, key });\n this.channel.cancelVerification(CancelReason.KeyMismatch);\n }\n return matches;\n }, log);\n }\n\n protected async verifyKeys(keys: Record, verifier: KeyVerifier, log: ILogItem): Promise {\n const userId = this.otherUserId;\n for (const [keyId, keyInfo] of Object.entries(keys)) {\n const deviceIdOrMSK = keyId.split(\":\", 2)[1];\n const device = await this.deviceTracker.deviceForId(userId, deviceIdOrMSK, this.hsApi, log);\n if (device) {\n if (!verifier(keyId, getDeviceEd25519Key(device), keyInfo)) {\n throw new Error(`MAC verification failed for key ${keyInfo}`);\n }\n } else {\n // If we were not able to find the device, then deviceIdOrMSK is actually the MSK!\n const key = await this.deviceTracker.getCrossSigningKeyForUser(userId, KeyUsage.Master, this.hsApi, log);\n if (!key) {\n log.log({ l: \"Fetching msk failed\", userId });\n throw new Error(\"Fetching MSK for user failed!\");\n }\n const masterKey = getKeyEd25519Key(key);\n if(!(masterKey && verifier(keyId, masterKey, keyInfo))) {\n throw new Error(`MAC verification failed for key ${keyInfo}`);\n }\n }\n }\n }\n}\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nimport {BaseSASVerificationStage} from \"./BaseSASVerificationStage\";\nimport {ILogItem} from \"../../../../logging/types\";\nimport {VerificationEventType} from \"../channel/types\";\nimport {createCalculateMAC} from \"../mac\";\nimport {VerifyMacStage} from \"./VerifyMacStage\";\nimport {getKeyEd25519Key, KeyUsage} from \"../../CrossSigning\";\n\nexport class SendMacStage extends BaseSASVerificationStage {\n async completeStage() {\n await this.log.wrap(\"SendMacStage.completeStage\", async (log) => {\n const acceptMessage = this.channel.acceptMessage.content;\n const macMethod = acceptMessage.message_authentication_code;\n const calculateMAC = createCalculateMAC(this.olmSAS, macMethod);\n await this.sendMAC(calculateMAC, log);\n await this.channel.waitForEvent(VerificationEventType.Mac);\n this.setNextStage(new VerifyMacStage(this.options));\n });\n }\n\n private async sendMAC(calculateMAC: (input: string, info: string, log: ILogItem) => string, log: ILogItem): Promise {\n const mac: Record = {};\n const keyList: string[] = [];\n const baseInfo =\n \"MATRIX_KEY_VERIFICATION_MAC\" +\n this.ourUserId +\n this.ourUserDeviceId +\n this.otherUserId +\n this.otherUserDeviceId +\n this.channel.id;\n\n const deviceKeyId = `ed25519:${this.ourUserDeviceId}`;\n const deviceKeys = this.e2eeAccount.getUnsignedDeviceKey();\n mac[deviceKeyId] = calculateMAC(deviceKeys.keys[deviceKeyId], baseInfo + deviceKeyId, log);\n keyList.push(deviceKeyId);\n\n const key = await this.deviceTracker.getCrossSigningKeyForUser(this.ourUserId, KeyUsage.Master, this.hsApi, log);\n if (!key) {\n log.log({ l: \"Fetching msk failed\", userId: this.ourUserId });\n throw new Error(\"Fetching MSK for user failed!\");\n }\n const crossSigningKey = getKeyEd25519Key(key);\n if (crossSigningKey) {\n const crossSigningKeyId = `ed25519:${crossSigningKey}`;\n mac[crossSigningKeyId] = calculateMAC(crossSigningKey, baseInfo + crossSigningKeyId, log);\n keyList.push(crossSigningKeyId);\n }\n\n const keys = calculateMAC(keyList.sort().join(\",\"), baseInfo + \"KEY_IDS\", log);\n await this.channel.send(VerificationEventType.Mac, { mac, keys }, log);\n }\n}\n\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexport class VerificationCancelledError extends Error {\n get name(): string {\n return \"VerificationCancelledError\";\n }\n\n get message(): string {\n return \"Verification is cancelled!\";\n }\n}\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nimport anotherjson from \"another-json\";\nimport {BaseSASVerificationStage} from \"./BaseSASVerificationStage\";\nimport {CancelReason, VerificationEventType} from \"../channel/types\";\nimport {generateEmojiSas} from \"../generator\";\nimport {ILogItem} from \"../../../../logging/types\";\nimport {SendMacStage} from \"./SendMacStage\";\nimport {VerificationCancelledError} from \"../VerificationCancelledError\";\n\ntype SASUserInfo = {\n userId: string;\n deviceId: string;\n publicKey: string;\n};\n\ntype SASUserInfoCollection = {\n our: SASUserInfo;\n their: SASUserInfo;\n id: string;\n initiatedByMe: boolean;\n};\n\nconst calculateKeyAgreement = {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n \"curve25519-hkdf-sha256\": function (sas: SASUserInfoCollection, olmSAS: Olm.SAS, bytes: number): Uint8Array {\n const ourInfo = `${sas.our.userId}|${sas.our.deviceId}|` + `${sas.our.publicKey}|`;\n const theirInfo = `${sas.their.userId}|${sas.their.deviceId}|${sas.their.publicKey}|`;\n const sasInfo =\n \"MATRIX_KEY_VERIFICATION_SAS|\" +\n (sas.initiatedByMe ? ourInfo + theirInfo : theirInfo + ourInfo) + sas.id;\n return olmSAS.generate_bytes(sasInfo, bytes);\n },\n \"curve25519\": function (sas: SASUserInfoCollection, olmSAS: Olm.SAS, bytes: number): Uint8Array {\n const ourInfo = `${sas.our.userId}${sas.our.deviceId}`;\n const theirInfo = `${sas.their.userId}${sas.their.deviceId}`;\n const sasInfo =\n \"MATRIX_KEY_VERIFICATION_SAS\" +\n (sas.initiatedByMe ? ourInfo + theirInfo : theirInfo + ourInfo) + sas.id;\n return olmSAS.generate_bytes(sasInfo, bytes);\n },\n} as const;\n\nexport class CalculateSASStage extends BaseSASVerificationStage {\n private resolve: () => void;\n private reject: (error: VerificationCancelledError) => void;\n\n public emoji: ReturnType;\n\n async completeStage() {\n await this.log.wrap(\"CalculateSASStage.completeStage\", async (log) => {\n // 1. Check the hash commitment\n if (this.channel.initiatedByUs && !await this.verifyHashCommitment(log)) {\n return;\n }\n // 2. Calculate the SAS\n const emojiConfirmationPromise: Promise = new Promise((res, rej) => {\n this.resolve = res;\n this.reject = rej;\n });\n this.olmSAS.set_their_key(this.theirKey);\n const sasBytes = this.generateSASBytes();\n this.emoji = generateEmojiSas(Array.from(sasBytes));\n this.eventEmitter.emit(\"EmojiGenerated\", this);\n const cancellationReceived = this.channel.waitForEvent(VerificationEventType.Cancel);\n // Don't get stuck on waiting for user input!\n await Promise.race([emojiConfirmationPromise, cancellationReceived]);\n this.setNextStage(new SendMacStage(this.options));\n });\n }\n\n async verifyHashCommitment(log: ILogItem) {\n return await log.wrap(\"CalculateSASStage.verifyHashCommitment\", async () => {\n const acceptMessage = this.channel.getReceivedMessage(VerificationEventType.Accept).content;\n const keyMessage = this.channel.getReceivedMessage(VerificationEventType.Key).content;\n const commitmentStr = keyMessage.key + anotherjson.stringify(this.channel.startMessage.content);\n const receivedCommitment = acceptMessage.commitment;\n const hash = this.olmUtil.sha256(commitmentStr);\n if (hash !== receivedCommitment) {\n log.log({l: \"Commitment mismatched!\", received: receivedCommitment, calculated: hash});\n await this.channel.cancelVerification(CancelReason.MismatchedCommitment);\n return false;\n }\n return true;\n });\n }\n\n private generateSASBytes(): Uint8Array {\n const keyAgreement = this.channel.acceptMessage.content.key_agreement_protocol;\n const otherUserDeviceId = this.otherUserDeviceId;\n const sasBytes = calculateKeyAgreement[keyAgreement]({\n our: {\n userId: this.ourUserId,\n deviceId: this.ourUserDeviceId,\n publicKey: this.olmSAS.get_pubkey(),\n },\n their: {\n userId: this.otherUserId,\n deviceId: otherUserDeviceId,\n publicKey: this.theirKey,\n },\n id: this.channel.id,\n initiatedByMe: this.channel.initiatedByUs,\n }, this.olmSAS, 6);\n return sasBytes;\n }\n\n async setEmojiMatch(match: boolean) {\n if (match) {\n this.resolve();\n }\n else {\n await this.channel.cancelVerification(CancelReason.MismatchedSAS);\n this.reject(new VerificationCancelledError());\n }\n }\n\n get theirKey(): string {\n const {content} = this.channel.getReceivedMessage(VerificationEventType.Key);\n return content.key;\n }\n}\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nimport {BaseSASVerificationStage} from \"./BaseSASVerificationStage\";\nimport {VerificationEventType} from \"../channel/types\";\nimport {CalculateSASStage} from \"./CalculateSASStage\";\n\nexport class SendKeyStage extends BaseSASVerificationStage {\n async completeStage() {\n await this.log.wrap(\"SendKeyStage.completeStage\", async (log) => {\n const ourSasKey = this.olmSAS.get_pubkey();\n await this.channel.send(VerificationEventType.Key, {key: ourSasKey}, log);\n /**\n * We may have already got the key in SendAcceptVerificationStage,\n * in which case waitForEvent will return a resolved promise with\n * that content. Otherwise, waitForEvent will actually wait for the\n * key message.\n */\n await this.channel.waitForEvent(VerificationEventType.Key);\n this.setNextStage(new CalculateSASStage(this.options));\n });\n }\n}\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nimport anotherjson from \"another-json\";\nimport {BaseSASVerificationStage} from \"./BaseSASVerificationStage\";\nimport {HASHES_LIST, MAC_LIST, SAS_SET, KEY_AGREEMENT_LIST} from \"./constants\";\nimport {CancelReason, VerificationEventType} from \"../channel/types\";\nimport {SendKeyStage} from \"./SendKeyStage\";\n\n// from element-web\nfunction intersection(anArray: T[], aSet: Set): T[] {\n return Array.isArray(anArray) ? anArray.filter((x) => aSet.has(x)) : [];\n}\n\nexport class SendAcceptVerificationStage extends BaseSASVerificationStage {\n async completeStage() {\n await this.log.wrap(\"SendAcceptVerificationStage.completeStage\", async (log) => {\n const {content: startMessage} = this.channel.startMessage;\n const keyAgreement = intersection(KEY_AGREEMENT_LIST, new Set(startMessage.key_agreement_protocols))[0];\n const hashMethod = intersection(HASHES_LIST, new Set(startMessage.hashes))[0];\n const macMethod = intersection(MAC_LIST, new Set(startMessage.message_authentication_codes))[0];\n const sasMethod = intersection(startMessage.short_authentication_string, SAS_SET);\n if (!keyAgreement || !hashMethod || !macMethod || !sasMethod.length) {\n await this.channel.cancelVerification(CancelReason.UnknownMethod);\n return;\n }\n const ourPubKey = this.olmSAS.get_pubkey();\n const commitmentStr = ourPubKey + anotherjson.stringify(startMessage);\n const content = {\n key_agreement_protocol: keyAgreement,\n hash: hashMethod,\n message_authentication_code: macMethod,\n short_authentication_string: sasMethod,\n commitment: this.olmUtil.sha256(commitmentStr),\n };\n await this.channel.send(VerificationEventType.Accept, content, log);\n await this.channel.waitForEvent(VerificationEventType.Key);\n this.setNextStage(new SendKeyStage(this.options));\n });\n }\n}\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nimport {BaseSASVerificationStage} from \"./BaseSASVerificationStage\";\nimport {CancelReason, VerificationEventType} from \"../channel/types\";\nimport {KEY_AGREEMENT_LIST, HASHES_LIST, MAC_LIST, SAS_LIST} from \"./constants\";\nimport {SendAcceptVerificationStage} from \"./SendAcceptVerificationStage\";\nimport {SendKeyStage} from \"./SendKeyStage\";\nimport {Deferred} from \"../../../../utils/Deferred\";\nimport type {ILogItem} from \"../../../../logging/types\";\n\nexport class SelectVerificationMethodStage extends BaseSASVerificationStage {\n private hasSentStartMessage?: Promise;\n private allowSelection = true;\n public otherDeviceName: string;\n\n async completeStage() {\n await this.log.wrap(\"SelectVerificationMethodStage.completeStage\", async (log) => {\n await this.findDeviceName(log);\n this.eventEmitter.emit(\"SelectVerificationStage\", this);\n const startMessage = this.channel.waitForEvent(VerificationEventType.Start);\n const acceptMessage = this.channel.waitForEvent(VerificationEventType.Accept);\n const { content } = await Promise.race([startMessage, acceptMessage]);\n if (content.method) {\n // We received the start message \n this.allowSelection = false;\n if (this.hasSentStartMessage) {\n await this.hasSentStartMessage;\n await this.resolveStartConflict(log);\n }\n else {\n this.channel.setStartMessage(this.channel.getReceivedMessage(VerificationEventType.Start));\n }\n }\n else {\n // We received the accept message\n this.channel.setStartMessage(this.channel.getSentMessage(VerificationEventType.Start));\n }\n if (this.channel.initiatedByUs) {\n await acceptMessage;\n this.setNextStage(new SendKeyStage(this.options));\n }\n else {\n // We need to send the accept message next\n this.setNextStage(new SendAcceptVerificationStage(this.options));\n }\n });\n }\n\n private async resolveStartConflict(log: ILogItem) {\n await log.wrap(\"resolveStartConflict\", async () => {\n const receivedStartMessage = this.channel.getReceivedMessage(VerificationEventType.Start);\n const sentStartMessage = this.channel.getSentMessage(VerificationEventType.Start);\n if (receivedStartMessage.content.method !== sentStartMessage.content.method) {\n /**\n * If the two m.key.verification.start messages do not specify the same verification method,\n * then the verification should be cancelled with a code of m.unexpected_message.\n */\n log.log({\n l: \"Methods don't match for the start messages\",\n received: receivedStartMessage.content.method,\n sent: sentStartMessage.content.method,\n });\n await this.channel.cancelVerification(CancelReason.UnexpectedMessage);\n return;\n }\n // In the case of conflict, the lexicographically smaller id wins \n const our = this.ourUserId === this.otherUserId ? this.ourUserDeviceId : this.ourUserId;\n const their = this.ourUserId === this.otherUserId ? this.otherUserDeviceId : this.otherUserId;\n const startMessageToUse = our < their ? sentStartMessage : receivedStartMessage;\n log.log({ l: \"Start message resolved\", message: startMessageToUse, our, their })\n this.channel.setStartMessage(startMessageToUse);\n });\n }\n\n private async findDeviceName(log: ILogItem) {\n await log.wrap(\"SelectVerificationMethodStage.findDeviceName\", async () => {\n const device = await this.options.deviceTracker.deviceForId(this.otherUserId, this.otherUserDeviceId, this.options.hsApi, log);\n if (!device) {\n log.log({ l: \"Cannot find device\", userId: this.otherUserId, deviceId: this.otherUserDeviceId });\n throw new Error(\"Cannot find device\");\n }\n this.otherDeviceName = device.unsigned.device_display_name ?? device.device_id;\n })\n }\n\n async selectEmojiMethod(log: ILogItem) {\n if (!this.allowSelection) { return; } \n const deferred = new Deferred();\n this.hasSentStartMessage = deferred.promise;\n const content = {\n method: \"m.sas.v1\",\n from_device: this.ourUserDeviceId,\n key_agreement_protocols: KEY_AGREEMENT_LIST,\n hashes: HASHES_LIST,\n message_authentication_codes: MAC_LIST,\n short_authentication_string: SAS_LIST,\n };\n /**\n * Once we send the start event, we should eventually receive the accept message.\n * This will cause the Promise.race in completeStage() to resolve and we'll move\n * to the next stage (where we will send the key).\n */\n await this.channel.send(VerificationEventType.Start, content, log);\n deferred.resolve();\n }\n}\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nimport {BaseSASVerificationStage} from \"./BaseSASVerificationStage\";\nimport {SelectVerificationMethodStage} from \"./SelectVerificationMethodStage\";\nimport {VerificationEventType} from \"../channel/types\";\n\nexport class SendRequestVerificationStage extends BaseSASVerificationStage {\n async completeStage() {\n await this.log.wrap(\"SendRequestVerificationStage.completeStage\", async (log) => {\n const content = {\n \"from_device\": this.ourUserDeviceId,\n \"methods\": [\"m.sas.v1\"],\n };\n await this.channel.send(VerificationEventType.Request, content, log);\n this.setNextStage(new SelectVerificationMethodStage(this.options));\n await this.channel.waitForEvent(VerificationEventType.Ready);\n });\n }\n}\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nimport {BaseSASVerificationStage} from \"./BaseSASVerificationStage\";\nimport {VerificationEventType} from \"../channel/types\";\nimport {SelectVerificationMethodStage} from \"./SelectVerificationMethodStage\";\n\nexport class SendReadyStage extends BaseSASVerificationStage {\n async completeStage() {\n await this.log.wrap(\"SendReadyStage.completeStage\", async (log) => {\n const content = {\n \"from_device\": this.ourUserDeviceId,\n \"methods\": [\"m.sas.v1\"],\n };\n await this.channel.send(VerificationEventType.Ready, content, log);\n this.setNextStage(new SelectVerificationMethodStage(this.options));\n });\n }\n}\n","export default {}","// @license magnet:?xt=urn:btih:8e4f440f4c65981c5bf93c76d35135ba5064d8b7&dn=apache-2.0.txt Apache-2.0\n// @source: https://gitlab.matrix.org/matrix-org/olm/-/tree/3.2.15\n\nvar Olm = (function() {\nvar olm_exports = {};\nvar onInitSuccess;\nvar onInitFail;\n\nvar Module = (() => {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(Module) {\n Module = Module || {};\n\n\nvar a;a||(a=typeof Module !== 'undefined' ? Module : {});var aa,ca;a.ready=new Promise(function(b,c){aa=b;ca=c});var g;if(\"undefined\"!==typeof window)g=function(b){window.crypto.getRandomValues(b)};else if(module.exports){var da=require(\"crypto\");g=function(b){var c=da.randomBytes(b.length);b.set(c)}}else throw Error(\"Cannot find global to attach library to\");if(\"undefined\"!==typeof OLM_OPTIONS)for(var ea in OLM_OPTIONS)OLM_OPTIONS.hasOwnProperty(ea)&&(a[ea]=OLM_OPTIONS[ea]);\na.onRuntimeInitialized=function(){h=a._olm_error();olm_exports.PRIVATE_KEY_LENGTH=a._olm_pk_private_key_length();onInitSuccess&&onInitSuccess()};a.onAbort=function(b){onInitFail&&onInitFail(b)};var fa=Object.assign({},a),ha=\"object\"==typeof window,l=\"function\"==typeof importScripts,ia=\"object\"==typeof process&&\"object\"==typeof process.versions&&\"string\"==typeof process.versions.node,m=\"\",ja,ka,la,fs,ma,na;\nif(ia)m=l?require(\"path\").dirname(m)+\"/\":__dirname+\"/\",na=()=>{ma||(fs=require(\"fs\"),ma=require(\"path\"))},ja=function(b,c){na();b=ma.normalize(b);return fs.readFileSync(b,c?void 0:\"utf8\")},la=b=>{b=ja(b,!0);b.buffer||(b=new Uint8Array(b));return b},ka=(b,c,d)=>{na();b=ma.normalize(b);fs.readFile(b,function(e,f){e?d(e):c(f.buffer)})},1{var c=new XMLHttpRequest;c.open(\"GET\",b,!1);c.send(null);return c.responseText},l&&(la=b=>{var c=new XMLHttpRequest;c.open(\"GET\",b,!1);c.responseType=\"arraybuffer\";c.send(null);return new Uint8Array(c.response)}),\nka=(b,c,d)=>{var e=new XMLHttpRequest;e.open(\"GET\",b,!0);e.responseType=\"arraybuffer\";e.onload=()=>{200==e.status||0==e.status&&e.response?c(e.response):d()};e.onerror=d;e.send(null)};a.print||console.log.bind(console);var n=a.printErr||console.warn.bind(console);Object.assign(a,fa);fa=null;var q;a.wasmBinary&&(q=a.wasmBinary);var noExitRuntime=a.noExitRuntime||!0;\"object\"!=typeof WebAssembly&&r(\"no native wasm support detected\");\nvar oa,pa=!1,qa=\"undefined\"!=typeof TextDecoder?new TextDecoder(\"utf8\"):void 0;\nfunction t(b,c){if(b){var d=u,e=b+c;for(c=b;d[c]&&!(c>=e);)++c;if(16f?e+=String.fromCharCode(f):(f-=65536,e+=String.fromCharCode(55296|f>>10,56320|f&1023))}}else e+=String.fromCharCode(f)}b=e}}else b=\"\";return b}\nfunction ra(b,c,d,e){if(!(0=p){var w=b.charCodeAt(++k);p=65536+((p&1023)<<10)|w&1023}if(127>=p){if(d>=e)break;c[d++]=p}else{if(2047>=p){if(d+1>=e)break;c[d++]=192|p>>6}else{if(65535>=p){if(d+2>=e)break;c[d++]=224|p>>12}else{if(d+3>=e)break;c[d++]=240|p>>18;c[d++]=128|p>>12&63}c[d++]=128|p>>6&63}c[d++]=128|p&63}}c[d]=0;return d-f}function v(b,c,d){return ra(b,u,c,d)}\nfunction x(b){for(var c=0,d=0;d=e?c++:2047>=e?c+=2:55296<=e&&57343>=e?(c+=4,++d):c+=3}return c}var sa,y,u,ta,z,ua,va,wa;function xa(){var b=oa.buffer;sa=b;a.HEAP8=y=new Int8Array(b);a.HEAP16=ta=new Int16Array(b);a.HEAP32=z=new Int32Array(b);a.HEAPU8=u=new Uint8Array(b);a.HEAPU16=new Uint16Array(b);a.HEAPU32=ua=new Uint32Array(b);a.HEAPF32=va=new Float32Array(b);a.HEAPF64=wa=new Float64Array(b)}var za=[],Aa=[],Ba=[];\nfunction Ca(){var b=a.preRun.shift();za.unshift(b)}var A=0,Da=null,B=null;function r(b){if(a.onAbort)a.onAbort(b);b=\"Aborted(\"+b+\")\";n(b);pa=!0;b=new WebAssembly.RuntimeError(b+\". Build with -sASSERTIONS for more info.\");ca(b);throw b;}function Ea(){return C.startsWith(\"data:application/octet-stream;base64,\")}var C;C=\"olm.wasm\";if(!Ea()){var Fa=C;C=a.locateFile?a.locateFile(Fa,m):m+Fa}\nfunction Ga(){var b=C;try{if(b==C&&q)return new Uint8Array(q);if(la)return la(b);throw\"both async and sync fetching of the wasm failed\";}catch(c){r(c)}}\nfunction Ha(){if(!q&&(ha||l)){if(\"function\"==typeof fetch&&!C.startsWith(\"file://\"))return fetch(C,{credentials:\"same-origin\"}).then(function(b){if(!b.ok)throw\"failed to load wasm binary file at '\"+C+\"'\";return b.arrayBuffer()}).catch(function(){return Ga()});if(ka)return new Promise(function(b,c){ka(C,function(d){b(new Uint8Array(d))},c)})}return Promise.resolve().then(function(){return Ga()})}var Ia;function Ja(b){for(;0>0];case \"i8\":return y[b>>0];case \"i16\":return ta[b>>1];case \"i32\":return z[b>>2];case \"i64\":return z[b>>2];case \"float\":return va[b>>2];case \"double\":return wa[b>>3];case \"*\":return ua[b>>2];default:r(\"invalid type for getValue: \"+c)}return null}\nfunction D(b){var c=\"i8\";c.endsWith(\"*\")&&(c=\"*\");switch(c){case \"i1\":y[b>>0]=0;break;case \"i8\":y[b>>0]=0;break;case \"i16\":ta[b>>1]=0;break;case \"i32\":z[b>>2]=0;break;case \"i64\":Ia=[0,0];z[b>>2]=Ia[0];z[b+4>>2]=Ia[1];break;case \"float\":va[b>>2]=0;break;case \"double\":wa[b>>3]=0;break;case \"*\":ua[b>>2]=0;break;default:r(\"invalid type for setValue: \"+c)}}function La(b,c,d){for(var e=0;e>0]=b.charCodeAt(e);d||(y[c>>0]=0)}\nfunction Ma(b,c,d){d=Array(0>>=0;if(2147483648=d;d*=2){var e=c*(1+.2/d);e=Math.min(e,b+100663296);var f=Math;e=Math.max(b,e);f=f.min.call(f,2147483648,e+(65536-e%65536)%65536);a:{try{oa.grow(f-sa.byteLength+65535>>>16);xa();var k=1;break a}catch(p){}k=void 0}if(k)return!0}return!1}};\n(function(){function b(f){a.asm=f.exports;oa=a.asm.c;xa();Aa.unshift(a.asm.d);A--;a.monitorRunDependencies&&a.monitorRunDependencies(A);0==A&&(null!==Da&&(clearInterval(Da),Da=null),B&&(f=B,B=null,f()))}function c(f){b(f.instance)}function d(f){return Ha().then(function(k){return WebAssembly.instantiate(k,e)}).then(function(k){return k}).then(f,function(k){n(\"failed to asynchronously prepare wasm: \"+k);r(k)})}var e={a:Na};A++;a.monitorRunDependencies&&a.monitorRunDependencies(A);if(a.instantiateWasm)try{return a.instantiateWasm(e,\nb)}catch(f){return n(\"Module.instantiateWasm callback failed with error: \"+f),!1}(function(){return q||\"function\"!=typeof WebAssembly.instantiateStreaming||Ea()||C.startsWith(\"file://\")||ia||\"function\"!=typeof fetch?d(c):fetch(C,{credentials:\"same-origin\"}).then(function(f){return WebAssembly.instantiateStreaming(f,e).then(c,function(k){n(\"wasm streaming compile failed: \"+k);n(\"falling back to ArrayBuffer instantiation\");return d(c)})})})().catch(ca);return{}})();\na.___wasm_call_ctors=function(){return(a.___wasm_call_ctors=a.asm.d).apply(null,arguments)};a._olm_get_library_version=function(){return(a._olm_get_library_version=a.asm.f).apply(null,arguments)};a._olm_error=function(){return(a._olm_error=a.asm.g).apply(null,arguments)};a._olm_account_last_error=function(){return(a._olm_account_last_error=a.asm.h).apply(null,arguments)};a.__olm_error_to_string=function(){return(a.__olm_error_to_string=a.asm.i).apply(null,arguments)};\na._olm_account_last_error_code=function(){return(a._olm_account_last_error_code=a.asm.j).apply(null,arguments)};a._olm_session_last_error=function(){return(a._olm_session_last_error=a.asm.k).apply(null,arguments)};a._olm_session_last_error_code=function(){return(a._olm_session_last_error_code=a.asm.l).apply(null,arguments)};a._olm_utility_last_error=function(){return(a._olm_utility_last_error=a.asm.m).apply(null,arguments)};\na._olm_utility_last_error_code=function(){return(a._olm_utility_last_error_code=a.asm.n).apply(null,arguments)};a._olm_account_size=function(){return(a._olm_account_size=a.asm.o).apply(null,arguments)};a._olm_session_size=function(){return(a._olm_session_size=a.asm.p).apply(null,arguments)};a._olm_utility_size=function(){return(a._olm_utility_size=a.asm.q).apply(null,arguments)};a._olm_account=function(){return(a._olm_account=a.asm.r).apply(null,arguments)};\na._olm_session=function(){return(a._olm_session=a.asm.s).apply(null,arguments)};a._olm_utility=function(){return(a._olm_utility=a.asm.t).apply(null,arguments)};a._olm_clear_account=function(){return(a._olm_clear_account=a.asm.u).apply(null,arguments)};a._olm_clear_session=function(){return(a._olm_clear_session=a.asm.v).apply(null,arguments)};a._olm_clear_utility=function(){return(a._olm_clear_utility=a.asm.w).apply(null,arguments)};\na._olm_pickle_account_length=function(){return(a._olm_pickle_account_length=a.asm.x).apply(null,arguments)};a._olm_pickle_session_length=function(){return(a._olm_pickle_session_length=a.asm.y).apply(null,arguments)};a._olm_pickle_account=function(){return(a._olm_pickle_account=a.asm.z).apply(null,arguments)};a._olm_pickle_session=function(){return(a._olm_pickle_session=a.asm.A).apply(null,arguments)};a._olm_unpickle_account=function(){return(a._olm_unpickle_account=a.asm.B).apply(null,arguments)};\na._olm_unpickle_session=function(){return(a._olm_unpickle_session=a.asm.C).apply(null,arguments)};a._olm_create_account_random_length=function(){return(a._olm_create_account_random_length=a.asm.D).apply(null,arguments)};a._olm_create_account=function(){return(a._olm_create_account=a.asm.E).apply(null,arguments)};a._olm_account_identity_keys_length=function(){return(a._olm_account_identity_keys_length=a.asm.F).apply(null,arguments)};\na._olm_account_identity_keys=function(){return(a._olm_account_identity_keys=a.asm.G).apply(null,arguments)};a._olm_account_signature_length=function(){return(a._olm_account_signature_length=a.asm.H).apply(null,arguments)};a._olm_account_sign=function(){return(a._olm_account_sign=a.asm.I).apply(null,arguments)};a._olm_account_one_time_keys_length=function(){return(a._olm_account_one_time_keys_length=a.asm.J).apply(null,arguments)};\na._olm_account_one_time_keys=function(){return(a._olm_account_one_time_keys=a.asm.K).apply(null,arguments)};a._olm_account_mark_keys_as_published=function(){return(a._olm_account_mark_keys_as_published=a.asm.L).apply(null,arguments)};a._olm_account_max_number_of_one_time_keys=function(){return(a._olm_account_max_number_of_one_time_keys=a.asm.M).apply(null,arguments)};\na._olm_account_generate_one_time_keys_random_length=function(){return(a._olm_account_generate_one_time_keys_random_length=a.asm.N).apply(null,arguments)};a._olm_account_generate_one_time_keys=function(){return(a._olm_account_generate_one_time_keys=a.asm.O).apply(null,arguments)};a._olm_account_generate_fallback_key_random_length=function(){return(a._olm_account_generate_fallback_key_random_length=a.asm.P).apply(null,arguments)};\na._olm_account_generate_fallback_key=function(){return(a._olm_account_generate_fallback_key=a.asm.Q).apply(null,arguments)};a._olm_account_fallback_key_length=function(){return(a._olm_account_fallback_key_length=a.asm.R).apply(null,arguments)};a._olm_account_fallback_key=function(){return(a._olm_account_fallback_key=a.asm.S).apply(null,arguments)};a._olm_account_unpublished_fallback_key_length=function(){return(a._olm_account_unpublished_fallback_key_length=a.asm.T).apply(null,arguments)};\na._olm_account_unpublished_fallback_key=function(){return(a._olm_account_unpublished_fallback_key=a.asm.U).apply(null,arguments)};a._olm_account_forget_old_fallback_key=function(){return(a._olm_account_forget_old_fallback_key=a.asm.V).apply(null,arguments)};a._olm_create_outbound_session_random_length=function(){return(a._olm_create_outbound_session_random_length=a.asm.W).apply(null,arguments)};a._olm_create_outbound_session=function(){return(a._olm_create_outbound_session=a.asm.X).apply(null,arguments)};\na._olm_create_inbound_session=function(){return(a._olm_create_inbound_session=a.asm.Y).apply(null,arguments)};a._olm_create_inbound_session_from=function(){return(a._olm_create_inbound_session_from=a.asm.Z).apply(null,arguments)};a._olm_session_id_length=function(){return(a._olm_session_id_length=a.asm._).apply(null,arguments)};a._olm_session_id=function(){return(a._olm_session_id=a.asm.$).apply(null,arguments)};\na._olm_session_has_received_message=function(){return(a._olm_session_has_received_message=a.asm.aa).apply(null,arguments)};a._olm_session_describe=function(){return(a._olm_session_describe=a.asm.ba).apply(null,arguments)};a._olm_matches_inbound_session=function(){return(a._olm_matches_inbound_session=a.asm.ca).apply(null,arguments)};a._olm_matches_inbound_session_from=function(){return(a._olm_matches_inbound_session_from=a.asm.da).apply(null,arguments)};\na._olm_remove_one_time_keys=function(){return(a._olm_remove_one_time_keys=a.asm.ea).apply(null,arguments)};a._olm_encrypt_message_type=function(){return(a._olm_encrypt_message_type=a.asm.fa).apply(null,arguments)};a._olm_encrypt_random_length=function(){return(a._olm_encrypt_random_length=a.asm.ga).apply(null,arguments)};a._olm_encrypt_message_length=function(){return(a._olm_encrypt_message_length=a.asm.ha).apply(null,arguments)};\na._olm_encrypt=function(){return(a._olm_encrypt=a.asm.ia).apply(null,arguments)};a._olm_decrypt_max_plaintext_length=function(){return(a._olm_decrypt_max_plaintext_length=a.asm.ja).apply(null,arguments)};a._olm_decrypt=function(){return(a._olm_decrypt=a.asm.ka).apply(null,arguments)};a._olm_sha256_length=function(){return(a._olm_sha256_length=a.asm.la).apply(null,arguments)};a._olm_sha256=function(){return(a._olm_sha256=a.asm.ma).apply(null,arguments)};\na._olm_ed25519_verify=function(){return(a._olm_ed25519_verify=a.asm.na).apply(null,arguments)};a._olm_pk_encryption_last_error=function(){return(a._olm_pk_encryption_last_error=a.asm.oa).apply(null,arguments)};a._olm_pk_encryption_last_error_code=function(){return(a._olm_pk_encryption_last_error_code=a.asm.pa).apply(null,arguments)};a._olm_pk_encryption_size=function(){return(a._olm_pk_encryption_size=a.asm.qa).apply(null,arguments)};\na._olm_pk_encryption=function(){return(a._olm_pk_encryption=a.asm.ra).apply(null,arguments)};a._olm_clear_pk_encryption=function(){return(a._olm_clear_pk_encryption=a.asm.sa).apply(null,arguments)};a._olm_pk_encryption_set_recipient_key=function(){return(a._olm_pk_encryption_set_recipient_key=a.asm.ta).apply(null,arguments)};a._olm_pk_key_length=function(){return(a._olm_pk_key_length=a.asm.ua).apply(null,arguments)};\na._olm_pk_ciphertext_length=function(){return(a._olm_pk_ciphertext_length=a.asm.va).apply(null,arguments)};a._olm_pk_mac_length=function(){return(a._olm_pk_mac_length=a.asm.wa).apply(null,arguments)};a._olm_pk_encrypt_random_length=function(){return(a._olm_pk_encrypt_random_length=a.asm.xa).apply(null,arguments)};a._olm_pk_encrypt=function(){return(a._olm_pk_encrypt=a.asm.ya).apply(null,arguments)};\na._olm_pk_decryption_last_error=function(){return(a._olm_pk_decryption_last_error=a.asm.za).apply(null,arguments)};a._olm_pk_decryption_last_error_code=function(){return(a._olm_pk_decryption_last_error_code=a.asm.Aa).apply(null,arguments)};a._olm_pk_decryption_size=function(){return(a._olm_pk_decryption_size=a.asm.Ba).apply(null,arguments)};a._olm_pk_decryption=function(){return(a._olm_pk_decryption=a.asm.Ca).apply(null,arguments)};\na._olm_clear_pk_decryption=function(){return(a._olm_clear_pk_decryption=a.asm.Da).apply(null,arguments)};a._olm_pk_private_key_length=function(){return(a._olm_pk_private_key_length=a.asm.Ea).apply(null,arguments)};a._olm_pk_generate_key_random_length=function(){return(a._olm_pk_generate_key_random_length=a.asm.Fa).apply(null,arguments)};a._olm_pk_key_from_private=function(){return(a._olm_pk_key_from_private=a.asm.Ga).apply(null,arguments)};\na._olm_pk_generate_key=function(){return(a._olm_pk_generate_key=a.asm.Ha).apply(null,arguments)};a._olm_pickle_pk_decryption_length=function(){return(a._olm_pickle_pk_decryption_length=a.asm.Ia).apply(null,arguments)};a._olm_pickle_pk_decryption=function(){return(a._olm_pickle_pk_decryption=a.asm.Ja).apply(null,arguments)};a._olm_unpickle_pk_decryption=function(){return(a._olm_unpickle_pk_decryption=a.asm.Ka).apply(null,arguments)};\na._olm_pk_max_plaintext_length=function(){return(a._olm_pk_max_plaintext_length=a.asm.La).apply(null,arguments)};a._olm_pk_decrypt=function(){return(a._olm_pk_decrypt=a.asm.Ma).apply(null,arguments)};a._olm_pk_get_private_key=function(){return(a._olm_pk_get_private_key=a.asm.Na).apply(null,arguments)};a._olm_pk_signing_size=function(){return(a._olm_pk_signing_size=a.asm.Oa).apply(null,arguments)};a._olm_pk_signing=function(){return(a._olm_pk_signing=a.asm.Pa).apply(null,arguments)};\na._olm_pk_signing_last_error=function(){return(a._olm_pk_signing_last_error=a.asm.Qa).apply(null,arguments)};a._olm_pk_signing_last_error_code=function(){return(a._olm_pk_signing_last_error_code=a.asm.Ra).apply(null,arguments)};a._olm_clear_pk_signing=function(){return(a._olm_clear_pk_signing=a.asm.Sa).apply(null,arguments)};a._olm_pk_signing_seed_length=function(){return(a._olm_pk_signing_seed_length=a.asm.Ta).apply(null,arguments)};\na._olm_pk_signing_public_key_length=function(){return(a._olm_pk_signing_public_key_length=a.asm.Ua).apply(null,arguments)};a._olm_pk_signing_key_from_seed=function(){return(a._olm_pk_signing_key_from_seed=a.asm.Va).apply(null,arguments)};a._olm_pk_signature_length=function(){return(a._olm_pk_signature_length=a.asm.Wa).apply(null,arguments)};a._olm_pk_sign=function(){return(a._olm_pk_sign=a.asm.Xa).apply(null,arguments)};\na._olm_inbound_group_session_size=function(){return(a._olm_inbound_group_session_size=a.asm.Ya).apply(null,arguments)};a._olm_inbound_group_session=function(){return(a._olm_inbound_group_session=a.asm.Za).apply(null,arguments)};a._olm_clear_inbound_group_session=function(){return(a._olm_clear_inbound_group_session=a.asm._a).apply(null,arguments)};a._olm_inbound_group_session_last_error=function(){return(a._olm_inbound_group_session_last_error=a.asm.$a).apply(null,arguments)};\na._olm_inbound_group_session_last_error_code=function(){return(a._olm_inbound_group_session_last_error_code=a.asm.ab).apply(null,arguments)};a._olm_init_inbound_group_session=function(){return(a._olm_init_inbound_group_session=a.asm.bb).apply(null,arguments)};a._olm_import_inbound_group_session=function(){return(a._olm_import_inbound_group_session=a.asm.cb).apply(null,arguments)};\na._olm_pickle_inbound_group_session_length=function(){return(a._olm_pickle_inbound_group_session_length=a.asm.db).apply(null,arguments)};a._olm_pickle_inbound_group_session=function(){return(a._olm_pickle_inbound_group_session=a.asm.eb).apply(null,arguments)};a._olm_unpickle_inbound_group_session=function(){return(a._olm_unpickle_inbound_group_session=a.asm.fb).apply(null,arguments)};\na._olm_group_decrypt_max_plaintext_length=function(){return(a._olm_group_decrypt_max_plaintext_length=a.asm.gb).apply(null,arguments)};a._olm_group_decrypt=function(){return(a._olm_group_decrypt=a.asm.hb).apply(null,arguments)};a._olm_inbound_group_session_id_length=function(){return(a._olm_inbound_group_session_id_length=a.asm.ib).apply(null,arguments)};a._olm_inbound_group_session_id=function(){return(a._olm_inbound_group_session_id=a.asm.jb).apply(null,arguments)};\na._olm_inbound_group_session_first_known_index=function(){return(a._olm_inbound_group_session_first_known_index=a.asm.kb).apply(null,arguments)};a._olm_inbound_group_session_is_verified=function(){return(a._olm_inbound_group_session_is_verified=a.asm.lb).apply(null,arguments)};a._olm_export_inbound_group_session_length=function(){return(a._olm_export_inbound_group_session_length=a.asm.mb).apply(null,arguments)};\na._olm_export_inbound_group_session=function(){return(a._olm_export_inbound_group_session=a.asm.nb).apply(null,arguments)};a._olm_outbound_group_session_size=function(){return(a._olm_outbound_group_session_size=a.asm.ob).apply(null,arguments)};a._olm_outbound_group_session=function(){return(a._olm_outbound_group_session=a.asm.pb).apply(null,arguments)};a._olm_clear_outbound_group_session=function(){return(a._olm_clear_outbound_group_session=a.asm.qb).apply(null,arguments)};\na._olm_outbound_group_session_last_error=function(){return(a._olm_outbound_group_session_last_error=a.asm.rb).apply(null,arguments)};a._olm_outbound_group_session_last_error_code=function(){return(a._olm_outbound_group_session_last_error_code=a.asm.sb).apply(null,arguments)};a._olm_pickle_outbound_group_session_length=function(){return(a._olm_pickle_outbound_group_session_length=a.asm.tb).apply(null,arguments)};\na._olm_pickle_outbound_group_session=function(){return(a._olm_pickle_outbound_group_session=a.asm.ub).apply(null,arguments)};a._olm_unpickle_outbound_group_session=function(){return(a._olm_unpickle_outbound_group_session=a.asm.vb).apply(null,arguments)};a._olm_init_outbound_group_session_random_length=function(){return(a._olm_init_outbound_group_session_random_length=a.asm.wb).apply(null,arguments)};\na._olm_init_outbound_group_session=function(){return(a._olm_init_outbound_group_session=a.asm.xb).apply(null,arguments)};a._olm_group_encrypt_message_length=function(){return(a._olm_group_encrypt_message_length=a.asm.yb).apply(null,arguments)};a._olm_group_encrypt=function(){return(a._olm_group_encrypt=a.asm.zb).apply(null,arguments)};a._olm_outbound_group_session_id_length=function(){return(a._olm_outbound_group_session_id_length=a.asm.Ab).apply(null,arguments)};\na._olm_outbound_group_session_id=function(){return(a._olm_outbound_group_session_id=a.asm.Bb).apply(null,arguments)};a._olm_outbound_group_session_message_index=function(){return(a._olm_outbound_group_session_message_index=a.asm.Cb).apply(null,arguments)};a._olm_outbound_group_session_key_length=function(){return(a._olm_outbound_group_session_key_length=a.asm.Db).apply(null,arguments)};a._olm_outbound_group_session_key=function(){return(a._olm_outbound_group_session_key=a.asm.Eb).apply(null,arguments)};\na._olm_sas_last_error=function(){return(a._olm_sas_last_error=a.asm.Fb).apply(null,arguments)};a._olm_sas_last_error_code=function(){return(a._olm_sas_last_error_code=a.asm.Gb).apply(null,arguments)};a._olm_sas_size=function(){return(a._olm_sas_size=a.asm.Hb).apply(null,arguments)};a._olm_sas=function(){return(a._olm_sas=a.asm.Ib).apply(null,arguments)};a._olm_clear_sas=function(){return(a._olm_clear_sas=a.asm.Jb).apply(null,arguments)};\na._olm_create_sas_random_length=function(){return(a._olm_create_sas_random_length=a.asm.Kb).apply(null,arguments)};a._olm_create_sas=function(){return(a._olm_create_sas=a.asm.Lb).apply(null,arguments)};a._olm_sas_pubkey_length=function(){return(a._olm_sas_pubkey_length=a.asm.Mb).apply(null,arguments)};a._olm_sas_get_pubkey=function(){return(a._olm_sas_get_pubkey=a.asm.Nb).apply(null,arguments)};a._olm_sas_set_their_key=function(){return(a._olm_sas_set_their_key=a.asm.Ob).apply(null,arguments)};\na._olm_sas_is_their_key_set=function(){return(a._olm_sas_is_their_key_set=a.asm.Pb).apply(null,arguments)};a._olm_sas_generate_bytes=function(){return(a._olm_sas_generate_bytes=a.asm.Qb).apply(null,arguments)};a._olm_sas_mac_length=function(){return(a._olm_sas_mac_length=a.asm.Rb).apply(null,arguments)};a._olm_sas_calculate_mac_fixed_base64=function(){return(a._olm_sas_calculate_mac_fixed_base64=a.asm.Sb).apply(null,arguments)};\na._olm_sas_calculate_mac=function(){return(a._olm_sas_calculate_mac=a.asm.Tb).apply(null,arguments)};a._olm_sas_calculate_mac_long_kdf=function(){return(a._olm_sas_calculate_mac_long_kdf=a.asm.Ub).apply(null,arguments)};a._malloc=function(){return(a._malloc=a.asm.Vb).apply(null,arguments)};a._free=function(){return(a._free=a.asm.Wb).apply(null,arguments)};\nvar Oa=a.stackSave=function(){return(Oa=a.stackSave=a.asm.Xb).apply(null,arguments)},Pa=a.stackRestore=function(){return(Pa=a.stackRestore=a.asm.Yb).apply(null,arguments)},Qa=a.stackAlloc=function(){return(Qa=a.stackAlloc=a.asm.Zb).apply(null,arguments)};a.UTF8ToString=t;a.stringToUTF8=v;a.intArrayFromString=Ma;a.writeAsciiToMemory=La;a.ALLOC_STACK=1;var Ra;B=function Sa(){Ra||Ta();Ra||(B=Sa)};\nfunction Ta(){function b(){if(!Ra&&(Ra=!0,a.calledRun=!0,!pa)){Ja(Aa);aa(a);if(a.onRuntimeInitialized)a.onRuntimeInitialized();if(a.postRun)for(\"function\"==typeof a.postRun&&(a.postRun=[a.postRun]);a.postRun.length;){var c=a.postRun.shift();Ba.unshift(c)}Ja(Ba)}}if(!(0 implements IVerificationMethod {\n private startStage: BaseSASVerificationStage;\n private olmSas: Olm.SAS;\n public finished: boolean = false;\n public readonly channel: IChannel;\n private timeout: Timeout;\n public otherUserId: string;\n private ourUserId: string;\n \n constructor(options: Options) {\n super();\n const { olm, channel, clock } = options;\n const olmSas = new olm.SAS();\n this.olmSas = olmSas;\n this.channel = channel;\n this.otherUserId = options.otherUserId;\n this.ourUserId = options.ourUserId;\n this.setupCancelAfterTimeout(clock);\n const stageOptions = {...options, olmSas, eventEmitter: this};\n if (channel.getReceivedMessage(VerificationEventType.Start)) {\n this.startStage = new SelectVerificationMethodStage(stageOptions);\n }\n else if (channel.getReceivedMessage(VerificationEventType.Request)) {\n this.startStage = new SendReadyStage(stageOptions);\n }\n else {\n this.startStage = new SendRequestVerificationStage(stageOptions);\n }\n }\n\n private async setupCancelAfterTimeout(clock: Clock): Promise {\n try {\n const tenMinutes = 10 * 60 * 1000;\n this.timeout = clock.createTimeout(tenMinutes);\n await this.timeout.elapsed();\n await this.channel.cancelVerification(CancelReason.TimedOut);\n }\n catch {\n // Ignore errors\n }\n }\n\n async abort(): Promise {\n await this.channel.cancelVerification(CancelReason.UserCancelled);\n this.finished = true;\n }\n\n async verify(): Promise {\n let success = true;\n try {\n let stage = this.startStage;\n do {\n await stage.completeStage();\n stage = stage.nextStage;\n } while (stage);\n }\n catch (e) {\n if (!(e instanceof VerificationCancelledError)) {\n throw e; \n }\n success = false;\n }\n finally {\n if (this.channel.isCancelled) {\n this.emit(\"VerificationCancelled\", this.channel.cancellation);\n }\n this.olmSas.free();\n this.timeout.abort();\n this.finished = true;\n }\n return success;\n }\n\n get otherDeviceId(): string {\n return this.channel.otherUserDeviceId;\n }\n\n get isCrossSigningAnotherUser(): boolean {\n return !(this.otherUserId === this.ourUserId);\n }\n}\n\nimport {HomeServer} from \"../../../mocks/HomeServer.js\";\nimport Olm from \"@matrix-org/olm/olm.js\";\nimport {MockChannel} from \"./channel/MockChannel\";\nimport {Clock as MockClock} from \"../../../mocks/Clock.js\";\nimport {NullLogger} from \"../../../logging/NullLogger\";\nimport {SASFixtures} from \"../../../fixtures/matrix/sas/events\";\nimport {SendKeyStage} from \"./stages/SendKeyStage\";\nimport {CalculateSASStage} from \"./stages/CalculateSASStage\";\nimport {SendMacStage} from \"./stages/SendMacStage\";\nimport {VerifyMacStage} from \"./stages/VerifyMacStage\";\nimport {SendDoneStage} from \"./stages/SendDoneStage\";\nimport {SendAcceptVerificationStage} from \"./stages/SendAcceptVerificationStage\";\n\nexport function tests() {\n async function createSASRequest(\n ourUserId: string,\n ourDeviceId: string,\n theirUserId: string,\n theirDeviceId: string,\n txnId: string,\n receivedMessages,\n startingMessage?: any\n ) {\n const homeserverMock = new HomeServer();\n const hsApi = homeserverMock.api;\n const olm = Olm;\n await olm.init();\n const olmUtil = new Olm.Utility();\n const e2eeAccount = {\n getUnsignedDeviceKey: () => {\n return {\n keys: {\n [`ed25519:${ourDeviceId}`]:\n \"srsWWbrnQFIOmUSdrt3cS/unm03qAIgXcWwQg9BegKs\",\n },\n };\n },\n };\n const deviceTracker = {\n getCrossSigningKeyForUser: (userId, __, _hsApi, _) => {\n let masterKey =\n userId === ourUserId\n ? \"5HIrEawRiiQioViNfezPDWfPWH2pdaw3pbQNHEVN2jM\"\n : \"Ot8Y58PueQ7hJVpYWAJkg2qaREJAY/UhGZYOrsd52oo\";\n return {\n user_id: userId,\n usage: [\"master\"],\n keys: {\n [`ed25519:${masterKey}`]: masterKey,\n }\n };\n },\n deviceForId: (_userId, deviceId, _hsApi, _log) => {\n return {\n device_id: deviceId,\n keys: {\n [`ed25519:${deviceId}`]: \"D8w9mrokGdEZPdPgrU0kQkYi4vZyzKEBfvGyZsGK7+Q\",\n },\n unsigned: {\n device_display_name: \"lala10\",\n }\n };\n },\n };\n const channel = new MockChannel(\n theirDeviceId,\n theirUserId,\n ourUserId,\n ourDeviceId,\n receivedMessages,\n deviceTracker,\n txnId,\n olm,\n startingMessage,\n );\n const clock = new MockClock();\n const logger = new NullLogger();\n return logger.run(\"log\", (log) => {\n // @ts-ignore\n const sas = new SASVerification({\n channel,\n clock,\n hsApi,\n // @ts-ignore\n deviceTracker,\n e2eeAccount,\n olm,\n olmUtil,\n otherUserId: theirUserId!,\n ourUserId,\n ourUserDeviceId: ourDeviceId,\n log,\n });\n // @ts-ignore\n channel.setOlmSas(sas.olmSas);\n sas.on(\"EmojiGenerated\", async (stage) => {\n await stage?.setEmojiMatch(true);\n });\n return { sas, clock, logger };\n });\n }\n\n return {\n \"Order of stages created matches expected order when I sent request, they sent start\": async (assert) => {\n const ourDeviceId = \"ILQHOACESQ\";\n const ourUserId = \"@foobaraccount:matrix.org\";\n const theirUserId = \"@foobaraccount3:matrix.org\";\n const theirDeviceId = \"FWKXUYUHTF\";\n const txnId = \"t150836b91a7bed\";\n const receivedMessages = new SASFixtures(theirUserId, theirDeviceId, txnId)\n .youSentRequest()\n .theySentStart()\n .fixtures();\n const { sas } = await createSASRequest(\n ourUserId,\n ourDeviceId,\n theirUserId,\n theirDeviceId,\n txnId, \n receivedMessages\n );\n await sas.verify();\n const expectedOrder = [\n SendRequestVerificationStage,\n SelectVerificationMethodStage,\n SendAcceptVerificationStage,\n SendKeyStage,\n CalculateSASStage,\n SendMacStage,\n VerifyMacStage,\n SendDoneStage\n ]\n //@ts-ignore\n let stage = sas.startStage;\n for (const stageClass of expectedOrder) {\n assert.strictEqual(stage instanceof stageClass, true);\n stage = stage.nextStage;\n }\n assert.strictEqual(sas.finished, true);\n },\n \"Order of stages created matches expected order when I sent request, I sent start\": async (assert) => {\n const ourDeviceId = \"ILQHOACESQ\";\n const ourUserId = \"@foobaraccount:matrix.org\";\n const theirUserId = \"@foobaraccount3:matrix.org\";\n const theirDeviceId = \"FWKXUYUHTF\";\n const txnId = \"t150836b91a7bed\";\n const receivedMessages = new SASFixtures(theirUserId, theirDeviceId, txnId)\n .youSentRequest()\n .youSentStart()\n .fixtures();\n const { sas, logger } = await createSASRequest(\n ourUserId,\n ourDeviceId,\n theirUserId,\n theirDeviceId,\n txnId, \n receivedMessages\n );\n sas.on(\"SelectVerificationStage\", (stage) => {\n logger.run(\"send start\", async (log) => {\n await stage?.selectEmojiMethod(log);\n });\n });\n await sas.verify();\n const expectedOrder = [\n SendRequestVerificationStage,\n SelectVerificationMethodStage,\n SendKeyStage,\n CalculateSASStage,\n SendMacStage,\n VerifyMacStage,\n SendDoneStage\n ]\n //@ts-ignore\n let stage = sas.startStage;\n for (const stageClass of expectedOrder) {\n assert.strictEqual(stage instanceof stageClass, true);\n stage = stage.nextStage;\n }\n assert.strictEqual(sas.finished, true);\n },\n \"Order of stages created matches expected order when request is received\": async (assert) => {\n const ourDeviceId = \"ILQHOACESQ\";\n const ourUserId = \"@foobaraccount:matrix.org\";\n const theirUserId = \"@foobaraccount3:matrix.org\";\n const theirDeviceId = \"FWKXUYUHTF\";\n const txnId = \"t150836b91a7bed\";\n const receivedMessages = new SASFixtures(theirUserId, theirDeviceId, txnId)\n .theySentStart()\n .fixtures();\n const startingMessage = receivedMessages.get(VerificationEventType.Start);\n const { sas } = await createSASRequest(\n ourUserId,\n ourDeviceId,\n theirUserId,\n theirDeviceId,\n txnId, \n receivedMessages,\n startingMessage,\n );\n await sas.verify();\n const expectedOrder = [\n SelectVerificationMethodStage,\n SendAcceptVerificationStage,\n SendKeyStage,\n CalculateSASStage,\n SendMacStage,\n VerifyMacStage,\n SendDoneStage\n ]\n //@ts-ignore\n let stage = sas.startStage;\n for (const stageClass of expectedOrder) {\n assert.strictEqual(stage instanceof stageClass, true);\n stage = stage.nextStage;\n }\n assert.strictEqual(sas.finished, true);\n },\n \"Order of stages created matches expected order when request is sent with start conflict (they win)\": async (assert) => {\n const ourDeviceId = \"ILQHOACESQ\";\n const ourUserId = \"@foobaraccount:matrix.org\";\n const theirUserId = \"@foobaraccount3:matrix.org\";\n const theirDeviceId = \"FWKXUYUHTF\";\n const txnId = \"t150836b91a7bed\";\n const receivedMessages = new SASFixtures(theirUserId, theirDeviceId, txnId)\n .youSentRequest()\n .theySentStart()\n .youSentStart()\n .theyWinConflict()\n .fixtures();\n const { sas } = await createSASRequest(\n ourUserId,\n ourDeviceId,\n theirUserId,\n theirDeviceId,\n txnId, \n receivedMessages\n );\n await sas.verify();\n const expectedOrder = [\n SendRequestVerificationStage,\n SelectVerificationMethodStage,\n SendAcceptVerificationStage,\n SendKeyStage,\n CalculateSASStage,\n SendMacStage,\n VerifyMacStage,\n SendDoneStage\n ]\n //@ts-ignore\n let stage = sas.startStage;\n for (const stageClass of expectedOrder) {\n assert.strictEqual(stage instanceof stageClass, true);\n stage = stage.nextStage;\n }\n assert.strictEqual(sas.finished, true);\n },\n \"Order of stages created matches expected order when request is sent with start conflict (I win)\": async (assert) => {\n const ourDeviceId = \"ILQHOACESQ\";\n const ourUserId = \"@foobaraccount3:matrix.org\";\n const theirUserId = \"@foobaraccount:matrix.org\";\n const theirDeviceId = \"FWKXUYUHTF\";\n const txnId = \"t150836b91a7bed\";\n const receivedMessages = new SASFixtures(theirUserId, theirDeviceId, txnId)\n .youSentRequest()\n .theySentStart()\n .youSentStart()\n .youWinConflict()\n .fixtures();\n const { sas, logger } = await createSASRequest(\n ourUserId,\n ourDeviceId,\n theirUserId,\n theirDeviceId,\n txnId, \n receivedMessages\n );\n sas.on(\"SelectVerificationStage\", (stage) => {\n logger.run(\"send start\", async (log) => {\n await stage?.selectEmojiMethod(log);\n });\n });\n await sas.verify();\n const expectedOrder = [\n SendRequestVerificationStage,\n SelectVerificationMethodStage,\n SendKeyStage,\n CalculateSASStage,\n SendMacStage,\n VerifyMacStage,\n SendDoneStage\n ]\n //@ts-ignore\n let stage = sas.startStage;\n for (const stageClass of expectedOrder) {\n assert.strictEqual(stage instanceof stageClass, true);\n stage = stage.nextStage;\n }\n assert.strictEqual(sas.finished, true);\n },\n \"Order of stages created matches expected order when request is received with start conflict (they win)\": async (assert) => {\n const ourDeviceId = \"ILQHOACESQ\";\n const ourUserId = \"@foobaraccount:matrix.org\";\n const theirUserId = \"@foobaraccount3:matrix.org\";\n const theirDeviceId = \"FWKXUYUHTF\";\n const txnId = \"t150836b91a7bed\";\n const receivedMessages = new SASFixtures(theirUserId, theirDeviceId, txnId)\n .theySentStart()\n .youSentStart()\n .theyWinConflict()\n .fixtures();\n const startingMessage = receivedMessages.get(VerificationEventType.Start);\n const { sas } = await createSASRequest(\n ourUserId,\n ourDeviceId,\n theirUserId,\n theirDeviceId,\n txnId, \n receivedMessages,\n startingMessage,\n );\n await sas.verify();\n const expectedOrder = [\n SelectVerificationMethodStage,\n SendAcceptVerificationStage,\n SendKeyStage,\n CalculateSASStage,\n SendMacStage,\n VerifyMacStage,\n SendDoneStage\n ]\n //@ts-ignore\n let stage = sas.startStage;\n for (const stageClass of expectedOrder) {\n assert.strictEqual(stage instanceof stageClass, true);\n stage = stage.nextStage;\n }\n assert.strictEqual(sas.finished, true);\n },\n \"Order of stages created matches expected order when request is received with start conflict (I win)\": async (assert) => {\n const ourDeviceId = \"ILQHOACESQ\";\n const ourUserId = \"@foobaraccount3:matrix.org\";\n const theirUserId = \"@foobaraccount:matrix.org\";\n const theirDeviceId = \"FWKXUYUHTF\";\n const txnId = \"t150836b91a7bed\";\n const receivedMessages = new SASFixtures(theirUserId, theirDeviceId, txnId)\n .theySentStart()\n .youSentStart()\n .youWinConflict()\n .fixtures();\n const startingMessage = receivedMessages.get(VerificationEventType.Start);\n const { sas, logger } = await createSASRequest(\n ourUserId,\n ourDeviceId,\n theirUserId,\n theirDeviceId,\n txnId, \n receivedMessages,\n startingMessage,\n );\n sas.on(\"SelectVerificationStage\", (stage) => {\n logger.run(\"send start\", async (log) => {\n await stage?.selectEmojiMethod(log);\n });\n });\n await sas.verify();\n const expectedOrder = [\n SelectVerificationMethodStage,\n SendKeyStage,\n CalculateSASStage,\n SendMacStage,\n VerifyMacStage,\n SendDoneStage\n ]\n //@ts-ignore\n let stage = sas.startStage;\n for (const stageClass of expectedOrder) {\n assert.strictEqual(stage instanceof stageClass, true);\n stage = stage.nextStage;\n }\n assert.strictEqual(sas.finished, true);\n },\n \"Order of stages created matches expected order when request is sent with start conflict (I win), same user\": async (assert) => {\n const ourDeviceId = \"FWKXUYUHTF\";\n const ourUserId = \"@foobaraccount3:matrix.org\";\n const theirUserId = \"@foobaraccount3:matrix.org\";\n const theirDeviceId = \"ILQHOACESQ\";\n const txnId = \"t150836b91a7bed\";\n const receivedMessages = new SASFixtures(theirUserId, theirDeviceId, txnId)\n .youSentRequest()\n .theySentStart()\n .youSentStart()\n .youWinConflict()\n .fixtures();\n const { sas, logger } = await createSASRequest(\n ourUserId,\n ourDeviceId,\n theirUserId,\n theirDeviceId,\n txnId, \n receivedMessages\n );\n sas.on(\"SelectVerificationStage\", (stage) => {\n logger.run(\"send start\", async (log) => {\n await stage?.selectEmojiMethod(log);\n });\n });\n await sas.verify();\n const expectedOrder = [\n SendRequestVerificationStage,\n SelectVerificationMethodStage,\n SendKeyStage,\n CalculateSASStage,\n SendMacStage,\n VerifyMacStage,\n SendDoneStage\n ]\n //@ts-ignore\n let stage = sas.startStage;\n for (const stageClass of expectedOrder) {\n assert.strictEqual(stage instanceof stageClass, true);\n stage = stage.nextStage;\n }\n assert.strictEqual(sas.finished, true);\n },\n \"Order of stages created matches expected order when request is sent with start conflict (they win), same user\": async (assert) => {\n const ourDeviceId = \"ILQHOACESQ\";\n const ourUserId = \"@foobaraccount3:matrix.org\";\n const theirUserId = \"@foobaraccount3:matrix.org\";\n const theirDeviceId = \"FWKXUYUHTF\";\n const txnId = \"t150836b91a7bed\";\n const receivedMessages = new SASFixtures(theirUserId, theirDeviceId, txnId)\n .youSentRequest()\n .theySentStart()\n .youSentStart()\n .theyWinConflict()\n .fixtures();\n const { sas } = await createSASRequest(\n ourUserId,\n ourDeviceId,\n theirUserId,\n theirDeviceId,\n txnId, \n receivedMessages\n );\n await sas.verify();\n const expectedOrder = [\n SendRequestVerificationStage,\n SelectVerificationMethodStage,\n SendAcceptVerificationStage,\n SendKeyStage,\n CalculateSASStage,\n SendMacStage,\n VerifyMacStage,\n SendDoneStage\n ]\n //@ts-ignore\n let stage = sas.startStage;\n for (const stageClass of expectedOrder) {\n assert.strictEqual(stage instanceof stageClass, true);\n stage = stage.nextStage;\n }\n assert.strictEqual(sas.finished, true);\n },\n \"Verification is cancelled after 10 minutes\": async (assert) => {\n const ourDeviceId = \"ILQHOACESQ\";\n const ourUserId = \"@foobaraccount:matrix.org\";\n const theirUserId = \"@foobaraccount3:matrix.org\";\n const theirDeviceId = \"FWKXUYUHTF\";\n const txnId = \"t150836b91a7bed\";\n const receivedMessages = new SASFixtures(theirUserId, theirDeviceId, txnId)\n .youSentRequest()\n .theySentStart()\n .fixtures();\n const { sas, clock } = await createSASRequest(\n ourUserId,\n ourDeviceId,\n theirUserId,\n theirDeviceId,\n txnId, \n receivedMessages\n );\n const promise = sas.verify();\n clock.elapse(10 * 60 * 1000);\n try {\n await promise;\n }\n catch (e) {\n assert.strictEqual(e instanceof VerificationCancelledError, true);\n }\n assert.strictEqual(sas.finished, true);\n },\n \"Verification is cancelled when there's no common hash algorithm\": async (assert) => {\n const ourDeviceId = \"ILQHOACESQ\";\n const ourUserId = \"@foobaraccount:matrix.org\";\n const theirUserId = \"@foobaraccount3:matrix.org\";\n const theirDeviceId = \"FWKXUYUHTF\";\n const txnId = \"t150836b91a7bed\";\n const receivedMessages = new SASFixtures(theirUserId, theirDeviceId, txnId)\n .youSentRequest()\n .theySentStart()\n .fixtures();\n receivedMessages.get(VerificationEventType.Start).content.key_agreement_protocols = [\"foo\"];\n const { sas } = await createSASRequest(\n ourUserId,\n ourDeviceId,\n theirUserId,\n theirDeviceId,\n txnId, \n receivedMessages\n );\n try {\n await sas.verify()\n }\n catch (e) {\n assert.strictEqual(e instanceof VerificationCancelledError, true);\n }\n assert.strictEqual(sas.finished, true);\n },\n }\n}\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport type {ILogItem} from \"../../../../logging/types\";\nimport {CancelReason, VerificationEventType} from \"./types\";\n\nexport const messageFromErrorType = {\n [CancelReason.UserCancelled]: \"User declined\",\n [CancelReason.InvalidMessage]: \"Invalid Message.\",\n [CancelReason.KeyMismatch]: \"Key Mismatch.\",\n [CancelReason.OtherDeviceAccepted]: \"Another device has accepted this request.\",\n [CancelReason.TimedOut]: \"Timed Out\",\n [CancelReason.UnexpectedMessage]: \"Unexpected Message.\",\n [CancelReason.UnknownMethod]: \"Unknown method.\",\n [CancelReason.UnknownTransaction]: \"Unknown Transaction.\",\n [CancelReason.UserMismatch]: \"User Mismatch\",\n [CancelReason.MismatchedCommitment]: \"Hash commitment does not match.\",\n [CancelReason.MismatchedSAS]: \"Emoji/decimal does not match.\",\n}\n\nexport interface IChannel {\n send(eventType: VerificationEventType, content: any, log: ILogItem): Promise;\n waitForEvent(eventType: VerificationEventType): Promise;\n getSentMessage(event: VerificationEventType): any;\n getReceivedMessage(event: VerificationEventType): any;\n setStartMessage(content: any): void;\n cancelVerification(cancellationType: CancelReason): Promise;\n acceptMessage: any;\n startMessage: any;\n initiatedByUs: boolean;\n isCancelled: boolean;\n cancellation?: { code: CancelReason, cancelledByUs: boolean };\n id: string;\n otherUserDeviceId: string;\n} \n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexport function groupBy(array: V[], groupFn: (V) => K): Map {\n return groupByWithCreator(array, groupFn,\n () => {return [];},\n (array, value) => array.push(value)\n );\n}\n\nexport function groupByWithCreator(array: V[], groupFn: (V) => K, createCollectionFn: () => C, addCollectionFn: (C, V) => void): Map {\n return array.reduce((map, value) => {\n const key = groupFn(value);\n let collection = map.get(key);\n if (!collection) {\n collection = createCollectionFn();\n map.set(key, collection);\n }\n addCollectionFn(collection, value);\n return map;\n }, new Map());\n}\n\nexport function countBy(events: V[], mapper: (V) => string | number): { [key: string]: number } {\n return events.reduce((counts, event) => {\n const mappedValue = mapper(event);\n if (!counts[mappedValue]) {\n counts[mappedValue] = 1;\n } else {\n counts[mappedValue] += 1;\n }\n return counts;\n }, {});\n}\n\nexport function tests() {\n return {\n countBy: assert => {\n const counts = countBy([{type: \"foo\"}, {type: \"bar\"}, {type: \"foo\"}], o => o.type);\n assert.equal(Object.keys(counts).length, 2);\n assert.equal(counts.foo, 2);\n assert.equal(counts.bar, 1);\n }\n }\n}\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {groupBy} from \"../utils/groupBy\";\n\n\nexport function makeTxnId() {\n return makeId(\"t\");\n}\n\nexport function makeId(prefix) {\n const n = Math.floor(Math.random() * Number.MAX_SAFE_INTEGER);\n const str = n.toString(16);\n return prefix + \"0\".repeat(14 - str.length) + str;\n}\n\nexport function isTxnId(txnId) {\n\treturn txnId.startsWith(\"t\") && txnId.length === 15;\n}\n\nexport function formatToDeviceMessagesPayload(messages) {\n const messagesByUser = groupBy(messages, message => message.device.user_id);\n const payload = {\n messages: Array.from(messagesByUser.entries()).reduce((userMap, [userId, messages]) => {\n userMap[userId] = messages.reduce((deviceMap, message) => {\n deviceMap[message.device.device_id] = message.content;\n return deviceMap;\n }, {});\n return userMap;\n }, {})\n };\n return payload;\n}\n\nexport function tests() {\n\treturn {\n\t\t\"isTxnId succeeds on result of makeTxnId\": assert => {\n\t\t\tassert(isTxnId(makeTxnId()));\n\t\t},\n\t\t\"isTxnId fails on event id\": assert => {\n\t\t\tassert(!isTxnId(\"$yS_n5n3cIO2aTtek0_2ZSlv-7g4YYR2zKrk2mFCW_rm\"));\n\t\t},\n\t}\n}\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2022 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexport interface IDisposable {\n dispose(): void;\n}\n\nexport type Disposable = IDisposable | (() => void);\n\nfunction disposeValue(value: Disposable): void {\n if (typeof value === \"function\") {\n value();\n } else {\n value.dispose();\n }\n}\n\nfunction isDisposable(value: Disposable): boolean {\n return value && (typeof value === \"function\" || typeof value.dispose === \"function\");\n}\n\nexport class Disposables {\n private _disposables?: Disposable[] = [];\n\n track(disposable: D): D {\n if (!isDisposable(disposable)) {\n throw new Error(\"Not a disposable\");\n }\n if (this.isDisposed) {\n console.warn(\"Disposables already disposed, disposing new value\");\n disposeValue(disposable);\n return disposable;\n }\n this._disposables!.push(disposable);\n return disposable;\n }\n\n untrack(disposable: Disposable): undefined {\n // already disposed\n if (!this._disposables) {\n return undefined;\n }\n const idx = this._disposables!.indexOf(disposable);\n if (idx >= 0) {\n this._disposables!.splice(idx, 1);\n }\n return undefined;\n }\n\n dispose(): void {\n if (this._disposables) {\n for (const d of this._disposables) {\n disposeValue(d);\n }\n this._disposables = undefined;\n }\n }\n\n get isDisposed(): boolean {\n return this._disposables === undefined;\n }\n\n disposeTracked(value: Disposable | undefined): undefined {\n if (value === undefined || value === null || this.isDisposed) {\n return undefined;\n }\n const idx = this._disposables!.indexOf(value);\n if (idx !== -1) {\n const [foundValue] = this._disposables!.splice(idx, 1);\n disposeValue(foundValue);\n } else {\n console.warn(\"disposable not found, did it leak?\", value);\n }\n return undefined;\n }\n}\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport type {HomeServerApi} from \"../../../net/HomeServerApi\";\nimport type {DeviceTracker} from \"../../../e2ee/DeviceTracker.js\";\nimport type {ILogItem} from \"../../../../logging/types\";\nimport type {Clock} from \"../../../../platform/web/dom/Clock.js\";\nimport type {DeviceMessageHandler} from \"../../../DeviceMessageHandler.js\";\nimport type {IChannel} from \"./IChannel\";\nimport {messageFromErrorType} from \"./IChannel\";\nimport {makeTxnId} from \"../../../common.js\";\nimport {CancelReason, VerificationEventType} from \"./types\";\nimport {Disposables} from \"../../../../utils/Disposables\";\nimport {VerificationCancelledError} from \"../VerificationCancelledError\";\nimport {Deferred} from \"../../../../utils/Deferred\";\n\ntype Options = {\n hsApi: HomeServerApi;\n deviceTracker: DeviceTracker;\n otherUserId: string;\n clock: Clock;\n deviceMessageHandler: DeviceMessageHandler;\n log: ILogItem;\n ourUserDeviceId: string;\n}\n\nexport class ToDeviceChannel extends Disposables implements IChannel {\n private readonly hsApi: HomeServerApi;\n private readonly deviceTracker: DeviceTracker;\n private ourDeviceId: string;\n private readonly otherUserId: string;\n private readonly clock: Clock;\n private readonly deviceMessageHandler: DeviceMessageHandler;\n private readonly sentMessages: Map = new Map();\n private readonly receivedMessages: Map = new Map();\n private readonly waitMap: Map> = new Map();\n private readonly log: ILogItem;\n public otherUserDeviceId: string;\n public startMessage: any;\n public id: string;\n private _initiatedByUs: boolean;\n private _cancellation?: { code: CancelReason, cancelledByUs: boolean };\n\n /**\n * \n * @param startingMessage Create the channel with existing message in the receivedMessage buffer\n */\n constructor(options: Options, startingMessage?: any) {\n super();\n this.hsApi = options.hsApi;\n this.deviceTracker = options.deviceTracker;\n this.otherUserId = options.otherUserId;\n this.ourDeviceId = options.ourUserDeviceId;\n this.clock = options.clock;\n this.log = options.log;\n this.deviceMessageHandler = options.deviceMessageHandler;\n this.track(\n this.deviceMessageHandler.disposableOn(\n \"message\",\n async ({ unencrypted }) => {\n if (!unencrypted) {\n return;\n }\n await this.handleDeviceMessage(unencrypted);\n }\n )\n );\n this.track(() => {\n this.waitMap.forEach((value) => {\n value.reject(new VerificationCancelledError());\n });\n });\n // Copy over request message\n if (startingMessage) {\n /**\n * startingMessage may be the ready message or the start message.\n */\n this.id = startingMessage.content.transaction_id;\n this.receivedMessages.set(startingMessage.type, startingMessage);\n this.otherUserDeviceId = startingMessage.content.from_device;\n }\n }\n\n get cancellation(): IChannel[\"cancellation\"] {\n return this._cancellation;\n };\n\n get isCancelled(): boolean {\n return !!this._cancellation;\n }\n\n async send(eventType: VerificationEventType, content: any, log: ILogItem): Promise {\n await log.wrap(\"ToDeviceChannel.send\", async () => {\n if (this.isCancelled) {\n throw new VerificationCancelledError();\n }\n if (eventType === VerificationEventType.Request) {\n // Handle this case specially\n await this.handleRequestEventSpecially(eventType, content, log);\n return;\n }\n Object.assign(content, { transaction_id: this.id });\n const payload = {\n messages: {\n [this.otherUserId]: {\n [this.otherUserDeviceId]: content\n }\n }\n }\n await this.hsApi.sendToDevice(eventType, payload, makeTxnId(), { log }).response();\n this.sentMessages.set(eventType, {content});\n });\n }\n\n private async handleRequestEventSpecially(eventType: VerificationEventType, content: any, log: ILogItem) {\n await log.wrap(\"ToDeviceChannel.handleRequestEventSpecially\", async () => {\n const timestamp = this.clock.now();\n const txnId = makeTxnId();\n this.id = txnId;\n Object.assign(content, { timestamp, transaction_id: txnId });\n const payload = {\n messages: {\n [this.otherUserId]: {\n \"*\": content\n }\n }\n }\n await this.hsApi.sendToDevice(eventType, payload, makeTxnId(), { log }).response();\n this.sentMessages.set(eventType, {content});\n });\n }\n\n getReceivedMessage(event: VerificationEventType) {\n return this.receivedMessages.get(event);\n }\n\n getSentMessage(event: VerificationEventType) {\n return this.sentMessages.get(event);\n }\n\n get acceptMessage(): any {\n return this.receivedMessages.get(VerificationEventType.Accept) ??\n this.sentMessages.get(VerificationEventType.Accept);\n }\n\n\n private async handleDeviceMessage(event) {\n await this.log.wrap(\"ToDeviceChannel.handleDeviceMessage\", async (log) => {\n if (!event.type.startsWith(\"m.key.verification.\")) {\n return;\n }\n if (event.content.transaction_id !== this.id) {\n /**\n * When a device receives an unknown transaction_id, it should send an appropriate\n * m.key.verification.cancel message to the other device indicating as such.\n * This does not apply for inbound m.key.verification.start or m.key.verification.cancel messages.\n */\n await this.cancelVerification(CancelReason.UnknownTransaction);\n return;\n }\n this.resolveAnyWaits(event);\n this.receivedMessages.set(event.type, event);\n if (event.type === VerificationEventType.Ready) {\n this.handleReadyMessage(event, log);\n return;\n }\n if (event.type === VerificationEventType.Cancel) {\n this._cancellation = { code: event.content.code, cancelledByUs: false };\n this.dispose();\n return;\n }\n });\n }\n\n private async handleReadyMessage(event, log: ILogItem) {\n const fromDevice = event.content.from_device;\n this.otherUserDeviceId = fromDevice;\n // We need to send cancel messages to all other devices\n const devices = await this.deviceTracker.devicesForUsers([this.otherUserId], this.hsApi, log);\n const otherDevices = devices.filter(device => device.device_id !== fromDevice && device.device_id !== this.ourDeviceId);\n const cancelMessage = {\n code: CancelReason.OtherDeviceAccepted,\n reason: messageFromErrorType[CancelReason.OtherDeviceAccepted],\n transaction_id: this.id,\n };\n const deviceMessages = otherDevices.reduce((acc, device) => { acc[device.device_id] = cancelMessage; return acc; }, {});\n const payload = {\n messages: {\n [this.otherUserId]: deviceMessages\n }\n }\n await this.hsApi.sendToDevice(VerificationEventType.Cancel, payload, makeTxnId(), { log }).response();\n }\n\n async cancelVerification(cancellationType: CancelReason) {\n await this.log.wrap(\"Channel.cancelVerification\", async log => {\n if (this.isCancelled) {\n throw new VerificationCancelledError();\n }\n const payload = {\n messages: {\n [this.otherUserId]: {\n [this.otherUserDeviceId ?? \"*\"]: {\n code: cancellationType,\n reason: messageFromErrorType[cancellationType],\n transaction_id: this.id,\n }\n }\n }\n }\n await this.hsApi.sendToDevice(VerificationEventType.Cancel, payload, makeTxnId(), { log }).response();\n this._cancellation = { code: cancellationType, cancelledByUs: true };\n this.dispose();\n });\n }\n\n private resolveAnyWaits(event) {\n const { type } = event;\n const wait = this.waitMap.get(type);\n if (wait) {\n wait.resolve(event);\n this.waitMap.delete(type);\n }\n }\n\n waitForEvent(eventType: VerificationEventType): Promise {\n if (this.isCancelled) {\n throw new VerificationCancelledError();\n }\n // Check if we already received the message\n const receivedMessage = this.receivedMessages.get(eventType);\n if (receivedMessage) {\n return Promise.resolve(receivedMessage);\n }\n // Check if we're already waiting for this message\n const existingWait = this.waitMap.get(eventType);\n if (existingWait) {\n return existingWait.promise;\n }\n const deferred = new Deferred(); \n this.waitMap.set(eventType, deferred);\n return deferred.promise;\n }\n\n setStartMessage(event) {\n this.startMessage = event;\n this._initiatedByUs = event.content.from_device === this.ourDeviceId;\n }\n\n get initiatedByUs(): boolean {\n return this._initiatedByUs;\n };\n} \n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport type {ILogItem} from \"../../../../logging/types\";\nimport type {IChannel} from \"./IChannel\";\nimport type {Room} from \"../../../room/Room.js\";\nimport type {EventEntry} from \"../../../room/timeline/entries/EventEntry.js\";\nimport {messageFromErrorType} from \"./IChannel\";\nimport {CancelReason, VerificationEventType} from \"./types\";\nimport {Disposables} from \"../../../../utils/Disposables\";\nimport {VerificationCancelledError} from \"../VerificationCancelledError\";\nimport {Deferred} from \"../../../../utils/Deferred\";\nimport {getRelatedEventId, createReference} from \"../../../room/timeline/relations.js\";\n\ntype Options = {\n otherUserId: string;\n ourUserId: string;\n log: ILogItem;\n ourUserDeviceId: string;\n room: Room;\n}\n\nexport class RoomChannel extends Disposables implements IChannel {\n private ourDeviceId: string;\n private readonly otherUserId: string;\n private readonly sentMessages: Map = new Map();\n private readonly receivedMessages: Map = new Map();\n private readonly waitMap: Map> = new Map();\n private readonly log: ILogItem;\n private readonly room: Room;\n private readonly ourUserId: string;\n public otherUserDeviceId: string;\n public startMessage: any;\n /**\n * This is the event-id of the starting message (request/start)\n */\n public id: string;\n private _initiatedByUs: boolean;\n private _cancellation?: { code: CancelReason, cancelledByUs: boolean };\n\n /**\n * \n * @param startingMessage Create the channel with existing message in the receivedMessage buffer\n */\n constructor(options: Options, startingMessage?: any) {\n super();\n this.otherUserId = options.otherUserId;\n this.ourUserId = options.ourUserId;\n this.ourDeviceId = options.ourUserDeviceId;\n this.log = options.log;\n this.room = options.room;\n this.subscribeToTimeline();\n this.track(() => {\n this.waitMap.forEach((value) => {\n value.reject(new VerificationCancelledError());\n });\n });\n // Copy over request message\n if (startingMessage) {\n /**\n * startingMessage may be the ready message or the start message.\n */\n this.id = startingMessage.id;\n const type = startingMessage.content?.msgtype ?? startingMessage.eventType;\n this.receivedMessages.set(type, startingMessage);\n this.otherUserDeviceId = startingMessage.content.from_device;\n }\n }\n\n private async subscribeToTimeline() {\n const timeline = await this.room.openTimeline();\n this.track(() => timeline.release());\n this.track(\n timeline.entries.subscribe({\n onAdd: async (_, entry: EventEntry) => {\n this.handleRoomMessage(entry);\n },\n onRemove: () => { /** noop */ },\n onUpdate: () => { /** noop */ },\n })\n );\n }\n\n get cancellation(): IChannel[\"cancellation\"] {\n return this._cancellation;\n };\n\n get isCancelled(): boolean {\n return !!this._cancellation;\n }\n\n async send(eventType: VerificationEventType, content: any, log: ILogItem): Promise {\n await log.wrap(\"RoomChannel.send\", async (_log) => {\n if (this.isCancelled) {\n throw new VerificationCancelledError();\n }\n if (eventType === VerificationEventType.Request) {\n // Handle this case specially\n await this.handleRequestEventSpecially(eventType, content, log);\n return;\n }\n if (!this.id) {\n /**\n * This might happen if the user cancelled the verification from the UI,\n * but no verification messages were yet sent (maybe because the keys are\n * missing etc..).\n */\n return;\n }\n await this.room.ensureMessageKeyIsShared(_log);\n Object.assign(content, createReference(this.id));\n await this.room.sendEvent(eventType, content, undefined, log);\n this.sentMessages.set(eventType, {content});\n });\n }\n\n private async handleRequestEventSpecially(eventType: VerificationEventType, content: any, log: ILogItem) {\n await log.wrap(\"RoomChannel.handleRequestEventSpecially\", async () => {\n Object.assign(content, {\n body: `${this.otherUserId} is requesting to verify your key, but your client does not support in-chat key verification. You will need to use legacy key verification to verify keys.`,\n msgtype: VerificationEventType.Request,\n to: this.otherUserId,\n });\n const pendingEvent = await this.room.sendEvent(\"m.room.message\", content, undefined, log);\n this.id = await pendingEvent.getRemoteId();\n this.sentMessages.set(eventType, {content});\n });\n }\n\n getReceivedMessage(event: VerificationEventType) {\n return this.receivedMessages.get(event);\n }\n\n getSentMessage(event: VerificationEventType) {\n return this.sentMessages.get(event);\n }\n\n get acceptMessage(): any {\n return this.receivedMessages.get(VerificationEventType.Accept) ??\n this.sentMessages.get(VerificationEventType.Accept);\n }\n\n private async handleRoomMessage(entry: EventEntry) {\n const type = entry.content?.msgtype ?? entry.eventType;\n if (!type?.startsWith(\"m.key.verification\") ||\n entry.sender === this.ourUserId ||\n entry.isLoadedFromStorage) {\n return; \n }\n await this.log.wrap(\"RoomChannel.handleRoomMessage\", async (log) => {\n if (!this.id) {\n throw new Error(\"Couldn't find event-id of request message!\");\n }\n if (getRelatedEventId(entry.event) !== this.id) {\n /**\n * When a device receives an unknown transaction_id, it should send an appropriate\n * m.key.verification.cancel message to the other device indicating as such.\n * This does not apply for inbound m.key.verification.start or m.key.verification.cancel messages.\n */\n await this.cancelVerification(CancelReason.UnknownTransaction);\n return;\n }\n this.resolveAnyWaits(entry);\n this.receivedMessages.set(entry.eventType, entry);\n if (entry.eventType === VerificationEventType.Ready) {\n const fromDevice = entry.content.from_device;\n this.otherUserDeviceId = fromDevice;\n return;\n }\n if (entry.eventType === VerificationEventType.Cancel) {\n this._cancellation = { code: entry.content.code, cancelledByUs: false };\n this.dispose();\n return;\n }\n });\n }\n\n async cancelVerification(cancellationType: CancelReason) {\n await this.log.wrap(\"RoomChannel.cancelVerification\", async log => {\n log.log({ reason: messageFromErrorType[cancellationType] });\n if (this.isCancelled) {\n throw new VerificationCancelledError();\n }\n const content = {\n code: cancellationType,\n reason: messageFromErrorType[cancellationType],\n }\n await this.send(VerificationEventType.Cancel, content, log);\n this._cancellation = { code: cancellationType, cancelledByUs: true };\n this.dispose();\n });\n }\n\n private resolveAnyWaits(entry: EventEntry) {\n const { eventType } = entry;\n const wait = this.waitMap.get(eventType);\n if (wait) {\n wait.resolve(entry);\n this.waitMap.delete(eventType);\n }\n }\n\n waitForEvent(eventType: VerificationEventType): Promise {\n if (this.isCancelled) {\n throw new VerificationCancelledError();\n }\n // Check if we already received the message\n const receivedMessage = this.receivedMessages.get(eventType);\n if (receivedMessage) {\n return Promise.resolve(receivedMessage);\n }\n // Check if we're already waiting for this message\n const existingWait = this.waitMap.get(eventType);\n if (existingWait) {\n return existingWait.promise;\n }\n const deferred = new Deferred(); \n this.waitMap.set(eventType, deferred);\n return deferred.promise;\n }\n\n setStartMessage(entry) {\n if (!entry.content[\"m.relates_to\"]) {\n const clone = entry.clone();\n clone.content[\"m.relates_to\"] = clone.event.content[\"m.relates_to\"];\n this.startMessage = clone;\n }\n else {\n this.startMessage = entry;\n }\n this._initiatedByUs = entry.content.from_device === this.ourDeviceId;\n }\n\n get initiatedByUs(): boolean {\n return this._initiatedByUs;\n };\n} \n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport type {CrossSigning} from \"../CrossSigning\";\nimport type {Room} from \"../../room/Room.js\";\nimport type {ILogItem} from \"../../../logging/types\";\n\nexport class SASRequest {\n constructor(public readonly startingMessage: any) {}\n\n get deviceId(): string {\n return this.startingMessage.content.from_device;\n }\n\n get sender(): string {\n return this.startingMessage.sender;\n }\n\n get id(): string {\n return this.startingMessage.content.transaction_id ?? this.startingMessage.eventId;\n }\n\n async reject(crossSigning: CrossSigning, room: Room, log: ILogItem): Promise {\n const sas = crossSigning.startVerification(this, room, log);\n await sas?.abort();\n }\n}\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {verifyEd25519Signature, SignatureVerification} from \"../e2ee/common\";\nimport {BaseObservableValue, RetainedObservableValue} from \"../../observable/value\";\nimport {pkSign} from \"./common\";\nimport {SASVerification} from \"./SAS/SASVerification\";\nimport {ToDeviceChannel} from \"./SAS/channel/ToDeviceChannel\";\nimport {RoomChannel} from \"./SAS/channel/RoomChannel\";\nimport {VerificationEventType} from \"./SAS/channel/types\";\nimport {ObservableMap} from \"../../observable/map\";\nimport {SASRequest} from \"./SAS/SASRequest\";\nimport {SecretFetcher} from \"../ssss\";\nimport type {Storage} from \"../storage/idb/Storage\";\nimport type {Platform} from \"../../platform/web/Platform\";\nimport type {DeviceTracker} from \"../e2ee/DeviceTracker\";\nimport type {HomeServerApi} from \"../net/HomeServerApi\";\nimport type {Account} from \"../e2ee/Account\";\nimport type {ILogItem} from \"../../logging/types\";\nimport type {DeviceMessageHandler} from \"../DeviceMessageHandler.js\";\nimport type {SignedValue, DeviceKey} from \"../e2ee/common\";\nimport type {Room} from \"../room/Room.js\";\nimport type {IChannel} from \"./SAS/channel/IChannel\";\nimport type * as OlmNamespace from \"@matrix-org/olm\";\n\ntype Olm = typeof OlmNamespace;\n\n// we store cross-signing (and device) keys in the format we get them from the server\n// as that is what the signature is calculated on, so to verify and sign, we need\n// it in this format anyway.\nexport type CrossSigningKey = SignedValue & {\n readonly user_id: string;\n readonly usage: ReadonlyArray;\n readonly keys: {[keyId: string]: string};\n}\n\nexport enum KeyUsage {\n Master = \"master\",\n SelfSigning = \"self_signing\",\n UserSigning = \"user_signing\"\n};\n\nexport enum UserTrust {\n /** We trust the user, the whole signature chain checks out from our MSK to all of their device keys. */\n Trusted = 1,\n /** We haven't signed this user's identity yet. Verify this user first to sign it. */\n UserNotSigned,\n /** We have signed the user already, but the signature isn't valid.\n One possible cause could be that an attacker is uploading signatures in our name. */\n UserSignatureMismatch,\n /** We trust the user, but they don't trust one of their devices. */\n UserDeviceNotSigned,\n /** We trust the user, but the signatures of one of their devices is invalid.\n * One possible cause could be that an attacker is uploading signatures in their name. */\n UserDeviceSignatureMismatch,\n /** The user doesn't have a valid signature for the SSK with their MSK, or the SSK is missing.\n * This likely means bootstrapping cross-signing on their end didn't finish correctly. */\n UserSetupError,\n /** We don't have a valid signature for our SSK with our MSK, the SSK is missing, or we don't trust our own MSK.\n * This likely means bootstrapping cross-signing on our end didn't finish correctly. */\n OwnSetupError\n}\n\nenum MSKVerification {\n NoPrivKey,\n NoPubKey,\n DerivedPubKeyMismatch,\n Valid\n}\n\nexport interface IVerificationMethod {\n verify(): Promise;\n otherDeviceId: string;\n otherUserId: string;\n}\n\nexport class CrossSigning {\n private readonly storage: Storage;\n private readonly secretFetcher: SecretFetcher;\n private readonly platform: Platform;\n private readonly deviceTracker: DeviceTracker;\n private readonly olm: Olm;\n private readonly olmUtil: Olm.Utility;\n private readonly hsApi: HomeServerApi;\n private readonly ownUserId: string;\n private readonly e2eeAccount: Account;\n private readonly deviceMessageHandler: DeviceMessageHandler;\n private _isMasterKeyTrusted: boolean = false;\n private readonly observedUsers: Map> = new Map();\n private readonly deviceId: string;\n private sasVerificationInProgress?: SASVerification;\n public receivedSASVerifications: ObservableMap = new ObservableMap();\n\n constructor(options: {\n storage: Storage,\n secretFetcher: SecretFetcher,\n deviceTracker: DeviceTracker,\n platform: Platform,\n olm: Olm,\n olmUtil: Olm.Utility,\n ownUserId: string,\n deviceId: string,\n hsApi: HomeServerApi,\n e2eeAccount: Account,\n deviceMessageHandler: DeviceMessageHandler,\n }) {\n this.storage = options.storage;\n this.secretFetcher = options.secretFetcher;\n this.platform = options.platform;\n this.deviceTracker = options.deviceTracker;\n this.olm = options.olm;\n this.olmUtil = options.olmUtil;\n this.hsApi = options.hsApi;\n this.ownUserId = options.ownUserId;\n this.deviceId = options.deviceId;\n this.e2eeAccount = options.e2eeAccount\n this.deviceMessageHandler = options.deviceMessageHandler;\n this.handleSASDeviceMessage = this.handleSASDeviceMessage.bind(this);\n this.deviceMessageHandler.on(\"message\", this.handleSASDeviceMessage);\n }\n\n /** @return {boolean} whether cross signing has been enabled on this account */\n async load(log: ILogItem): Promise {\n // try to verify the msk without accessing the network\n const verification = await this.verifyMSKFrom4S(false, log);\n return verification !== MSKVerification.NoPrivKey;\n }\n\n async start(log: ILogItem): Promise {\n if (!this.isMasterKeyTrusted) {\n // try to verify the msk _with_ access to the network\n await this.verifyMSKFrom4S(true, log);\n }\n }\n\n private async verifyMSKFrom4S(allowNetwork: boolean, log: ILogItem): Promise {\n return await log.wrap(\"CrossSigning.verifyMSKFrom4S\", async log => {\n // TODO: use errorboundary here\n const privateMasterKey = await this.getSigningKey(KeyUsage.Master);\n if (!privateMasterKey) {\n log.set(\"failure\", \"no_priv_msk\");\n return MSKVerification.NoPrivKey;\n }\n const signing = new this.olm.PkSigning();\n let derivedPublicKey;\n try {\n derivedPublicKey = signing.init_with_seed(privateMasterKey); \n } finally {\n signing.free();\n }\n const publishedMasterKey = await this.deviceTracker.getCrossSigningKeyForUser(this.ownUserId, KeyUsage.Master, allowNetwork ? this.hsApi : undefined, log);\n if (!publishedMasterKey) {\n log.set(\"failure\", \"no_pub_msk\");\n return MSKVerification.NoPubKey;\n }\n const publisedEd25519Key = publishedMasterKey && getKeyEd25519Key(publishedMasterKey);\n log.set({publishedMasterKey: publisedEd25519Key, derivedPublicKey});\n this._isMasterKeyTrusted = !!publisedEd25519Key && publisedEd25519Key === derivedPublicKey;\n if (!this._isMasterKeyTrusted) {\n log.set(\"failure\", \"mismatch\");\n return MSKVerification.DerivedPubKeyMismatch;\n }\n return MSKVerification.Valid;\n });\n }\n\n get isMasterKeyTrusted(): boolean {\n return this._isMasterKeyTrusted;\n }\n\n startVerification(requestOrUserId: SASRequest, logOrRoom: ILogItem): SASVerification | undefined;\n startVerification(requestOrUserId: string, logOrRoom: ILogItem): SASVerification | undefined;\n startVerification(requestOrUserId: SASRequest, logOrRoom: Room, _log: ILogItem): SASVerification | undefined;\n startVerification(requestOrUserId: string, logOrRoom: Room, _log: ILogItem): SASVerification | undefined;\n startVerification(requestOrUserId: string | SASRequest, logOrRoom: Room | ILogItem, _log?: ILogItem): SASVerification | undefined {\n const log: ILogItem = _log ?? logOrRoom;\n if (this.sasVerificationInProgress && !this.sasVerificationInProgress.finished) {\n log.log({ sasVerificationAlreadyInProgress: true });\n return;\n }\n const otherUserId = requestOrUserId instanceof SASRequest ? requestOrUserId.sender : requestOrUserId;\n const startingMessage = requestOrUserId instanceof SASRequest ? requestOrUserId.startingMessage : undefined;\n let channel: IChannel;\n if (otherUserId === this.ownUserId) {\n channel = new ToDeviceChannel({\n deviceTracker: this.deviceTracker,\n hsApi: this.hsApi,\n otherUserId,\n clock: this.platform.clock,\n deviceMessageHandler: this.deviceMessageHandler,\n ourUserDeviceId: this.deviceId,\n log\n }, startingMessage);\n }\n else {\n channel = new RoomChannel({\n room: logOrRoom,\n otherUserId,\n ourUserId: this.ownUserId,\n ourUserDeviceId: this.deviceId,\n log,\n }, startingMessage);\n }\n\n this.sasVerificationInProgress = new SASVerification({\n olm: this.olm,\n olmUtil: this.olmUtil,\n ourUserId: this.ownUserId,\n ourUserDeviceId: this.deviceId,\n otherUserId,\n log,\n channel,\n e2eeAccount: this.e2eeAccount,\n deviceTracker: this.deviceTracker,\n hsApi: this.hsApi,\n clock: this.platform.clock,\n });\n return this.sasVerificationInProgress;\n }\n\n private async handleSASDeviceMessage({ unencrypted: event }) {\n if (!event ||\n (event.type !== VerificationEventType.Request && event.type !== VerificationEventType.Start)\n ) {\n return;\n }\n await this.platform.logger.run(\"CrossSigning.handleSASDeviceMessage\", async log => {\n const txnId = event.content.transaction_id;\n const fromDevice = event.content.from_device;\n const fromUser = event.sender;\n if (!fromDevice || fromUser !== this.ownUserId) {\n /**\n * SAS verification may be started with a request or a start message but\n * both should contain a from_device.\n */\n return;\n }\n if (!await this.areWeVerified(log)) {\n /**\n * If we're not verified, then the other device MUST be verified.\n * We check this so that verification between two unverified devices\n * never happen!\n */\n const device = await this.deviceTracker.deviceForId(this.ownUserId, fromDevice, this.hsApi, log);\n if (!device || !await this.isOurUserDeviceTrusted(device!, log)) {\n return;\n }\n }\n /**\n * If we receive an event for the current/previously finished \n * SAS verification, we should ignore it because the device channel\n * object (who also listens for to_device messages) will take care of it (if needed).\n */\n const shouldIgnoreEvent = this.sasVerificationInProgress?.channel.id === txnId;\n if (shouldIgnoreEvent) { return; }\n /**\n * 1. If we receive the cancel message, we need to update the requests map.\n * 2. If we receive an starting message (viz request/start), we need to create the SASRequest from it.\n */\n switch (event.type) {\n case VerificationEventType.Cancel: \n this.receivedSASVerifications.remove(txnId);\n return;\n case VerificationEventType.Request:\n case VerificationEventType.Start:\n this.platform.logger.run(\"Create SASRequest\", () => {\n this.receivedSASVerifications.set(txnId, new SASRequest(event));\n });\n return;\n default:\n // we don't care about this event!\n return;\n }\n });\n }\n\n /** returns our own device key signed by our self-signing key. Other signatures will be missing. */\n async signOwnDevice(log: ILogItem): Promise {\n return log.wrap(\"CrossSigning.signOwnDevice\", async log => {\n if (!this._isMasterKeyTrusted) {\n log.set(\"mskNotTrusted\", true);\n return;\n }\n const ownDeviceKey = this.e2eeAccount.getUnsignedDeviceKey() as DeviceKey;\n return this.signDeviceKey(ownDeviceKey, log);\n });\n }\n\n /** @return the signed device key for the given device id */\n async signDevice(verification: IVerificationMethod, log: ILogItem): Promise {\n return log.wrap(\"CrossSigning.signDevice\", async log => {\n if (!this._isMasterKeyTrusted) {\n /**\n * If we're the unverified device that is participating in\n * the verification process, it is expected that we do not\n * have access to the private part of MSK and thus\n * cannot determine if the MSK is trusted. In this case, we\n * do not need to sign anything because the other (verified)\n * device will sign our device key with the SSK.\n */\n log.set(\"mskNotTrusted\", true);\n }\n const shouldSign = await verification.verify() && this._isMasterKeyTrusted;\n log.set(\"shouldSign\", shouldSign);\n if (!shouldSign) {\n return; \n }\n const deviceId = verification.otherDeviceId;\n log.set(\"id\", deviceId);\n const keyToSign = await this.deviceTracker.deviceForId(this.ownUserId, deviceId, this.hsApi, log);\n if (!keyToSign) {\n return undefined;\n }\n delete keyToSign.signatures;\n return this.signDeviceKey(keyToSign, log);\n });\n }\n\n /** @return the signed MSK for the given user id */\n async signUser(verification: IVerificationMethod, log: ILogItem): Promise {\n return log.wrap(\"CrossSigning.signUser\", async log => {\n const userId = verification.otherUserId;\n log.set(\"id\", userId);\n if (!this._isMasterKeyTrusted) {\n log.set(\"mskNotTrusted\", true);\n return;\n }\n // can't sign own user\n if (userId === this.ownUserId) {\n return;\n }\n const shouldSign = await verification.verify();\n log.set(\"shouldSign\", shouldSign);\n if (!shouldSign) {\n return; \n }\n const keyToSign = await this.deviceTracker.getCrossSigningKeyForUser(userId, KeyUsage.Master, this.hsApi, log);\n if (!keyToSign) {\n return;\n }\n const signingKey = await this.getSigningKey(KeyUsage.UserSigning);\n if (!signingKey) {\n return;\n }\n delete keyToSign.signatures;\n // add signature to keyToSign\n this.signKey(keyToSign, signingKey);\n const payload = {\n [keyToSign.user_id]: {\n [getKeyEd25519Key(keyToSign)!]: keyToSign\n }\n };\n const request = this.hsApi.uploadSignatures(payload, {log});\n await request.response();\n // we don't write the signatures to storage, as we don't want to have too many special\n // cases in the trust algorithm, so instead we just clear the cross signing keys\n // so that they will be refetched when trust is recalculated\n await this.deviceTracker.invalidateUserKeys(userId);\n this.emitUserTrustUpdate(userId, log);\n return keyToSign;\n });\n }\n\n async isOurUserDeviceTrusted(device: DeviceKey, log?: ILogItem): Promise {\n return await this.platform.logger.wrapOrRun(log, \"CrossSigning.isOurUserDeviceTrusted\", async (_log) => {\n const ourSSK = await this.deviceTracker.getCrossSigningKeyForUser(this.ownUserId, KeyUsage.SelfSigning, this.hsApi, _log);\n if (!ourSSK) {\n return false;\n }\n const verification = this.hasValidSignatureFrom(device, ourSSK, _log);\n if (verification === SignatureVerification.Valid) {\n return true;\n }\n return false;\n });\n }\n\n areWeVerified(log?: ILogItem): Promise {\n return this.platform.logger.wrapOrRun(log, \"CrossSigning.areWeVerified\", async (_log) => {\n const device = await this.deviceTracker.deviceForId(this.ownUserId, this.deviceId, this.hsApi, _log);\n return this.isOurUserDeviceTrusted(device!, log);\n }); \n }\n\n getUserTrust(userId: string, log: ILogItem): Promise {\n return log.wrap(\"CrossSigning.getUserTrust\", async log => {\n log.set(\"id\", userId);\n const logResult = (trust: UserTrust): UserTrust => {\n log.set(\"result\", trust);\n return trust;\n };\n if (!this.isMasterKeyTrusted) {\n return logResult(UserTrust.OwnSetupError);\n }\n const ourMSK = await log.wrap(\"get our msk\", log => this.deviceTracker.getCrossSigningKeyForUser(this.ownUserId, KeyUsage.Master, this.hsApi, log));\n if (!ourMSK) {\n return logResult(UserTrust.OwnSetupError);\n }\n const ourUSK = await log.wrap(\"get our usk\", log => this.deviceTracker.getCrossSigningKeyForUser(this.ownUserId, KeyUsage.UserSigning, this.hsApi, log));\n if (!ourUSK) {\n return logResult(UserTrust.OwnSetupError);\n }\n const ourUSKVerification = log.wrap(\"verify our usk\", log => this.hasValidSignatureFrom(ourUSK, ourMSK, log));\n if (ourUSKVerification !== SignatureVerification.Valid) {\n return logResult(UserTrust.OwnSetupError);\n }\n const theirMSK = await log.wrap(\"get their msk\", log => this.deviceTracker.getCrossSigningKeyForUser(userId, KeyUsage.Master, this.hsApi, log));\n if (!theirMSK) {\n /* assume that when they don't have an MSK, they've never enabled cross-signing on their client\n (or it's not supported) rather than assuming a setup error on their side.\n Later on, for their SSK, we _do_ assume it's a setup error as it doesn't make sense to have an MSK without a SSK */\n return logResult(UserTrust.UserNotSigned);\n }\n const theirMSKVerification = log.wrap(\"verify their msk\", log => this.hasValidSignatureFrom(theirMSK, ourUSK, log));\n if (theirMSKVerification !== SignatureVerification.Valid) {\n if (theirMSKVerification === SignatureVerification.NotSigned) {\n return logResult(UserTrust.UserNotSigned);\n } else { /* SignatureVerification.Invalid */\n return logResult(UserTrust.UserSignatureMismatch);\n }\n }\n const theirSSK = await log.wrap(\"get their ssk\", log => this.deviceTracker.getCrossSigningKeyForUser(userId, KeyUsage.SelfSigning, this.hsApi, log));\n if (!theirSSK) {\n return logResult(UserTrust.UserSetupError);\n }\n const theirSSKVerification = log.wrap(\"verify their ssk\", log => this.hasValidSignatureFrom(theirSSK, theirMSK, log));\n if (theirSSKVerification !== SignatureVerification.Valid) {\n return logResult(UserTrust.UserSetupError);\n }\n const theirDeviceKeys = await log.wrap(\"get their devices\", log => this.deviceTracker.devicesForUsers([userId], this.hsApi, log));\n const lowestDeviceVerification = theirDeviceKeys.reduce((lowest, dk) => log.wrap({l: \"verify device\", id: dk.device_id}, log => {\n const verification = this.hasValidSignatureFrom(dk, theirSSK, log);\n // first Invalid, then NotSigned, then Valid\n if (lowest === SignatureVerification.Invalid || verification === SignatureVerification.Invalid) {\n return SignatureVerification.Invalid;\n } else if (lowest === SignatureVerification.NotSigned || verification === SignatureVerification.NotSigned) {\n return SignatureVerification.NotSigned;\n } else if (lowest === SignatureVerification.Valid || verification === SignatureVerification.Valid) {\n return SignatureVerification.Valid;\n }\n // should never happen as we went over all the enum options\n return SignatureVerification.Invalid;\n }), SignatureVerification.Valid);\n if (lowestDeviceVerification !== SignatureVerification.Valid) {\n if (lowestDeviceVerification === SignatureVerification.NotSigned) {\n return logResult(UserTrust.UserDeviceNotSigned);\n } else { /* SignatureVerification.Invalid */\n return logResult(UserTrust.UserDeviceSignatureMismatch);\n }\n }\n return logResult(UserTrust.Trusted);\n });\n }\n\n dispose(): void {\n this.deviceMessageHandler.off(\"message\", this.handleSASDeviceMessage);\n }\n\n observeUserTrust(userId: string, log: ILogItem): BaseObservableValue {\n const existingValue = this.observedUsers.get(userId);\n if (existingValue) {\n return existingValue;\n }\n const observable = new RetainedObservableValue(undefined, () => {\n this.observedUsers.delete(userId);\n });\n this.observedUsers.set(userId, observable);\n log.wrapDetached(\"get user trust\", async log => {\n if (observable.get() === undefined) {\n observable.set(await this.getUserTrust(userId, log));\n }\n });\n return observable;\n }\n\n private async signDeviceKey(keyToSign: DeviceKey, log: ILogItem): Promise {\n const signingKey = await this.getSigningKey(KeyUsage.SelfSigning);\n if (!signingKey) {\n return undefined;\n }\n // add signature to keyToSign\n this.signKey(keyToSign, signingKey);\n // so the payload format of a signature is a map from userid to key id of the signed key\n // (without the algoritm prefix though according to example, e.g. just device id or base 64 public key)\n // to the complete signed key with the signature of the signing key in the signatures section.\n const payload = {\n [keyToSign.user_id]: {\n [keyToSign.device_id]: keyToSign\n }\n };\n const request = this.hsApi.uploadSignatures(payload, {log});\n await request.response();\n // we don't write the signatures to storage, as we don't want to have too many special\n // cases in the trust algorithm, so instead we just clear the device keys\n // so that they will be refetched when trust is recalculated\n await this.deviceTracker.invalidateUserKeys(this.ownUserId);\n this.emitUserTrustUpdate(this.ownUserId, log);\n return keyToSign;\n }\n\n private async getSigningKey(usage: KeyUsage): Promise {\n const seedStr = await this.secretFetcher.getSecret(`m.cross_signing.${usage}`);\n if (seedStr) {\n return new Uint8Array(this.platform.encoding.base64.decode(seedStr));\n }\n }\n\n private signKey(keyToSign: DeviceKey | CrossSigningKey, signingKey: Uint8Array) {\n pkSign(this.olm, keyToSign, signingKey, this.ownUserId, \"\");\n }\n\n private hasValidSignatureFrom(key: DeviceKey | CrossSigningKey, signingKey: CrossSigningKey, log: ILogItem): SignatureVerification {\n const pubKey = getKeyEd25519Key(signingKey);\n if (!pubKey) {\n return SignatureVerification.NotSigned;\n }\n return verifyEd25519Signature(this.olmUtil, signingKey.user_id, pubKey, pubKey, key, log);\n }\n\n private emitUserTrustUpdate(userId: string, log: ILogItem) {\n const observable = this.observedUsers.get(userId);\n if (observable && observable.get() !== undefined) {\n observable.set(undefined);\n log.wrapDetached(\"update user trust\", async log => {\n observable.set(await this.getUserTrust(userId, log));\n });\n }\n }\n}\n\nexport function getKeyUsage(keyInfo: CrossSigningKey): KeyUsage | undefined {\n if (!Array.isArray(keyInfo.usage) || keyInfo.usage.length !== 1) {\n return undefined;\n }\n const usage = keyInfo.usage[0];\n if (usage !== KeyUsage.Master && usage !== KeyUsage.SelfSigning && usage !== KeyUsage.UserSigning) {\n return undefined;\n }\n return usage;\n}\n\nconst algorithm = \"ed25519\";\nconst prefix = `${algorithm}:`;\n\nexport function getKeyEd25519Key(keyInfo: CrossSigningKey): string | undefined {\n const ed25519KeyIds = Object.keys(keyInfo.keys).filter(keyId => keyId.startsWith(prefix));\n if (ed25519KeyIds.length !== 1) {\n return undefined;\n }\n const keyId = ed25519KeyIds[0];\n const publicKey = keyInfo.keys[keyId];\n return publicKey;\n}\n\nexport function getKeyUserId(keyInfo: CrossSigningKey): string | undefined {\n return keyInfo[\"user_id\"];\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {verifyEd25519Signature, getEd25519Signature, SIGNATURE_ALGORITHM, SignatureVerification} from \"./common\";\nimport {HistoryVisibility, shouldShareKey, DeviceKey, getDeviceEd25519Key, getDeviceCurve25519Key} from \"./common\";\nimport {RoomMember} from \"../room/members/RoomMember.js\";\nimport {getKeyUsage, getKeyEd25519Key, getKeyUserId, KeyUsage} from \"../verification/CrossSigning\";\nimport {MemberChange} from \"../room/members/RoomMember\";\nimport type {CrossSigningKey} from \"../verification/CrossSigning\";\nimport type {HomeServerApi} from \"../net/HomeServerApi\";\nimport type {ObservableMap} from \"../../observable/map\";\nimport type {Room} from \"../room/Room\";\nimport type {ILogItem} from \"../../logging/types\";\nimport type {Storage} from \"../storage/idb/Storage\";\nimport type {Transaction} from \"../storage/idb/Transaction\";\nimport type * as OlmNamespace from \"@matrix-org/olm\";\ntype Olm = typeof OlmNamespace;\n\n// tracking status for cross-signing and device keys\nexport enum KeysTrackingStatus {\n Outdated = 0,\n UpToDate = 1\n}\n\nexport type UserIdentity = {\n userId: string,\n roomIds: string[],\n keysTrackingStatus: KeysTrackingStatus,\n}\n\nfunction createUserIdentity(userId: string, initialRoomId?: string): UserIdentity {\n return {\n userId: userId,\n roomIds: initialRoomId ? [initialRoomId] : [],\n keysTrackingStatus: KeysTrackingStatus.Outdated,\n };\n}\n\nfunction addRoomToIdentity(identity: UserIdentity | undefined, userId: string, roomId: string): UserIdentity | undefined {\n if (!identity) {\n identity = createUserIdentity(userId, roomId);\n return identity;\n } else {\n if (!identity.roomIds.includes(roomId)) {\n identity.roomIds.push(roomId);\n return identity;\n }\n }\n}\n\nexport class DeviceTracker {\n private readonly _storage: Storage;\n private readonly _getSyncToken: () => string;\n private readonly _olmUtil: Olm.Utility;\n private readonly _ownUserId: string;\n private readonly _ownDeviceId: string;\n\n constructor(options: {storage: Storage, getSyncToken: () => string, olmUtil: Olm.Utility, ownUserId: string, ownDeviceId: string}) {\n this._storage = options.storage;\n this._getSyncToken = options.getSyncToken;\n this._olmUtil = options.olmUtil;\n this._ownUserId = options.ownUserId;\n this._ownDeviceId = options.ownDeviceId;\n }\n\n async writeDeviceChanges(changedUserIds: ReadonlyArray, txn: Transaction, log: ILogItem): Promise {\n const {userIdentities} = txn;\n // TODO: should we also look at left here to handle this?:\n // the usual problem here is that you share a room with a user,\n // go offline, the remote user leaves the room, changes their devices,\n // then rejoins the room you share (or another room).\n // At which point you come online, all of this happens in the gap, \n // and you don't notice that they ever left, \n // and so the client doesn't invalidate their device cache for the user\n log.set(\"changed\", changedUserIds.length);\n await Promise.all(changedUserIds.map(async userId => {\n const user = await userIdentities.get(userId);\n if (user) {\n log.log({l: \"outdated\", id: userId});\n user.keysTrackingStatus = KeysTrackingStatus.Outdated;\n userIdentities.set(user);\n }\n }));\n }\n\n /** @return Promise<{added: string[], removed: string[]}> the user ids for who the room was added or removed to the userIdentity,\n * and with who a key should be now be shared\n **/\n async writeMemberChanges(room: Room, memberChanges: Map, historyVisibility: HistoryVisibility, txn: Transaction): Promise<{added: string[], removed: string[]}> {\n const added: string[] = [];\n const removed: string[] = [];\n await Promise.all(Array.from(memberChanges.values()).map(async memberChange => {\n // keys should now be shared with this member?\n // add the room to the userIdentity if so\n if (shouldShareKey(memberChange.membership, historyVisibility)) {\n if (await this._addRoomToUserIdentity(memberChange.roomId, memberChange.userId, txn)) {\n added.push(memberChange.userId);\n }\n } else if (shouldShareKey(memberChange.previousMembership, historyVisibility)) {\n // try to remove room we were previously sharing the key with the member but not anymore\n const {roomId} = memberChange;\n // if we left the room, remove room from all user identities in the room\n if (memberChange.userId === this._ownUserId) {\n const userIds = await txn.roomMembers.getAllUserIds(roomId);\n await Promise.all(userIds.map(userId => {\n return this._removeRoomFromUserIdentity(roomId, userId, txn);\n }));\n } else {\n await this._removeRoomFromUserIdentity(roomId, memberChange.userId, txn);\n }\n removed.push(memberChange.userId);\n }\n }));\n return {added, removed};\n }\n\n async trackRoom(room: Room, historyVisibility: HistoryVisibility, log: ILogItem): Promise {\n if (room.isTrackingMembers || !room.isEncrypted) {\n return;\n }\n const memberList = await room.loadMemberList(undefined, log);\n const txn = await this._storage.readWriteTxn([\n this._storage.storeNames.roomSummary,\n this._storage.storeNames.userIdentities,\n this._storage.storeNames.deviceKeys, // to remove all devices in _removeRoomFromUserIdentity\n ]);\n try {\n let isTrackingChanges;\n try {\n isTrackingChanges = room.writeIsTrackingMembers(true, txn);\n const members = Array.from((memberList.members as ObservableMap).values());\n log.set(\"members\", members.length);\n // TODO: should we remove any userIdentities we should not share the key with??\n // e.g. as an extra security measure if we had a mistake in other code?\n await Promise.all(members.map(async member => {\n if (shouldShareKey(member.membership, historyVisibility)) {\n await this._addRoomToUserIdentity(member.roomId, member.userId, txn);\n } else {\n await this._removeRoomFromUserIdentity(member.roomId, member.userId, txn);\n }\n }));\n } catch (err) {\n txn.abort();\n throw err;\n }\n await txn.complete();\n room.applyIsTrackingMembersChanges(isTrackingChanges);\n } finally {\n memberList.release();\n }\n }\n\n async invalidateUserKeys(userId: string): Promise {\n const txn = await this._storage.readWriteTxn([this._storage.storeNames.userIdentities]);\n const userIdentity = await txn.userIdentities.get(userId);\n if (userIdentity) {\n userIdentity.keysTrackingStatus = KeysTrackingStatus.Outdated;\n txn.userIdentities.set(userIdentity);\n }\n await txn.complete();\n }\n\n async getCrossSigningKeyForUser(userId: string, usage: KeyUsage, hsApi: HomeServerApi | undefined, log: ILogItem): Promise {\n return await log.wrap({l: \"DeviceTracker.getCrossSigningKeyForUser\", id: userId, usage}, async log => {\n const txn = await this._storage.readTxn([\n this._storage.storeNames.userIdentities,\n this._storage.storeNames.crossSigningKeys,\n ]);\n const userIdentity = await txn.userIdentities.get(userId);\n if (userIdentity && userIdentity.keysTrackingStatus !== KeysTrackingStatus.Outdated) {\n return await txn.crossSigningKeys.get(userId, usage);\n }\n // not allowed to access the network, bail out\n if (!hsApi) {\n return undefined;\n }\n // fetch from hs\n const keys = await this._queryKeys([userId], hsApi, log);\n switch (usage) {\n case KeyUsage.Master:\n return keys.masterKeys.get(userId);\n case KeyUsage.SelfSigning:\n return keys.selfSigningKeys.get(userId);\n case KeyUsage.UserSigning:\n return keys.userSigningKeys.get(userId);\n }\n });\n }\n\n async writeHistoryVisibility(room: Room, historyVisibility: HistoryVisibility, syncTxn: Transaction, log: ILogItem): Promise<{added: string[], removed: string[]}> {\n const added: string[] = [];\n const removed: string[] = [];\n if (room.isTrackingMembers && room.isEncrypted) {\n await log.wrap(\"rewriting userIdentities\", async log => {\n // TODO: how do we know that we won't fetch the members from the server here and hence close the syncTxn?\n const memberList = await room.loadMemberList(syncTxn, log);\n try {\n const members = Array.from((memberList.members as ObservableMap).values());\n log.set(\"members\", members.length);\n await Promise.all(members.map(async member => {\n if (shouldShareKey(member.membership, historyVisibility)) {\n if (await this._addRoomToUserIdentity(member.roomId, member.userId, syncTxn)) {\n added.push(member.userId);\n }\n } else {\n if (await this._removeRoomFromUserIdentity(member.roomId, member.userId, syncTxn)) {\n removed.push(member.userId);\n }\n }\n }));\n } finally {\n memberList.release();\n }\n });\n }\n return {added, removed};\n }\n\n async _addRoomToUserIdentity(roomId: string, userId: string, txn: Transaction): Promise {\n const {userIdentities} = txn;\n const identity = await userIdentities.get(userId);\n const updatedIdentity = addRoomToIdentity(identity, userId, roomId);\n if (updatedIdentity) {\n userIdentities.set(updatedIdentity);\n return true;\n }\n return false;\n }\n\n async _removeRoomFromUserIdentity(roomId: string, userId: string, txn: Transaction): Promise {\n const {userIdentities, deviceKeys} = txn;\n const identity = await userIdentities.get(userId);\n if (identity) {\n identity.roomIds = identity.roomIds.filter(id => id !== roomId);\n // no more encrypted rooms with this user, remove\n if (identity.roomIds.length === 0) {\n userIdentities.remove(userId);\n deviceKeys.removeAllForUser(userId);\n } else {\n userIdentities.set(identity);\n }\n return true;\n }\n return false;\n }\n\n async _queryKeys(userIds: string[], hsApi: HomeServerApi, log: ILogItem): Promise<{\n deviceKeys: Map,\n masterKeys: Map,\n selfSigningKeys: Map,\n userSigningKeys: Map\n }> {\n // TODO: we need to handle the race here between /sync and /keys/query just like we need to do for the member list ...\n // there are multiple requests going out for /keys/query though and only one for /members\n // So, while doing /keys/query, writeDeviceChanges should add userIds marked as outdated to a list\n // when /keys/query returns, we should check that list and requery if we queried for a given user.\n // and then remove the list.\n\n const deviceKeyResponse = await hsApi.queryKeys({\n \"timeout\": 10000,\n \"device_keys\": userIds.reduce((deviceKeysMap, userId) => {\n deviceKeysMap[userId] = [];\n return deviceKeysMap;\n }, {}),\n \"token\": this._getSyncToken()\n }, {log}).response();\n\n const masterKeys = log.wrap(\"master keys\", log => this._filterVerifiedCrossSigningKeys(deviceKeyResponse[\"master_keys\"], KeyUsage.Master, log));\n const selfSigningKeys = log.wrap(\"self-signing keys\", log => this._filterVerifiedCrossSigningKeys(deviceKeyResponse[\"self_signing_keys\"], KeyUsage.SelfSigning, log));\n const userSigningKeys = log.wrap(\"user-signing keys\", log => this._filterVerifiedCrossSigningKeys(deviceKeyResponse[\"user_signing_keys\"], KeyUsage.UserSigning, log));\n const deviceKeys = log.wrap(\"device keys\", log => this._filterVerifiedDeviceKeys(deviceKeyResponse[\"device_keys\"], log));\n const txn = await this._storage.readWriteTxn([\n this._storage.storeNames.userIdentities,\n this._storage.storeNames.deviceKeys,\n this._storage.storeNames.crossSigningKeys,\n ]);\n let deviceIdentities;\n try {\n for (const key of masterKeys.values()) {\n txn.crossSigningKeys.set(key);\n }\n for (const key of selfSigningKeys.values()) {\n txn.crossSigningKeys.set(key);\n }\n for (const key of userSigningKeys.values()) {\n txn.crossSigningKeys.set(key);\n }\n let totalCount = 0;\n await Promise.all(Array.from(deviceKeys.keys()).map(async (userId) => {\n let deviceKeysForUser = deviceKeys.get(userId)!;\n totalCount += deviceKeysForUser.length;\n // check for devices that changed their keys and keep the old key\n deviceKeysForUser = await this._storeQueriedDevicesForUserId(userId, deviceKeysForUser, txn);\n deviceKeys.set(userId, deviceKeysForUser);\n }));\n log.set(\"devices\", totalCount);\n } catch (err) {\n txn.abort();\n throw err;\n }\n await txn.complete();\n return {\n deviceKeys,\n masterKeys,\n selfSigningKeys,\n userSigningKeys\n };\n }\n\n async _storeQueriedDevicesForUserId(userId: string, deviceKeys: DeviceKey[], txn: Transaction): Promise {\n // TODO: we should obsolete (flag) the device keys that have been removed,\n // but keep them to verify messages encrypted with it?\n const knownDeviceIds = await txn.deviceKeys.getAllDeviceIds(userId);\n // delete any devices that we know off but are not in the response anymore.\n // important this happens before checking if the ed25519 key changed,\n // otherwise we would end up deleting existing devices with changed keys.\n for (const deviceId of knownDeviceIds) {\n if (deviceKeys.every(di => di.device_id !== deviceId)) {\n txn.deviceKeys.remove(userId, deviceId);\n }\n }\n\n // all the device identities as we will have them in storage\n const allDeviceKeys: DeviceKey[] = [];\n const deviceKeysToStore: DeviceKey[] = [];\n // filter out devices that have changed their ed25519 key since last time we queried them\n await Promise.all(deviceKeys.map(async deviceKey => {\n if (knownDeviceIds.includes(deviceKey.device_id)) {\n const existingDevice = await txn.deviceKeys.get(deviceKey.user_id, deviceKey.device_id);\n if (existingDevice && getDeviceEd25519Key(existingDevice) !== getDeviceEd25519Key(deviceKey)) {\n allDeviceKeys.push(existingDevice);\n return;\n }\n }\n allDeviceKeys.push(deviceKey);\n deviceKeysToStore.push(deviceKey);\n }));\n // store devices\n for (const deviceKey of deviceKeysToStore) {\n txn.deviceKeys.set(deviceKey);\n }\n // mark user identities as up to date\n let identity = await txn.userIdentities.get(userId);\n if (!identity) {\n // create the identity if it doesn't exist, which can happen if\n // we request devices before tracking the room.\n // IMPORTANT here that the identity gets created without any roomId!\n // if we claim that we share and e2ee room with the user without having\n // checked, we could share keys with that user without them being in the room\n identity = createUserIdentity(userId);\n }\n identity.keysTrackingStatus = KeysTrackingStatus.UpToDate;\n txn.userIdentities.set(identity);\n\n return allDeviceKeys;\n }\n\n _filterVerifiedCrossSigningKeys(crossSigningKeysResponse: {[userId: string]: CrossSigningKey}, usage: KeyUsage, log: ILogItem): Map {\n const keys: Map = new Map();\n if (!crossSigningKeysResponse) {\n return keys;\n }\n for (const [userId, keyInfo] of Object.entries(crossSigningKeysResponse)) {\n log.wrap({l: userId}, log => {\n if (this._validateCrossSigningKey(userId, keyInfo, usage, log)) {\n keys.set(getKeyUserId(keyInfo)!, keyInfo);\n }\n });\n }\n return keys;\n }\n\n _validateCrossSigningKey(userId: string, keyInfo: CrossSigningKey, usage: KeyUsage, log: ILogItem): boolean {\n if (getKeyUserId(keyInfo) !== userId) {\n log.log({l: \"user_id mismatch\", userId: keyInfo[\"user_id\"]});\n return false;\n }\n if (getKeyUsage(keyInfo) !== usage) {\n log.log({l: \"usage mismatch\", usage: keyInfo.usage});\n return false;\n }\n const publicKey = getKeyEd25519Key(keyInfo);\n if (!publicKey) {\n log.log({l: \"no ed25519 key\", keys: keyInfo.keys});\n return false;\n }\n return true;\n }\n\n /**\n * @return {Array<{userId, verifiedKeys: Array>}\n */\n _filterVerifiedDeviceKeys(\n keyQueryDeviceKeysResponse: {[userId: string]: {[deviceId: string]: DeviceKey}},\n parentLog: ILogItem\n ): Map {\n const curve25519Keys: Set = new Set();\n const keys: Map = new Map();\n if (!keyQueryDeviceKeysResponse) {\n return keys;\n }\n for (const [userId, keysByDevice] of Object.entries(keyQueryDeviceKeysResponse)) {\n parentLog.wrap(userId, log => {\n const verifiedEntries = Object.entries(keysByDevice).filter(([deviceId, deviceKey]) => {\n return log.wrap(deviceId, log => {\n if (this._validateDeviceKey(userId, deviceId, deviceKey, log)) {\n const curve25519Key = getDeviceCurve25519Key(deviceKey);\n if (curve25519Keys.has(curve25519Key)) {\n parentLog.log({\n l: \"ignore device with duplicate curve25519 key\",\n keys: deviceKey\n }, parentLog.level.Warn);\n return false;\n }\n curve25519Keys.add(curve25519Key);\n return true;\n } else {\n return false;\n }\n });\n });\n const verifiedKeys = verifiedEntries.map(([, deviceKeys]) => deviceKeys);\n keys.set(userId, verifiedKeys);\n });\n }\n return keys;\n }\n\n _validateDeviceKey(userIdFromServer: string, deviceIdFromServer: string, deviceKey: DeviceKey, log: ILogItem): boolean {\n const deviceId = deviceKey[\"device_id\"];\n const userId = deviceKey[\"user_id\"];\n if (userId !== userIdFromServer) {\n log.log(\"user_id mismatch\");\n return false;\n }\n if (deviceId !== deviceIdFromServer) {\n log.log(\"device_id mismatch\");\n return false;\n }\n const ed25519Key = getDeviceEd25519Key(deviceKey);\n const curve25519Key = getDeviceCurve25519Key(deviceKey);\n if (typeof ed25519Key !== \"string\" || typeof curve25519Key !== \"string\") {\n log.log(\"ed25519 and/or curve25519 key invalid\").set({deviceKey});\n return false;\n }\n const isValid = verifyEd25519Signature(this._olmUtil, userId, deviceId, ed25519Key, deviceKey, log) === SignatureVerification.Valid;\n if (!isValid) {\n log.log({\n l: \"ignore device with invalid signature\",\n keys: deviceKey\n }, log.level.Warn);\n }\n return isValid;\n }\n\n /**\n * Gives all the device identities for a room that is already tracked.\n * Can be used to decide which users to share keys with.\n * Assumes room is already tracked. Call `trackRoom` first if unsure.\n * @param {String} roomId [description]\n * @return {[type]} [description]\n */\n async devicesForTrackedRoom(roomId: string, hsApi: HomeServerApi, log: ILogItem): Promise {\n const txn = await this._storage.readTxn([\n this._storage.storeNames.roomMembers,\n this._storage.storeNames.userIdentities,\n ]);\n\n // because we don't have multiEntry support in IE11, we get a set of userIds that is pretty close to what we\n // need as a good first filter (given that non-join memberships will be in there). After fetching the identities,\n // we check which ones have the roomId for the room we're looking at.\n \n // So, this will also contain non-joined memberships\n const userIds = await txn.roomMembers.getAllUserIds(roomId);\n // TODO: check here if userIds is safe? yes it is\n return await this._devicesForUserIdsInTrackedRoom(roomId, userIds, txn, hsApi, log);\n }\n\n /** \n * Can be used to decide which users to share keys with.\n * Assumes room is already tracked. Call `trackRoom` first if unsure.\n * This will not return the device key for our own user, as we don't need to share keys with ourselves.\n */\n async devicesForRoomMembers(roomId: string, userIds: string[], hsApi: HomeServerApi, log: ILogItem): Promise {\n const txn = await this._storage.readTxn([\n this._storage.storeNames.userIdentities,\n ]);\n return await this._devicesForUserIdsInTrackedRoom(roomId, userIds, txn, hsApi, log);\n }\n\n /** \n * Cannot be used to decide which users to share keys with.\n * Does not assume membership to any room or whether any room is tracked.\n * This will return device keys for our own user, including our own device.\n */\n async devicesForUsers(userIds: string[], hsApi: HomeServerApi, log: ILogItem): Promise {\n const txn = await this._storage.readTxn([\n this._storage.storeNames.userIdentities,\n ]);\n\n const upToDateIdentities: UserIdentity[] = [];\n const outdatedUserIds: string[] = [];\n await Promise.all(userIds.map(async userId => {\n const i = await txn.userIdentities.get(userId);\n if (i && i.keysTrackingStatus === KeysTrackingStatus.UpToDate) {\n upToDateIdentities.push(i);\n } else if (!i || i.keysTrackingStatus === KeysTrackingStatus.Outdated) {\n // allow fetching for userIdentities we don't know about yet,\n // as we don't assume the room is tracked here.\n outdatedUserIds.push(userId);\n }\n }));\n return this._devicesForUserIdentities(upToDateIdentities, outdatedUserIds, hsApi, log);\n }\n\n /** Gets a single device */\n async deviceForId(userId: string, deviceId: string, hsApi: HomeServerApi, log: ILogItem): Promise {\n /**\n * 1. If the device keys are outdated, we will fetch all the keys and update them.\n */\n const userIdentityTxn = await this._storage.readTxn([this._storage.storeNames.userIdentities]);\n const userIdentity = await userIdentityTxn.userIdentities.get(userId);\n if (userIdentity?.keysTrackingStatus !== KeysTrackingStatus.UpToDate) {\n const {deviceKeys} = await this._queryKeys([userId], hsApi, log);\n const keyList = deviceKeys.get(userId);\n const device = keyList!.find(device => device.device_id === deviceId);\n return device;\n }\n\n /**\n * 2. If keys are up to date, return from storage.\n */\n const txn = await this._storage.readTxn([\n this._storage.storeNames.deviceKeys,\n ]);\n let deviceKey = await txn.deviceKeys.get(userId, deviceId);\n if (deviceKey) {\n log.set(\"existingDevice\", true);\n } else {\n //// BEGIN EXTRACT (deviceKeysMap)\n const deviceKeyResponse = await hsApi.queryKeys({\n \"timeout\": 10000,\n \"device_keys\": {\n [userId]: [deviceId]\n },\n \"token\": this._getSyncToken()\n }, {log}).response();\n // verify signature\n const verifiedKeysPerUser = log.wrap(\"verify\", log => this._filterVerifiedDeviceKeys(deviceKeyResponse[\"device_keys\"], log));\n //// END EXTRACT\n const verifiedKey = verifiedKeysPerUser.get(userId)?.find(d => d.device_id === deviceId);\n // user hasn't uploaded keys for device?\n if (!verifiedKey) {\n return undefined;\n }\n const txn = await this._storage.readWriteTxn([\n this._storage.storeNames.deviceKeys,\n ]);\n // todo: the following comment states what the code does\n // but it fails to explain why it does what it does...\n\n // check again we don't have the device already.\n // when updating all keys for a user we allow updating the\n // device when the key hasn't changed so the device display name\n // can be updated, but here we don't.\n const existingDevice = await txn.deviceKeys.get(userId, deviceId);\n if (existingDevice) {\n deviceKey = existingDevice;\n log.set(\"existingDeviceAfterFetch\", true);\n } else {\n try {\n txn.deviceKeys.set(verifiedKey);\n deviceKey = verifiedKey;\n log.set(\"newDevice\", true);\n } catch (err) {\n txn.abort();\n throw err;\n }\n await txn.complete();\n }\n }\n return deviceKey;\n }\n\n async deviceForCurveKey(userId: string, key: string, hsApi: HomeServerApi, log: ILogItem): Promise {\n const txn = await this._storage.readTxn([\n this._storage.storeNames.deviceKeys,\n this._storage.storeNames.userIdentities,\n ]);\n const userIdentity = await txn.userIdentities.get(userId);\n if (userIdentity?.keysTrackingStatus !== KeysTrackingStatus.UpToDate) {\n const {deviceKeys} = await this._queryKeys([userId], hsApi, log);\n const keyList = deviceKeys.get(userId);\n const device = keyList!.find(device => getDeviceCurve25519Key(device) === key);\n return device;\n }\n const device = await txn.deviceKeys.getByCurve25519Key(key);\n return device;\n }\n\n /**\n * Gets all the device identities with which keys should be shared for a set of users in a tracked room.\n * If any userIdentities are outdated, it will fetch them from the homeserver.\n * @param {string} roomId the id of the tracked room to filter users by.\n * @param {Array} userIds a set of user ids to try and find the identity for.\n * @param {Transaction} userIdentityTxn to read the user identities\n * @param {HomeServerApi} hsApi\n * @return {Array} all devices identities for the given users we should share keys with.\n */\n async _devicesForUserIdsInTrackedRoom(roomId: string, userIds: string[], userIdentityTxn: Transaction, hsApi: HomeServerApi, log: ILogItem): Promise {\n const allMemberIdentities = await Promise.all(userIds.map(userId => userIdentityTxn.userIdentities.get(userId)));\n const identities = allMemberIdentities.filter(identity => {\n // we use roomIds to decide with whom we should share keys for a given room,\n // taking into account the membership and room history visibility.\n // so filter out anyone who we shouldn't share keys with.\n // Given we assume the room is tracked,\n // also exclude any userId which doesn't have a userIdentity yet.\n return identity && identity.roomIds.includes(roomId);\n }) as UserIdentity[]; // undefined has been filter out\n const upToDateIdentities = identities.filter(i => i.keysTrackingStatus === KeysTrackingStatus.UpToDate);\n const outdatedUserIds = identities\n .filter(i => i.keysTrackingStatus === KeysTrackingStatus.Outdated)\n .map(i => i.userId);\n let devices = await this._devicesForUserIdentities(upToDateIdentities, outdatedUserIds, hsApi, log);\n // filter out our own device as we should never share keys with it.\n devices = devices.filter(device => {\n const isOwnDevice = device.user_id === this._ownUserId && device.device_id === this._ownDeviceId;\n return !isOwnDevice;\n });\n return devices;\n }\n\n /** Gets the device identites for a set of user identities that\n * are known to be up to date, and a set of userIds that are known\n * to be absent from our store or are outdated. The outdated user ids\n * will have their keys fetched from the homeserver. */\n async _devicesForUserIdentities(upToDateIdentities: UserIdentity[], outdatedUserIds: string[], hsApi: HomeServerApi, log: ILogItem): Promise {\n log.set(\"uptodate\", upToDateIdentities.length);\n log.set(\"outdated\", outdatedUserIds.length);\n let queriedDeviceKeys: Map | undefined;\n if (outdatedUserIds.length) {\n // TODO: ignore the race between /sync and /keys/query for now,\n // where users could get marked as outdated or added/removed from the room while\n // querying keys\n const {deviceKeys} = await this._queryKeys(outdatedUserIds, hsApi, log);\n queriedDeviceKeys = deviceKeys;\n }\n\n const deviceTxn = await this._storage.readTxn([\n this._storage.storeNames.deviceKeys,\n ]);\n const devicesPerUser = await Promise.all(upToDateIdentities.map(identity => {\n return deviceTxn.deviceKeys.getAllForUserId(identity.userId);\n }));\n let flattenedDevices = devicesPerUser.reduce((all, devicesForUser) => all.concat(devicesForUser), []);\n if (queriedDeviceKeys && queriedDeviceKeys.size) {\n for (const deviceKeysForUser of queriedDeviceKeys.values()) {\n flattenedDevices = flattenedDevices.concat(deviceKeysForUser);\n }\n }\n return flattenedDevices;\n }\n\n async getDeviceByCurve25519Key(curve25519Key, txn: Transaction): Promise {\n return await txn.deviceKeys.getByCurve25519Key(curve25519Key);\n }\n\n get ownDeviceId(): string {\n return this._ownDeviceId;\n }\n}\n\nimport {createMockStorage} from \"../../mocks/Storage\";\nimport {Instance as NullLoggerInstance} from \"../../logging/NullLogger\";\n\nexport function tests() {\n\n function createUntrackedRoomMock(roomId: string, joinedUserIds: string[], invitedUserIds: string[] = []) {\n return {\n id: roomId,\n isTrackingMembers: false,\n isEncrypted: true,\n loadMemberList: () => {\n const joinedMembers = joinedUserIds.map(userId => {return RoomMember.fromUserId(roomId, userId, \"join\");});\n const invitedMembers = invitedUserIds.map(userId => {return RoomMember.fromUserId(roomId, userId, \"invite\");});\n const members = joinedMembers.concat(invitedMembers);\n const memberMap = members.reduce((map, member) => {\n map.set(member.userId, member);\n return map;\n }, new Map());\n return {members: memberMap, release() {}}\n },\n writeIsTrackingMembers(isTrackingMembers) {\n if (this.isTrackingMembers !== isTrackingMembers) {\n return isTrackingMembers;\n }\n return undefined;\n },\n applyIsTrackingMembersChanges(isTrackingMembers) {\n if (isTrackingMembers !== undefined) {\n this.isTrackingMembers = isTrackingMembers;\n }\n },\n }\n }\n\n function createQueryKeysHSApiMock(createKey = (algorithm, userId, deviceId) => `${algorithm}:${userId}:${deviceId}:key`): HomeServerApi {\n return {\n queryKeys(payload) {\n const {device_keys: deviceKeys} = payload;\n const userKeys = Object.entries(deviceKeys as {[userId: string]: string[]}).reduce((userKeys, [userId, deviceIds]) => {\n if (deviceIds.length === 0) {\n deviceIds = [\"device1\"];\n }\n userKeys[userId] = deviceIds.filter(d => d === \"device1\").reduce((deviceKeys, deviceId) => {\n deviceKeys[deviceId] = {\n \"algorithms\": [\n \"m.olm.v1.curve25519-aes-sha2\",\n \"m.megolm.v1.aes-sha2\"\n ],\n \"device_id\": deviceId,\n \"keys\": {\n [`curve25519:${deviceId}`]: createKey(\"curve25519\", userId, deviceId),\n [`ed25519:${deviceId}`]: createKey(\"ed25519\", userId, deviceId),\n },\n \"signatures\": {\n [userId]: {\n [`ed25519:${deviceId}`]: `ed25519:${userId}:${deviceId}:signature`\n }\n },\n \"unsigned\": {\n \"device_display_name\": `${userId} Phone`\n },\n \"user_id\": userId\n };\n return deviceKeys;\n }, {});\n return userKeys;\n }, {});\n const response = {device_keys: userKeys};\n return {\n async response() {\n return response;\n }\n };\n }\n } as unknown as HomeServerApi;\n }\n\n async function writeMemberListToStorage(room, storage) {\n const txn = await storage.readWriteTxn([\n storage.storeNames.roomMembers,\n ]);\n const memberList = await room.loadMemberList(txn);\n try {\n for (const member of memberList.members.values()) {\n txn.roomMembers.set(member.serialize());\n }\n } catch (err) {\n txn.abort();\n throw err;\n } finally {\n memberList.release();\n }\n await txn.complete();\n }\n\n const roomId = \"!abc:hs.tld\";\n\n return {\n \"trackRoom only writes joined members with history visibility of joined\": async assert => {\n const storage = await createMockStorage();\n const tracker = new DeviceTracker({\n storage,\n getSyncToken: () => \"token\",\n olmUtil: {ed25519_verify: () => {}} as unknown as Olm.Utility, // valid if it does not throw\n ownUserId: \"@alice:hs.tld\",\n ownDeviceId: \"ABCD\",\n });\n const room = createUntrackedRoomMock(roomId, [\"@alice:hs.tld\", \"@bob:hs.tld\"], [\"@charly:hs.tld\"]);\n await tracker.trackRoom(room, HistoryVisibility.Joined, NullLoggerInstance.item);\n const txn = await storage.readTxn([storage.storeNames.userIdentities]);\n assert.deepEqual(await txn.userIdentities.get(\"@alice:hs.tld\"), {\n userId: \"@alice:hs.tld\",\n roomIds: [roomId],\n keysTrackingStatus: KeysTrackingStatus.Outdated\n });\n assert.deepEqual(await txn.userIdentities.get(\"@bob:hs.tld\"), {\n userId: \"@bob:hs.tld\",\n roomIds: [roomId],\n keysTrackingStatus: KeysTrackingStatus.Outdated\n });\n assert.equal(await txn.userIdentities.get(\"@charly:hs.tld\"), undefined);\n },\n \"getting devices for tracked room yields correct keys\": async assert => {\n const storage = await createMockStorage();\n const tracker = new DeviceTracker({\n storage,\n getSyncToken: () => \"token\",\n olmUtil: {ed25519_verify: () => {}} as unknown as Olm.Utility, // valid if it does not throw\n ownUserId: \"@alice:hs.tld\",\n ownDeviceId: \"ABCD\",\n });\n const room = createUntrackedRoomMock(roomId, [\"@alice:hs.tld\", \"@bob:hs.tld\"]);\n await tracker.trackRoom(room, HistoryVisibility.Joined, NullLoggerInstance.item);\n const hsApi = createQueryKeysHSApiMock();\n const devices = await tracker.devicesForRoomMembers(roomId, [\"@alice:hs.tld\", \"@bob:hs.tld\"], hsApi, NullLoggerInstance.item);\n assert.equal(devices.length, 2);\n assert.equal(getDeviceEd25519Key(devices.find(d => d.user_id === \"@alice:hs.tld\")!), \"ed25519:@alice:hs.tld:device1:key\");\n assert.equal(getDeviceEd25519Key(devices.find(d => d.user_id === \"@bob:hs.tld\")!), \"ed25519:@bob:hs.tld:device1:key\");\n },\n \"device with changed key is ignored\": async assert => {\n const storage = await createMockStorage();\n const tracker = new DeviceTracker({\n storage,\n getSyncToken: () => \"token\",\n olmUtil: {ed25519_verify: () => {}} as unknown as Olm.Utility, // valid if it does not throw\n ownUserId: \"@alice:hs.tld\",\n ownDeviceId: \"ABCD\",\n });\n const room = createUntrackedRoomMock(roomId, [\"@alice:hs.tld\", \"@bob:hs.tld\"]);\n await tracker.trackRoom(room, HistoryVisibility.Joined, NullLoggerInstance.item);\n const hsApi = createQueryKeysHSApiMock();\n // query devices first time\n await tracker.devicesForRoomMembers(roomId, [\"@alice:hs.tld\", \"@bob:hs.tld\"], hsApi, NullLoggerInstance.item);\n const txn = await storage.readWriteTxn([storage.storeNames.userIdentities]);\n // mark alice as outdated, so keys will be fetched again\n tracker.writeDeviceChanges([\"@alice:hs.tld\"], txn, NullLoggerInstance.item);\n await txn.complete();\n const hsApiWithChangedAliceKey = createQueryKeysHSApiMock((algo, userId, deviceId) => {\n return `${algo}:${userId}:${deviceId}:${userId === \"@alice:hs.tld\" ? \"newKey\" : \"key\"}`;\n });\n const devices = await tracker.devicesForRoomMembers(roomId, [\"@alice:hs.tld\", \"@bob:hs.tld\"], hsApiWithChangedAliceKey, NullLoggerInstance.item);\n assert.equal(devices.length, 2);\n assert.equal(getDeviceEd25519Key(devices.find(d => d.user_id === \"@alice:hs.tld\")!), \"ed25519:@alice:hs.tld:device1:key\");\n assert.equal(getDeviceEd25519Key(devices.find(d => d.user_id === \"@bob:hs.tld\")!), \"ed25519:@bob:hs.tld:device1:key\");\n const txn2 = await storage.readTxn([storage.storeNames.deviceKeys]);\n // also check the modified key was not stored\n assert.equal(getDeviceEd25519Key((await txn2.deviceKeys.get(\"@alice:hs.tld\", \"device1\"))!), \"ed25519:@alice:hs.tld:device1:key\");\n },\n \"change history visibility from joined to invited adds invitees\": async assert => {\n const storage = await createMockStorage();\n const tracker = new DeviceTracker({\n storage,\n getSyncToken: () => \"token\",\n olmUtil: {ed25519_verify: () => {}} as unknown as Olm.Utility, // valid if it does not throw\n ownUserId: \"@alice:hs.tld\",\n ownDeviceId: \"ABCD\",\n });\n // alice is joined, bob is invited\n const room = await createUntrackedRoomMock(roomId, \n [\"@alice:hs.tld\"], [\"@bob:hs.tld\"]);\n await tracker.trackRoom(room, HistoryVisibility.Joined, NullLoggerInstance.item);\n const txn = await storage.readWriteTxn([storage.storeNames.userIdentities, storage.storeNames.deviceKeys]);\n assert.equal(await txn.userIdentities.get(\"@bob:hs.tld\"), undefined);\n const {added, removed} = await tracker.writeHistoryVisibility(room, HistoryVisibility.Invited, txn, NullLoggerInstance.item);\n assert.equal((await txn.userIdentities.get(\"@bob:hs.tld\"))!.userId, \"@bob:hs.tld\");\n assert.deepEqual(added, [\"@bob:hs.tld\"]);\n assert.deepEqual(removed, []);\n },\n \"change history visibility from invited to joined removes invitees\": async assert => {\n const storage = await createMockStorage();\n const tracker = new DeviceTracker({\n storage,\n getSyncToken: () => \"token\",\n olmUtil: {ed25519_verify: () => {}} as unknown as Olm.Utility, // valid if it does not throw\n ownUserId: \"@alice:hs.tld\",\n ownDeviceId: \"ABCD\",\n });\n // alice is joined, bob is invited\n const room = await createUntrackedRoomMock(roomId, \n [\"@alice:hs.tld\"], [\"@bob:hs.tld\"]);\n await tracker.trackRoom(room, HistoryVisibility.Invited, NullLoggerInstance.item);\n const txn = await storage.readWriteTxn([storage.storeNames.userIdentities, storage.storeNames.deviceKeys]);\n assert.equal((await txn.userIdentities.get(\"@bob:hs.tld\"))!.userId, \"@bob:hs.tld\");\n const {added, removed} = await tracker.writeHistoryVisibility(room, HistoryVisibility.Joined, txn, NullLoggerInstance.item);\n assert.equal(await txn.userIdentities.get(\"@bob:hs.tld\"), undefined);\n assert.deepEqual(added, []);\n assert.deepEqual(removed, [\"@bob:hs.tld\"]);\n },\n \"adding invitee with history visibility of invited adds room to userIdentities\": async assert => {\n const storage = await createMockStorage();\n const tracker = new DeviceTracker({\n storage,\n getSyncToken: () => \"token\",\n olmUtil: {ed25519_verify: () => {}} as unknown as Olm.Utility, // valid if it does not throw\n ownUserId: \"@alice:hs.tld\",\n ownDeviceId: \"ABCD\",\n });\n const room = await createUntrackedRoomMock(roomId, [\"@alice:hs.tld\"]);\n await tracker.trackRoom(room, HistoryVisibility.Invited, NullLoggerInstance.item);\n const txn = await storage.readWriteTxn([storage.storeNames.userIdentities, storage.storeNames.deviceKeys]);\n // inviting a new member\n const inviteChange = new MemberChange(RoomMember.fromUserId(roomId, \"@bob:hs.tld\", \"invite\"));\n const {added, removed} = await tracker.writeMemberChanges(room, new Map([[inviteChange.userId, inviteChange]]), HistoryVisibility.Invited, txn);\n assert.deepEqual(added, [\"@bob:hs.tld\"]);\n assert.deepEqual(removed, []);\n assert.equal((await txn.userIdentities.get(\"@bob:hs.tld\"))!.userId, \"@bob:hs.tld\");\n },\n \"adding invitee with history visibility of joined doesn't add room\": async assert => {\n const storage = await createMockStorage();\n const tracker = new DeviceTracker({\n storage,\n getSyncToken: () => \"token\",\n olmUtil: {ed25519_verify: () => {}} as unknown as Olm.Utility, // valid if it does not throw\n ownUserId: \"@alice:hs.tld\",\n ownDeviceId: \"ABCD\",\n });\n const room = await createUntrackedRoomMock(roomId, [\"@alice:hs.tld\"]);\n await tracker.trackRoom(room, HistoryVisibility.Joined, NullLoggerInstance.item);\n const txn = await storage.readWriteTxn([storage.storeNames.userIdentities, storage.storeNames.deviceKeys]);\n // inviting a new member\n const inviteChange = new MemberChange(RoomMember.fromUserId(roomId, \"@bob:hs.tld\", \"invite\"));\n const memberChanges = new Map([[inviteChange.userId, inviteChange]]);\n const {added, removed} = await tracker.writeMemberChanges(room, memberChanges, HistoryVisibility.Joined, txn);\n assert.deepEqual(added, []);\n assert.deepEqual(removed, []);\n assert.equal(await txn.userIdentities.get(\"@bob:hs.tld\"), undefined);\n },\n \"getting all devices after changing history visibility now includes invitees\": async assert => {\n const storage = await createMockStorage();\n const tracker = new DeviceTracker({\n storage,\n getSyncToken: () => \"token\",\n olmUtil: {ed25519_verify: () => {}} as unknown as Olm.Utility, // valid if it does not throw\n ownUserId: \"@alice:hs.tld\",\n ownDeviceId: \"ABCD\",\n });\n const room = createUntrackedRoomMock(roomId, [\"@alice:hs.tld\"], [\"@bob:hs.tld\"]);\n await tracker.trackRoom(room, HistoryVisibility.Invited, NullLoggerInstance.item);\n const hsApi = createQueryKeysHSApiMock();\n // write memberlist from room mock to mock storage,\n // as devicesForTrackedRoom reads directly from roomMembers store.\n await writeMemberListToStorage(room, storage);\n const devices = await tracker.devicesForTrackedRoom(roomId, hsApi, NullLoggerInstance.item);\n assert.equal(devices.length, 2);\n assert.equal(getDeviceEd25519Key(devices.find(d => d.user_id === \"@alice:hs.tld\")!), \"ed25519:@alice:hs.tld:device1:key\");\n assert.equal(getDeviceEd25519Key(devices.find(d => d.user_id === \"@bob:hs.tld\")!), \"ed25519:@bob:hs.tld:device1:key\");\n },\n \"rejecting invite with history visibility of invited removes room from user identity\": async assert => {\n const storage = await createMockStorage();\n const tracker = new DeviceTracker({\n storage,\n getSyncToken: () => \"token\",\n olmUtil: {ed25519_verify: () => {}} as unknown as Olm.Utility, // valid if it does not throw\n ownUserId: \"@alice:hs.tld\",\n ownDeviceId: \"ABCD\",\n });\n // alice is joined, bob is invited\n const room = await createUntrackedRoomMock(roomId, [\"@alice:hs.tld\"], [\"@bob:hs.tld\"]);\n await tracker.trackRoom(room, HistoryVisibility.Invited, NullLoggerInstance.item);\n const txn = await storage.readWriteTxn([storage.storeNames.userIdentities, storage.storeNames.deviceKeys]);\n // reject invite\n const inviteChange = new MemberChange(RoomMember.fromUserId(roomId, \"@bob:hs.tld\", \"leave\"), \"invite\");\n const memberChanges = new Map([[inviteChange.userId, inviteChange]]);\n const {added, removed} = await tracker.writeMemberChanges(room, memberChanges, HistoryVisibility.Invited, txn);\n assert.deepEqual(added, []);\n assert.deepEqual(removed, [\"@bob:hs.tld\"]);\n assert.equal(await txn.userIdentities.get(\"@bob:hs.tld\"), undefined);\n },\n \"remove room from user identity sharing multiple rooms with us preserves other room\": async assert => {\n const storage = await createMockStorage();\n const tracker = new DeviceTracker({\n storage,\n getSyncToken: () => \"token\",\n olmUtil: {ed25519_verify: () => {}} as unknown as Olm.Utility, // valid if it does not throw\n ownUserId: \"@alice:hs.tld\",\n ownDeviceId: \"ABCD\",\n });\n // alice is joined, bob is invited\n const room1 = await createUntrackedRoomMock(\"!abc:hs.tld\", [\"@alice:hs.tld\", \"@bob:hs.tld\"]);\n const room2 = await createUntrackedRoomMock(\"!def:hs.tld\", [\"@alice:hs.tld\", \"@bob:hs.tld\"]);\n await tracker.trackRoom(room1, HistoryVisibility.Joined, NullLoggerInstance.item);\n await tracker.trackRoom(room2, HistoryVisibility.Joined, NullLoggerInstance.item);\n const txn1 = await storage.readTxn([storage.storeNames.userIdentities]);\n assert.deepEqual((await txn1.userIdentities.get(\"@bob:hs.tld\"))!.roomIds, [\"!abc:hs.tld\", \"!def:hs.tld\"]);\n const leaveChange = new MemberChange(RoomMember.fromUserId(room2.id, \"@bob:hs.tld\", \"leave\"), \"join\");\n const memberChanges = new Map([[leaveChange.userId, leaveChange]]);\n const txn2 = await storage.readWriteTxn([storage.storeNames.userIdentities, storage.storeNames.deviceKeys]);\n await tracker.writeMemberChanges(room2, memberChanges, HistoryVisibility.Joined, txn2);\n await txn2.complete();\n const txn3 = await storage.readTxn([storage.storeNames.userIdentities]);\n assert.deepEqual((await txn3.userIdentities.get(\"@bob:hs.tld\"))!.roomIds, [\"!abc:hs.tld\"]);\n },\n \"add room to user identity sharing multiple rooms with us preserves other room\": async assert => {\n const storage = await createMockStorage();\n const tracker = new DeviceTracker({\n storage,\n getSyncToken: () => \"token\",\n olmUtil: {ed25519_verify: () => {}} as unknown as Olm.Utility, // valid if it does not throw\n ownUserId: \"@alice:hs.tld\",\n ownDeviceId: \"ABCD\",\n });\n // alice is joined, bob is invited\n const room1 = await createUntrackedRoomMock(\"!abc:hs.tld\", [\"@alice:hs.tld\", \"@bob:hs.tld\"]);\n const room2 = await createUntrackedRoomMock(\"!def:hs.tld\", [\"@alice:hs.tld\", \"@bob:hs.tld\"]);\n await tracker.trackRoom(room1, HistoryVisibility.Joined, NullLoggerInstance.item);\n const txn1 = await storage.readTxn([storage.storeNames.userIdentities]);\n assert.deepEqual((await txn1.userIdentities.get(\"@bob:hs.tld\"))!.roomIds, [\"!abc:hs.tld\"]);\n await tracker.trackRoom(room2, HistoryVisibility.Joined, NullLoggerInstance.item);\n const txn2 = await storage.readTxn([storage.storeNames.userIdentities]);\n assert.deepEqual((await txn2.userIdentities.get(\"@bob:hs.tld\"))!.roomIds, [\"!abc:hs.tld\", \"!def:hs.tld\"]);\n },\n \"devicesForUsers fetches users even though they aren't in any tracked room\": async assert => {\n const storage = await createMockStorage();\n const tracker = new DeviceTracker({\n storage,\n getSyncToken: () => \"token\",\n olmUtil: {ed25519_verify: () => {}} as unknown as Olm.Utility, // valid if it does not throw\n ownUserId: \"@alice:hs.tld\",\n ownDeviceId: \"ABCD\",\n });\n const hsApi = createQueryKeysHSApiMock();\n const devices = await tracker.devicesForUsers([\"@bob:hs.tld\"], hsApi, NullLoggerInstance.item);\n assert.equal(devices.length, 1);\n assert.equal(getDeviceCurve25519Key(devices[0]), \"curve25519:@bob:hs.tld:device1:key\");\n const txn1 = await storage.readTxn([storage.storeNames.userIdentities]);\n assert.deepEqual((await txn1.userIdentities.get(\"@bob:hs.tld\"))!.roomIds, []);\n },\n \"devicesForUsers doesn't add any roomId when creating userIdentity\": async assert => {\n const storage = await createMockStorage();\n const tracker = new DeviceTracker({\n storage,\n getSyncToken: () => \"token\",\n olmUtil: {ed25519_verify: () => {}} as unknown as Olm.Utility, // valid if it does not throw\n ownUserId: \"@alice:hs.tld\",\n ownDeviceId: \"ABCD\",\n });\n const hsApi = createQueryKeysHSApiMock();\n await tracker.devicesForUsers([\"@bob:hs.tld\"], hsApi, NullLoggerInstance.item);\n const txn1 = await storage.readTxn([storage.storeNames.userIdentities]);\n assert.deepEqual((await txn1.userIdentities.get(\"@bob:hs.tld\"))!.roomIds, []);\n }\n }\n}\n","import {IDOMStorage} from \"./types\";\nimport {ITransaction} from \"./QueryTarget\";\nimport {iterateCursor, NOT_DONE, reqAsPromise} from \"./utils\";\nimport {RoomMember, EVENT_TYPE as MEMBER_EVENT_TYPE} from \"../../room/members/RoomMember.js\";\nimport {SESSION_E2EE_KEY_PREFIX} from \"../../e2ee/common\";\nimport {SummaryData} from \"../../room/RoomSummary\";\nimport {RoomMemberStore, MemberData} from \"./stores/RoomMemberStore\";\nimport {InboundGroupSessionStore, InboundGroupSessionEntry, BackupStatus, KeySource} from \"./stores/InboundGroupSessionStore\";\nimport {RoomStateEntry} from \"./stores/RoomStateStore\";\nimport {SessionStore} from \"./stores/SessionStore\";\nimport {Store} from \"./Store\";\nimport {encodeScopeTypeKey} from \"./stores/OperationStore\";\nimport {MAX_UNICODE} from \"./stores/common\";\nimport {ILogItem} from \"../../../logging/types\";\n\nimport type {UserIdentity} from \"../../e2ee/DeviceTracker\";\nimport {KeysTrackingStatus} from \"../../e2ee/DeviceTracker\";\n\nexport type MigrationFunc = (db: IDBDatabase, txn: IDBTransaction, localStorage: IDOMStorage, log: ILogItem) => Promise | void;\n// FUNCTIONS SHOULD ONLY BE APPENDED!!\n// the index in the array is the database version\nexport const schema: MigrationFunc[] = [\n createInitialStores,\n createMemberStore,\n migrateSession,\n createE2EEStores,\n migrateEncryptionFlag,\n createAccountDataStore,\n createInviteStore,\n createArchivedRoomSummaryStore,\n migrateOperationScopeIndex,\n createTimelineRelationsStore,\n fixMissingRoomsInUserIdentities,\n changeSSSSKeyPrefix,\n backupAndRestoreE2EEAccountToLocalStorage,\n clearAllStores,\n addInboundSessionBackupIndex,\n migrateBackupStatus,\n createCallStore,\n applyCrossSigningChanges,\n createSharedSecretStore,\n];\n// TODO: how to deal with git merge conflicts of this array?\n\n// TypeScript note: for now, do not bother introducing interfaces / alias\n// for old schemas. Just take them as `any`. \n\nfunction createDatabaseNameHelper(db: IDBDatabase): ITransaction {\n // the Store object gets passed in several things through the Transaction class (a wrapper around IDBTransaction),\n // the only thing we should need here is the databaseName though, so we mock it out.\n // ideally we should have an easier way to go from the idb primitive layer to the specific store classes where\n // we implement logic, but for now we need this.\n const databaseNameHelper: ITransaction = {\n databaseName: db.name,\n get idbFactory(): IDBFactory { throw new Error(\"unused\");},\n get IDBKeyRange(): typeof IDBKeyRange { throw new Error(\"unused\");},\n addWriteError() {},\n };\n return databaseNameHelper;\n}\n\n\n// how do we deal with schema updates vs existing data migration in a way that \n//v1\nfunction createInitialStores(db: IDBDatabase): void {\n db.createObjectStore(\"session\", {keyPath: \"key\"});\n // any way to make keys unique here? (just use put?)\n db.createObjectStore(\"roomSummary\", {keyPath: \"roomId\"});\n\n // need index to find live fragment? prooobably ok without for now\n //key = room_id | fragment_id\n db.createObjectStore(\"timelineFragments\", {keyPath: \"key\"});\n //key = room_id | fragment_id | event_index\n const timelineEvents = db.createObjectStore(\"timelineEvents\", {keyPath: \"key\"});\n //eventIdKey = room_id | event_id\n timelineEvents.createIndex(\"byEventId\", \"eventIdKey\", {unique: true});\n //key = room_id | event.type | event.state_key,\n db.createObjectStore(\"roomState\", {keyPath: \"key\"});\n db.createObjectStore(\"pendingEvents\", {keyPath: \"key\"});\n}\n//v2\nasync function createMemberStore(db: IDBDatabase, txn: IDBTransaction): Promise {\n // Cast ok here because only \"set\" is used\n const roomMembers = new RoomMemberStore(db.createObjectStore(\"roomMembers\", {keyPath: \"key\"}) as any);\n // migrate existing member state events over\n const roomState = txn.objectStore(\"roomState\");\n await iterateCursor(roomState.openCursor(), entry => {\n if (entry.event.type === MEMBER_EVENT_TYPE) {\n roomState.delete(entry.key);\n const member = RoomMember.fromMemberEvent(entry.roomId, entry.event);\n if (member) {\n roomMembers.set(member.serialize());\n }\n }\n return NOT_DONE;\n });\n}\n//v3\nasync function migrateSession(db: IDBDatabase, txn: IDBTransaction, localStorage: IDOMStorage): Promise {\n const session = txn.objectStore(\"session\");\n try {\n const PRE_MIGRATION_KEY = 1;\n const entry = await reqAsPromise(session.get(PRE_MIGRATION_KEY));\n if (entry) {\n session.delete(PRE_MIGRATION_KEY);\n const {syncToken, syncFilterId, serverVersions} = entry.value;\n // Cast ok here because only \"set\" is used and we don't look into return\n const store = new SessionStore(session as any, localStorage);\n store.set(\"sync\", {token: syncToken, filterId: syncFilterId});\n store.set(\"serverVersions\", serverVersions);\n }\n } catch (err) {\n txn.abort();\n console.error(\"could not migrate session\", err.stack);\n }\n}\n//v4\nfunction createE2EEStores(db: IDBDatabase): void {\n db.createObjectStore(\"userIdentities\", {keyPath: \"userId\"});\n const deviceIdentities = db.createObjectStore(\"deviceIdentities\", {keyPath: \"key\"});\n deviceIdentities.createIndex(\"byCurve25519Key\", \"curve25519Key\", {unique: true});\n db.createObjectStore(\"olmSessions\", {keyPath: \"key\"});\n db.createObjectStore(\"inboundGroupSessions\", {keyPath: \"key\"});\n db.createObjectStore(\"outboundGroupSessions\", {keyPath: \"roomId\"});\n db.createObjectStore(\"groupSessionDecryptions\", {keyPath: \"key\"});\n const operations = db.createObjectStore(\"operations\", {keyPath: \"id\"});\n operations.createIndex(\"byTypeAndScope\", \"typeScopeKey\", {unique: false});\n}\n\n// v5\nasync function migrateEncryptionFlag(db: IDBDatabase, txn: IDBTransaction): Promise {\n // migrate room summary isEncrypted -> encryption prop\n const roomSummary = txn.objectStore(\"roomSummary\");\n const roomState = txn.objectStore(\"roomState\");\n const summaries: any[] = [];\n await iterateCursor(roomSummary.openCursor(), summary => {\n summaries.push(summary);\n return NOT_DONE;\n });\n for (const summary of summaries) {\n const encryptionEntry = await reqAsPromise(roomState.get(`${summary.roomId}|m.room.encryption|`));\n if (encryptionEntry) {\n summary.encryption = encryptionEntry?.event?.content;\n delete summary.isEncrypted;\n roomSummary.put(summary);\n }\n }\n}\n\n// v6\nfunction createAccountDataStore(db: IDBDatabase): void {\n db.createObjectStore(\"accountData\", {keyPath: \"type\"});\n}\n\n// v7\nfunction createInviteStore(db: IDBDatabase): void {\n db.createObjectStore(\"invites\", {keyPath: \"roomId\"});\n}\n\n// v8\nfunction createArchivedRoomSummaryStore(db: IDBDatabase): void {\n db.createObjectStore(\"archivedRoomSummary\", {keyPath: \"summary.roomId\"});\n}\n\n// v9\nasync function migrateOperationScopeIndex(db: IDBDatabase, txn: IDBTransaction): Promise {\n try {\n const operations = txn.objectStore(\"operations\");\n operations.deleteIndex(\"byTypeAndScope\");\n await iterateCursor(operations.openCursor(), (op, key, cur) => {\n const {typeScopeKey} = op;\n delete op.typeScopeKey;\n const [type, scope] = typeScopeKey.split(\"|\");\n op.scopeTypeKey = encodeScopeTypeKey(scope, type);\n cur.update(op);\n return NOT_DONE;\n });\n operations.createIndex(\"byScopeAndType\", \"scopeTypeKey\", {unique: false});\n } catch (err) {\n txn.abort();\n console.error(\"could not migrate operations\", err.stack);\n }\n}\n\n//v10\nfunction createTimelineRelationsStore(db: IDBDatabase) : void {\n db.createObjectStore(\"timelineRelations\", {keyPath: \"key\"});\n}\n\n//v11 doesn't change the schema,\n// but ensured all userIdentities have all the roomIds they should (see #470)\n\n// 2022-07-20: The fix dated from August 2021, and have removed it now because of a\n// refactoring needed in the device tracker, which made it inconvenient to expose addRoomToIdentity\nfunction fixMissingRoomsInUserIdentities() {}\n\n// v12 move ssssKey to e2ee:ssssKey so it will get backed up in the next step\nasync function changeSSSSKeyPrefix(db: IDBDatabase, txn: IDBTransaction) {\n const session = txn.objectStore(\"session\");\n const ssssKey = await reqAsPromise(session.get(\"ssssKey\"));\n if (ssssKey) {\n session.put({key: `${SESSION_E2EE_KEY_PREFIX}ssssKey`, value: ssssKey.value});\n }\n}\n// v13\nasync function backupAndRestoreE2EEAccountToLocalStorage(db: IDBDatabase, txn: IDBTransaction, localStorage: IDOMStorage, log: ILogItem) {\n const session = txn.objectStore(\"session\");\n const sessionStore = new SessionStore(new Store(session, createDatabaseNameHelper(db)), localStorage);\n // if we already have an e2ee identity, write a backup to local storage.\n // further updates to e2ee keys in the session store will also write to local storage from 0.2.15 on,\n // but here we make sure a backup is immediately created after installing the update and we don't wait until\n // the olm account needs to change\n sessionStore.writeE2EEIdentityToLocalStorage();\n // and if we already have a backup, restore it now for any missing key in idb.\n // this will restore the backup every time the idb database is dropped as it will\n // run through all the migration steps when recreating it.\n const restored = await sessionStore.tryRestoreE2EEIdentityFromLocalStorage(log);\n log.set(\"restored\", restored);\n}\n// v14 clear all stores apart from e2ee keys because of possible timeline corruption in #515, will trigger initial sync\nasync function clearAllStores(db: IDBDatabase, txn: IDBTransaction) {\n for (const storeName of db.objectStoreNames) {\n const store = txn.objectStore(storeName);\n switch (storeName) {\n case \"inboundGroupSessions\":\n case \"outboundGroupSessions\":\n case \"olmSessions\":\n case \"operations\":\n continue;\n case \"session\": {\n await iterateCursor(store.openCursor(), (value, key, cursor) => {\n if (!(key as string).startsWith(SESSION_E2EE_KEY_PREFIX)) {\n cursor.delete();\n }\n return NOT_DONE;\n })\n break;\n }\n default: {\n store.clear();\n break;\n }\n }\n }\n}\n\n// v15 add backup index to inboundGroupSessions\nasync function addInboundSessionBackupIndex(db: IDBDatabase, txn: IDBTransaction, localStorage: IDOMStorage, log: ILogItem): Promise {\n const inboundGroupSessions = txn.objectStore(\"inboundGroupSessions\");\n inboundGroupSessions.createIndex(\"byBackup\", \"backup\", {unique: false});\n}\n\n\n// v16 migrates the backup and source fields of inbound group sessions\nasync function migrateBackupStatus(db: IDBDatabase, txn: IDBTransaction, localStorage: IDOMStorage, log: ILogItem): Promise {\n const inboundGroupSessions = txn.objectStore(\"inboundGroupSessions\");\n let countWithSession = 0;\n let countWithoutSession = 0;\n await iterateCursor(inboundGroupSessions.openCursor(), (value, key, cursor) => {\n if (value.session) {\n value.backup = BackupStatus.NotBackedUp;\n // we'll also have backup keys in here, we can't tell,\n // but the worst thing that can happen is that we try\n // to backup keys that were already in backup, which\n // the server will ignore\n value.source = KeySource.DeviceMessage;\n cursor.update(value);\n countWithSession += 1;\n } else {\n countWithoutSession += 1;\n }\n return NOT_DONE;\n });\n log.set(\"countWithoutSession\", countWithoutSession);\n log.set(\"countWithSession\", countWithSession);\n}\n\n//v17 create calls store\nfunction createCallStore(db: IDBDatabase) : void {\n db.createObjectStore(\"calls\", {keyPath: \"key\"});\n}\n\n//v18 add crossSigningKeys store, rename deviceIdentities to deviceKeys and empties userIdentities \nasync function applyCrossSigningChanges(db: IDBDatabase, txn: IDBTransaction, localStorage: IDOMStorage, log: ILogItem) : Promise {\n db.createObjectStore(\"crossSigningKeys\", {keyPath: \"key\"});\n db.deleteObjectStore(\"deviceIdentities\");\n const deviceKeys = db.createObjectStore(\"deviceKeys\", {keyPath: \"key\"});\n deviceKeys.createIndex(\"byCurve25519Key\", \"curve25519Key\", {unique: true});\n // mark all userIdentities as outdated as cross-signing keys won't be stored\n // also rename the deviceTrackingStatus field to keysTrackingStatus\n const userIdentities = txn.objectStore(\"userIdentities\");\n let counter = 0;\n await iterateCursor(userIdentities.openCursor(), (value, key, cursor) => {\n delete value[\"deviceTrackingStatus\"];\n delete value[\"crossSigningKeys\"];\n value.keysTrackingStatus = KeysTrackingStatus.Outdated;\n cursor.update(value);\n counter += 1;\n return NOT_DONE;\n });\n log.set(\"marked_outdated\", counter);\n}\n\n//v19 create shared secrets store\nfunction createSharedSecretStore(db: IDBDatabase) : void {\n db.createObjectStore(\"sharedSecrets\", {keyPath: \"key\"});\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n\nimport {openDatabase, txnAsPromise, reqAsPromise} from \"./utils\";\n\n// filed as https://bugs.webkit.org/show_bug.cgi?id=222746\nexport async function detectWebkitEarlyCloseTxnBug(idbFactory: IDBFactory): Promise {\n const dbName = \"hydrogen_webkit_test_inactive_txn_bug\";\n try {\n const db = await openDatabase(dbName, db => {\n db.createObjectStore(\"test\", {keyPath: \"key\"});\n }, 1, idbFactory);\n const readTxn = db.transaction([\"test\"], \"readonly\");\n await reqAsPromise(readTxn.objectStore(\"test\").get(\"somekey\"));\n // schedule a macro task in between the two txns\n await new Promise(r => setTimeout(r, 0));\n const writeTxn = db.transaction([\"test\"], \"readwrite\");\n await Promise.resolve();\n writeTxn.objectStore(\"test\").add({key: \"somekey\", value: \"foo\"});\n await txnAsPromise(writeTxn);\n db.close();\n } catch (err) {\n if (err.name === \"TransactionInactiveError\") {\n return true;\n }\n }\n return false;\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {IDOMStorage} from \"./types\";\nimport {Storage} from \"./Storage\";\nimport {openDatabase, reqAsPromise} from \"./utils\";\nimport {exportSession, importSession, Export} from \"./export\";\nimport {schema} from \"./schema\";\nimport {detectWebkitEarlyCloseTxnBug} from \"./quirks\";\nimport {ILogItem} from \"../../../logging/types\";\nimport {clearKeysFromLocalStorage} from \"./stores/SessionStore\";\n\nconst sessionName = (sessionId: string) => `hydrogen_session_${sessionId}`;\nconst openDatabaseWithSessionId = function(sessionId: string, idbFactory: IDBFactory, localStorage: IDOMStorage, log: ILogItem) {\n const create = (db, txn, oldVersion, version) => createStores(db, txn, oldVersion, version, localStorage, log);\n return openDatabase(sessionName(sessionId), create, schema.length, idbFactory);\n}\n\ninterface ServiceWorkerHandler {\n preventConcurrentSessionAccess: (sessionId: string) => Promise;\n}\n\nasync function requestPersistedStorage(): Promise {\n // don't assume browser so we can run in node with fake-idb\n const glob = this;\n if (glob?.navigator?.storage?.persist) {\n return await glob.navigator.storage.persist();\n } else if (glob?.document.requestStorageAccess) {\n try {\n await glob.document.requestStorageAccess();\n return true;\n } catch (err) {\n console.warn(\"requestStorageAccess threw an error:\", err);\n return false;\n }\n } else {\n return false;\n }\n}\n\nexport class StorageFactory {\n private _serviceWorkerHandler: ServiceWorkerHandler;\n private _idbFactory: IDBFactory;\n private _IDBKeyRange: typeof IDBKeyRange;\n private _localStorage: IDOMStorage;\n\n constructor(serviceWorkerHandler: ServiceWorkerHandler, idbFactory: IDBFactory = window.indexedDB, _IDBKeyRange = window.IDBKeyRange, localStorage: IDOMStorage = window.localStorage) {\n this._serviceWorkerHandler = serviceWorkerHandler;\n this._idbFactory = idbFactory;\n this._IDBKeyRange = _IDBKeyRange;\n this._localStorage = localStorage;\n }\n\n async create(sessionId: string, log: ILogItem): Promise {\n await this._serviceWorkerHandler?.preventConcurrentSessionAccess(sessionId);\n requestPersistedStorage().then(persisted => {\n // Firefox lies here though, and returns true even if the user denied the request\n if (!persisted) {\n log.log(\"no persisted storage, database can be evicted by browser\", log.level.Warn);\n }\n });\n\n const hasWebkitEarlyCloseTxnBug = await detectWebkitEarlyCloseTxnBug(this._idbFactory);\n const db = await openDatabaseWithSessionId(sessionId, this._idbFactory, this._localStorage, log);\n return new Storage(db, this._idbFactory, this._IDBKeyRange, hasWebkitEarlyCloseTxnBug, this._localStorage, log.logger);\n }\n\n async delete(sessionId: string): Promise {\n const databaseName = sessionName(sessionId);\n try {\n clearKeysFromLocalStorage(this._localStorage, databaseName);\n } catch (e) {}\n try {\n const req = this._idbFactory.deleteDatabase(databaseName);\n await reqAsPromise(req);\n } catch (e) {}\n }\n\n async export(sessionId: string, log: ILogItem): Promise {\n const db = await openDatabaseWithSessionId(sessionId, this._idbFactory, this._localStorage, log);\n return await exportSession(db);\n }\n\n async import(sessionId: string, data: Export, log: ILogItem): Promise {\n const db = await openDatabaseWithSessionId(sessionId, this._idbFactory, this._localStorage, log);\n return await importSession(db, data);\n }\n}\n\nasync function createStores(db: IDBDatabase, txn: IDBTransaction, oldVersion: number | null, version: number, localStorage: IDOMStorage, log: ILogItem): Promise {\n const startIdx = oldVersion || 0;\n return log.wrap(\n { l: \"storage migration\", oldVersion, version },\n async (log) => {\n for (let i = startIdx; i < version; ++i) {\n const migrationFunc = schema[i];\n await log.wrap(`v${i + 1}`, (log) => migrationFunc(db, txn, localStorage, log));\n }\n });\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {EventEntry} from \"../entries/EventEntry.js\";\nimport {REDACTION_TYPE, isRedacted} from \"../../common\";\nimport {ANNOTATION_RELATION_TYPE, getRelation} from \"../relations.js\";\nimport {redactEvent} from \"../common.js\";\n\nexport class RelationWriter {\n constructor({roomId, ownUserId, fragmentIdComparer}) {\n this._roomId = roomId;\n this._ownUserId = ownUserId;\n this._fragmentIdComparer = fragmentIdComparer;\n }\n\n // this needs to happen again after decryption too for edits\n async writeRelation(sourceEntry, txn, log) {\n const {relatedEventId} = sourceEntry;\n if (relatedEventId) {\n const relation = getRelation(sourceEntry.event);\n if (relation && relation.rel_type) {\n // we don't consider replies (which aren't relations in the MSC2674 sense)\n txn.timelineRelations.add(this._roomId, relation.event_id, relation.rel_type, sourceEntry.id);\n }\n const target = await txn.timelineEvents.getByEventId(this._roomId, relatedEventId);\n if (target) {\n const updatedStorageEntries = await this._applyRelation(sourceEntry, target, txn, log);\n if (updatedStorageEntries) {\n return updatedStorageEntries.map(e => {\n txn.timelineEvents.update(e);\n return new EventEntry(e, this._fragmentIdComparer);\n });\n }\n }\n }\n return null;\n }\n\n /**\n * @param {Object} storageEntry the event object, as it will be stored in storage.\n * Will be modified (but not written to storage) in case this event is\n * a relation target for which we've previously received relations.\n * @param {Direction} direction of the gap fill\n * */\n async writeGapRelation(storageEntry, direction, txn, log) {\n const sourceEntry = new EventEntry(storageEntry, this._fragmentIdComparer);\n const result = await this.writeRelation(sourceEntry, txn, log);\n // when back-paginating, it can also happen that we've received relations\n // for this event before, which now upon receiving the target need to be aggregated.\n if (direction.isBackward && !isRedacted(storageEntry.event)) {\n const relations = await txn.timelineRelations.getAllForTarget(this._roomId, sourceEntry.id);\n if (relations.length) {\n for (const r of relations) {\n const relationStorageEntry = await txn.timelineEvents.getByEventId(this._roomId, r.sourceEventId);\n if (relationStorageEntry) {\n const relationEntry = new EventEntry(relationStorageEntry, this._fragmentIdComparer);\n await this._applyRelation(relationEntry, storageEntry, txn, log);\n }\n }\n }\n }\n\n return result;\n }\n\n /**\n * @param {EventEntry} sourceEntry\n * @param {Object} targetStorageEntry event entry as stored in the timelineEvents store\n * @return {[Object]} array of event storage entries that have been updated\n * */\n async _applyRelation(sourceEntry, targetStorageEntry, txn, log) {\n if (sourceEntry.eventType === REDACTION_TYPE) {\n return log.wrap(\"redact\", async log => {\n const redactedEvent = targetStorageEntry.event;\n const relation = getRelation(redactedEvent); // get this before redacting\n const redacted = this._applyRedaction(sourceEntry.event, targetStorageEntry, txn, log);\n if (redacted) {\n const updated = [targetStorageEntry];\n if (relation) {\n const relationTargetStorageEntry = await this._reaggregateRelation(redactedEvent, relation, txn, log);\n if (relationTargetStorageEntry) {\n updated.push(relationTargetStorageEntry);\n }\n }\n return updated;\n }\n return null;\n });\n } else {\n const relation = getRelation(sourceEntry.event);\n if (relation && !isRedacted(targetStorageEntry.event)) {\n const relType = relation.rel_type;\n if (relType === ANNOTATION_RELATION_TYPE) {\n const aggregated = log.wrap(\"react\", log => {\n return this._aggregateAnnotation(sourceEntry.event, targetStorageEntry, log);\n });\n if (aggregated) {\n return [targetStorageEntry];\n }\n }\n }\n }\n return null;\n }\n\n _applyRedaction(redactionEvent, redactedStorageEntry, txn, log) {\n const redactedEvent = redactedStorageEntry.event;\n log.set(\"redactionId\", redactionEvent.event_id);\n log.set(\"id\", redactedEvent.event_id);\n\n const relation = getRelation(redactedEvent);\n if (relation && relation.rel_type) {\n txn.timelineRelations.remove(this._roomId, relation.event_id, relation.rel_type, redactedEvent.event_id);\n }\n // check if we're the target of a relation and remove all relations then as well\n txn.timelineRelations.removeAllForTarget(this._roomId, redactedEvent.event_id);\n\n redactEvent(redactionEvent, redactedEvent);\n delete redactedStorageEntry.annotations;\n\n return true;\n }\n\n _aggregateAnnotation(annotationEvent, targetStorageEntry/*, log*/) {\n // TODO: do we want to verify it is a m.reaction event somehow?\n const relation = getRelation(annotationEvent);\n if (!relation) {\n return false;\n }\n\n let {annotations} = targetStorageEntry;\n if (!annotations) {\n targetStorageEntry.annotations = annotations = {};\n }\n let annotation = annotations[relation.key];\n if (!annotation) {\n annotations[relation.key] = annotation = {\n count: 0,\n me: false,\n firstTimestamp: Number.MAX_SAFE_INTEGER\n };\n }\n const sentByMe = annotationEvent.sender === this._ownUserId;\n\n annotation.me = annotation.me || sentByMe;\n annotation.count += 1;\n annotation.firstTimestamp = Math.min(\n annotation.firstTimestamp,\n annotationEvent.origin_server_ts\n );\n\n return true;\n }\n\n async _reaggregateRelation(redactedRelationEvent, redactedRelation, txn, log) {\n if (redactedRelation.rel_type === ANNOTATION_RELATION_TYPE) {\n return log.wrap(\"reaggregate annotations\", log => this._reaggregateAnnotation(\n redactedRelation.event_id,\n redactedRelation.key,\n txn, log\n ));\n }\n return null;\n }\n\n async _reaggregateAnnotation(targetId, key, txn, log) {\n const target = await txn.timelineEvents.getByEventId(this._roomId, targetId);\n if (!target || !target.annotations) { // unknown or redacted event\n return null;\n }\n log.set(\"id\", targetId);\n const relations = await txn.timelineRelations.getForTargetAndType(this._roomId, targetId, ANNOTATION_RELATION_TYPE);\n log.set(\"relations\", relations.length);\n delete target.annotations[key];\n if (isObjectEmpty(target.annotations)) {\n delete target.annotations;\n }\n await Promise.all(relations.map(async relation => {\n const annotation = await txn.timelineEvents.getByEventId(this._roomId, relation.sourceEventId);\n if (!annotation) {\n log.log({l: \"missing annotation\", id: relation.sourceEventId});\n }\n if (getRelation(annotation.event).key === key) {\n this._aggregateAnnotation(annotation.event, target, log);\n }\n }));\n return target;\n }\n}\n\nfunction isObjectEmpty(obj) {\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n return false;\n }\n }\n return true;\n}\n\n\nimport {createMockStorage} from \"../../../../mocks/Storage\";\nimport {createEvent, withTextBody, withRedacts, withContent} from \"../../../../mocks/event.js\";\nimport {createAnnotation} from \"../relations.js\";\nimport {FragmentIdComparer} from \"../FragmentIdComparer.js\";\nimport {NullLogItem} from \"../../../../logging/NullLogger\";\n\nexport function tests() {\n const fragmentIdComparer = new FragmentIdComparer([]);\n const roomId = \"$abc\";\n const alice = \"@alice:hs.tld\";\n const bob = \"@bob:hs.tld\";\n\n return {\n \"apply redaction\": async assert => {\n const event = withTextBody(\"Dogs > Cats\", createEvent(\"m.room.message\", \"!abc\", bob));\n const reason = \"nonsense, cats are the best!\";\n const redaction = withRedacts(event.event_id, reason, createEvent(\"m.room.redaction\", \"!def\", alice));\n const redactionEntry = new EventEntry({fragmentId: 1, eventIndex: 3, event: redaction, roomId}, fragmentIdComparer);\n const relationWriter = new RelationWriter({roomId, ownUserId: bob, fragmentIdComparer});\n\n const storage = await createMockStorage();\n const txn = await storage.readWriteTxn([storage.storeNames.timelineEvents, storage.storeNames.timelineRelations]);\n txn.timelineEvents.tryInsert({fragmentId: 1, eventIndex: 2, event, roomId}, new NullLogItem());\n const updatedEntries = await relationWriter.writeRelation(redactionEntry, txn, new NullLogItem());\n await txn.complete();\n\n assert.equal(updatedEntries.length, 1);\n const redactedMessage = updatedEntries[0];\n assert.equal(redactedMessage.id, \"!abc\");\n assert.equal(redactedMessage.content.body, undefined);\n assert.equal(redactedMessage.redactionReason, reason);\n \n const readTxn = await storage.readTxn([storage.storeNames.timelineEvents]);\n const storedMessage = await readTxn.timelineEvents.getByEventId(roomId, \"!abc\");\n await readTxn.complete();\n assert.equal(storedMessage.event.content.body, undefined);\n assert.equal(storedMessage.event.unsigned.redacted_because.content.reason, reason);\n },\n \"aggregate reaction\": async assert => {\n const event = withTextBody(\"Dogs > Cats\", createEvent(\"m.room.message\", \"!abc\", bob));\n const reaction = withContent(createAnnotation(event.event_id, \"🐶\"), createEvent(\"m.reaction\", \"!def\", alice));\n reaction.origin_server_ts = 5;\n const reactionEntry = new EventEntry({event: reaction, roomId}, fragmentIdComparer);\n const relationWriter = new RelationWriter({roomId, ownUserId: alice, fragmentIdComparer});\n\n const storage = await createMockStorage();\n const txn = await storage.readWriteTxn([storage.storeNames.timelineEvents, storage.storeNames.timelineRelations]);\n txn.timelineEvents.tryInsert({fragmentId: 1, eventIndex: 2, event, roomId}, new NullLogItem());\n const updatedEntries = await relationWriter.writeRelation(reactionEntry, txn, new NullLogItem());\n await txn.complete();\n\n assert.equal(updatedEntries.length, 1);\n const reactedMessage = updatedEntries[0];\n assert.equal(reactedMessage.id, \"!abc\");\n const annotation = reactedMessage.annotations[\"🐶\"];\n assert.equal(annotation.me, true);\n assert.equal(annotation.count, 1);\n assert.equal(annotation.firstTimestamp, 5);\n \n const readTxn = await storage.readTxn([storage.storeNames.timelineEvents]);\n const storedMessage = await readTxn.timelineEvents.getByEventId(roomId, \"!abc\");\n await readTxn.complete();\n assert(storedMessage.annotations[\"🐶\"]);\n },\n \"aggregate second reaction\": async assert => {\n const event = withTextBody(\"Dogs > Cats\", createEvent(\"m.room.message\", \"!abc\", bob));\n const reaction1 = withContent(createAnnotation(event.event_id, \"🐶\"), createEvent(\"m.reaction\", \"!def\", alice));\n reaction1.origin_server_ts = 5;\n const reaction1Entry = new EventEntry({event: reaction1, roomId}, fragmentIdComparer);\n const reaction2 = withContent(createAnnotation(event.event_id, \"🐶\"), createEvent(\"m.reaction\", \"!hij\", bob));\n reaction2.origin_server_ts = 10;\n const reaction2Entry = new EventEntry({event: reaction2, roomId}, fragmentIdComparer);\n const relationWriter = new RelationWriter({roomId, ownUserId: alice, fragmentIdComparer});\n\n const storage = await createMockStorage();\n const txn = await storage.readWriteTxn([storage.storeNames.timelineEvents, storage.storeNames.timelineRelations]);\n txn.timelineEvents.tryInsert({fragmentId: 1, eventIndex: 2, event, roomId}, new NullLogItem());\n await relationWriter.writeRelation(reaction1Entry, txn, new NullLogItem());\n const updatedEntries = await relationWriter.writeRelation(reaction2Entry, txn, new NullLogItem());\n await txn.complete();\n\n assert.equal(updatedEntries.length, 1);\n\n const reactedMessage = updatedEntries[0];\n assert.equal(reactedMessage.id, \"!abc\");\n const annotation = reactedMessage.annotations[\"🐶\"];\n assert.equal(annotation.me, true);\n assert.equal(annotation.count, 2);\n assert.equal(annotation.firstTimestamp, 5);\n },\n \"redact second reaction\": async assert => {\n const event = withTextBody(\"Dogs > Cats\", createEvent(\"m.room.message\", \"!abc\", bob));\n const myReaction = withContent(createAnnotation(event.event_id, \"🐶\"), createEvent(\"m.reaction\", \"!def\", alice));\n myReaction.origin_server_ts = 5;\n const bobReaction = withContent(createAnnotation(event.event_id, \"🐶\"), createEvent(\"m.reaction\", \"!hij\", bob));\n bobReaction.origin_server_ts = 10;\n const myReactionRedaction = withRedacts(myReaction.event_id, \"\", createEvent(\"m.room.redaction\", \"!pol\", alice));\n\n const myReactionEntry = new EventEntry({event: myReaction, roomId}, fragmentIdComparer);\n const bobReactionEntry = new EventEntry({event: bobReaction, roomId}, fragmentIdComparer);\n const myReactionRedactionEntry = new EventEntry({event: myReactionRedaction, roomId}, fragmentIdComparer);\n const relationWriter = new RelationWriter({roomId, ownUserId: alice, fragmentIdComparer});\n\n const storage = await createMockStorage();\n const txn = await storage.readWriteTxn([storage.storeNames.timelineEvents, storage.storeNames.timelineRelations]);\n txn.timelineEvents.tryInsert({fragmentId: 1, eventIndex: 2, event, roomId}, new NullLogItem());\n txn.timelineEvents.tryInsert({fragmentId: 1, eventIndex: 3, event: myReaction, roomId}, new NullLogItem());\n await relationWriter.writeRelation(myReactionEntry, txn, new NullLogItem());\n txn.timelineEvents.tryInsert({fragmentId: 1, eventIndex: 4, event: bobReaction, roomId}, new NullLogItem());\n await relationWriter.writeRelation(bobReactionEntry, txn, new NullLogItem());\n const updatedEntries = await relationWriter.writeRelation(myReactionRedactionEntry, txn, new NullLogItem());\n await txn.complete();\n\n assert.equal(updatedEntries.length, 2);\n\n const redactedReaction = updatedEntries[0];\n assert.equal(redactedReaction.id, \"!def\");\n const reaggregatedMessage = updatedEntries[1];\n assert.equal(reaggregatedMessage.id, \"!abc\");\n const annotation = reaggregatedMessage.annotations[\"🐶\"];\n assert.equal(annotation.me, false);\n assert.equal(annotation.count, 1);\n assert.equal(annotation.firstTimestamp, 10);\n\n const readTxn = await storage.readTxn([storage.storeNames.timelineEvents]);\n const storedMessage = await readTxn.timelineEvents.getByEventId(roomId, \"!abc\");\n await readTxn.complete();\n assert.equal(storedMessage.annotations[\"🐶\"].count, 1);\n },\n \n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexport class Direction {\n constructor(public readonly isForward: boolean) {\n }\n\n get isBackward(): boolean {\n return !this.isForward;\n }\n\n asApiString(): string {\n return this.isForward ? \"f\" : \"b\";\n }\n\n reverse(): Direction {\n return this.isForward ? Direction.Backward : Direction.Forward\n }\n\n static get Forward(): Direction {\n return _forward;\n }\n\n static get Backward(): Direction {\n return _backward;\n }\n}\n\nconst _forward = new Direction(true);\nconst _backward = new Direction(false);\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {BaseEntry} from \"./BaseEntry\";\nimport {Direction} from \"../Direction\";\nimport {isValidFragmentId} from \"../common.js\";\nimport {KeyLimits} from \"../../../storage/common\";\n\nexport class FragmentBoundaryEntry extends BaseEntry {\n constructor(fragment, isFragmentStart, fragmentIdComparer) {\n super(fragmentIdComparer);\n this._fragment = fragment;\n // TODO: should isFragmentStart be Direction instead of bool?\n this._isFragmentStart = isFragmentStart;\n }\n\n static start(fragment, fragmentIdComparer) {\n return new FragmentBoundaryEntry(fragment, true, fragmentIdComparer);\n }\n\n static end(fragment, fragmentIdComparer) {\n return new FragmentBoundaryEntry(fragment, false, fragmentIdComparer);\n }\n \n get started() {\n return this._isFragmentStart;\n }\n\n get hasEnded() {\n return !this.started;\n }\n\n get fragment() {\n return this._fragment;\n }\n\n get fragmentId() {\n return this._fragment.id;\n }\n\n get entryIndex() {\n if (this.started) {\n return KeyLimits.minStorageKey;\n } else {\n return KeyLimits.maxStorageKey;\n }\n }\n\n get isGap() {\n return !!this.token && !this.edgeReached;\n }\n\n get token() {\n if (this.started) {\n return this.fragment.previousToken;\n } else {\n return this.fragment.nextToken;\n }\n }\n\n set token(token) {\n if (this.started) {\n this.fragment.previousToken = token;\n } else {\n this.fragment.nextToken = token;\n }\n }\n\n get edgeReached() {\n if (this.started) {\n return this.fragment.startReached;\n } else {\n return this.fragment.endReached;\n }\n }\n\n set edgeReached(reached) {\n \n if (this.started) {\n this.fragment.startReached = reached;\n } else {\n this.fragment.endReached = reached;\n }\n }\n\n \n\n get linkedFragmentId() {\n if (this.started) {\n return this.fragment.previousId;\n } else {\n return this.fragment.nextId;\n }\n }\n\n set linkedFragmentId(id) {\n if (this.started) {\n this.fragment.previousId = id;\n } else {\n this.fragment.nextId = id;\n }\n }\n\n get hasLinkedFragment() {\n return isValidFragmentId(this.linkedFragmentId);\n }\n\n get direction() {\n if (this.started) {\n return Direction.Backward;\n } else {\n return Direction.Forward;\n }\n }\n\n withUpdatedFragment(fragment) {\n return new FragmentBoundaryEntry(fragment, this._isFragmentStart, this._fragmentIdComparer);\n }\n\n createNeighbourEntry(neighbour) {\n return new FragmentBoundaryEntry(neighbour, !this._isFragmentStart, this._fragmentIdComparer);\n }\n\n addLocalRelation() {}\n removeLocalRelation() {}\n}\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {EventKey} from \"../EventKey\";\nimport {EventEntry} from \"../entries/EventEntry.js\";\nimport {FragmentBoundaryEntry} from \"../entries/FragmentBoundaryEntry.js\";\nimport {createEventEntry} from \"./common.js\";\nimport {EVENT_TYPE as MEMBER_EVENT_TYPE} from \"../../members/RoomMember.js\";\n\n// Synapse bug? where the m.room.create event appears twice in sync response\n// when first syncing the room\nfunction deduplicateEvents(events) {\n const eventIds = new Set();\n return events.filter(e => {\n if (eventIds.has(e.event_id)) {\n return false;\n } else {\n eventIds.add(e.event_id);\n return true;\n }\n });\n}\n\nexport class SyncWriter {\n constructor({roomId, fragmentIdComparer, memberWriter, relationWriter}) {\n this._roomId = roomId;\n this._memberWriter = memberWriter;\n this._relationWriter = relationWriter;\n this._fragmentIdComparer = fragmentIdComparer;\n this._lastLiveKey = null;\n }\n\n async load(txn, log) {\n const liveFragment = await txn.timelineFragments.liveFragment(this._roomId);\n if (liveFragment) {\n const [lastEvent] = await txn.timelineEvents.lastEvents(this._roomId, liveFragment.id, 1);\n // fall back to the default event index in case the fragment was somehow written but no events\n // we should only create fragments when really writing timeline events now\n // (see https://github.com/vector-im/hydrogen-web/issues/112) but can't hurt to be extra robust.\n const eventIndex = lastEvent ? lastEvent.eventIndex : EventKey.defaultLiveKey.eventIndex;\n this._lastLiveKey = new EventKey(liveFragment.id, eventIndex);\n }\n // if there is no live fragment, we don't create it here because load gets a readonly txn.\n // this is on purpose, load shouldn't modify the store\n if (this._lastLiveKey) {\n log.set(\"live key\", this._lastLiveKey.toString());\n }\n }\n\n async _createLiveFragment(txn, previousToken) {\n const liveFragment = await txn.timelineFragments.liveFragment(this._roomId);\n if (!liveFragment) {\n if (!previousToken) {\n previousToken = null;\n }\n const fragment = {\n roomId: this._roomId,\n id: EventKey.defaultLiveKey.fragmentId,\n previousId: null,\n nextId: null,\n previousToken: previousToken,\n nextToken: null\n };\n txn.timelineFragments.add(fragment);\n this._fragmentIdComparer.add(fragment);\n return fragment;\n } else {\n return liveFragment;\n }\n }\n\n async _replaceLiveFragment(oldFragmentId, newFragmentId, previousToken, txn) {\n const oldFragment = await txn.timelineFragments.get(this._roomId, oldFragmentId);\n if (!oldFragment) {\n throw new Error(`old live fragment doesn't exist: ${oldFragmentId}`);\n }\n oldFragment.nextId = newFragmentId;\n txn.timelineFragments.update(oldFragment);\n const newFragment = {\n roomId: this._roomId,\n id: newFragmentId,\n previousId: oldFragmentId,\n nextId: null,\n previousToken: previousToken,\n nextToken: null\n };\n txn.timelineFragments.add(newFragment);\n this._fragmentIdComparer.append(newFragmentId, oldFragmentId);\n return {oldFragment, newFragment};\n }\n\n /**\n * creates a new live fragment if the timeline is limited, or if no live fragment is created yet\n * @param {EventKey} currentKey current key so far, might be none if room hasn't synced yet\n * @param {Array} entries array to add fragment boundary entries when creating a new fragment\n * @param {Object} timeline timeline part of the room sync response\n * @param {Transaction} txn used to read and write from the fragment store\n * @return {EventKey} the new event key to start writing events at\n */\n async _ensureLiveFragment(currentKey, entries, timeline, txn, log) {\n if (!currentKey) {\n // means we haven't synced this room yet (just joined or did initial sync)\n \n // as this is probably a limited sync, prev_batch should be there\n // (but don't fail if it isn't, we won't be able to back-paginate though)\n let liveFragment = await this._createLiveFragment(txn, timeline.prev_batch);\n currentKey = new EventKey(liveFragment.id, EventKey.defaultLiveKey.eventIndex);\n entries.push(FragmentBoundaryEntry.start(liveFragment, this._fragmentIdComparer));\n log.log({l: \"live fragment\", first: true, id: currentKey.fragmentId});\n } else if (timeline.limited) {\n // replace live fragment for limited sync, *only* if we had a live fragment already\n const oldFragmentId = currentKey.fragmentId;\n currentKey = currentKey.nextFragmentKey();\n const {oldFragment, newFragment} = await this._replaceLiveFragment(oldFragmentId, currentKey.fragmentId, timeline.prev_batch, txn);\n entries.push(FragmentBoundaryEntry.end(oldFragment, this._fragmentIdComparer));\n entries.push(FragmentBoundaryEntry.start(newFragment, this._fragmentIdComparer));\n log.log({l: \"live fragment\", limited: true, id: currentKey.fragmentId});\n }\n return currentKey;\n }\n\n async _writeStateEvents(stateEvents, txn, log) {\n let nonMemberStateEvents = 0;\n for (const event of stateEvents) {\n // member events are written prior by MemberWriter\n if (event.type !== MEMBER_EVENT_TYPE) {\n txn.roomState.set(this._roomId, event);\n nonMemberStateEvents += 1;\n }\n }\n log.set(\"stateEvents\", nonMemberStateEvents);\n }\n\n async _writeTimeline(timelineEvents, timeline, memberSync, currentKey, txn, log) {\n const entries = [];\n const updatedEntries = [];\n if (timelineEvents?.length) {\n // only create a fragment when we will really write an event\n currentKey = await this._ensureLiveFragment(currentKey, entries, timeline, txn, log);\n log.set(\"timelineEvents\", timelineEvents.length);\n let timelineStateEventCount = 0;\n for(const event of timelineEvents) {\n // store event in timeline\n currentKey = currentKey.nextKey();\n const storageEntry = createEventEntry(currentKey, this._roomId, event);\n let member = await memberSync.lookupMemberAtEvent(event.sender, event, txn);\n if (member) {\n storageEntry.displayName = member.displayName;\n storageEntry.avatarUrl = member.avatarUrl;\n }\n const couldInsert = await txn.timelineEvents.tryInsert(storageEntry, log);\n if (!couldInsert) {\n continue;\n }\n const entry = new EventEntry(storageEntry, this._fragmentIdComparer);\n entries.push(entry);\n const updatedRelationTargetEntries = await this._relationWriter.writeRelation(entry, txn, log);\n if (updatedRelationTargetEntries) {\n updatedEntries.push(...updatedRelationTargetEntries);\n }\n // update state events after writing event, so for a member event,\n // we only update the member info after having written the member event\n // to the timeline, as we want that event to have the old profile info.\n // member events are written prior by MemberWriter.\n if (typeof event.state_key === \"string\" && event.type !== MEMBER_EVENT_TYPE) {\n timelineStateEventCount += 1;\n txn.roomState.set(this._roomId, event);\n }\n }\n log.set(\"timelineStateEventCount\", timelineStateEventCount);\n }\n return {currentKey, entries, updatedEntries};\n }\n\n async _handleRejoinOverlap(timeline, txn, log) {\n if (this._lastLiveKey) {\n const {fragmentId} = this._lastLiveKey;\n const [lastEvent] = await txn.timelineEvents.lastEvents(this._roomId, fragmentId, 1);\n if (lastEvent) {\n const lastEventId = lastEvent.event.event_id;\n const {events} = timeline;\n const index = events.findIndex(event => event.event_id === lastEventId);\n if (index !== -1) {\n log.set(\"overlap_event_id\", lastEventId);\n return Object.assign({}, timeline, {\n limited: false,\n events: events.slice(index + 1),\n });\n }\n }\n }\n if (!timeline.limited) {\n log.set(\"force_limited_without_overlap\", true);\n return Object.assign({}, timeline, {limited: true});\n }\n return timeline;\n }\n\n /**\n * @type {SyncWriterResult}\n * @property {Array} entries new timeline entries written\n * @property {EventKey} newLiveKey the advanced key to write events at\n * \n * @param {Object} roomResponse [description]\n * @param {boolean} isRejoin whether the room was rejoined in the sync being processed\n * @param {Transaction} txn \n * @return {SyncWriterResult}\n */\n async writeSync(roomResponse, isRejoin, hasFetchedMembers, txn, log) {\n let {timeline} = roomResponse;\n // we have rejoined the room after having synced it before,\n // check for overlap with the last synced event\n log.set(\"isRejoin\", isRejoin);\n if (isRejoin) {\n timeline = await this._handleRejoinOverlap(timeline, txn, log);\n }\n let timelineEvents;\n if (Array.isArray(timeline?.events)) {\n timelineEvents = deduplicateEvents(timeline.events);\n }\n const {state} = roomResponse;\n let stateEvents;\n if (Array.isArray(state?.events)) {\n stateEvents = state.events;\n }\n const memberSync = this._memberWriter.prepareMemberSync(stateEvents, timelineEvents, hasFetchedMembers);\n if (stateEvents) {\n await this._writeStateEvents(stateEvents, txn, log);\n }\n const {currentKey, entries, updatedEntries} =\n await this._writeTimeline(timelineEvents, timeline, memberSync, this._lastLiveKey, txn, log);\n const memberChanges = await memberSync.write(txn);\n return {entries, updatedEntries, newLiveKey: currentKey, memberChanges, memberSync};\n }\n\n afterSync(newLiveKey) {\n this._lastLiveKey = newLiveKey;\n }\n\n get lastMessageKey() {\n return this._lastLiveKey;\n }\n}\n\nimport {createMockStorage} from \"../../../../mocks/Storage\";\nimport {createEvent, withTextBody} from \"../../../../mocks/event.js\";\nimport {Instance as nullLogger} from \"../../../../logging/NullLogger\";\nexport function tests() {\n const roomId = \"!abc:hs.tld\";\n return {\n \"calling timelineEvents.tryInsert with the same event id a second time fails\": async assert => {\n const storage = await createMockStorage();\n const txn = await storage.readWriteTxn([storage.storeNames.timelineEvents]);\n const event = withTextBody(\"hello!\", createEvent(\"m.room.message\", \"$abc\", \"@alice:hs.tld\"));\n const entry1 = createEventEntry(EventKey.defaultLiveKey, roomId, event);\n assert.equal(await txn.timelineEvents.tryInsert(entry1, nullLogger.item), true);\n const entry2 = createEventEntry(EventKey.defaultLiveKey.nextKey(), roomId, event);\n assert.equal(await txn.timelineEvents.tryInsert(entry2, nullLogger.item), false);\n // fake-indexeddb still aborts the transaction when preventDefault is called by tryInsert, so don't await as it will abort\n // await txn.complete();\n },\n \"calling timelineEvents.tryInsert with the same event key a second time fails\": async assert => {\n const storage = await createMockStorage();\n const txn = await storage.readWriteTxn([storage.storeNames.timelineEvents]);\n const event1 = withTextBody(\"hello!\", createEvent(\"m.room.message\", \"$abc\", \"@alice:hs.tld\"));\n const entry1 = createEventEntry(EventKey.defaultLiveKey, roomId, event1);\n assert.equal(await txn.timelineEvents.tryInsert(entry1, nullLogger.item), true);\n const event2 = withTextBody(\"hello!\", createEvent(\"m.room.message\", \"$def\", \"@alice:hs.tld\"));\n const entry2 = createEventEntry(EventKey.defaultLiveKey, roomId, event2);\n assert.equal(await txn.timelineEvents.tryInsert(entry2, nullLogger.item), false);\n // fake-indexeddb still aborts the transaction when preventDefault is called by tryInsert, so don't await as it will abort\n // await txn.complete();\n },\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n\ntype FindCallback = (value: T) => boolean;\n/**\n * Very simple least-recently-used cache implementation\n * that should be fast enough for very small cache sizes\n */\nexport class BaseLRUCache {\n\n public readonly limit: number;\n protected _entries: T[];\n\n constructor(limit: number) {\n this.limit = limit;\n this._entries = [];\n }\n\n get size() { return this._entries.length; }\n\n protected _get(findEntryFn: FindCallback) {\n return this._getByIndexAndMoveUp(this._entries.findIndex(findEntryFn));\n }\n\n protected _getByIndexAndMoveUp(idx: number) {\n if (idx !== -1) {\n const entry = this._entries[idx];\n // move to top\n if (idx > 0) {\n this._entries.splice(idx, 1);\n this._entries.unshift(entry);\n }\n return entry;\n }\n }\n\n protected _set(value: T, findEntryFn?: FindCallback) {\n let indexToRemove = findEntryFn ? this._entries.findIndex(findEntryFn) : -1;\n this._entries.unshift(value);\n if (indexToRemove === -1) {\n if (this._entries.length > this.limit) {\n indexToRemove = this._entries.length - 1;\n }\n } else {\n // we added the entry at the start since we looked for the index\n indexToRemove += 1;\n }\n if (indexToRemove !== -1) {\n this.onEvictEntry(this._entries[indexToRemove]);\n this._entries.splice(indexToRemove, 1);\n }\n }\n\n protected onEvictEntry(entry: T) {}\n}\n\nexport class LRUCache extends BaseLRUCache {\n private _keyFn: (T) => K;\n\n constructor(limit: number, keyFn: (T) => K) {\n super(limit);\n this._keyFn = keyFn;\n }\n\n get(key: K): T | undefined {\n return this._get(e => this._keyFn(e) === key);\n }\n\n set(value: T) {\n const key = this._keyFn(value);\n this._set(value, e => this._keyFn(e) === key);\n }\n}\n\nexport function tests() {\n interface NameTuple {\n id: number;\n name: string;\n }\n\n return {\n \"can retrieve added entries\": assert => {\n const cache = new LRUCache(2, e => e.id);\n cache.set({id: 1, name: \"Alice\"});\n cache.set({id: 2, name: \"Bob\"});\n assert.equal(cache.get(1)!.name, \"Alice\");\n assert.equal(cache.get(2)!.name, \"Bob\");\n },\n \"first entry is evicted first\": assert => {\n const cache = new LRUCache(2, e => e.id);\n cache.set({id: 1, name: \"Alice\"});\n cache.set({id: 2, name: \"Bob\"});\n cache.set({id: 3, name: \"Charly\"});\n assert.equal(cache.get(1), undefined);\n assert.equal(cache.get(2)!.name, \"Bob\");\n assert.equal(cache.get(3)!.name, \"Charly\");\n assert.equal(cache.size, 2);\n },\n \"second entry is evicted if first is requested\": assert => {\n const cache = new LRUCache(2, e => e.id);\n cache.set({id: 1, name: \"Alice\"});\n cache.set({id: 2, name: \"Bob\"});\n cache.get(1);\n cache.set({id: 3, name: \"Charly\"});\n assert.equal(cache.get(1)!.name, \"Alice\");\n assert.equal(cache.get(2), undefined);\n assert.equal(cache.get(3)!.name, \"Charly\");\n assert.equal(cache.size, 2);\n },\n \"setting an entry twice removes the first\": assert => {\n const cache = new LRUCache(2, e => e.id);\n cache.set({id: 1, name: \"Alice\"});\n cache.set({id: 2, name: \"Bob\"});\n cache.set({id: 1, name: \"Al Ice\"});\n cache.set({id: 3, name: \"Charly\"});\n assert.equal(cache.get(1)!.name, \"Al Ice\");\n assert.equal(cache.get(2), undefined);\n assert.equal(cache.get(3)!.name, \"Charly\");\n assert.equal(cache.size, 2);\n },\n \"evict callback is called\": assert => {\n let evictions = 0;\n class CustomCache extends LRUCache {\n onEvictEntry(entry) {\n assert.equal(entry.name, \"Alice\");\n evictions += 1;\n }\n }\n const cache = new CustomCache(2, e => e.id);\n cache.set({id: 1, name: \"Alice\"});\n cache.set({id: 2, name: \"Bob\"});\n cache.set({id: 3, name: \"Charly\"});\n assert.equal(evictions, 1);\n },\n \"evict callback is called when replacing entry with same identity\": assert => {\n let evictions = 0;\n class CustomCache extends LRUCache {\n onEvictEntry(entry) {\n assert.equal(entry.name, \"Alice\");\n evictions += 1;\n }\n }\n const cache = new CustomCache(2, e => e.id);\n cache.set({id: 1, name: \"Alice\"});\n cache.set({id: 1, name: \"Bob\"});\n assert.equal(evictions, 1);\n },\n \n };\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {MemberChange, RoomMember, EVENT_TYPE as MEMBER_EVENT_TYPE} from \"../../members/RoomMember.js\";\nimport {LRUCache} from \"../../../../utils/LRUCache\";\n\nexport class MemberWriter {\n constructor(roomId) {\n this._roomId = roomId;\n this._cache = new LRUCache(5, member => member.userId);\n }\n\n prepareMemberSync(stateEvents, timelineEvents, hasFetchedMembers) {\n return new MemberSync(this, stateEvents, timelineEvents, hasFetchedMembers);\n }\n\n async _writeMember(member, txn) {\n let existingMember = this._cache.get(member.userId);\n if (!existingMember) {\n const memberData = await txn.roomMembers.get(this._roomId, member.userId);\n if (memberData) {\n existingMember = new RoomMember(memberData);\n }\n }\n // either never heard of the member, or something changed\n if (!existingMember || !existingMember.equals(member)) {\n txn.roomMembers.set(member.serialize());\n this._cache.set(member);\n return new MemberChange(member, existingMember?.membership);\n }\n }\n\n async lookupMember(userId, txn) {\n let member = this._cache.get(userId);\n if (!member) {\n const memberData = await txn.roomMembers.get(this._roomId, userId);\n if (memberData) {\n member = new RoomMember(memberData);\n this._cache.set(member);\n }\n }\n return member;\n }\n}\n\n/** Represents the member changes in a given sync.\n * Used to write the changes to storage and historical member\n * information for events in the same sync.\n **/\nexport class MemberSync {\n constructor(memberWriter, stateEvents, timelineEvents, hasFetchedMembers) {\n this._memberWriter = memberWriter;\n this._timelineEvents = timelineEvents;\n this._hasFetchedMembers = hasFetchedMembers;\n this._newStateMembers = null;\n if (stateEvents) {\n this._newStateMembers = this._stateEventsToMembers(stateEvents);\n }\n }\n\n get _roomId() {\n return this._memberWriter._roomId;\n }\n\n _stateEventsToMembers(stateEvents) {\n let members;\n for (const event of stateEvents) {\n if (event.type === MEMBER_EVENT_TYPE) {\n const member = RoomMember.fromMemberEvent(this._roomId, event);\n if (member) {\n if (!members) {\n members = new Map();\n }\n members.set(member.userId, member);\n }\n }\n }\n return members;\n }\n\n _timelineEventsToMembers(timelineEvents) {\n let members;\n // iterate backwards to only add the last member in the timeline\n for (let i = timelineEvents.length - 1; i >= 0; i--) {\n const e = timelineEvents[i];\n const userId = e.state_key;\n if (e.type === MEMBER_EVENT_TYPE && !members?.has(userId)) {\n const member = RoomMember.fromMemberEvent(this._roomId, e);\n if (member) {\n if (!members) {\n members = new Map();\n }\n members.set(member.userId, member);\n }\n }\n }\n return members;\n }\n\n async lookupMemberAtEvent(userId, event, txn) {\n let member;\n if (this._timelineEvents) {\n member = this._findPrecedingMemberEventInTimeline(userId, event);\n if (member) {\n return member;\n }\n }\n member = this._newStateMembers?.get(userId);\n if (member) {\n return member;\n }\n return await this._memberWriter.lookupMember(userId, txn);\n }\n\n async write(txn) {\n const memberChanges = new Map();\n let newTimelineMembers;\n if (this._timelineEvents) {\n newTimelineMembers = this._timelineEventsToMembers(this._timelineEvents);\n }\n if (this._newStateMembers) {\n for (const member of this._newStateMembers.values()) {\n if (!newTimelineMembers?.has(member.userId)) {\n const memberChange = await this._memberWriter._writeMember(member, txn);\n if (memberChange) {\n // if the member event appeared only in the state section,\n // AND we haven't heard about it AND we haven't fetched all members yet (to avoid #470),\n // this may be a lazy loading member (if it's not in a gap, we are certain\n // it is a ll member, in a gap, we can't tell), so we pass in our own membership as\n // as the previous one so we won't consider it a join to not have false positives (to avoid #192).\n // see also MemberChange.hasJoined\n const maybeLazyLoadingMember = !this._hasFetchedMembers && !memberChange.previousMembership;\n if (maybeLazyLoadingMember) {\n memberChange.previousMembership = member.membership;\n }\n memberChanges.set(memberChange.userId, memberChange);\n }\n }\n }\n }\n if (newTimelineMembers) {\n for (const member of newTimelineMembers.values()) {\n const memberChange = await this._memberWriter._writeMember(member, txn);\n if (memberChange) {\n memberChanges.set(memberChange.userId, memberChange);\n }\n }\n }\n return memberChanges;\n }\n\n // try to find the first member event before the given event,\n // so we respect historical display names within the chunk of timeline\n _findPrecedingMemberEventInTimeline(userId, event) {\n let eventIndex = -1;\n for (let i = this._timelineEvents.length - 1; i >= 0; i--) {\n const e = this._timelineEvents[i];\n if (e.event_id === event.event_id) {\n eventIndex = i;\n break;\n }\n }\n for (let i = eventIndex - 1; i >= 0; i--) {\n const e = this._timelineEvents[i];\n if (e.type === MEMBER_EVENT_TYPE && e.state_key === userId) {\n const member = RoomMember.fromMemberEvent(this._roomId, e);\n if (member) {\n return member;\n }\n }\n }\n }\n}\n\nexport function tests() {\n\n let idCounter = 0;\n\n function createMemberEvent(membership, userId, displayName, avatarUrl) {\n idCounter += 1;\n return {\n content: {\n membership,\n \"displayname\": displayName,\n \"avatar_url\": avatarUrl\n },\n event_id: `$${idCounter}`,\n sender: userId,\n \"state_key\": userId,\n type: \"m.room.member\"\n };\n }\n\n function createStorage(initialMembers = []) {\n const members = new Map();\n for (const m of initialMembers) {\n members.set(m.userId, m);\n }\n return {\n members,\n roomMembers: {\n async get(_, userId) {\n return members.get(userId);\n },\n set(member) {\n members.set(member.userId, member);\n }\n }\n }\n }\n\n function member(...args) {\n return RoomMember.fromMemberEvent(roomId, createMemberEvent.apply(null, args));\n }\n\n const roomId = \"abc\";\n const alice = \"@alice:hs.tld\";\n const avatar = \"mxc://hs.tld/def\";\n\n return {\n \"new join\": async assert => {\n const writer = new MemberWriter(roomId);\n const txn = createStorage();\n const memberSync = writer.prepareMemberSync([], [createMemberEvent(\"join\", alice)], false);\n const changes = await memberSync.write(txn);\n assert.equal(changes.size, 1);\n const change = changes.get(alice);\n assert(change.hasJoined);\n assert.equal(txn.members.get(alice).membership, \"join\");\n },\n \"accept invite\": async assert => {\n const writer = new MemberWriter(roomId);\n const txn = createStorage([member(\"invite\", alice)]);\n const memberSync = writer.prepareMemberSync([], [createMemberEvent(\"join\", alice)], false);\n const changes = await memberSync.write(txn);\n assert.equal(changes.size, 1);\n const change = changes.get(alice);\n assert.equal(change.previousMembership, \"invite\");\n assert(change.hasJoined);\n assert.equal(txn.members.get(alice).membership, \"join\");\n },\n \"change display name\": async assert => {\n const writer = new MemberWriter(roomId);\n const txn = createStorage([member(\"join\", alice, \"Alice\")]);\n const memberSync = writer.prepareMemberSync([], [createMemberEvent(\"join\", alice, \"Alies\")], false);\n const changes = await memberSync.write(txn);\n assert.equal(changes.size, 1);\n const change = changes.get(alice);\n assert(!change.hasJoined);\n assert.equal(change.member.displayName, \"Alies\");\n assert.equal(txn.members.get(alice).displayName, \"Alies\");\n },\n \"set avatar\": async assert => {\n const writer = new MemberWriter(roomId);\n const txn = createStorage([member(\"join\", alice, \"Alice\")]);\n const memberSync = writer.prepareMemberSync([], [createMemberEvent(\"join\", alice, \"Alice\", avatar)], false);\n const changes = await memberSync.write(txn);\n assert.equal(changes.size, 1);\n const change = changes.get(alice);\n assert(!change.hasJoined);\n assert.equal(change.member.avatarUrl, avatar);\n assert.equal(txn.members.get(alice).avatarUrl, avatar);\n },\n \"ignore redundant member event in timeline\": async assert => {\n const writer = new MemberWriter(roomId);\n const txn = createStorage([member(\"join\", alice, \"Alice\", avatar)]);\n const memberSync = writer.prepareMemberSync([], [createMemberEvent(\"join\", alice, \"Alice\", avatar)], false);\n const changes = await memberSync.write(txn);\n assert.equal(changes.size, 0);\n },\n \"ignore redundant member event in state\": async assert => {\n const writer = new MemberWriter(roomId);\n const txn = createStorage([member(\"join\", alice, \"Alice\", avatar)]);\n const memberSync = writer.prepareMemberSync([createMemberEvent(\"join\", alice, \"Alice\", avatar)], [], false);\n const changes = await memberSync.write(txn);\n assert.equal(changes.size, 0);\n },\n \"leave\": async assert => {\n const writer = new MemberWriter(roomId);\n const txn = createStorage([member(\"join\", alice, \"Alice\")]);\n const memberSync = writer.prepareMemberSync([], [createMemberEvent(\"leave\", alice, \"Alice\")], false);\n const changes = await memberSync.write(txn);\n assert.equal(changes.size, 1);\n const change = changes.get(alice);\n assert(change.hasLeft);\n assert(!change.hasJoined);\n },\n \"ban\": async assert => {\n const writer = new MemberWriter(roomId);\n const txn = createStorage([member(\"join\", alice, \"Alice\")]);\n const memberSync = writer.prepareMemberSync([], [createMemberEvent(\"ban\", alice, \"Alice\")], false);\n const changes = await memberSync.write(txn);\n assert.equal(changes.size, 1);\n const change = changes.get(alice);\n assert(change.hasLeft);\n assert(!change.hasJoined);\n },\n \"reject invite\": async assert => {\n const writer = new MemberWriter(roomId);\n const txn = createStorage([member(\"invite\", alice, \"Alice\")]);\n const memberSync = writer.prepareMemberSync([], [createMemberEvent(\"leave\", alice, \"Alice\")], false);\n const changes = await memberSync.write(txn);\n assert.equal(changes.size, 1);\n const change = changes.get(alice);\n assert(!change.hasLeft);\n assert(!change.hasJoined);\n },\n \"lazy loaded member we already know about doens't return change\": async assert => {\n const writer = new MemberWriter(roomId);\n const txn = createStorage([member(\"join\", alice, \"Alice\")]);\n const memberSync = writer.prepareMemberSync([createMemberEvent(\"join\", alice, \"Alice\")], [], false);\n const changes = await memberSync.write(txn);\n assert.equal(changes.size, 0);\n },\n \"lazy loaded member we already know about changes display name\": async assert => {\n const writer = new MemberWriter(roomId);\n const txn = createStorage([member(\"join\", alice, \"Alice\")]);\n const memberSync = writer.prepareMemberSync([createMemberEvent(\"join\", alice, \"Alies\")], [], false);\n const changes = await memberSync.write(txn);\n assert.equal(changes.size, 1);\n const change = changes.get(alice);\n assert(!change.hasJoined);\n assert.equal(change.member.displayName, \"Alies\");\n },\n \"unknown lazy loaded member returns change, but not considered a join\": async assert => {\n const writer = new MemberWriter(roomId);\n const txn = createStorage();\n const memberSync = writer.prepareMemberSync([createMemberEvent(\"join\", alice, \"Alice\")], [], false);\n const changes = await memberSync.write(txn);\n assert.equal(changes.size, 1);\n const change = changes.get(alice);\n assert(!change.hasJoined);\n assert(!change.hasLeft);\n assert.equal(change.member.membership, \"join\");\n assert.equal(txn.members.get(alice).displayName, \"Alice\");\n },\n \"new join through both timeline and state\": async assert => {\n const writer = new MemberWriter(roomId);\n const txn = createStorage();\n const aliceJoin = createMemberEvent(\"join\", alice, \"Alice\");\n const memberSync = writer.prepareMemberSync([aliceJoin], [aliceJoin], false);\n const changes = await memberSync.write(txn);\n assert.equal(changes.size, 1);\n const change = changes.get(alice);\n assert(change.hasJoined);\n assert(!change.hasLeft);\n },\n \"change display name in timeline with lazy loaded member in state\": async assert => {\n const writer = new MemberWriter(roomId);\n const txn = createStorage();\n const memberSync = writer.prepareMemberSync(\n [createMemberEvent(\"join\", alice, \"Alice\")],\n [createMemberEvent(\"join\", alice, \"Alies\")],\n false);\n const changes = await memberSync.write(txn);\n assert.equal(changes.size, 1);\n const change = changes.get(alice);\n assert(change.hasJoined);\n assert(!change.hasLeft);\n assert.equal(change.member.displayName, \"Alies\");\n },\n \"lookupMemberAtEvent returns closest member in the past\": async assert => {\n const event1 = createMemberEvent(\"join\", alice, \"Alice\");\n const event2 = createMemberEvent(\"join\", alice, \"Alies\");\n const event3 = createMemberEvent(\"join\", alice, \"Alys\");\n const events = [event1, event2, event3];\n // we write first because the MemberWriter assumes it is called before\n // the SyncWriter does any lookups\n const writer = new MemberWriter(roomId);\n const txn = createStorage();\n const memberSync = await writer.prepareMemberSync([], events, false);\n let member = await memberSync.lookupMemberAtEvent(event1.sender, event1, txn);\n assert.equal(member, undefined);\n member = await memberSync.lookupMemberAtEvent(event2.sender, event2, txn);\n assert.equal(member.displayName, \"Alice\");\n member = await memberSync.lookupMemberAtEvent(event3.sender, event3, txn);\n assert.equal(member.displayName, \"Alies\");\n\n assert.equal(txn.members.size, 0);\n const changes = await memberSync.write(txn);\n assert.equal(txn.members.size, 1);\n assert.equal(changes.size, 1);\n const change = changes.get(alice);\n assert(change.hasJoined);\n },\n \"lookupMemberAtEvent falls back on state event\": async assert => {\n const event1 = createMemberEvent(\"join\", alice, \"Alice\");\n const event2 = createMemberEvent(\"join\", alice, \"Alies\");\n // we write first because the MemberWriter assumes it is called before\n // the SyncWriter does any lookups\n const writer = new MemberWriter(roomId);\n const txn = createStorage();\n const memberSync = await writer.prepareMemberSync([event1], [event2], false);\n const member = await memberSync.lookupMemberAtEvent(event2.sender, event2, txn);\n assert.equal(member.displayName, \"Alice\");\n\n assert.equal(txn.members.size, 0);\n const changes = await memberSync.write(txn);\n assert.equal(txn.members.size, 1);\n assert.equal(changes.size, 1);\n const change = changes.get(alice);\n assert(change.hasJoined);\n },\n \"write works without event arrays\": async assert => {\n const writer = new MemberWriter(roomId);\n const txn = createStorage();\n const memberSync = await writer.prepareMemberSync(undefined, undefined, false);\n const changes = await memberSync.write(txn);\n assert.equal(changes.size, 0);\n },\n };\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {EventKey} from \"../EventKey\";\nimport {EventEntry} from \"../entries/EventEntry.js\";\nimport {createEventEntry, directionalAppend} from \"./common.js\";\nimport {RoomMember, EVENT_TYPE as MEMBER_EVENT_TYPE} from \"../../members/RoomMember.js\";\n\nexport class GapWriter {\n constructor({roomId, storage, fragmentIdComparer, relationWriter}) {\n this._roomId = roomId;\n this._storage = storage;\n this._fragmentIdComparer = fragmentIdComparer;\n this._relationWriter = relationWriter;\n }\n\n async _findOverlappingEvents(fragmentEntry, events, txn, log) {\n const eventIds = events.map(e => e.event_id);\n const existingEventKeyMap = await txn.timelineEvents.getEventKeysForIds(this._roomId, eventIds);\n log.set(\"existingEvents\", existingEventKeyMap.size);\n const nonOverlappingEvents = events.filter(e => !existingEventKeyMap.has(e.event_id));\n log.set(\"nonOverlappingEvents\", nonOverlappingEvents.length);\n let neighbourFragmentEntry;\n if (fragmentEntry.hasLinkedFragment) {\n log.set(\"linkedFragmentId\", fragmentEntry.linkedFragmentId);\n for (const eventKey of existingEventKeyMap.values()) {\n if (eventKey.fragmentId === fragmentEntry.linkedFragmentId) {\n log.set(\"foundLinkedFragment\", true);\n const neighbourFragment = await txn.timelineFragments.get(this._roomId, fragmentEntry.linkedFragmentId);\n neighbourFragmentEntry = fragmentEntry.createNeighbourEntry(neighbourFragment);\n break;\n }\n }\n }\n return {nonOverlappingEvents, neighbourFragmentEntry};\n }\n\n async _findFragmentEdgeEventKey(fragmentEntry, txn) {\n const {fragmentId, direction} = fragmentEntry;\n const event = await this._findFragmentEdgeEvent(fragmentId, direction, txn);\n if (event) {\n return new EventKey(event.fragmentId, event.eventIndex);\n } else {\n // no events yet in the fragment ... odd, but let's not fail and take the default key\n return EventKey.defaultFragmentKey(fragmentEntry.fragmentId);\n }\n }\n\n async _findFragmentEdgeEvent(fragmentId, direction, txn) {\n if (direction.isBackward) {\n const [firstEvent] = await txn.timelineEvents.firstEvents(this._roomId, fragmentId, 1);\n return firstEvent;\n } else {\n const [lastEvent] = await txn.timelineEvents.lastEvents(this._roomId, fragmentId, 1);\n return lastEvent;\n }\n }\n\n async _storeEvents(events, startKey, direction, state, txn, log) {\n const entries = [];\n const updatedEntries = [];\n // events is in reverse chronological order for backwards pagination,\n // e.g. order is moving away from the `from` point.\n let key = startKey;\n for (let i = 0; i < events.length; ++i) {\n const event = events[i];\n key = key.nextKeyForDirection(direction);\n const eventStorageEntry = createEventEntry(key, this._roomId, event);\n const member = this._findMember(event.sender, state, events, i, direction);\n if (member) {\n eventStorageEntry.displayName = member.displayName;\n eventStorageEntry.avatarUrl = member.avatarUrl;\n }\n // this will modify eventStorageEntry if it is a relation target\n const updatedRelationTargetEntries = await this._relationWriter.writeGapRelation(eventStorageEntry, direction, txn, log);\n if (updatedRelationTargetEntries) {\n updatedEntries.push(...updatedRelationTargetEntries);\n }\n if (await txn.timelineEvents.tryInsert(eventStorageEntry, log)) {\n const eventEntry = new EventEntry(eventStorageEntry, this._fragmentIdComparer);\n directionalAppend(entries, eventEntry, direction);\n }\n }\n return {entries, updatedEntries};\n }\n\n _findMember(userId, state, events, index, direction) {\n function isOurUser(event) {\n return event.type === MEMBER_EVENT_TYPE && event.state_key === userId;\n }\n // older messages are at a higher index in the array when going backwards\n const inc = direction.isBackward ? 1 : -1;\n for (let i = index + inc; i >= 0 && i < events.length; i += inc) {\n const event = events[i];\n if (isOurUser(event)) {\n return RoomMember.fromMemberEvent(this._roomId, event);\n }\n }\n // look into newer events, but using prev_content if found.\n // We do this before looking into `state` because it is not well specified\n // in the spec whether the events in there represent state before or after `chunk`.\n // So we look both directions first in chunk to make sure it doesn't matter.\n for (let i = index; i >= 0 && i < events.length; i -= inc) {\n const event = events[i];\n if (isOurUser(event)) {\n return RoomMember.fromReplacingMemberEvent(this._roomId, event);\n }\n }\n // assuming the member hasn't changed within the chunk, just take it from state if it's there.\n // Don't assume state is set though, as it can be empty at the top of the timeline in some circumstances \n const stateMemberEvent = state?.find(isOurUser);\n if (stateMemberEvent) {\n return RoomMember.fromMemberEvent(this._roomId, stateMemberEvent);\n }\n }\n\n async _updateFragments(fragmentEntry, neighbourFragmentEntry, end, entries, txn, log) {\n const {direction} = fragmentEntry;\n const changedFragments = [];\n directionalAppend(entries, fragmentEntry, direction);\n // set `end` as token, and if we found an event in the step before, link up the fragments in the fragment entry\n if (neighbourFragmentEntry) {\n // if neighbourFragmentEntry was found, it means the events were overlapping,\n // so no pagination should happen anymore.\n log.set(\"closedGapWith\", neighbourFragmentEntry.fragmentId);\n neighbourFragmentEntry.token = null;\n fragmentEntry.token = null;\n\n txn.timelineFragments.update(neighbourFragmentEntry.fragment);\n directionalAppend(entries, neighbourFragmentEntry, direction);\n\n // fragments that need to be changed in the fragmentIdComparer here\n // after txn succeeds\n changedFragments.push(fragmentEntry.fragment);\n changedFragments.push(neighbourFragmentEntry.fragment);\n } else {\n fragmentEntry.token = end;\n }\n txn.timelineFragments.update(fragmentEntry.fragment);\n\n return changedFragments;\n }\n\n /**\n * @param {string} fromToken the token used to call /messages, to ensure it hasn't changed in storage \n */\n async writeFragmentFill(fragmentEntry, response, fromToken, txn, log) {\n const {fragmentId, direction} = fragmentEntry;\n // chunk is in reverse-chronological order when backwards\n const {chunk, state} = response;\n let {end} = response;\n\n if (!Array.isArray(chunk)) {\n throw new Error(\"Invalid chunk in response\");\n }\n if (typeof end !== \"string\" && typeof end !== \"undefined\") {\n throw new Error(\"Invalid end token in response\");\n }\n\n // make sure we have the latest fragment from the store\n const fragment = await txn.timelineFragments.get(this._roomId, fragmentId);\n if (!fragment) {\n throw new Error(`Unknown fragment: ${fragmentId}`);\n }\n fragmentEntry = fragmentEntry.withUpdatedFragment(fragment);\n // check that the request was done with the token we are aware of (extra care to avoid timeline corruption)\n if (fragmentEntry.token !== fromToken) {\n throw new Error(\"The pagination token has changed locally while fetching messages.\");\n }\n\n // begin (or end) of timeline reached\n if (chunk.length === 0) {\n fragmentEntry.edgeReached = true;\n await txn.timelineFragments.update(fragmentEntry.fragment);\n return {entries: [fragmentEntry], updatedEntries: [], fragments: []};\n }\n\n // find last event in fragment so we get the eventIndex to begin creating keys at\n let lastKey = await this._findFragmentEdgeEventKey(fragmentEntry, txn);\n log.set(\"lastKey\", lastKey.toString());\n // find out if any event in chunk is already present using findFirstOrLastOccurringEventId\n const {\n nonOverlappingEvents,\n neighbourFragmentEntry\n } = await this._findOverlappingEvents(fragmentEntry, chunk, txn, log);\n // create entries for all events in chunk, add them to entries\n const {entries, updatedEntries} = await this._storeEvents(nonOverlappingEvents, lastKey, direction, state, txn, log);\n const fragments = await this._updateFragments(fragmentEntry, neighbourFragmentEntry, end, entries, txn, log);\n \n return {entries, updatedEntries, fragments};\n }\n}\n\nimport {FragmentIdComparer} from \"../FragmentIdComparer.js\";\nimport {RelationWriter} from \"./RelationWriter.js\";\nimport {createMockStorage} from \"../../../../mocks/Storage\";\nimport {FragmentBoundaryEntry} from \"../entries/FragmentBoundaryEntry.js\";\nimport {NullLogItem} from \"../../../../logging/NullLogger\";\nimport {TimelineMock, eventIds, eventId} from \"../../../../mocks/TimelineMock.ts\";\nimport {SyncWriter} from \"./SyncWriter.js\";\nimport {MemberWriter} from \"./MemberWriter.js\";\nimport {KeyLimits} from \"../../../storage/common\";\n\nexport function tests() {\n const roomId = \"!room:hs.tdl\";\n const alice = \"alice@hs.tdl\";\n const logger = new NullLogItem();\n\n async function createGapFillTxn(storage) {\n return storage.readWriteTxn([\n storage.storeNames.roomMembers,\n storage.storeNames.pendingEvents,\n storage.storeNames.timelineEvents,\n storage.storeNames.timelineRelations,\n storage.storeNames.timelineFragments,\n ]);\n }\n\n async function setup() {\n const storage = await createMockStorage();\n const txn = await createGapFillTxn(storage);\n const fragmentIdComparer = new FragmentIdComparer([]);\n const relationWriter = new RelationWriter({\n roomId, fragmentIdComparer, ownUserId: alice,\n });\n const gapWriter = new GapWriter({\n roomId, storage, fragmentIdComparer, relationWriter\n });\n const memberWriter = new MemberWriter(roomId);\n const syncWriter = new SyncWriter({\n roomId,\n fragmentIdComparer,\n memberWriter,\n relationWriter\n });\n return { storage, txn, fragmentIdComparer, gapWriter, syncWriter, timelineMock: new TimelineMock() };\n }\n\n async function syncAndWrite(mocks, { previous, limit } = {}) {\n const {txn, timelineMock, syncWriter, fragmentIdComparer} = mocks;\n const syncResponse = timelineMock.sync(previous?.next_batch, limit);\n const {newLiveKey} = await syncWriter.writeSync(syncResponse, false, false, txn, logger);\n syncWriter.afterSync(newLiveKey);\n return {\n syncResponse,\n fragmentEntry: newLiveKey ? FragmentBoundaryEntry.start(\n await txn.timelineFragments.get(roomId, newLiveKey.fragmentId),\n fragmentIdComparer,\n ) : null,\n };\n }\n\n async function backfillAndWrite(mocks, fragmentEntry, limit) {\n const {txn, timelineMock, gapWriter} = mocks;\n const messageResponse = timelineMock.messages(fragmentEntry.token, undefined, fragmentEntry.direction.asApiString(), limit);\n await gapWriter.writeFragmentFill(fragmentEntry, messageResponse, fragmentEntry.token, txn, logger);\n }\n\n async function allFragmentEvents(mocks, fragmentId) {\n const {txn} = mocks;\n const entries = await txn.timelineEvents.eventsAfter(roomId, new EventKey(fragmentId, KeyLimits.minStorageKey));\n return entries.map(e => e.event);\n }\n\n async function fetchFragment(mocks, fragmentId) {\n const {txn} = mocks;\n return txn.timelineFragments.get(roomId, fragmentId);\n }\n\n function assertFilledLink(assert, fragment1, fragment2) {\n assert.equal(fragment1.nextId, fragment2.id);\n assert.equal(fragment2.previousId, fragment1.id);\n assert.equal(fragment1.nextToken, null);\n assert.equal(fragment2.previousToken, null);\n }\n\n function assertGapLink(assert, fragment1, fragment2) {\n assert.equal(fragment1.nextId, fragment2.id);\n assert.equal(fragment2.previousId, fragment1.id);\n assert.notEqual(fragment2.previousToken, null);\n }\n\n return {\n \"Backfilling after one sync\": async assert => {\n const mocks = await setup();\n const { timelineMock } = mocks;\n timelineMock.append(30);\n const {fragmentEntry} = await syncAndWrite(mocks);\n await backfillAndWrite(mocks, fragmentEntry, 10);\n const events = await allFragmentEvents(mocks, fragmentEntry.fragmentId);\n assert.deepEqual(events.map(e => e.event_id), eventIds(10, 30));\n await mocks.txn.complete();\n },\n \"Backfilling a fragment that is expected to close a gap, and does\": async assert => {\n const mocks = await setup();\n const { timelineMock } = mocks;\n timelineMock.append(10);\n const {syncResponse, fragmentEntry: firstFragmentEntry} = await syncAndWrite(mocks, { limit: 10 });\n timelineMock.append(15);\n const {fragmentEntry: secondFragmentEntry} = await syncAndWrite(mocks, { previous: syncResponse, limit: 10 });\n await backfillAndWrite(mocks, secondFragmentEntry, 10);\n\n const firstFragment = await fetchFragment(mocks, firstFragmentEntry.fragmentId);\n const secondFragment = await fetchFragment(mocks, secondFragmentEntry.fragmentId);\n assertFilledLink(assert, firstFragment, secondFragment)\n const firstEvents = await allFragmentEvents(mocks, firstFragmentEntry.fragmentId);\n assert.deepEqual(firstEvents.map(e => e.event_id), eventIds(0, 10));\n const secondEvents = await allFragmentEvents(mocks, secondFragmentEntry.fragmentId);\n assert.deepEqual(secondEvents.map(e => e.event_id), eventIds(10, 25));\n await mocks.txn.complete();\n },\n \"Backfilling a fragment that is expected to close a gap, but doesn't yet\": async assert => {\n const mocks = await setup();\n const { timelineMock } = mocks;\n timelineMock.append(10);\n const {syncResponse, fragmentEntry: firstFragmentEntry} = await syncAndWrite(mocks, { limit: 10 });\n timelineMock.append(20);\n const {fragmentEntry: secondFragmentEntry} = await syncAndWrite(mocks, { previous: syncResponse, limit: 10 });\n await backfillAndWrite(mocks, secondFragmentEntry, 10);\n\n const firstFragment = await fetchFragment(mocks, firstFragmentEntry.fragmentId);\n const secondFragment = await fetchFragment(mocks, secondFragmentEntry.fragmentId);\n assertGapLink(assert, firstFragment, secondFragment)\n const firstEvents = await allFragmentEvents(mocks, firstFragmentEntry.fragmentId);\n assert.deepEqual(firstEvents.map(e => e.event_id), eventIds(0, 10));\n const secondEvents = await allFragmentEvents(mocks, secondFragmentEntry.fragmentId);\n assert.deepEqual(secondEvents.map(e => e.event_id), eventIds(10, 30));\n await mocks.txn.complete();\n },\n \"Receiving a sync with the same events as the current fragment does not create infinite link\": async assert => {\n const mocks = await setup();\n const { txn, timelineMock } = mocks;\n timelineMock.append(10);\n const {syncResponse, fragmentEntry: fragmentEntry} = await syncAndWrite(mocks, { limit: 10 });\n // Mess with the saved token to receive old events in backfill\n fragmentEntry.token = syncResponse.next_batch;\n txn.timelineFragments.update(fragmentEntry.fragment);\n await backfillAndWrite(mocks, fragmentEntry, 10);\n\n const fragment = await fetchFragment(mocks, fragmentEntry.fragmentId);\n assert.notEqual(fragment.nextId, fragment.id);\n assert.notEqual(fragment.previousId, fragment.id);\n await mocks.txn.complete();\n },\n \"An event received by sync does not interrupt backfilling\": async assert => {\n const mocks = await setup();\n const { timelineMock } = mocks;\n timelineMock.append(10);\n const {syncResponse, fragmentEntry: firstFragmentEntry} = await syncAndWrite(mocks, { limit: 10 });\n timelineMock.append(11);\n const {fragmentEntry: secondFragmentEntry} = await syncAndWrite(mocks, { previous: syncResponse, limit: 10 });\n timelineMock.insertAfter(eventId(9), 5);\n await backfillAndWrite(mocks, secondFragmentEntry, 10);\n\n const firstEvents = await allFragmentEvents(mocks, firstFragmentEntry.fragmentId);\n assert.deepEqual(firstEvents.map(e => e.event_id), eventIds(0, 10));\n const secondEvents = await allFragmentEvents(mocks, secondFragmentEntry.fragmentId);\n assert.deepEqual(secondEvents.map(e => e.event_id), [...eventIds(21,26), ...eventIds(10, 21)]);\n const firstFragment = await fetchFragment(mocks, firstFragmentEntry.fragmentId);\n const secondFragment = await fetchFragment(mocks, secondFragmentEntry.fragmentId);\n assertFilledLink(assert, firstFragment, secondFragment)\n await mocks.txn.complete();\n }\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {directionalConcat, directionalAppend} from \"./common.js\";\nimport {Direction} from \"../Direction\";\nimport {EventEntry} from \"../entries/EventEntry.js\";\nimport {FragmentBoundaryEntry} from \"../entries/FragmentBoundaryEntry.js\";\n\nclass ReaderRequest {\n constructor(fn, log) {\n this.decryptRequest = null;\n this._promise = fn(this, log);\n }\n\n complete() {\n return this._promise;\n }\n\n dispose() {\n if (this.decryptRequest) {\n this.decryptRequest.dispose();\n this.decryptRequest = null;\n }\n }\n}\n\n/**\n * Raw because it doesn't do decryption and in the future it should not read relations either.\n * It is just about reading entries and following fragment links\n */\nasync function readRawTimelineEntriesWithTxn(roomId, eventKey, direction, amount, fragmentIdComparer, txn) {\n let entries = [];\n const timelineStore = txn.timelineEvents;\n const fragmentStore = txn.timelineFragments;\n\n while (entries.length < amount && eventKey) {\n let eventsWithinFragment;\n if (direction.isForward) {\n // TODO: should we pass amount - entries.length here?\n eventsWithinFragment = await timelineStore.eventsAfter(roomId, eventKey, amount);\n } else {\n eventsWithinFragment = await timelineStore.eventsBefore(roomId, eventKey, amount);\n }\n let eventEntries = eventsWithinFragment.map(e => new EventEntry(e, fragmentIdComparer));\n entries = directionalConcat(entries, eventEntries, direction);\n // prepend or append eventsWithinFragment to entries, and wrap them in EventEntry\n\n if (entries.length < amount) {\n const fragment = await fragmentStore.get(roomId, eventKey.fragmentId);\n // TODO: why does the first fragment not need to be added? (the next *is* added below)\n // it looks like this would be fine when loading in the sync island\n // (as the live fragment should be added already) but not for permalinks when we support them\n // \n // fragmentIdComparer.addFragment(fragment);\n let fragmentEntry = new FragmentBoundaryEntry(fragment, direction.isBackward, fragmentIdComparer);\n // append or prepend fragmentEntry, reuse func from GapWriter?\n directionalAppend(entries, fragmentEntry, direction);\n // only continue loading if the fragment boundary can't be backfilled\n if (!fragmentEntry.token && fragmentEntry.hasLinkedFragment) {\n const nextFragment = await fragmentStore.get(roomId, fragmentEntry.linkedFragmentId);\n fragmentIdComparer.add(nextFragment);\n const nextFragmentEntry = new FragmentBoundaryEntry(nextFragment, direction.isForward, fragmentIdComparer);\n directionalAppend(entries, nextFragmentEntry, direction);\n eventKey = nextFragmentEntry.asEventKey();\n } else {\n eventKey = null;\n }\n }\n }\n return entries;\n}\n\nexport class TimelineReader {\n constructor({roomId, storage, fragmentIdComparer}) {\n this._roomId = roomId;\n this._storage = storage;\n this._fragmentIdComparer = fragmentIdComparer;\n this._decryptEntries = null;\n }\n\n enableEncryption(decryptEntries) {\n this._decryptEntries = decryptEntries;\n }\n\n get readTxnStores() {\n const stores = [\n this._storage.storeNames.timelineEvents,\n this._storage.storeNames.timelineFragments,\n ];\n if (this._decryptEntries) {\n stores.push(this._storage.storeNames.inboundGroupSessions);\n }\n return stores;\n }\n\n readFrom(eventKey, direction, amount, log) {\n return new ReaderRequest(async (r, log) => {\n const txn = await this._storage.readTxn(this.readTxnStores);\n return await this._readFrom(eventKey, direction, amount, r, txn, log);\n }, log);\n }\n\n readFromEnd(amount, existingTxn = null, log) {\n return new ReaderRequest(async (r, log) => {\n const txn = existingTxn || await this._storage.readTxn(this.readTxnStores);\n const liveFragment = await txn.timelineFragments.liveFragment(this._roomId);\n let entries;\n // room hasn't been synced yet\n if (!liveFragment) {\n entries = [];\n } else {\n this._fragmentIdComparer.add(liveFragment);\n const liveFragmentEntry = FragmentBoundaryEntry.end(liveFragment, this._fragmentIdComparer);\n const eventKey = liveFragmentEntry.asEventKey();\n entries = await this._readFrom(eventKey, Direction.Backward, amount, r, txn, log);\n entries.unshift(liveFragmentEntry);\n }\n return entries;\n }, log);\n }\n\n async readById(id, log) {\n let stores = [this._storage.storeNames.timelineEvents];\n if (this._decryptEntries) {\n stores.push(this._storage.storeNames.inboundGroupSessions);\n }\n const txn = await this._storage.readTxn(stores); // todo: can we just use this.readTxnStores here? probably\n const storageEntry = await txn.timelineEvents.getByEventId(this._roomId, id);\n if (storageEntry) {\n const entry = new EventEntry(storageEntry, this._fragmentIdComparer);\n if (this._decryptEntries) {\n const request = this._decryptEntries([entry], txn, log);\n await request.complete();\n }\n return entry;\n }\n }\n\n async _readFrom(eventKey, direction, amount, r, txn, log) {\n const entries = await readRawTimelineEntriesWithTxn(this._roomId, eventKey, direction, amount, this._fragmentIdComparer, txn);\n if (this._decryptEntries) {\n r.decryptRequest = this._decryptEntries(entries, txn, log);\n try {\n await r.decryptRequest.complete();\n } finally {\n r.decryptRequest = null;\n }\n }\n return entries;\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {EventEntry} from \"./EventEntry.js\";\n\n// EventEntry but without the two properties that are populated via SyncWriter\n// Useful if you want to create an EventEntry that is ephemeral\n\nexport class NonPersistedEventEntry extends EventEntry {\n get fragmentId() {\n throw new Error(\"Cannot access fragmentId for non-persisted EventEntry\");\n }\n\n get entryIndex() {\n throw new Error(\"Cannot access entryIndex for non-persisted EventEntry\");\n }\n\n get isNonPersisted() {\n return true;\n }\n\n // overridden here because we reuse addLocalRelation() for updating this entry\n // we don't want the RedactedTile created using this entry to ever show \"is being redacted\"\n get isRedacting() {\n return false;\n }\n\n get isRedacted() {\n return super.isRedacting;\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexport class RetainedValue {\n private readonly _freeCallback: () => void;\n private _retentionCount: number = 1;\n\n constructor(freeCallback: () => void) {\n this._freeCallback = freeCallback;\n }\n\n retain(): void {\n this._retentionCount += 1;\n }\n\n release(): void {\n this._retentionCount -= 1;\n if (this._retentionCount === 0) {\n this._freeCallback();\n }\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexport class User {\n constructor(userId) {\n this._userId = userId;\n }\n\n get id() {\n return this._userId;\n }\n}\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {SortedArray, AsyncMappedList, ConcatList, ObservableArray} from \"../../../observable\";\nimport {Disposables} from \"../../../utils/Disposables\";\nimport {Direction} from \"./Direction\";\nimport {TimelineReader} from \"./persistence/TimelineReader.js\";\nimport {PendingEventEntry} from \"./entries/PendingEventEntry.js\";\nimport {RoomMember} from \"../members/RoomMember.js\";\nimport {getRelation, ANNOTATION_RELATION_TYPE} from \"./relations.js\";\nimport {REDACTION_TYPE} from \"../common\";\nimport {NonPersistedEventEntry} from \"./entries/NonPersistedEventEntry.js\";\nimport {EVENT_TYPE as MEMBER_EVENT_TYPE} from \"../members/RoomMember.js\";\nimport {RetainedValue} from \"../../../utils/RetainedValue\";\n\nexport class Timeline extends RetainedValue {\n constructor({roomId, storage, closeCallback, fragmentIdComparer, pendingEvents, clock, powerLevelsObservable, hsApi}) {\n super(() => { this.dispose(); });\n this._roomId = roomId;\n this._storage = storage;\n this._closeCallback = closeCallback;\n this._fragmentIdComparer = fragmentIdComparer;\n this._disposables = new Disposables();\n this._pendingEvents = pendingEvents;\n this._clock = clock;\n // constructing this early avoid some problem while sync and openTimeline race\n this._remoteEntries = new SortedArray((a, b) => a.compare(b));\n this._ownMember = null;\n this._timelineReader = new TimelineReader({\n roomId: this._roomId,\n storage: this._storage,\n fragmentIdComparer: this._fragmentIdComparer\n });\n this._readerRequest = null;\n this._allEntries = null;\n /** Stores event entries that we had to fetch from hs/storage for reply previews (because they were not in timeline) */\n this._contextEntriesNotInTimeline = new Map();\n /** Only used to decrypt non-persisted context entries fetched from the homeserver */\n this._decryptEntries = null;\n this._hsApi = hsApi;\n this.initializePowerLevels(powerLevelsObservable);\n }\n\n initializePowerLevels(observable) {\n if (observable) {\n this._powerLevels = observable.get();\n this._disposables.track(observable.subscribe(powerLevels => this._powerLevels = powerLevels));\n }\n }\n\n /** @package */\n async load(user, membership, log) {\n const txn = await this._storage.readTxn(this._timelineReader.readTxnStores.concat(\n this._storage.storeNames.roomMembers,\n this._storage.storeNames.roomState\n ));\n const memberData = await txn.roomMembers.get(this._roomId, user.id);\n if (memberData) {\n this._ownMember = new RoomMember(memberData);\n } else {\n // this should never happen, as our own join into the room would have\n // made us receive our own member event, but just to be on the safe side and not crash,\n // fall back to bare user id\n this._ownMember = RoomMember.fromUserId(this._roomId, user.id, membership);\n }\n // it should be fine to not update the local entries,\n // as they should only populate once the view subscribes to it\n // if they are populated already, the sender profile would be empty\n\n // choose good amount here between showing messages initially and\n // not spending too much time decrypting messages before showing the timeline.\n // more messages should be loaded automatically until the viewport is full by the view if needed.\n const readerRequest = this._disposables.track(this._timelineReader.readFromEnd(20, txn, log));\n try {\n const entries = await readerRequest.complete();\n this._loadContextEntriesWhereNeeded(entries);\n this._setupEntries(entries);\n } finally {\n this._disposables.disposeTracked(readerRequest);\n }\n // txn should be assumed to have finished here, as decryption will close it.\n }\n\n _setupEntries(timelineEntries) {\n this._remoteEntries.setManySorted(timelineEntries);\n if (this._pendingEvents) {\n this._localEntries = new AsyncMappedList(this._pendingEvents,\n pe => this._mapPendingEventToEntry(pe),\n (pee, params) => {\n // is sending but redacted, who do we detect that here to remove the relation?\n pee.notifyUpdate(params);\n },\n pee => this._applyAndEmitLocalRelationChange(pee, target => target.removeLocalRelation(pee))\n );\n } else {\n this._localEntries = new ObservableArray();\n }\n this._allEntries = new ConcatList(this._remoteEntries, this._localEntries);\n }\n\n async _mapPendingEventToEntry(pe) {\n // we load the redaction target for pending events,\n // so if we are redacting a relation, we can pass the redaction\n // to the relation target and the removal of the relation can\n // be taken into account for local echo.\n let redactingEntry;\n if (pe.eventType === REDACTION_TYPE) {\n redactingEntry = await this._getOrLoadEntry(pe.relatedTxnId, pe.relatedEventId);\n }\n const pee = new PendingEventEntry({\n pendingEvent: pe, member: this._ownMember,\n clock: this._clock, redactingEntry\n });\n this._loadContextEntriesWhereNeeded([pee]);\n this._applyAndEmitLocalRelationChange(pee, target => target.addLocalRelation(pee));\n return pee;\n }\n\n _applyAndEmitLocalRelationChange(pee, updater) {\n // this is the contract of findAndUpdate, used in _findAndUpdateRelatedEntry\n const updateOrFalse = e => {\n const params = updater(e);\n return params ? params : false;\n };\n this._findAndUpdateEntryById(pee.pendingEvent.relatedTxnId, pee.relatedEventId, updateOrFalse);\n // also look for a relation target to update with this redaction\n if (pee.redactingEntry) {\n // redactingEntry might be a PendingEventEntry or an EventEntry, so don't assume pendingEvent\n const relatedTxnId = pee.redactingEntry.pendingEvent?.relatedTxnId;\n this._findAndUpdateEntryById(relatedTxnId, pee.redactingEntry.relatedEventId, updateOrFalse);\n pee.redactingEntry.contextForEntries?.forEach(e => this._emitUpdateForEntry(e, \"contextEntry\"));\n }\n }\n\n _findAndUpdateEntryById(txnId, eventId, updateOrFalse) {\n let found = false;\n // first, look in local entries based on txn id\n if (txnId) {\n found = this._localEntries.findAndUpdate(\n e => e.id === txnId,\n updateOrFalse,\n );\n }\n // if not found here, look in remote entries based on event id\n if (!found && eventId) {\n this._remoteEntries.findAndUpdate(\n e => e.id === eventId,\n updateOrFalse\n );\n }\n }\n\n async getOwnAnnotationEntry(targetId, key) {\n const txn = await this._storage.readWriteTxn([\n this._storage.storeNames.timelineEvents,\n this._storage.storeNames.timelineRelations,\n ]);\n const relations = await txn.timelineRelations.getForTargetAndType(this._roomId, targetId, ANNOTATION_RELATION_TYPE);\n for (const relation of relations) {\n const annotation = await txn.timelineEvents.getByEventId(this._roomId, relation.sourceEventId);\n if (annotation && annotation.event.sender === this._ownMember.userId && getRelation(annotation.event).key === key) {\n const eventEntry = new EventEntry(annotation, this._fragmentIdComparer);\n this._addLocalRelationsToNewRemoteEntries([eventEntry]);\n return eventEntry;\n }\n }\n return null;\n }\n\n /** @package */\n updateOwnMember(member) {\n this._ownMember = member;\n }\n\n _addLocalRelationsToNewRemoteEntries(entries) {\n // because it is not safe to iterate a derived observable collection\n // before it has any subscriptions, we bail out if this isn't\n // the case yet. This can happen when sync adds or replaces entries\n // before load has finished and the view has subscribed to the timeline.\n //\n // Once the subscription is setup, MappedList will set up the local\n // relations as needed with _applyAndEmitLocalRelationChange,\n // so we're not missing anything by bailing out.\n //\n // _localEntries can also not yet exist\n if (!this._localEntries?.hasSubscriptions) {\n return;\n }\n // find any local relations to this new remote event\n for (const pee of this._localEntries) {\n // this will work because we set relatedEventId when removing remote echos\n if (pee.relatedEventId) {\n const relationTarget = entries.find(e => e.id === pee.relatedEventId);\n // no need to emit here as this entry is about to be added\n relationTarget?.addLocalRelation(pee);\n }\n if (pee.redactingEntry) {\n const eventId = pee.redactingEntry.relatedEventId;\n const relationTarget = entries.find(e => e.id === eventId);\n relationTarget?.addLocalRelation(pee);\n }\n }\n }\n\n // used in replaceEntries\n static _entryUpdater(existingEntry, entry) {\n // ensure other entries for which this existingEntry is a context point to the new entry instead of existingEntry\n existingEntry.contextForEntries?.forEach(event => event.setContextEntry(entry));\n entry.updateFrom(existingEntry);\n return entry;\n }\n\n /** @package */\n replaceEntries(entries) {\n this._addLocalRelationsToNewRemoteEntries(entries);\n for (const entry of entries) {\n try {\n this._remoteEntries.getAndUpdate(entry, Timeline._entryUpdater);\n const oldEntry = this._contextEntriesNotInTimeline.get(entry.id)\n if (oldEntry) {\n Timeline._entryUpdater(oldEntry, entry);\n this._contextEntriesNotInTimeline.set(entry.id, entry);\n }\n // Since this entry changed, all dependent entries should be updated\n entry.contextForEntries?.forEach(e => this._emitUpdateForEntry(e, \"contextEntry\"));\n } catch (err) {\n if (err.name === \"CompareError\") {\n // see FragmentIdComparer, if the replacing entry is on a fragment\n // that is currently not loaded into the FragmentIdComparer, it will\n // throw a CompareError, and it means that the event is not loaded\n // in the timeline (like when receiving a relation for an event\n // that is not loaded in memory) so we can just drop this error as\n // replacing an event that is not already loaded is a no-op.\n continue;\n } else {\n // don't swallow other errors\n throw err;\n }\n }\n }\n }\n\n /** @package */\n addEntries(newEntries) {\n this._addLocalRelationsToNewRemoteEntries(newEntries);\n this._updateEntriesFetchedFromHomeserver(newEntries);\n this._moveEntryToRemoteEntries(newEntries);\n this._loadContextEntriesWhereNeeded(newEntries);\n this._remoteEntries.setManySorted(newEntries);\n }\n\n /**\n * Update entries based on newly received events.\n * This is specific to events that are not in the timeline but had to be fetched from the homeserver\n * because they are context-events for other events in the timeline (i.e fetched from hs so that we\n * can render things like reply previews)\n */\n _updateEntriesFetchedFromHomeserver(entries) {\n /**\n * Updates for entries in timeline is handled by remoteEntries observable collection\n * Updates for entries not in timeline but fetched from storage is handled in this.replaceEntries()\n * This code is specific to entries fetched from HomeServer i.e NonPersistedEventEntry\n */\n for (const entry of entries) {\n const relatedEntry = this._contextEntriesNotInTimeline.get(entry.relatedEventId);\n if (relatedEntry?.isNonPersisted && relatedEntry?.addLocalRelation(entry)) {\n // update other entries for which this entry is a context entry\n relatedEntry.contextForEntries?.forEach(e => this._emitUpdateForEntry(e, \"contextEntry\"));\n }\n }\n }\n\n /**\n * If an event we had to fetch from hs/storage is now in the timeline (for eg, due to gap fill),\n * remove the event from _contextEntriesNotInTimeline since it is now in remoteEntries\n */\n _moveEntryToRemoteEntries(entries) {\n for (const entry of entries) {\n const fetchedEntry = this._contextEntriesNotInTimeline.get(entry.id);\n if (fetchedEntry) {\n fetchedEntry.contextForEntries.forEach(e => {\n e.setContextEntry(entry);\n this._emitUpdateForEntry(e, \"contextEntry\");\n });\n this._contextEntriesNotInTimeline.delete(entry.id);\n }\n }\n }\n\n _emitUpdateForEntry(entry, param) {\n const txnId = entry.isPending ? entry.id : null;\n const eventId = entry.isPending ? null : entry.id;\n this._findAndUpdateEntryById(txnId, eventId, () => param);\n }\n\n /**\n * For each entry in entries, this method associates a context-entry (if needed) to it.\n * The context-entry is fetched using the following strategies (in the same order as given):\n * - timeline\n * - storage\n * - homeserver\n * @param {EventEntry[]} entries\n */\n async _loadContextEntriesWhereNeeded(entries) {\n for (const entry of entries) {\n if (!entry.contextEventId) {\n continue;\n }\n const id = entry.contextEventId;\n // before looking into remoteEntries, check the entries\n // that are about to be added first\n let contextEvent = entries.find(e => e.id === id);\n if (!contextEvent) {\n contextEvent = this._findLoadedEventById(id);\n }\n if (contextEvent) {\n entry.setContextEntry(contextEvent);\n // we don't emit an update for `entry` here, as the add or update\n // that the callee will emit hasn't been emitted yet.\n // however we do emit an update for the `contextEvent` so that it\n // can do something in response to `entry` being added (if needed).\n this._emitUpdateForEntry(contextEvent, \"context-added\");\n } else {\n // we don't await here, which is not ideal,\n // but one of our callers, addEntries, is not async\n // so there is not much point.\n // Also, we want to run the entry fetching in parallel.\n this._loadContextEntryNotInTimeline(entry);\n }\n }\n }\n\n async _loadContextEntryNotInTimeline(entry) {\n const id = entry.contextEventId;\n let contextEvent = await this._getEventFromStorage(id);\n if (!contextEvent) {\n contextEvent = await this._getEventFromHomeserver(id);\n }\n if (contextEvent) {\n // this entry was created from storage/hs, so it's not tracked by remoteEntries\n // we track them here so that we can update reply previews later\n this._contextEntriesNotInTimeline.set(id, contextEvent);\n entry.setContextEntry(contextEvent);\n // here, we awaited something, so from now on we do have to emit\n // an update if we set the context entry.\n this._emitUpdateForEntry(entry, \"contextEntry\");\n }\n }\n\n /**\n * Fetches an entry with the given event-id from localEntries, remoteEntries or contextEntriesNotInTimeline.\n * @param {string} eventId event-id of the entry\n * @returns entry if found, undefined otherwise\n */\n _findLoadedEventById(eventId) {\n return this.getByEventId(eventId) ?? this._contextEntriesNotInTimeline.get(eventId);\n }\n\n async _getEventFromStorage(eventId) {\n const entry = await this._timelineReader.readById(eventId);\n return entry;\n }\n\n async _getEventFromHomeserver(eventId) {\n const response = await this._hsApi.context(this._roomId, eventId, 0).response();\n const sender = response.event.sender;\n const member = response.state.find(e => e.type === MEMBER_EVENT_TYPE && e.user_id === sender);\n const entry = {\n event: response.event,\n displayName: member.content.displayname,\n avatarUrl: member.content.avatar_url\n };\n const eventEntry = new NonPersistedEventEntry(entry, this._fragmentIdComparer);\n if (this._decryptEntries) {\n const request = this._decryptEntries([eventEntry]);\n await request.complete();\n }\n return eventEntry;\n }\n\n // tries to prepend `amount` entries to the `entries` list.\n /**\n * [loadAtTop description]\n * @param {[type]} amount [description]\n * @return {boolean} true if the top of the timeline has been reached\n *\n */\n async loadAtTop(amount) {\n if (this._disposables.isDisposed) {\n return true;\n }\n const firstEventEntry = this._remoteEntries.array.find(e => !!e.eventType);\n if (!firstEventEntry) {\n return true;\n }\n const readerRequest = this._disposables.track(this._timelineReader.readFrom(\n firstEventEntry.asEventKey(),\n Direction.Backward,\n amount\n ));\n try {\n const entries = await readerRequest.complete();\n this.addEntries(entries);\n return entries.length < amount;\n } finally {\n this._disposables.disposeTracked(readerRequest);\n }\n }\n\n async _getOrLoadEntry(txnId, eventId) {\n if (txnId) {\n // also look for redacting relation in pending events, in case the target is already being sent\n for (const p of this._localEntries) {\n if (p.id === txnId) {\n return p;\n }\n }\n }\n if (eventId) {\n return this.getByEventId(eventId) ?? await this._getEventFromStorage(eventId);\n }\n return null;\n }\n\n getByEventId(eventId) {\n for (let i = 0; i < this._remoteEntries.length; i += 1) {\n const entry = this._remoteEntries.get(i);\n if (entry.id === eventId) {\n return entry;\n }\n }\n return null;\n }\n\n /** @public */\n get entries() {\n return this._allEntries;\n }\n\n /**\n * @internal\n * @return {Array} remote event entries, should not be modified\n */\n get remoteEntries() {\n return this._remoteEntries.array;\n }\n\n /** @public */\n dispose() {\n if (this._closeCallback) {\n this._disposables.dispose();\n this._closeCallback();\n this._closeCallback = null;\n }\n }\n\n /** @internal */\n enableEncryption(decryptEntries) {\n this._decryptEntries = decryptEntries;\n this._timelineReader.enableEncryption(decryptEntries);\n }\n\n get powerLevels() {\n return this._powerLevels;\n }\n\n get me() {\n return this._ownMember;\n }\n}\n\nimport {FragmentIdComparer} from \"./FragmentIdComparer.js\";\nimport {poll} from \"../../../mocks/poll.js\";\nimport {Clock as MockClock} from \"../../../mocks/Clock.js\";\nimport {createMockStorage} from \"../../../mocks/Storage\";\nimport {ListObserver} from \"../../../mocks/ListObserver.js\";\nimport {createEvent, withTextBody, withContent, withSender, withRedacts, withReply} from \"../../../mocks/event.js\";\nimport {NullLogItem} from \"../../../logging/NullLogger\";\nimport {EventEntry} from \"./entries/EventEntry.js\";\nimport {User} from \"../../User.js\";\nimport {PendingEvent} from \"../sending/PendingEvent.js\";\nimport {createAnnotation} from \"./relations.js\";\nimport {redactEvent} from \"./common.js\";\n\nexport function tests() {\n const fragmentIdComparer = new FragmentIdComparer([]);\n const roomId = \"$abc\";\n const alice = \"@alice:hs.tld\";\n const bob = \"@bob:hs.tld\";\n const hsApi = {\n context() {\n const result = {\n event: withTextBody(\"foo\", createEvent(\"m.room.message\", \"event_id_1\", alice)),\n state: [{\n type: MEMBER_EVENT_TYPE,\n user_id: alice,\n content: {\n displayName: \"\",\n avatarUrl: \"\"\n }\n }]\n };\n return { response: () => result };\n }\n };\n\n function getIndexFromIterable(it, n) {\n let i = 0;\n for (const item of it) {\n if (i === n) {\n return item;\n }\n i += 1;\n }\n throw new Error(\"not enough items in iterable\");\n }\n\n return {\n \"adding or replacing entries before subscribing to entries does not lose local relations\": async assert => {\n const pendingEvents = new ObservableArray();\n const timeline = new Timeline({roomId, storage: await createMockStorage(),\n closeCallback: () => {}, fragmentIdComparer, pendingEvents, clock: new MockClock()});\n // 1. load timeline\n await timeline.load(new User(alice), \"join\", new NullLogItem());\n // 2. test replaceEntries and addEntries don't fail\n const event1 = withTextBody(\"hi!\", withSender(bob, createEvent(\"m.room.message\", \"!abc\")));\n const entry1 = new EventEntry({event: event1, fragmentId: 1, eventIndex: 1}, fragmentIdComparer);\n timeline.replaceEntries([entry1]);\n const event2 = withTextBody(\"hi bob!\", withSender(alice, createEvent(\"m.room.message\", \"!def\")));\n const entry2 = new EventEntry({event: event2, fragmentId: 1, eventIndex: 2}, fragmentIdComparer);\n timeline.addEntries([entry2]);\n // 3. add local relation (redaction)\n pendingEvents.append(new PendingEvent({data: {\n roomId,\n queueIndex: 1,\n eventType: \"m.room.redaction\",\n txnId: \"t123\",\n content: {},\n relatedEventId: event2.event_id\n }}));\n // 4. subscribe (it's now safe to iterate timeline.entries)\n timeline.entries.subscribe(new ListObserver());\n // 5. check the local relation got correctly aggregated\n const locallyRedacted = await poll(() => Array.from(timeline.entries)[0].isRedacting);\n assert.equal(locallyRedacted, true);\n },\n \"add and remove local reaction, and cancel again\": async assert => {\n // 1. setup timeline with message\n const pendingEvents = new ObservableArray();\n const timeline = new Timeline({roomId, storage: await createMockStorage(),\n closeCallback: () => {}, fragmentIdComparer, pendingEvents, clock: new MockClock()});\n await timeline.load(new User(bob), \"join\", new NullLogItem());\n timeline.entries.subscribe(new ListObserver());\n const event = withTextBody(\"hi bob!\", withSender(alice, createEvent(\"m.room.message\", \"!abc\")));\n timeline.addEntries([new EventEntry({event, fragmentId: 1, eventIndex: 2}, fragmentIdComparer)]);\n let entry = getIndexFromIterable(timeline.entries, 0);\n // 2. add local reaction\n pendingEvents.append(new PendingEvent({data: {\n roomId,\n queueIndex: 1,\n eventType: \"m.reaction\",\n txnId: \"t123\",\n content: entry.annotate(\"👋\"),\n relatedEventId: entry.id\n }}));\n await poll(() => timeline.entries.length === 2);\n assert.equal(entry.pendingAnnotations.get(\"👋\").count, 1);\n const reactionEntry = getIndexFromIterable(timeline.entries, 1);\n // 3. add redaction to timeline\n pendingEvents.append(new PendingEvent({data: {\n roomId,\n queueIndex: 2,\n eventType: \"m.room.redaction\",\n txnId: \"t456\",\n content: {},\n relatedTxnId: reactionEntry.id\n }}));\n // TODO: await nextUpdate here with ListObserver, to ensure entry emits an update when pendingAnnotations changes\n await poll(() => timeline.entries.length === 3);\n assert.equal(entry.pendingAnnotations.get(\"👋\").count, 0);\n // 4. cancel redaction\n pendingEvents.remove(1);\n await poll(() => timeline.entries.length === 2);\n assert.equal(entry.pendingAnnotations.get(\"👋\").count, 1);\n // 5. cancel reaction\n pendingEvents.remove(0);\n await poll(() => timeline.entries.length === 1);\n assert(!entry.pendingAnnotations);\n },\n \"getOwnAnnotationEntry\": async assert => {\n const messageId = \"!abc\";\n const reactionId = \"!def\";\n // 1. put event and reaction into storage\n const storage = await createMockStorage();\n const txn = await storage.readWriteTxn([storage.storeNames.timelineEvents, storage.storeNames.timelineRelations]);\n txn.timelineEvents.tryInsert({\n event: withContent(createAnnotation(messageId, \"👋\"), createEvent(\"m.reaction\", reactionId, bob)),\n fragmentId: 1, eventIndex: 1, roomId\n }, new NullLogItem());\n txn.timelineRelations.add(roomId, messageId, ANNOTATION_RELATION_TYPE, reactionId);\n await txn.complete();\n // 2. setup the timeline\n const timeline = new Timeline({roomId, storage, closeCallback: () => {},\n fragmentIdComparer, pendingEvents: new ObservableArray(), clock: new MockClock()});\n await timeline.load(new User(bob), \"join\", new NullLogItem());\n // 3. get the own annotation out\n const reactionEntry = await timeline.getOwnAnnotationEntry(messageId, \"👋\");\n assert.equal(reactionEntry.id, reactionId);\n assert.equal(reactionEntry.relation.key, \"👋\");\n },\n \"remote reaction\": async assert => {\n const messageEntry = new EventEntry({\n event: withTextBody(\"hi bob!\", createEvent(\"m.room.message\", \"!abc\", alice)),\n fragmentId: 1, eventIndex: 2, roomId,\n annotations: { // aggregated like RelationWriter would\n \"👋\": {count: 1, me: true, firstTimestamp: 0}\n },\n }, fragmentIdComparer);\n // 2. setup timeline\n const pendingEvents = new ObservableArray();\n const timeline = new Timeline({roomId, storage: await createMockStorage(),\n closeCallback: () => {}, fragmentIdComparer, pendingEvents, clock: new MockClock()});\n await timeline.load(new User(bob), \"join\", new NullLogItem());\n timeline.entries.subscribe(new ListObserver());\n // 3. add message to timeline\n timeline.addEntries([messageEntry]);\n const entry = getIndexFromIterable(timeline.entries, 0);\n assert.equal(entry, messageEntry);\n assert.equal(entry.annotations[\"👋\"].count, 1);\n },\n \"remove remote reaction\": async assert => {\n // 1. setup timeline\n const pendingEvents = new ObservableArray();\n const timeline = new Timeline({roomId, storage: await createMockStorage(),\n closeCallback: () => { }, fragmentIdComparer, pendingEvents, clock: new MockClock()});\n await timeline.load(new User(bob), \"join\", new NullLogItem());\n timeline.entries.subscribe(new ListObserver());\n // 2. add message and reaction to timeline\n const messageEntry = new EventEntry({\n event: withTextBody(\"hi bob!\", createEvent(\"m.room.message\", \"!abc\", alice)),\n fragmentId: 1, eventIndex: 2, roomId,\n }, fragmentIdComparer);\n const reactionEntry = new EventEntry({\n event: withContent(createAnnotation(messageEntry.id, \"👋\"), createEvent(\"m.reaction\", \"!def\", bob)),\n fragmentId: 1, eventIndex: 3, roomId\n }, fragmentIdComparer);\n timeline.addEntries([messageEntry, reactionEntry]);\n // 3. redact reaction\n pendingEvents.append(new PendingEvent({data: {\n roomId,\n queueIndex: 1,\n eventType: \"m.room.redaction\",\n txnId: \"t123\",\n content: {},\n relatedEventId: reactionEntry.id\n }}));\n await poll(() => timeline.entries.length >= 3);\n assert.equal(messageEntry.pendingAnnotations.get(\"👋\").count, -1);\n },\n \"local reaction gets applied after remote echo is added to timeline\": async assert => {\n const messageEntry = new EventEntry({event: withTextBody(\"hi bob!\", withSender(alice, createEvent(\"m.room.message\", \"!abc\"))),\n fragmentId: 1, eventIndex: 2}, fragmentIdComparer);\n // 1. setup timeline\n const pendingEvents = new ObservableArray();\n const timeline = new Timeline({roomId, storage: await createMockStorage(),\n closeCallback: () => {}, fragmentIdComparer, pendingEvents, clock: new MockClock()});\n await timeline.load(new User(bob), \"join\", new NullLogItem());\n timeline.entries.subscribe(new ListObserver());\n // 2. add local reaction\n pendingEvents.append(new PendingEvent({data: {\n roomId,\n queueIndex: 1,\n eventType: \"m.reaction\",\n txnId: \"t123\",\n content: messageEntry.annotate(\"👋\"),\n relatedEventId: messageEntry.id\n }}));\n await poll(() => timeline.entries.length === 1);\n // 3. add remote reaction target\n timeline.addEntries([messageEntry]);\n await poll(() => timeline.entries.length === 2);\n const entry = getIndexFromIterable(timeline.entries, 0);\n assert.equal(entry, messageEntry);\n assert.equal(entry.pendingAnnotations.get(\"👋\").count, 1);\n },\n \"local reaction removal gets applied after remote echo is added to timeline with reaction not loaded\": async assert => {\n const messageId = \"!abc\";\n const reactionId = \"!def\";\n // 1. put reaction in storage\n const storage = await createMockStorage();\n const txn = await storage.readWriteTxn([storage.storeNames.timelineEvents, storage.storeNames.timelineRelations]);\n txn.timelineEvents.tryInsert({\n event: withContent(createAnnotation(messageId, \"👋\"), createEvent(\"m.reaction\", reactionId, bob)),\n fragmentId: 1, eventIndex: 3, roomId\n }, new NullLogItem());\n await txn.complete();\n // 2. setup timeline\n const pendingEvents = new ObservableArray();\n const timeline = new Timeline({roomId, storage, closeCallback: () => {},\n fragmentIdComparer, pendingEvents, clock: new MockClock()});\n await timeline.load(new User(bob), \"join\", new NullLogItem());\n timeline.entries.subscribe(new ListObserver());\n // 3. add local redaction for reaction\n pendingEvents.append(new PendingEvent({data: {\n roomId,\n queueIndex: 1,\n eventType: \"m.room.redaction\",\n txnId: \"t123\",\n content: {},\n relatedEventId: reactionId\n }}));\n await poll(() => timeline.entries.length === 1);\n // 4. add reaction target\n timeline.addEntries([new EventEntry({\n event: withTextBody(\"hi bob!\", createEvent(\"m.room.message\", messageId, alice)),\n fragmentId: 1, eventIndex: 2}, fragmentIdComparer)\n ]);\n await poll(() => timeline.entries.length === 2);\n // 5. check that redaction was linked to reaction target\n const entry = getIndexFromIterable(timeline.entries, 0);\n assert.equal(entry.pendingAnnotations.get(\"👋\").count, -1);\n },\n \"decrypted entry preserves content when receiving other update without decryption\": async assert => {\n // 1. create encrypted and decrypted entry\n const encryptedEntry = new EventEntry({\n event: withContent({ciphertext: \"abc\"}, createEvent(\"m.room.encrypted\", \"!abc\", alice)),\n fragmentId: 1, eventIndex: 1, roomId\n }, fragmentIdComparer);\n const decryptedEntry = encryptedEntry.clone();\n decryptedEntry.setDecryptionResult({\n event: withTextBody(\"hi bob!\", createEvent(\"m.room.message\", encryptedEntry.id, encryptedEntry.sender))\n });\n // 2. setup the timeline\n const timeline = new Timeline({roomId, storage: await createMockStorage(), closeCallback: () => {},\n fragmentIdComparer, pendingEvents: new ObservableArray(), clock: new MockClock()});\n await timeline.load(new User(alice), \"join\", new NullLogItem());\n timeline.addEntries([decryptedEntry]);\n const observer = new ListObserver();\n timeline.entries.subscribe(observer);\n // 3. replace the entry with one that is not decrypted\n // (as would happen when receiving a reaction,\n // as it does not rerun the decryption)\n // and check that the decrypted content is preserved\n timeline.replaceEntries([encryptedEntry]);\n const {value, type} = await observer.next();\n assert.equal(type, \"update\");\n assert.equal(value.eventType, \"m.room.message\");\n assert.equal(value.content.body, \"hi bob!\");\n },\n\n \"context entry is fetched from remoteEntries\": async assert => {\n const timeline = new Timeline({roomId, storage: await createMockStorage(), closeCallback: () => {},\n fragmentIdComparer, pendingEvents: new ObservableArray(), clock: new MockClock()});\n const entryA = new EventEntry({ event: withTextBody(\"foo\", createEvent(\"m.room.message\", \"event_id_1\", alice)) });\n const entryB = new EventEntry({ event: withReply(\"event_id_1\", createEvent(\"m.room.message\", \"event_id_2\", bob)), eventIndex: 2 });\n await timeline.load(new User(alice), \"join\", new NullLogItem());\n timeline.entries.subscribe({\n onAdd() {},\n });\n timeline.addEntries([entryA, entryB]);\n assert.deepEqual(entryB.contextEntry, entryA);\n },\n\n \"context entry is fetched from storage\": async assert => {\n const storage = await createMockStorage();\n const txn = await storage.readWriteTxn([storage.storeNames.timelineEvents, storage.storeNames.timelineRelations]);\n txn.timelineEvents.tryInsert({ event: withTextBody(\"foo\", createEvent(\"m.room.message\", \"event_id_1\", alice)), fragmentId: 1, eventIndex: 1, roomId });\n await txn.complete();\n const timeline = new Timeline({roomId, storage, closeCallback: () => {},\n fragmentIdComparer, pendingEvents: new ObservableArray(), clock: new MockClock()});\n const entryB = new EventEntry({ event: withReply(\"event_id_1\", createEvent(\"m.room.message\", \"event_id_2\", bob)), eventIndex: 2 });\n await timeline.load(new User(alice), \"join\", new NullLogItem());\n timeline.entries.subscribe({ onAdd: () => null, onUpdate: () => null });\n timeline.addEntries([entryB]);\n await poll(() => entryB.contextEntry);\n assert.strictEqual(entryB.contextEntry.id, \"event_id_1\");\n },\n\n \"context entry is fetched from hs\": async assert => {\n const timeline = new Timeline({roomId, storage: await createMockStorage(), closeCallback: () => {},\n fragmentIdComparer, pendingEvents: new ObservableArray(), clock: new MockClock(), hsApi});\n const entryB = new EventEntry({ event: withReply(\"event_id_1\", createEvent(\"m.room.message\", \"event_id_2\", bob)), eventIndex: 2 });\n await timeline.load(new User(alice), \"join\", new NullLogItem());\n timeline.entries.subscribe({ onAdd: () => null, onUpdate: () => null });\n timeline.addEntries([entryB]);\n await poll(() => entryB.contextEntry);\n assert.strictEqual(entryB.contextEntry.id, \"event_id_1\");\n },\n\n \"context entry has a list of entries to which it forms the context\": async assert => {\n const timeline = new Timeline({roomId, storage: await createMockStorage(), closeCallback: () => {},\n fragmentIdComparer, pendingEvents: new ObservableArray(), clock: new MockClock()});\n const entryA = new EventEntry({ event: withTextBody(\"foo\", createEvent(\"m.room.message\", \"event_id_1\", alice)), eventIndex: 1 });\n const entryB = new EventEntry({ event: withReply(\"event_id_1\", createEvent(\"m.room.message\", \"event_id_2\", bob)), eventIndex: 2 });\n const entryC = new EventEntry({ event: withReply(\"event_id_1\", createEvent(\"m.room.message\", \"event_id_3\", bob)), eventIndex: 3 });\n await timeline.load(new User(alice), \"join\", new NullLogItem());\n timeline.entries.subscribe({ onAdd: () => null, onUpdate: () => null });\n timeline.addEntries([entryA, entryB, entryC]);\n await poll(() => entryA.contextForEntries.length === 2);\n assert.deepEqual(entryA.contextForEntries, [entryB, entryC]);\n },\n\n \"context entry in contextEntryNotInTimeline gets updated based on incoming redaction\": async assert => {\n const timeline = new Timeline({roomId, storage: await createMockStorage(), closeCallback: () => {},\n fragmentIdComparer, pendingEvents: new ObservableArray(), clock: new MockClock(), hsApi});\n const entryB = new EventEntry({ event: withReply(\"event_id_1\", createEvent(\"m.room.message\", \"event_id_2\", bob)), eventIndex: 2 });\n await timeline.load(new User(alice), \"join\", new NullLogItem());\n timeline.entries.subscribe({ onAdd: () => null, onUpdate: () => null });\n timeline.addEntries([entryB]);\n await poll(() => entryB.contextEntry);\n const redactingEntry = new EventEntry({ event: withRedacts(\"event_id_1\", \"foo\", createEvent(\"m.room.redaction\", \"event_id_3\", alice)), eventIndex: 3 });\n timeline.addEntries([redactingEntry]);\n assert.strictEqual(entryB.contextEntry.isRedacted, true);\n },\n\n \"redaction of context entry triggers updates in other entries\": async assert => {\n const timeline = new Timeline({roomId, storage: await createMockStorage(), closeCallback: () => {},\n fragmentIdComparer, pendingEvents: new ObservableArray(), clock: new MockClock(), hsApi});\n const entryA = new EventEntry({ event: withTextBody(\"foo\", createEvent(\"m.room.message\", \"event_id_1\", alice)), eventIndex: 1, fragmentId: 1 });\n const entryB = new EventEntry({ event: withReply(\"event_id_1\", createEvent(\"m.room.message\", \"event_id_2\", bob)), eventIndex: 2, fragmentId: 1 });\n const entryC = new EventEntry({ event: withReply(\"event_id_1\", createEvent(\"m.room.message\", \"event_id_3\", bob)), eventIndex: 3, fragmentId: 1 });\n await timeline.load(new User(alice), \"join\", new NullLogItem());\n const bin = [];\n timeline.entries.subscribe({\n onUpdate: (index, e) => {\n bin.push(e.id);\n },\n onAdd: () => null,\n });\n timeline.addEntries([entryA, entryB, entryC]);\n const eventAClone = JSON.parse(JSON.stringify(entryA.event));\n redactEvent(withRedacts(\"event_id_1\", \"foo\", createEvent(\"m.room.redaction\", \"event_id_4\", alice)), eventAClone);\n const redactedEntry = new EventEntry({ event: eventAClone, eventIndex: 1, fragmentId: 1 });\n timeline.replaceEntries([redactedEntry]);\n assert.strictEqual(bin.includes(\"event_id_2\"), true);\n assert.strictEqual(bin.includes(\"event_id_3\"), true);\n },\n\n \"context entries fetched from storage/hs are moved to remoteEntries\": async assert => {\n const timeline = new Timeline({roomId, storage: await createMockStorage(), closeCallback: () => {},\n fragmentIdComparer, pendingEvents: new ObservableArray(), clock: new MockClock(), hsApi});\n const entryA = new EventEntry({ event: withTextBody(\"foo\", createEvent(\"m.room.message\", \"event_id_1\", alice)), eventIndex: 1 });\n const entryB = new EventEntry({ event: withReply(\"event_id_1\", createEvent(\"m.room.message\", \"event_id_2\", bob)), eventIndex: 2 });\n await timeline.load(new User(alice), \"join\", new NullLogItem());\n timeline.entries.subscribe({ onAdd: () => null, onUpdate: () => null });\n timeline.addEntries([entryB]);\n await poll(() => entryB.contextEntry);\n assert.strictEqual(timeline._contextEntriesNotInTimeline.has(entryA.id), true);\n timeline.addEntries([entryA]);\n assert.strictEqual(timeline._contextEntriesNotInTimeline.has(entryA.id), false);\n const movedEntry = timeline.remoteEntries[0];\n assert.deepEqual(movedEntry, entryA);\n assert.deepEqual(movedEntry.contextForEntries[0], entryB);\n assert.deepEqual(entryB.contextEntry, movedEntry);\n }\n };\n}\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {RoomMember} from \"./RoomMember.js\";\n\nasync function loadMembers({roomId, storage, txn}) {\n if (!txn) {\n txn = await storage.readTxn([\n storage.storeNames.roomMembers,\n ]);\n }\n const memberDatas = await txn.roomMembers.getAll(roomId);\n return memberDatas.map(d => new RoomMember(d));\n}\n\nasync function fetchMembers({summary, syncToken, roomId, hsApi, storage, setChangedMembersMap}, log) {\n // if any members are changed by sync while we're fetching members,\n // they will end up here, so we check not to override them\n const changedMembersDuringSync = new Map();\n setChangedMembersMap(changedMembersDuringSync);\n \n const memberResponse = await hsApi.members(roomId, {at: syncToken}, {log}).response();\n\n const txn = await storage.readWriteTxn([\n storage.storeNames.roomSummary,\n storage.storeNames.roomMembers,\n ]);\n\n let summaryChanges;\n let members;\n \n try {\n summaryChanges = summary.writeHasFetchedMembers(true, txn);\n const {roomMembers} = txn;\n const memberEvents = memberResponse.chunk;\n if (!Array.isArray(memberEvents)) {\n throw new Error(\"malformed\");\n }\n log.set(\"members\", memberEvents.length);\n members = await Promise.all(memberEvents.map(async memberEvent => {\n const userId = memberEvent?.state_key;\n if (!userId) {\n throw new Error(\"malformed\");\n }\n // this member was changed during a sync that happened while calling /members\n // and thus is more recent, so don't overwrite\n const changedMember = changedMembersDuringSync.get(userId);\n if (changedMember) {\n return changedMember;\n } else {\n const member = RoomMember.fromMemberEvent(roomId, memberEvent);\n if (member) {\n roomMembers.set(member.serialize());\n }\n return member;\n }\n }));\n } catch (err) {\n // abort txn on any error\n txn.abort();\n throw err;\n } finally {\n // important this gets cleared\n // or otherwise Room remains in \"fetching-members\" mode\n setChangedMembersMap(null);\n }\n await txn.complete();\n summary.applyChanges(summaryChanges);\n return members;\n}\n\nexport async function fetchOrLoadMembers(options, logger) {\n const {summary} = options;\n if (!summary.data.hasFetchedMembers) {\n // we only want to log if we fetch members, so start or continue the optional log operation here\n return logger.wrapOrRun(options.log, \"fetchMembers\", log => fetchMembers(options, log));\n } else {\n return loadMembers(options);\n }\n}\n\nexport async function fetchOrLoadMember(options, logger) {\n const member = await loadMember(options);\n const {summary} = options;\n if (!summary.data.hasFetchedMembers && !member) {\n // We haven't fetched the memberlist yet; so ping the hs to see if this member does exist\n return logger.wrapOrRun(options.log, \"fetchMember\", log => fetchMember(options, log));\n }\n return member;\n}\n\nasync function loadMember({roomId, userId, storage}) {\n const txn = await storage.readTxn([storage.storeNames.roomMembers,]);\n const member = await txn.roomMembers.get(roomId, userId);\n return member? new RoomMember(member) : null;\n}\n\nasync function fetchMember({roomId, userId, hsApi, storage}, log) {\n let memberData;\n try {\n memberData = await hsApi.state(roomId, \"m.room.member\", userId, { log }).response();\n }\n catch (error) {\n if (error.name === \"HomeServerError\" && error.errcode === \"M_NOT_FOUND\") {\n return null;\n }\n throw error;\n }\n const member = new RoomMember({\n roomId,\n userId,\n membership: memberData.membership,\n avatarUrl: memberData.avatar_url,\n displayName: memberData.displayname,\n });\n const txn = await storage.readWriteTxn([storage.storeNames.roomMembers]);\n try {\n txn.roomMembers.set(member.serialize());\n }\n catch(e) {\n txn.abort();\n throw e;\n }\n await txn.complete();\n return member;\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {ObservableMap} from \"../../../observable\";\nimport {RetainedValue} from \"../../../utils/RetainedValue\";\n\nexport class MemberList extends RetainedValue {\n constructor({members, closeCallback}) {\n super(closeCallback);\n this._members = new ObservableMap();\n for (const member of members) {\n this._members.add(member.userId, member);\n }\n }\n\n afterSync(memberChanges) {\n for (const [userId, memberChange] of memberChanges.entries()) {\n this._members.set(userId, memberChange.member);\n }\n }\n\n get members() {\n return this._members;\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {RoomMember} from \"./RoomMember.js\";\n\nexport function calculateRoomName(sortedMembers, summaryData, log) {\n const countWithoutMe = summaryData.joinCount + summaryData.inviteCount - 1;\n if (sortedMembers.length >= countWithoutMe) {\n if (sortedMembers.length > 1) {\n const lastMember = sortedMembers[sortedMembers.length - 1];\n const firstMembers = sortedMembers.slice(0, sortedMembers.length - 1);\n return firstMembers.map(m => m.name).join(\", \") + \" and \" + lastMember.name;\n } else {\n const otherMember = sortedMembers[0];\n if (otherMember) {\n return otherMember.name;\n } else {\n log.log({l: \"could get get other member name\", length: sortedMembers.length, otherMember: !!otherMember, otherMemberMembership: otherMember?.membership});\n return \"Unknown DM Name\";\n }\n }\n } else if (sortedMembers.length < countWithoutMe) {\n return sortedMembers.map(m => m.name).join(\", \") + ` and ${countWithoutMe} others`;\n } else {\n // Empty Room\n return null;\n }\n}\n\nexport class Heroes {\n constructor(roomId) {\n this._roomId = roomId;\n this._members = new Map();\n }\n\n /**\n * @param {string[]} newHeroes array of user ids\n * @param {Map} memberChanges map of changed memberships\n * @param {Transaction} txn\n * @return {Promise}\n */\n async calculateChanges(newHeroes, memberChanges, txn) {\n const updatedHeroMembers = new Map();\n const removedUserIds = [];\n // remove non-present members\n for (const existingUserId of this._members.keys()) {\n if (newHeroes.indexOf(existingUserId) === -1) {\n removedUserIds.push(existingUserId);\n }\n }\n // update heroes with synced member changes\n for (const [userId, memberChange] of memberChanges.entries()) {\n if (this._members.has(userId) || newHeroes.indexOf(userId) !== -1) {\n updatedHeroMembers.set(userId, memberChange.member);\n }\n }\n // load member for new heroes from storage\n for (const userId of newHeroes) {\n if (!this._members.has(userId) && !updatedHeroMembers.has(userId)) {\n const memberData = await txn.roomMembers.get(this._roomId, userId);\n if (memberData) {\n const member = new RoomMember(memberData);\n updatedHeroMembers.set(member.userId, member);\n }\n }\n }\n return {updatedHeroMembers: updatedHeroMembers.values(), removedUserIds};\n }\n\n applyChanges({updatedHeroMembers, removedUserIds}, summaryData, log) {\n for (const userId of removedUserIds) {\n this._members.delete(userId);\n }\n for (const member of updatedHeroMembers) {\n if (!removedUserIds.includes(member.userId)) {\n this._members.set(member.userId, member);\n }\n }\n const sortedMembers = Array.from(this._members.values()).sort((a, b) => a.name.localeCompare(b.name));\n this._roomName = calculateRoomName(sortedMembers, summaryData, log);\n }\n\n get roomName() {\n return this._roomName;\n }\n\n get roomAvatarUrl() {\n if (this._members.size === 1) {\n for (const member of this._members.values()) {\n return member.avatarUrl;\n }\n }\n return null;\n }\n\n /**\n * In DM rooms, we want the room's color to be\n * the same as the other user's color. Thus, if the room\n * only has one hero, we use their ID, instead\n * of the room's, to get the avatar color.\n *\n * @returns {?string} the ID of the single hero.\n */\n get roomAvatarColorId() {\n if (this._members.size === 1) {\n for (const member of this._members.keys()) {\n return member\n }\n }\n return null;\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {BaseObservableValue} from \"../../observable/value\";\n\nexport class ObservedEventMap {\n constructor(notifyEmpty) {\n this._map = new Map();\n this._notifyEmpty = notifyEmpty;\n }\n\n observe(eventId, eventEntry = null) {\n let observable = this._map.get(eventId);\n if (!observable) {\n observable = new ObservedEvent(this, eventEntry, eventId);\n this._map.set(eventId, observable);\n }\n return observable;\n }\n\n updateEvents(eventEntries) {\n for (let i = 0; i < eventEntries.length; i += 1) {\n const entry = eventEntries[i];\n const observable = this._map.get(entry.id);\n observable?.update(entry);\n }\n }\n\n _remove(id) {\n this._map.delete(id);\n if (this._map.size === 0) {\n this._notifyEmpty();\n }\n }\n}\n\nclass ObservedEvent extends BaseObservableValue {\n constructor(eventMap, entry, id) {\n super();\n this._eventMap = eventMap;\n this._entry = entry;\n this._id = id;\n // remove subscription in microtask after creating it\n // otherwise ObservedEvents would easily never get\n // removed if you never subscribe\n Promise.resolve().then(() => {\n if (!this.hasSubscriptions) {\n this._eventMap._remove(this._id);\n this._eventMap = null;\n }\n });\n }\n\n subscribe(handler) {\n if (!this._eventMap) {\n throw new Error(\"ObservedEvent expired, subscribe right after calling room.observeEvent()\");\n }\n return super.subscribe(handler);\n }\n\n onUnsubscribeLast() {\n this._eventMap._remove(this._id);\n this._eventMap = null;\n super.onUnsubscribeLast();\n }\n\n update(entry) {\n // entries are mostly updated in-place,\n // apart from when they are created,\n // but doesn't hurt to reassign\n this._entry = entry;\n this.emit(this._entry);\n }\n\n get() {\n return this._entry;\n }\n}\n","// these are helper functions if you can't assume you always have a log item (e.g. some code paths call with one set, others don't)\n// if you know you always have a log item, better to use the methods on the log item than these utility functions.\n\nimport {Instance as NullLoggerInstance} from \"./NullLogger\";\nimport type {FilterCreator, ILogItem, LabelOrValues, LogCallback} from \"./types\";\nimport {LogLevel} from \"./LogFilter\";\n\nexport function wrapOrRunNullLogger(logItem: ILogItem | undefined, labelOrValues: LabelOrValues, callback: LogCallback, logLevel?: LogLevel, filterCreator?: FilterCreator): T | Promise {\n if (logItem) {\n return logItem.wrap(labelOrValues, callback, logLevel, filterCreator);\n } else {\n return NullLoggerInstance.run(null, callback);\n }\n}\n\nexport function ensureLogItem(logItem: ILogItem): ILogItem {\n return logItem || NullLoggerInstance.item;\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexport const EVENT_TYPE = \"m.room.power_levels\";\n\n// See https://spec.matrix.org/latest/client-server-api/#mroompower_levels\nconst STATE_DEFAULT_POWER_LEVEL = 50;\n\nexport class PowerLevels {\n constructor({powerLevelEvent, createEvent, ownUserId, membership}) {\n this._plEvent = powerLevelEvent;\n this._createEvent = createEvent;\n this._ownUserId = ownUserId;\n this._membership = membership;\n }\n\n canRedactFromSender(userId) {\n if (userId === this._ownUserId && this._membership === \"join\") {\n return true;\n } else {\n return this.canRedact;\n }\n }\n\n canSendType(eventType) {\n return this._myLevel >= this._getEventTypeLevel(eventType);\n }\n\n get canRedact() {\n return this._myLevel >= this._getActionLevel(\"redact\");\n }\n\n get _myLevel() {\n if (this._membership !== \"join\") {\n return Number.MIN_SAFE_INTEGER;\n }\n return this.getUserLevel(this._ownUserId);\n }\n\n getUserLevel(userId) {\n if (this._plEvent) {\n let userLevel = this._plEvent.content?.users?.[userId];\n if (typeof userLevel !== \"number\") {\n userLevel = this._plEvent.content?.users_default;\n }\n if (typeof userLevel === \"number\") {\n return userLevel;\n }\n } else if (this._createEvent) {\n if (userId === this._createEvent.content?.creator) {\n return 100;\n }\n }\n return 0;\n }\n\n /** @param {string} action either \"invite\", \"kick\", \"ban\" or \"redact\". */\n _getActionLevel(action) {\n const level = this._plEvent?.content?.[action];\n if (typeof level === \"number\") {\n return level;\n } else {\n return STATE_DEFAULT_POWER_LEVEL;\n }\n }\n\n _getEventTypeLevel(eventType) {\n const level = this._plEvent?.content?.events?.[eventType];\n if (typeof level === \"number\") {\n return level;\n } else {\n const level = this._plEvent?.content?.events_default;\n if (typeof level === \"number\") {\n return level;\n } else {\n return 0;\n }\n }\n }\n}\n\nexport function tests() {\n const alice = \"@alice:hs.tld\";\n const bob = \"@bob:hs.tld\";\n const charly = \"@charly:hs.tld\";\n const createEvent = {content: {creator: alice}};\n const redactPowerLevelEvent = {content: {\n redact: 50,\n users: {\n [alice]: 50\n },\n users_default: 0\n }};\n const eventsPowerLevelEvent = {content: {\n events_default: 5,\n events: {\n \"m.room.message\": 45,\n \"m.room.topic\": 50,\n },\n users: {\n [alice]: 50,\n [bob]: 10\n },\n users_default: 0\n }};\n\n return {\n \"redact somebody else event with power level event\": assert => {\n const pl1 = new PowerLevels({powerLevelEvent: redactPowerLevelEvent, ownUserId: alice, membership: \"join\"});\n assert.equal(pl1.canRedact, true);\n const pl2 = new PowerLevels({powerLevelEvent: redactPowerLevelEvent, ownUserId: bob, membership: \"join\"});\n assert.equal(pl2.canRedact, false);\n },\n \"redact somebody else event with create event\": assert => {\n const pl1 = new PowerLevels({createEvent, ownUserId: alice, membership: \"join\"});\n assert.equal(pl1.canRedact, true);\n const pl2 = new PowerLevels({createEvent, ownUserId: bob, membership: \"join\"});\n assert.equal(pl2.canRedact, false);\n },\n \"redact own event\": assert => {\n const pl = new PowerLevels({ownUserId: alice, membership: \"join\"});\n assert.equal(pl.canRedactFromSender(alice), true);\n assert.equal(pl.canRedactFromSender(bob), false);\n },\n \"can send event without power levels\": assert => {\n const pl = new PowerLevels({createEvent, ownUserId: charly, membership: \"join\"});\n assert.equal(pl.canSendType(\"m.room.message\"), true);\n },\n \"can't send any event below events_default\": assert => {\n const pl = new PowerLevels({powerLevelEvent: eventsPowerLevelEvent, ownUserId: charly, membership: \"join\"});\n assert.equal(pl.canSendType(\"m.foo\"), false);\n },\n \"can't send event below events[type]\": assert => {\n const pl = new PowerLevels({powerLevelEvent: eventsPowerLevelEvent, ownUserId: bob, membership: \"join\"});\n assert.equal(pl.canSendType(\"m.foo\"), true);\n assert.equal(pl.canSendType(\"m.room.message\"), false);\n },\n \"can send event above or at events[type]\": assert => {\n const pl = new PowerLevels({powerLevelEvent: eventsPowerLevelEvent, ownUserId: alice, membership: \"join\"});\n assert.equal(pl.canSendType(\"m.room.message\"), true);\n assert.equal(pl.canSendType(\"m.room.topic\"), true);\n },\n \"can't redact or send in non-joined room'\": assert => {\n const pl = new PowerLevels({createEvent, ownUserId: alice, membership: \"leave\"});\n assert.equal(pl.canRedact, false);\n assert.equal(pl.canRedactFromSender(alice), false);\n assert.equal(pl.canSendType(\"m.room.message\"), false);\n },\n }\n}\n","/*\nCopyright 2022 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport type {StateObserver} from \"./types\";\nimport type {StateEvent} from \"../../storage/types\";\nimport type {Transaction} from \"../../storage/idb/Transaction\";\nimport {ObservableMap} from \"../../../observable/map\";\n\n/**\n * Observable map for a given type with state keys as map keys.\n * Unsubscribes when last subscription is removed */\nexport class ObservedStateTypeMap extends ObservableMap implements StateObserver {\n private removeCallback?: () => void;\n \n constructor(private readonly type: string) {\n super();\n }\n /** @internal */\n async load(roomId: string, txn: Transaction): Promise {\n const events = await txn.roomState.getAllForType(roomId, this.type);\n for (let i = 0; i < events.length; ++i) {\n const {event} = events[i];\n this.add(event.state_key, event);\n }\n }\n /** @internal */\n handleStateEvent(event: StateEvent) {\n if (event.type === this.type) {\n this.set(event.state_key, event);\n }\n }\n\n setRemoveCallback(callback: () => void) {\n this.removeCallback = callback;\n }\n\n onUnsubscribeLast() {\n this.removeCallback?.();\n }\n}\n","/*\nCopyright 2022 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport type {StateObserver} from \"./types\";\nimport type {StateEvent} from \"../../storage/types\";\nimport type {Transaction} from \"../../storage/idb/Transaction\";\nimport {BaseObservableValue} from \"../../../observable/value\";\n\n/**\n * Observable value for a state event with a given type and state key.\n * Unsubscribes when last subscription is removed */\nexport class ObservedStateKeyValue extends BaseObservableValue implements StateObserver {\n private event?: StateEvent;\n private removeCallback?: () => void;\n\n constructor(private readonly type: string, private readonly stateKey: string) {\n super();\n }\n /** @internal */\n async load(roomId: string, txn: Transaction): Promise {\n this.event = (await txn.roomState.get(roomId, this.type, this.stateKey))?.event;\n }\n /** @internal */\n handleStateEvent(event: StateEvent) {\n if (event.type === this.type && event.state_key === this.stateKey) {\n this.event = event;\n this.emit(this.get());\n }\n }\n\n get(): StateEvent | undefined {\n return this.event;\n }\n\n setRemoveCallback(callback: () => void) {\n this.removeCallback = callback;\n }\n\n onUnsubscribeLast() {\n this.removeCallback?.();\n }\n}\n\nimport {createMockStorage} from \"../../../mocks/Storage\";\n\nexport async function tests() {\n return {\n \"test load and update\": async assert => {\n const storage = await createMockStorage();\n const writeTxn = await storage.readWriteTxn([storage.storeNames.roomState]);\n writeTxn.roomState.set(\"!abc\", {\n event_id: \"$abc\",\n type: \"m.room.member\",\n state_key: \"@alice\",\n sender: \"@alice\",\n origin_server_ts: 5,\n content: {}\n });\n await writeTxn.complete();\n const txn = await storage.readTxn([storage.storeNames.roomState]);\n const value = new ObservedStateKeyValue(\"m.room.member\", \"@alice\");\n await value.load(\"!abc\", txn);\n const updates: Array = [];\n assert.strictEqual(value.get()?.origin_server_ts, 5);\n const unsubscribe = value.subscribe(value => updates.push(value));\n value.handleStateEvent({\n event_id: \"$abc\",\n type: \"m.room.member\",\n state_key: \"@bob\",\n sender: \"@alice\",\n origin_server_ts: 10,\n content: {}\n });\n assert.strictEqual(updates.length, 0);\n value.handleStateEvent({\n event_id: \"$abc\",\n type: \"m.room.member\",\n state_key: \"@alice\",\n sender: \"@alice\",\n origin_server_ts: 10,\n content: {}\n });\n assert.strictEqual(updates.length, 1);\n assert.strictEqual(updates[0]?.origin_server_ts, 10);\n let removed = false;\n value.setRemoveCallback(() => removed = true);\n unsubscribe();\n assert(removed);\n }\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {EventEmitter} from \"../../utils/EventEmitter\";\nimport {RoomSummary} from \"./RoomSummary.js\";\nimport {GapWriter} from \"./timeline/persistence/GapWriter.js\";\nimport {RelationWriter} from \"./timeline/persistence/RelationWriter.js\";\nimport {Timeline} from \"./timeline/Timeline.js\";\nimport {FragmentIdComparer} from \"./timeline/FragmentIdComparer.js\";\nimport {WrappedError} from \"../error.js\"\nimport {fetchOrLoadMembers, fetchOrLoadMember} from \"./members/load.js\";\nimport {MemberList} from \"./members/MemberList.js\";\nimport {Heroes} from \"./members/Heroes.js\";\nimport {EventEntry} from \"./timeline/entries/EventEntry.js\";\nimport {ObservedEventMap} from \"./ObservedEventMap.js\";\nimport {DecryptionSource} from \"../e2ee/common\";\nimport {ensureLogItem} from \"../../logging/utils\";\nimport {PowerLevels} from \"./PowerLevels.js\";\nimport {RetainedObservableValue} from \"../../observable/value\";\nimport {TimelineReader} from \"./timeline/persistence/TimelineReader\";\nimport {ObservedStateTypeMap} from \"./state/ObservedStateTypeMap\";\nimport {ObservedStateKeyValue} from \"./state/ObservedStateKeyValue\";\n\nconst EVENT_ENCRYPTED_TYPE = \"m.room.encrypted\";\n\nexport class BaseRoom extends EventEmitter {\n constructor({roomId, storage, hsApi, mediaRepository, emitCollectionChange, user, createRoomEncryption, getSyncToken, platform}) {\n super();\n this._roomId = roomId;\n this._storage = storage;\n this._hsApi = hsApi;\n this._mediaRepository = mediaRepository;\n this._summary = new RoomSummary(roomId);\n this._fragmentIdComparer = new FragmentIdComparer([]);\n this._emitCollectionChange = emitCollectionChange;\n this._timeline = null;\n this._user = user;\n this._changedMembersDuringSync = null;\n this._memberList = null;\n this._createRoomEncryption = createRoomEncryption;\n this._roomEncryption = null;\n this._getSyncToken = getSyncToken;\n this._platform = platform;\n this._observedEvents = null;\n this._roomStateObservers = new Set();\n this._powerLevels = null;\n this._powerLevelLoading = null;\n this._observedMembers = null;\n this._timelineLoadPromise = null;\n }\n\n async observeStateType(type, txn = undefined) {\n const map = new ObservedStateTypeMap(type);\n await this._addStateObserver(map, txn);\n return map;\n }\n\n async observeStateTypeAndKey(type, stateKey, txn = undefined) {\n const value = new ObservedStateKeyValue(type, stateKey);\n await this._addStateObserver(value, txn);\n return value;\n }\n\n async _addStateObserver(stateObserver, txn) {\n if (!txn) {\n txn = await this._storage.readTxn([this._storage.storeNames.roomState]);\n }\n await stateObserver.load(this.id, txn);\n this._roomStateObservers.add(stateObserver);\n stateObserver.setRemoveCallback(() => {\n this._roomStateObservers.delete(stateObserver);\n });\n }\n\n async _eventIdsToEntries(eventIds, txn) {\n const retryEntries = [];\n await Promise.all(eventIds.map(async eventId => {\n const storageEntry = await txn.timelineEvents.getByEventId(this._roomId, eventId);\n if (storageEntry) {\n retryEntries.push(new EventEntry(storageEntry, this._fragmentIdComparer));\n }\n }));\n return retryEntries;\n }\n\n _getAdditionalTimelineRetryEntries(otherRetryEntries, roomKeys) {\n let retryTimelineEntries = this._roomEncryption.filterUndecryptedEventEntriesForKeys(this._timeline.remoteEntries, roomKeys);\n // filter out any entries already in retryEntries so we don't decrypt them twice\n const existingIds = otherRetryEntries.reduce((ids, e) => {ids.add(e.id); return ids;}, new Set());\n retryTimelineEntries = retryTimelineEntries.filter(e => !existingIds.has(e.id));\n return retryTimelineEntries;\n }\n\n /**\n * Used for retrying decryption from other sources than sync, like key backup.\n * @internal\n * @param {RoomKey} roomKey\n * @param {Array} eventIds any event ids that should be retried. There might be more in the timeline though for this key.\n * @return {Promise}\n */\n async notifyRoomKey(roomKey, eventIds, log) {\n if (!this._roomEncryption) {\n return;\n }\n const txn = await this._storage.readTxn([\n this._storage.storeNames.timelineEvents,\n this._storage.storeNames.inboundGroupSessions,\n ]);\n let retryEntries = await this._eventIdsToEntries(eventIds, txn);\n if (this._timeline) {\n const retryTimelineEntries = this._getAdditionalTimelineRetryEntries(retryEntries, [roomKey]);\n retryEntries = retryEntries.concat(retryTimelineEntries);\n }\n if (retryEntries.length) {\n const decryptRequest = this._decryptEntries(DecryptionSource.Retry, retryEntries, txn, log);\n // this will close txn while awaiting decryption\n await decryptRequest.complete();\n\n this._timeline?.replaceEntries(retryEntries);\n // we would ideally write the room summary in the same txn as the groupSessionDecryptions in the\n // _decryptEntries entries and could even know which events have been decrypted for the first\n // time from DecryptionChanges.write and only pass those to the summary. As timeline changes\n // are not essential to the room summary, it's fine to write this in a separate txn for now.\n const changes = this._summary.data.applyTimelineEntries(retryEntries, false, false);\n if (await this._summary.writeAndApplyData(changes, this._storage)) {\n this._emitUpdate();\n }\n }\n }\n\n _setEncryption(roomEncryption) {\n if (roomEncryption && !this._roomEncryption) {\n this._roomEncryption = roomEncryption;\n if (this._timeline) {\n this._timeline.enableEncryption(this._decryptEntries.bind(this, DecryptionSource.Timeline));\n }\n return true;\n }\n return false;\n }\n\n /**\n * Used for decrypting when loading/filling the timeline, and retrying decryption,\n * not during sync, where it is split up during the multiple phases.\n */\n _decryptEntries(source, entries, inboundSessionTxn, log = null) {\n const request = new DecryptionRequest(async (r, log) => {\n if (!inboundSessionTxn) {\n inboundSessionTxn = await this._storage.readTxn([this._storage.storeNames.inboundGroupSessions]);\n }\n if (r.cancelled) return;\n const events = entries.filter(entry => {\n return entry.eventType === EVENT_ENCRYPTED_TYPE;\n }).map(entry => entry.event);\n r.preparation = await this._roomEncryption.prepareDecryptAll(events, null, source, inboundSessionTxn);\n if (r.cancelled) return;\n const changes = await r.preparation.decrypt();\n r.preparation = null;\n if (r.cancelled) return;\n const stores = [this._storage.storeNames.groupSessionDecryptions];\n const isTimelineOpen = this._isTimelineOpen;\n if (isTimelineOpen) {\n // read to fetch devices if timeline is open\n stores.push(this._storage.storeNames.deviceKeys);\n }\n const writeTxn = await this._storage.readWriteTxn(stores);\n let decryption;\n try {\n decryption = await changes.write(writeTxn, log);\n if (isTimelineOpen) {\n await decryption.verifyKnownSenders(writeTxn);\n }\n } catch (err) {\n writeTxn.abort();\n throw err;\n }\n await writeTxn.complete();\n // TODO: log decryption errors here\n decryption.applyToEntries(entries);\n if (this._observedEvents) {\n this._observedEvents.updateEvents(entries);\n }\n if (isTimelineOpen && decryption.hasUnverifiedSenders) {\n // verify missing senders async and update timeline once done so we don't delay rendering with network requests\n log.wrapDetached(\"fetch unknown senders keys\", async log => {\n const newlyVerifiedDecryption = await decryption.fetchAndVerifyRemainingSenders(this._hsApi, log);\n const verifiedEntries = [];\n newlyVerifiedDecryption.applyToEntries(entries, entry => verifiedEntries.push(entry));\n this._timeline?.replaceEntries(verifiedEntries);\n this._observedEvents?.updateEvents(verifiedEntries);\n });\n }\n }, ensureLogItem(log));\n return request;\n }\n\n // TODO: move this to Room\n async _getSyncRetryDecryptEntries(newKeys, roomEncryption, txn) {\n const entriesPerKey = await Promise.all(newKeys.map(async key => {\n const retryEventIds = await roomEncryption.getEventIdsForMissingKey(key, txn);\n if (retryEventIds) {\n return this._eventIdsToEntries(retryEventIds, txn);\n }\n }));\n let retryEntries = entriesPerKey.reduce((allEntries, entries) => entries ? allEntries.concat(entries) : allEntries, []);\n // If we have the timeline open, see if there are more entries for the new keys\n // as we only store missing session information for synced events, not backfilled.\n // We want to decrypt all events we can though if the user is looking\n // at them when the timeline is open\n if (this._timeline) {\n const retryTimelineEntries = this._getAdditionalTimelineRetryEntries(retryEntries, newKeys);\n // make copies so we don't modify the original entry in writeSync, before the afterSync stage\n const retryTimelineEntriesCopies = retryTimelineEntries.map(e => e.clone());\n // add to other retry entries\n retryEntries = retryEntries.concat(retryTimelineEntriesCopies);\n }\n return retryEntries;\n }\n\n /** @package */\n async load(summary, txn, log) {\n log.set(\"id\", this.id);\n try {\n // if called from sync, there is no summary yet\n if (summary) {\n this._summary.load(summary);\n }\n if (this._summary.data.encryption) {\n const roomEncryption = this._createRoomEncryption(this, this._summary.data.encryption);\n this._setEncryption(roomEncryption);\n }\n // need to load members for name?\n if (this._summary.data.needsHeroes) {\n this._heroes = new Heroes(this._roomId);\n const changes = await this._heroes.calculateChanges(this._summary.data.heroes, [], txn);\n this._heroes.applyChanges(changes, this._summary.data, log);\n }\n } catch (err) {\n throw new WrappedError(`Could not load room ${this._roomId}`, err);\n }\n }\n\n async observeMember(userId) {\n if (!this._observedMembers) {\n this._observedMembers = new Map();\n }\n const mapMember = this._observedMembers.get(userId);\n if (mapMember) {\n // Hit, we're already observing this member\n return mapMember;\n }\n // Miss, load from storage/hs and set in map\n const member = await fetchOrLoadMember({\n summary: this._summary,\n roomId: this._roomId,\n userId,\n storage: this._storage,\n hsApi: this._hsApi\n }, this._platform.logger);\n if (!member) {\n return null;\n }\n const observableMember = new RetainedObservableValue(member, () => this._observedMembers.delete(userId));\n this._observedMembers.set(userId, observableMember);\n return observableMember;\n }\n\n\n /** @public */\n async loadMemberList(txn = undefined, log = null) {\n if (this._memberList) {\n // TODO: also await fetchOrLoadMembers promise here\n this._memberList.retain();\n return this._memberList;\n } else {\n const members = await fetchOrLoadMembers({\n summary: this._summary,\n roomId: this._roomId,\n hsApi: this._hsApi,\n storage: this._storage,\n // pass in a transaction if we know we won't need to fetch (which would abort the transaction)\n // and we want to make this operation part of the larger transaction\n txn,\n syncToken: this._getSyncToken(),\n // to handle race between /members and /sync\n setChangedMembersMap: map => this._changedMembersDuringSync = map,\n log,\n }, this._platform.logger);\n this._memberList = new MemberList({\n members,\n closeCallback: () => { this._memberList = null; }\n });\n return this._memberList;\n }\n } \n\n /** @public */\n fillGap(fragmentEntry, amount, log = null) {\n // TODO move some/all of this out of BaseRoom\n return this._platform.logger.wrapOrRun(log, \"fillGap\", async log => {\n log.set(\"id\", this.id);\n log.set(\"fragment\", fragmentEntry.fragmentId);\n log.set(\"dir\", fragmentEntry.direction.asApiString());\n if (fragmentEntry.edgeReached) {\n log.set(\"edgeReached\", true);\n return;\n }\n const response = await this._hsApi.messages(this._roomId, {\n from: fragmentEntry.token,\n dir: fragmentEntry.direction.asApiString(),\n limit: amount,\n filter: {\n lazy_load_members: true,\n include_redundant_members: true,\n }\n }, {log}).response();\n\n const txn = await this._storage.readWriteTxn([\n this._storage.storeNames.pendingEvents,\n this._storage.storeNames.timelineEvents,\n this._storage.storeNames.timelineRelations,\n this._storage.storeNames.timelineFragments,\n ]);\n let extraGapFillChanges;\n let gapResult;\n try {\n // detect remote echos of pending messages in the gap\n extraGapFillChanges = await this._writeGapFill(response.chunk, txn, log);\n // write new events into gap\n const relationWriter = new RelationWriter({\n roomId: this._roomId,\n fragmentIdComparer: this._fragmentIdComparer,\n ownUserId: this._user.id,\n });\n const gapWriter = new GapWriter({\n roomId: this._roomId,\n storage: this._storage,\n fragmentIdComparer: this._fragmentIdComparer,\n relationWriter\n });\n gapResult = await gapWriter.writeFragmentFill(fragmentEntry, response, fragmentEntry.token, txn, log);\n } catch (err) {\n txn.abort();\n throw err;\n }\n await txn.complete();\n if (this._roomEncryption) {\n const decryptRequest = this._decryptEntries(DecryptionSource.Timeline, gapResult.entries, null, log);\n await decryptRequest.complete();\n }\n // once txn is committed, update in-memory state & emit events\n for (const fragment of gapResult.fragments) {\n this._fragmentIdComparer.add(fragment);\n }\n if (extraGapFillChanges) {\n this._applyGapFill(extraGapFillChanges);\n }\n if (this._timeline) {\n // these should not be added if not already there\n this._timeline.replaceEntries(gapResult.updatedEntries);\n this._timeline.addEntries(gapResult.entries);\n }\n });\n }\n\n /**\n allow sub classes to integrate in the gap fill lifecycle.\n JoinedRoom uses this update remote echos.\n */\n // eslint-disable-next-line no-unused-vars\n async _writeGapFill(chunk, txn, log) {}\n _applyGapFill() {}\n\n /** @public */\n get name() {\n if (this._heroes) {\n return this._heroes.roomName;\n }\n const summaryData = this._summary.data;\n if (summaryData.name) {\n return summaryData.name;\n }\n if (summaryData.canonicalAlias) {\n return summaryData.canonicalAlias;\n }\n return null;\n }\n\n /** @public */\n get id() {\n return this._roomId;\n }\n\n get avatarUrl() {\n if (this._summary.data.avatarUrl) {\n return this._summary.data.avatarUrl;\n } else if (this._heroes) {\n return this._heroes.roomAvatarUrl;\n }\n return null;\n }\n\n /**\n * Retrieve the identifier that should be used to color\n * this room's avatar. By default this is the room's\n * ID, but DM rooms should be the same color as their\n * user's avatar.\n */\n get avatarColorId() {\n return this._roomId;\n }\n\n get lastMessageTimestamp() {\n return this._summary.data.lastMessageTimestamp;\n }\n\n get isLowPriority() {\n const tags = this._summary.data.tags;\n return !!(tags && tags['m.lowpriority']);\n }\n\n get isEncrypted() {\n return !!this._summary.data.encryption;\n }\n\n get isJoined() {\n return this.membership === \"join\";\n }\n\n get isLeft() {\n return this.membership === \"leave\";\n }\n\n get canonicalAlias() {\n return this._summary.data.canonicalAlias;\n }\n\n get joinedMemberCount() {\n return this._summary.data.joinCount;\n }\n\n get mediaRepository() {\n return this._mediaRepository;\n }\n\n get membership() {\n return this._summary.data.membership;\n }\n\n get user() {\n return this._user;\n }\n\n isDirectMessageForUserId(userId) {\n if (this._summary.data.dmUserId === userId) {\n return true;\n } else {\n // fall back to considering any room a DM containing heroes (e.g. no name) and 2 members,\n // on of which the userId we're looking for.\n // We need this because we're not yet processing m.direct account data correctly.\n const {heroes, joinCount, inviteCount} = this._summary.data;\n if (heroes && heroes.includes(userId) && (joinCount + inviteCount) === 2) {\n return true;\n }\n }\n return false;\n }\n\n async _loadPowerLevels() {\n const txn = await this._storage.readTxn([this._storage.storeNames.roomState]);\n const powerLevelsState = await txn.roomState.get(this._roomId, \"m.room.power_levels\", \"\");\n if (powerLevelsState) {\n return new PowerLevels({\n powerLevelEvent: powerLevelsState.event,\n ownUserId: this._user.id,\n membership: this.membership\n });\n }\n const createState = await txn.roomState.get(this._roomId, \"m.room.create\", \"\");\n if (createState) {\n return new PowerLevels({\n createEvent: createState.event,\n ownUserId: this._user.id,\n membership: this.membership\n });\n } else {\n const membership = this.membership;\n return new PowerLevels({ownUserId: this._user.id, membership});\n }\n }\n\n /**\n * Get the PowerLevels of the room.\n * Always subscribe to the value returned by this method.\n * @returns {RetainedObservableValue} PowerLevels of the room\n */\n async observePowerLevels() {\n if (this._powerLevelLoading) { await this._powerLevelLoading; }\n let observable = this._powerLevels;\n if (!observable) {\n this._powerLevelLoading = this._loadPowerLevels();\n const powerLevels = await this._powerLevelLoading;\n observable = new RetainedObservableValue(powerLevels, () => { this._powerLevels = null; });\n this._powerLevels = observable;\n this._powerLevelLoading = null;\n }\n return observable;\n }\n\n enableKeyBackup(keyBackup) {\n this._roomEncryption?.enableKeyBackup(keyBackup);\n // TODO: do we really want to do this every time you open the app?\n if (this._timeline && keyBackup) {\n this._platform.logger.run(\"enableKeyBackup\", log => {\n return this._roomEncryption.restoreMissingSessionsFromBackup(this._timeline.remoteEntries, log);\n });\n }\n }\n\n get _isTimelineOpen() {\n return !!this._timeline;\n }\n\n _emitUpdate() {\n // once for event emitter listeners\n this.emit(\"change\");\n // and once for collection listeners\n this._emitCollectionChange(this);\n }\n\n /** @public */\n async openTimeline(log = null) {\n return await this._platform.logger.wrapOrRun(log, \"open timeline\", async log => {\n if (this._timelineLoadPromise) {\n // This is to prevent races between multiple calls to this method\n await this._timelineLoadPromise;\n }\n let resolve;\n this._timelineLoadPromise = new Promise(r => {\n resolve = () => { \n this._timelineLoadPromise = null;\n r();\n };\n });\n log.set(\"id\", this.id);\n if (this._timeline) {\n log.log({ l: \"Returning existing timeline\" });\n resolve();\n this._timeline.retain();\n return this._timeline;\n }\n this._timeline = new Timeline({\n roomId: this.id,\n storage: this._storage,\n fragmentIdComparer: this._fragmentIdComparer,\n pendingEvents: this._getPendingEvents(),\n closeCallback: () => {\n this._timeline = null;\n if (this._roomEncryption) {\n this._roomEncryption.notifyTimelineClosed();\n }\n },\n clock: this._platform.clock,\n logger: this._platform.logger,\n powerLevelsObservable: await this.observePowerLevels(),\n hsApi: this._hsApi\n });\n try {\n if (this._roomEncryption) {\n this._timeline.enableEncryption(this._decryptEntries.bind(this, DecryptionSource.Timeline));\n }\n await this._timeline.load(this._user, this.membership, log);\n } catch (err) {\n // this also clears this._timeline in the closeCallback\n this._timeline.dispose();\n throw err;\n } finally {\n resolve();\n }\n this._timeline.retain();\n return this._timeline;\n });\n }\n\n /* allow subclasses to provide an observable list with pending events when opening the timeline */\n _getPendingEvents() { return null; }\n\n observeEvent(eventId) {\n if (!this._observedEvents) {\n this._observedEvents = new ObservedEventMap(() => {\n this._observedEvents = null;\n });\n }\n let entry = null;\n if (this._timeline) {\n entry = this._timeline.getByEventId(eventId);\n }\n const observable = this._observedEvents.observe(eventId, entry);\n if (!entry) {\n // update in the background\n this._readEventById(eventId).then(entry => {\n observable.update(entry);\n }).catch(err => {\n console.warn(`could not load event ${eventId} from storage`, err);\n });\n }\n return observable;\n }\n\n async _readEventById(eventId) {\n const reader = new TimelineReader({ roomId: this._roomId, storage: this._storage, fragmentIdComparer: this._fragmentIdComparer });\n const entry = await reader.readById(eventId);\n return entry;\n }\n\n dispose() {\n this._roomEncryption?.dispose();\n }\n}\n\nclass DecryptionRequest {\n constructor(decryptFn, log) {\n this._cancelled = false;\n this.preparation = null;\n this._promise = log.wrap(\"decryptEntries\", log => decryptFn(this, log));\n }\n\n complete() {\n return this._promise;\n }\n\n get cancelled() {\n return this._cancelled;\n }\n\n dispose() {\n this._cancelled = true;\n if (this.preparation) {\n this.preparation.dispose();\n }\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {SortedArray} from \"../../../observable/list/SortedArray\";\nimport {ConnectionError} from \"../../error.js\";\nimport {PendingEvent, SendStatus} from \"./PendingEvent.js\";\nimport {makeTxnId, isTxnId} from \"../../common.js\";\nimport {REDACTION_TYPE} from \"../common\";\nimport {getRelationFromContent, getRelationTarget, setRelationTarget, REACTION_TYPE, ANNOTATION_RELATION_TYPE} from \"../timeline/relations.js\";\n\nexport class SendQueue {\n constructor({roomId, storage, hsApi, pendingEvents}) {\n pendingEvents = pendingEvents || [];\n this._roomId = roomId;\n this._storage = storage;\n this._hsApi = hsApi;\n this._pendingEvents = new SortedArray((a, b) => a.queueIndex - b.queueIndex);\n this._pendingEvents.setManyUnsorted(pendingEvents.map(data => this._createPendingEvent(data)));\n this._isSending = false;\n this._offline = false;\n this._roomEncryption = null;\n this._currentQueueIndex = 0;\n }\n\n _createPendingEvent(data, attachments = null) {\n const pendingEvent = new PendingEvent({\n data,\n remove: () => this._removeEvent(pendingEvent),\n emitUpdate: params => this._pendingEvents.update(pendingEvent, params),\n attachments\n });\n return pendingEvent;\n }\n\n enableEncryption(roomEncryption) {\n this._roomEncryption = roomEncryption;\n }\n\n _sendLoop(log) {\n this._isSending = true;\n this._sendLoopLogItem = log.runDetached(\"send queue flush\", async log => {\n try {\n for (const pendingEvent of this._pendingEvents) {\n await log.wrap(\"send event\", async log => {\n log.set(\"queueIndex\", pendingEvent.queueIndex);\n try {\n this._currentQueueIndex = pendingEvent.queueIndex;\n await this._sendEvent(pendingEvent, log);\n } catch(err) {\n if (err instanceof ConnectionError) {\n this._offline = true;\n log.set(\"offline\", true);\n pendingEvent.setWaiting();\n } else {\n log.catch(err);\n const isPermanentError = err.name === \"HomeServerError\" && (\n err.statusCode === 400 || // bad request, must be a bug on our end\n err.statusCode === 403 || // forbidden\n err.statusCode === 404 // not found\n );\n if (isPermanentError) {\n log.set(\"remove\", true);\n await pendingEvent.abort();\n } else {\n pendingEvent.setError(err);\n }\n }\n } finally {\n this._currentQueueIndex = 0;\n }\n });\n }\n } finally {\n this._isSending = false;\n this._sendLoopLogItem = null;\n }\n });\n }\n\n async _sendEvent(pendingEvent, log) {\n if (pendingEvent.needsUpload) {\n await log.wrap(\"upload attachments\", log => pendingEvent.uploadAttachments(this._hsApi, log));\n await this._tryUpdateEvent(pendingEvent);\n }\n if (pendingEvent.needsEncryption) {\n pendingEvent.setEncrypting();\n const encryptionContent = pendingEvent.contentForEncryption;\n const {type, content} = await log.wrap(\"encrypt\", log => this._roomEncryption.encrypt(\n pendingEvent.eventType, encryptionContent, this._hsApi, log));\n pendingEvent.setEncrypted(type, content);\n await this._tryUpdateEvent(pendingEvent);\n }\n if (pendingEvent.needsSending) {\n await pendingEvent.send(this._hsApi, log);\n // we now have a remoteId, but this pending event may be removed at any point in the future\n // (or past, so can't assume it still exists) once the remote echo comes in.\n // So if we have any related events that need to resolve the relatedTxnId to a related event id,\n // they need to do so now.\n // We ensure this by writing the new remote id for the pending event and all related events\n // with unresolved relatedTxnId in the queue in one transaction.\n const txn = await this._storage.readWriteTxn([this._storage.storeNames.pendingEvents]);\n try {\n await this._tryUpdateEventWithTxn(pendingEvent, txn);\n await this._resolveRemoteIdInPendingRelations(\n pendingEvent.txnId, pendingEvent.remoteId, txn);\n } catch (err) {\n txn.abort();\n throw err;\n }\n await txn.complete();\n }\n }\n\n async _resolveRemoteIdInPendingRelations(txnId, remoteId, txn) {\n const relatedEventWithoutRemoteId = this._pendingEvents.array.filter(pe => {\n return pe.relatedTxnId === txnId && pe.relatedEventId !== remoteId;\n });\n for (const relatedPE of relatedEventWithoutRemoteId) {\n relatedPE.setRelatedEventId(remoteId);\n await this._tryUpdateEventWithTxn(relatedPE, txn);\n }\n return relatedEventWithoutRemoteId;\n }\n\n async removeRemoteEchos(events, txn, parentLog) {\n const removed = [];\n for (const event of events) {\n const txnId = event.unsigned && event.unsigned.transaction_id;\n let idx;\n if (txnId) {\n idx = this._pendingEvents.array.findIndex(pe => pe.txnId === txnId);\n } else {\n idx = this._pendingEvents.array.findIndex(pe => pe.remoteId === event.event_id);\n }\n if (idx !== -1) {\n const pendingEvent = this._pendingEvents.get(idx);\n const remoteId = event.event_id;\n parentLog.log({l: \"removeRemoteEcho\", queueIndex: pendingEvent.queueIndex, remoteId, txnId});\n txn.pendingEvents.remove(pendingEvent.roomId, pendingEvent.queueIndex);\n removed.push(pendingEvent);\n await this._resolveRemoteIdInPendingRelations(txnId, remoteId, txn);\n }\n }\n return removed;\n }\n\n async _removeEvent(pendingEvent) {\n let hasEvent = this._pendingEvents.array.indexOf(pendingEvent) !== -1;\n if (hasEvent) {\n const txn = await this._storage.readWriteTxn([this._storage.storeNames.pendingEvents]);\n try {\n txn.pendingEvents.remove(pendingEvent.roomId, pendingEvent.queueIndex);\n } catch (err) {\n txn.abort();\n }\n await txn.complete();\n // lookup index after async txn is complete,\n // to make sure we're not racing with anything\n const idx = this._pendingEvents.array.indexOf(pendingEvent);\n if (idx !== -1) {\n this._pendingEvents.remove(idx);\n }\n }\n pendingEvent.dispose();\n }\n\n emitRemovals(pendingEvents) {\n for (const pendingEvent of pendingEvents) {\n const idx = this._pendingEvents.array.indexOf(pendingEvent);\n if (idx !== -1) {\n this._pendingEvents.remove(idx);\n }\n pendingEvent.dispose();\n }\n }\n\n resumeSending(parentLog) {\n this._offline = false;\n if (this._pendingEvents.length) {\n parentLog.wrap(\"resumeSending\", log => {\n log.set(\"id\", this._roomId);\n log.set(\"pendingEvents\", this._pendingEvents.length);\n if (!this._isSending) {\n this._sendLoop(log);\n }\n if (this._sendLoopLogItem) {\n log.refDetached(this._sendLoopLogItem);\n }\n });\n }\n }\n\n async enqueueEvent(eventType, content, attachments, log) {\n const relation = getRelationFromContent(content);\n let relatedTxnId = null;\n if (relation) {\n const relationTarget = getRelationTarget(relation);\n if (isTxnId(relationTarget)) {\n relatedTxnId = relationTarget;\n setRelationTarget(relation, null);\n }\n if (relation.rel_type === ANNOTATION_RELATION_TYPE) {\n // Here we know the shape of the relation, and can use event_id safely\n const isAlreadyAnnotating = this._pendingEvents.array.some(pe => {\n const r = getRelationFromContent(pe.content);\n return pe.eventType === eventType && r && r.key === relation.key &&\n (pe.relatedTxnId === relatedTxnId || r.event_id === relation.event_id);\n });\n if (isAlreadyAnnotating) {\n log.set(\"already_annotating\", true);\n return;\n }\n }\n }\n return await this._enqueueEvent(eventType, content, attachments, relatedTxnId, null, log);\n }\n\n async _enqueueEvent(eventType, content, attachments, relatedTxnId, relatedEventId, log) {\n const pendingEvent = await this._createAndStoreEvent(eventType, content, relatedTxnId, relatedEventId, attachments);\n this._pendingEvents.set(pendingEvent);\n log.set(\"queueIndex\", pendingEvent.queueIndex);\n log.set(\"pendingEvents\", this._pendingEvents.length);\n if (!this._isSending && !this._offline) {\n this._sendLoop(log);\n }\n if (this._sendLoopLogItem) {\n log.refDetached(this._sendLoopLogItem);\n }\n return pendingEvent;\n }\n\n async enqueueRedaction(eventIdOrTxnId, reason, log) {\n const isAlreadyRedacting = this._pendingEvents.array.some(pe => {\n return pe.eventType === REDACTION_TYPE &&\n (pe.relatedTxnId === eventIdOrTxnId || pe.relatedEventId === eventIdOrTxnId);\n });\n if (isAlreadyRedacting) {\n log.set(\"already_redacting\", true);\n return;\n }\n let relatedTxnId;\n let relatedEventId;\n if (isTxnId(eventIdOrTxnId)) {\n relatedTxnId = eventIdOrTxnId;\n const txnId = eventIdOrTxnId;\n const pe = this._pendingEvents.array.find(pe => pe.txnId === txnId);\n if (pe && !pe.remoteId && pe.status !== SendStatus.Sending) {\n // haven't started sending this event yet,\n // just remove it from the queue\n log.set(\"remove\", relatedTxnId);\n await pe.abort();\n return;\n } else if (pe) {\n relatedEventId = pe.remoteId;\n } else {\n // we don't have the pending event anymore,\n // the remote echo must have arrived in the meantime.\n // we could look for it in the timeline, but for now\n // we don't do anything as this race is quite unlikely\n // and a bit complicated to fix.\n return;\n }\n } else {\n relatedEventId = eventIdOrTxnId;\n const pe = this._pendingEvents.array.find(pe => pe.remoteId === relatedEventId);\n if (pe) {\n // also set the txn id just in case that an event id was passed\n // for relating to a pending event that is still waiting for the remote echo\n relatedTxnId = pe.txnId;\n }\n }\n log.set(\"relatedTxnId\", relatedTxnId);\n log.set(\"relatedEventId\", relatedEventId);\n await this._enqueueEvent(REDACTION_TYPE, {reason}, null, relatedTxnId, relatedEventId, log);\n }\n\n get pendingEvents() {\n return this._pendingEvents;\n }\n\n async _tryUpdateEvent(pendingEvent) {\n const txn = await this._storage.readWriteTxn([this._storage.storeNames.pendingEvents]);\n try {\n this._tryUpdateEventWithTxn(pendingEvent, txn);\n } catch (err) {\n txn.abort();\n throw err;\n }\n await txn.complete();\n }\n\n async _tryUpdateEventWithTxn(pendingEvent, txn) {\n // pendingEvent might have been removed already here\n // by a racing remote echo, so check first so we don't recreate it\n if (await txn.pendingEvents.exists(pendingEvent.roomId, pendingEvent.queueIndex)) {\n txn.pendingEvents.update(pendingEvent.data);\n }\n }\n\n async _createAndStoreEvent(eventType, content, relatedTxnId, relatedEventId, attachments) {\n const txn = await this._storage.readWriteTxn([this._storage.storeNames.pendingEvents]);\n let pendingEvent;\n try {\n const pendingEventsStore = txn.pendingEvents;\n const maxStorageQueueIndex = await pendingEventsStore.getMaxQueueIndex(this._roomId) || 0;\n // don't use the queueIndex of the pendingEvent currently waiting for /send to return\n // if the remote echo already removed the pendingEvent in storage, as the send loop\n // wouldn't be able to detect the remote echo already arrived and end up overwriting the new event\n const maxQueueIndex = Math.max(maxStorageQueueIndex, this._currentQueueIndex);\n const queueIndex = maxQueueIndex + 1;\n const needsEncryption = eventType !== REDACTION_TYPE &&\n eventType !== REACTION_TYPE &&\n !!this._roomEncryption;\n pendingEvent = this._createPendingEvent({\n roomId: this._roomId,\n queueIndex,\n eventType,\n content,\n relatedTxnId,\n relatedEventId,\n txnId: makeTxnId(),\n needsEncryption,\n needsUpload: !!attachments\n }, attachments);\n pendingEventsStore.add(pendingEvent.data);\n } catch (err) {\n txn.abort();\n throw err;\n }\n await txn.complete();\n return pendingEvent;\n }\n\n dispose() {\n for (const pe of this._pendingEvents) {\n pe.dispose();\n }\n }\n}\n\nimport {HomeServer as MockHomeServer} from \"../../../mocks/HomeServer.js\";\nimport {createMockStorage} from \"../../../mocks/Storage\";\nimport {ListObserver} from \"../../../mocks/ListObserver.js\";\nimport {NullLogger, NullLogItem} from \"../../../logging/NullLogger\";\nimport {createEvent, withTextBody, withTxnId} from \"../../../mocks/event.js\";\nimport {poll} from \"../../../mocks/poll.js\";\nimport {createAnnotation} from \"../timeline/relations.js\";\n\nexport function tests() {\n const logger = new NullLogger();\n return {\n \"enqueue second message when remote echo of first arrives before /send returns\": async assert => {\n const storage = await createMockStorage();\n const hs = new MockHomeServer();\n // 1. enqueue and start send event 1\n const queue = new SendQueue({roomId: \"!abc\", storage, hsApi: hs.api});\n const event1 = withTextBody(\"message 1\", createEvent(\"m.room.message\", \"$123\"));\n await logger.run(\"event1\", log => queue.enqueueEvent(event1.type, event1.content, null, log));\n assert.equal(queue.pendingEvents.length, 1);\n const sendRequest1 = hs.requests.send[0];\n // 2. receive remote echo, before /send has returned\n const remoteEcho = withTxnId(sendRequest1.arguments[2], event1);\n const txn = await storage.readWriteTxn([storage.storeNames.pendingEvents]);\n const removal = await logger.run(\"remote echo\", log => queue.removeRemoteEchos([remoteEcho], txn, log));\n await txn.complete();\n assert.equal(removal.length, 1);\n queue.emitRemovals(removal);\n assert.equal(queue.pendingEvents.length, 0);\n // 3. now enqueue event 2\n const event2 = withTextBody(\"message 2\", createEvent(\"m.room.message\", \"$456\"));\n await logger.run(\"event2\", log => queue.enqueueEvent(event2.type, event2.content, null, log));\n // even though the first pending event has been removed by the remote echo,\n // the second should get the next index, as the send loop is still blocking on the first one\n assert.equal(Array.from(queue.pendingEvents)[0].queueIndex, 2);\n // 4. send for event 1 comes back\n sendRequest1.respond({event_id: event1.event_id});\n // 5. now expect second send request for event 2\n const sendRequest2 = await poll(() => hs.requests.send[1]);\n sendRequest2.respond({event_id: event2.event_id});\n await poll(() => !queue._isSending);\n },\n \"redaction of pending event that hasn't started sending yet aborts it\": async assert => {\n const queue = new SendQueue({\n roomId: \"!abc\",\n storage: await createMockStorage(),\n hsApi: new MockHomeServer().api\n });\n // first, enqueue a message that will be attempted to send, but we don't respond\n await queue.enqueueEvent(\"m.room.message\", {body: \"hello!\"}, null, new NullLogItem());\n\n const observer = new ListObserver();\n queue.pendingEvents.subscribe(observer);\n await queue.enqueueEvent(\"m.room.message\", {body: \"...world\"}, null, new NullLogItem());\n let txnId;\n {\n const {type, index, value} = await observer.next();\n assert.equal(type, \"add\");\n assert.equal(index, 1);\n assert.equal(typeof value.txnId, \"string\");\n txnId = value.txnId;\n }\n await queue.enqueueRedaction(txnId, null, new NullLogItem());\n {\n const {type, value, index} = await observer.next();\n assert.equal(type, \"remove\");\n assert.equal(index, 1);\n assert.equal(txnId, value.txnId);\n }\n },\n \"duplicate redaction gets dropped\": async assert => {\n const queue = new SendQueue({\n roomId: \"!abc\",\n storage: await createMockStorage(),\n hsApi: new MockHomeServer().api\n });\n assert.equal(queue.pendingEvents.length, 0);\n await queue.enqueueRedaction(\"!event\", null, new NullLogItem());\n assert.equal(queue.pendingEvents.length, 1);\n await queue.enqueueRedaction(\"!event\", null, new NullLogItem());\n assert.equal(queue.pendingEvents.length, 1);\n },\n \"duplicate reaction gets dropped\": async assert => {\n const queue = new SendQueue({\n roomId: \"!abc\",\n storage: await createMockStorage(),\n hsApi: new MockHomeServer().api\n });\n assert.equal(queue.pendingEvents.length, 0);\n await queue.enqueueEvent(\"m.reaction\", createAnnotation(\"!target\", \"🚀\"), null, new NullLogItem());\n assert.equal(queue.pendingEvents.length, 1);\n await queue.enqueueEvent(\"m.reaction\", createAnnotation(\"!target\", \"👋\"), null, new NullLogItem());\n assert.equal(queue.pendingEvents.length, 2);\n await queue.enqueueEvent(\"m.reaction\", createAnnotation(\"!target\", \"🚀\"), null, new NullLogItem());\n assert.equal(queue.pendingEvents.length, 2);\n },\n \n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {encryptAttachment} from \"../e2ee/attachment.js\";\n\nexport class AttachmentUpload {\n constructor({filename, blob, platform}) {\n this._filename = filename;\n // need to keep around for local preview while uploading\n this._unencryptedBlob = blob;\n this._transferredBlob = this._unencryptedBlob;\n this._platform = platform;\n this._mxcUrl = null;\n this._encryptionInfo = null;\n this._uploadRequest = null;\n this._aborted = false;\n this._error = null;\n this._sentBytes = 0;\n }\n\n /** important to call after encrypt() if encryption is needed */\n get size() {\n return this._transferredBlob.size;\n }\n\n get sentBytes() {\n return this._sentBytes;\n }\n\n abort() {\n this._uploadRequest?.abort();\n }\n\n get localPreview() {\n return this._unencryptedBlob;\n }\n\n /** @internal */\n async encrypt() {\n if (this._encryptionInfo) {\n throw new Error(\"already encrypted\");\n }\n const {info, blob} = await encryptAttachment(this._platform, this._transferredBlob);\n this._transferredBlob = blob;\n this._encryptionInfo = info;\n }\n\n /** @internal */\n async upload(hsApi, progressCallback, log) {\n this._uploadRequest = hsApi.uploadAttachment(this._transferredBlob, this._filename, {\n uploadProgress: sentBytes => {\n this._sentBytes = sentBytes;\n progressCallback();\n },\n log\n });\n const {content_uri} = await this._uploadRequest.response();\n this._mxcUrl = content_uri;\n }\n\n /** @internal */\n applyToContent(urlPath, content) {\n if (!this._mxcUrl) {\n throw new Error(\"upload has not finished\");\n }\n let prefix = urlPath.substr(0, urlPath.lastIndexOf(\"url\"));\n setPath(`${prefix}info.size`, content, this._transferredBlob.size);\n setPath(`${prefix}info.mimetype`, content, this._unencryptedBlob.mimeType);\n if (this._encryptionInfo) {\n setPath(`${prefix}file`, content, Object.assign(this._encryptionInfo, {\n mimetype: this._unencryptedBlob.mimeType,\n url: this._mxcUrl\n }));\n } else {\n setPath(`${prefix}url`, content, this._mxcUrl);\n }\n }\n\n dispose() {\n this._unencryptedBlob.dispose();\n this._transferredBlob.dispose();\n }\n}\n\nfunction setPath(path, content, value) {\n const parts = path.split(\".\");\n let obj = content;\n for (let i = 0; i < (parts.length - 1); i += 1) {\n const key = parts[i];\n if (!obj[key]) {\n obj[key] = {};\n }\n obj = obj[key];\n }\n const propKey = parts[parts.length - 1];\n obj[propKey] = value;\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {BaseRoom} from \"./BaseRoom.js\";\nimport {SyncWriter} from \"./timeline/persistence/SyncWriter.js\";\nimport {MemberWriter} from \"./timeline/persistence/MemberWriter.js\";\nimport {RelationWriter} from \"./timeline/persistence/RelationWriter.js\";\nimport {SendQueue} from \"./sending/SendQueue.js\";\nimport {WrappedError} from \"../error.js\"\nimport {Heroes} from \"./members/Heroes.js\";\nimport {AttachmentUpload} from \"./AttachmentUpload.js\";\nimport {DecryptionSource} from \"../e2ee/common\";\nimport {iterateResponseStateEvents} from \"./common\";\nimport {PowerLevels, EVENT_TYPE as POWERLEVELS_EVENT_TYPE } from \"./PowerLevels.js\";\n\nconst EVENT_ENCRYPTED_TYPE = \"m.room.encrypted\";\n\nexport class Room extends BaseRoom {\n constructor(options) {\n super(options);\n this._roomStateHandler = options.roomStateHandler;\n // TODO: pass pendingEvents to start like pendingOperations?\n const {pendingEvents} = options;\n const relationWriter = new RelationWriter({\n roomId: this.id,\n fragmentIdComparer: this._fragmentIdComparer,\n ownUserId: this._user.id\n });\n this._syncWriter = new SyncWriter({\n roomId: this.id,\n fragmentIdComparer: this._fragmentIdComparer,\n relationWriter,\n memberWriter: new MemberWriter(this.id)\n });\n this._sendQueue = new SendQueue({roomId: this.id, storage: this._storage, hsApi: this._hsApi, pendingEvents});\n }\n\n _setEncryption(roomEncryption) {\n if (super._setEncryption(roomEncryption)) {\n this._sendQueue.enableEncryption(this._roomEncryption);\n return true;\n }\n return false;\n }\n\n async prepareSync(roomResponse, membership, newKeys, txn, log) {\n log.set(\"id\", this.id);\n if (newKeys) {\n log.set(\"newKeys\", newKeys.length);\n }\n let summaryChanges = this._summary.data.applySyncResponse(roomResponse, membership, this._user.id);\n let roomEncryption = this._roomEncryption;\n // encryption is enabled in this sync\n if (!roomEncryption && summaryChanges.encryption) {\n log.set(\"enableEncryption\", true);\n roomEncryption = this._createRoomEncryption(this, summaryChanges.encryption);\n }\n\n let retryEntries;\n let decryptPreparation;\n if (roomEncryption) {\n let eventsToDecrypt = roomResponse?.timeline?.events || [];\n // when new keys arrive, also see if any older events can now be retried to decrypt\n if (newKeys) {\n // TODO: if a key is considered by roomEncryption.prepareDecryptAll to use for decryption,\n // key.eventIds will be set. We could somehow try to reuse that work, but retrying also needs\n // to happen if a key is not needed to decrypt this sync or there are indeed no encrypted messages\n // in this sync at all.\n retryEntries = await this._getSyncRetryDecryptEntries(newKeys, roomEncryption, txn);\n if (retryEntries.length) {\n log.set(\"retry\", retryEntries.length);\n eventsToDecrypt = eventsToDecrypt.concat(retryEntries.map(entry => entry.event));\n }\n }\n eventsToDecrypt = eventsToDecrypt.filter(event => {\n return event?.type === EVENT_ENCRYPTED_TYPE;\n });\n if (eventsToDecrypt.length) {\n decryptPreparation = await roomEncryption.prepareDecryptAll(\n eventsToDecrypt, newKeys, DecryptionSource.Sync, txn);\n }\n }\n\n return {\n roomEncryption,\n summaryChanges,\n decryptPreparation,\n decryptChanges: null,\n retryEntries\n };\n }\n\n async afterPrepareSync(preparation, parentLog) {\n if (preparation.decryptPreparation) {\n await parentLog.wrap(\"decrypt\", async log => {\n log.set(\"id\", this.id);\n preparation.decryptChanges = await preparation.decryptPreparation.decrypt();\n preparation.decryptPreparation = null;\n }, parentLog.level.Detail);\n }\n }\n\n /** @package */\n async writeSync(roomResponse, isInitialSync, {summaryChanges, decryptChanges, roomEncryption, retryEntries}, txn, log) {\n log.set(\"id\", this.id);\n const isRejoin = summaryChanges.isNewJoin(this._summary.data);\n if (isRejoin) {\n // remove all room state before calling syncWriter,\n // so no old state sticks around\n txn.roomState.removeAllForRoom(this.id);\n txn.roomMembers.removeAllForRoom(this.id);\n }\n const {entries: newEntries, updatedEntries, newLiveKey, memberChanges, memberSync} =\n await log.wrap(\"syncWriter\", log => this._syncWriter.writeSync(\n roomResponse, isRejoin, summaryChanges.hasFetchedMembers, txn, log), log.level.Detail);\n let decryption;\n if (decryptChanges) {\n decryption = await log.wrap(\"decryptChanges\", log => decryptChanges.write(txn, log));\n log.set(\"decryptionResults\", decryption.results.size);\n log.set(\"decryptionErrors\", decryption.errors.size);\n if (this._isTimelineOpen) {\n await decryption.verifyKnownSenders(txn);\n }\n decryption.applyToEntries(newEntries);\n if (retryEntries?.length) {\n decryption.applyToEntries(retryEntries);\n updatedEntries.push(...retryEntries);\n }\n }\n log.set(\"newEntries\", newEntries.length);\n log.set(\"updatedEntries\", updatedEntries.length);\n let encryptionChanges;\n // pass member changes to device tracker\n if (roomEncryption) {\n encryptionChanges = await roomEncryption.writeSync(roomResponse, memberChanges, txn, log);\n log.set(\"shouldFlushKeyShares\", encryptionChanges.shouldFlush);\n }\n const allEntries = newEntries.concat(updatedEntries);\n // also apply (decrypted) timeline entries to the summary changes\n summaryChanges = summaryChanges.applyTimelineEntries(\n allEntries, isInitialSync, !this._isTimelineOpen, this._user.id);\n \n // if we've have left the room, remove the summary\n if (summaryChanges.membership !== \"join\") {\n txn.roomSummary.remove(this.id);\n } else {\n // write summary changes, and unset if nothing was actually changed\n summaryChanges = this._summary.writeData(summaryChanges, txn);\n }\n if (summaryChanges) {\n log.set(\"summaryChanges\", summaryChanges.changedKeys(this._summary.data));\n }\n // fetch new members while we have txn open,\n // but don't make any in-memory changes yet\n let heroChanges;\n // if any hero changes their display name, the summary in the room response\n // is also updated, which will trigger a RoomSummary update\n // and make summaryChanges non-falsy here\n if (summaryChanges?.needsHeroes) {\n // room name disappeared, open heroes\n if (!this._heroes) {\n this._heroes = new Heroes(this._roomId);\n }\n heroChanges = await this._heroes.calculateChanges(summaryChanges.heroes, memberChanges, txn);\n }\n let removedPendingEvents;\n if (Array.isArray(roomResponse.timeline?.events)) {\n removedPendingEvents = await this._sendQueue.removeRemoteEchos(roomResponse.timeline.events, txn, log);\n }\n const powerLevelsEvent = this._getPowerLevelsEvent(roomResponse);\n await this._runRoomStateHandlers(roomResponse, memberSync, txn, log);\n return {\n roomResponse,\n summaryChanges,\n roomEncryption,\n newEntries,\n updatedEntries,\n newLiveKey,\n removedPendingEvents,\n memberChanges,\n heroChanges,\n powerLevelsEvent,\n encryptionChanges,\n decryption\n };\n }\n\n /**\n * @package\n * Called with the changes returned from `writeSync` to apply them and emit changes.\n * No storage or network operations should be done here.\n */\n afterSync(changes, log) {\n const {\n summaryChanges, newEntries, updatedEntries, newLiveKey,\n removedPendingEvents, memberChanges, powerLevelsEvent,\n heroChanges, roomEncryption, roomResponse, encryptionChanges\n } = changes;\n log.set(\"id\", this.id);\n this._syncWriter.afterSync(newLiveKey);\n this._setEncryption(roomEncryption);\n if (this._roomEncryption) {\n this._roomEncryption.afterSync(encryptionChanges);\n }\n if (memberChanges.size) {\n if (this._changedMembersDuringSync) {\n for (const [userId, memberChange] of memberChanges.entries()) {\n this._changedMembersDuringSync.set(userId, memberChange.member);\n }\n }\n if (this._memberList) {\n this._memberList.afterSync(memberChanges);\n }\n this._roomStateHandler.updateRoomMembers(this, memberChanges);\n if (this._observedMembers) {\n this._updateObservedMembers(memberChanges);\n }\n if (this._timeline) {\n for (const [userId, memberChange] of memberChanges.entries()) {\n if (userId === this._user.id) {\n this._timeline.updateOwnMember(memberChange.member);\n break;\n }\n }\n }\n }\n let emitChange = false;\n if (summaryChanges) {\n this._summary.applyChanges(summaryChanges);\n if (!this._summary.data.needsHeroes) {\n this._heroes = null;\n }\n emitChange = true;\n }\n if (this._heroes && heroChanges) {\n const oldName = this.name;\n this._heroes.applyChanges(heroChanges, this._summary.data, log);\n if (oldName !== this.name) {\n emitChange = true;\n }\n }\n if (powerLevelsEvent) {\n this._updatePowerLevels(powerLevelsEvent);\n }\n if (emitChange) {\n this._emitUpdate();\n }\n if (this._timeline) {\n // these should not be added if not already there\n this._timeline.replaceEntries(updatedEntries);\n this._timeline.addEntries(newEntries);\n }\n if (this._observedEvents) {\n this._observedEvents.updateEvents(updatedEntries);\n this._observedEvents.updateEvents(newEntries);\n }\n if (removedPendingEvents) {\n this._sendQueue.emitRemovals(removedPendingEvents);\n }\n this._emitSyncRoomState(roomResponse);\n }\n\n _updateObservedMembers(memberChanges) {\n for (const [userId, memberChange] of memberChanges) {\n const observableMember = this._observedMembers.get(userId);\n if (observableMember) {\n observableMember.set(memberChange.member);\n }\n }\n }\n\n _getPowerLevelsEvent(roomResponse) {\n let powerLevelEvent;\n iterateResponseStateEvents(roomResponse, event => {\n if(event.state_key === \"\" && event.type === POWERLEVELS_EVENT_TYPE) {\n powerLevelEvent = event;\n }\n\n });\n return powerLevelEvent;\n }\n\n _updatePowerLevels(powerLevelEvent) {\n if (this._powerLevels) {\n const newPowerLevels = new PowerLevels({\n powerLevelEvent,\n ownUserId: this._user.id,\n membership: this.membership,\n });\n this._powerLevels.set(newPowerLevels);\n }\n }\n\n /**\n * Only called if the result of writeSync had `needsAfterSyncCompleted` set.\n * Can be used to do longer running operations that resulted from the last sync,\n * like network operations.\n */\n async afterSyncCompleted({encryptionChanges, decryption, newEntries, updatedEntries}, log) {\n const shouldFlushKeys = encryptionChanges?.shouldFlush;\n const shouldFetchUnverifiedSenders = this._isTimelineOpen && decryption?.hasUnverifiedSenders;\n // only log rooms where we actually do something\n if (shouldFlushKeys || shouldFetchUnverifiedSenders) {\n await log.wrap({l: \"room\", id: this.id}, async log => {\n const promises = [];\n if (shouldFlushKeys) {\n promises.push(this._roomEncryption.flushPendingRoomKeyShares(this._hsApi, null, log));\n }\n if (shouldFetchUnverifiedSenders) {\n const promise = log.wrap(\"verify senders\", (async log => {\n const newlyVerifiedDecryption = await decryption.fetchAndVerifyRemainingSenders(this._hsApi, log);\n const verifiedEntries = [];\n const updateCallback = entry => verifiedEntries.push(entry);\n newlyVerifiedDecryption.applyToEntries(newEntries, updateCallback);\n newlyVerifiedDecryption.applyToEntries(updatedEntries, updateCallback);\n log.set(\"verifiedEntries\", verifiedEntries.length);\n this._timeline?.replaceEntries(verifiedEntries);\n this._observedEvents?.updateEvents(verifiedEntries);\n }));\n promises.push(promise);\n }\n await Promise.all(promises);\n });\n }\n }\n\n /** @package */\n start(pendingOperations, parentLog) {\n if (this._roomEncryption) {\n const roomKeyShares = pendingOperations?.get(\"share_room_key\");\n if (roomKeyShares) {\n // if we got interrupted last time sending keys to newly joined members\n parentLog.wrapDetached(\"flush room keys\", log => {\n log.set(\"id\", this.id);\n return this._roomEncryption.flushPendingRoomKeyShares(this._hsApi, roomKeyShares, log);\n });\n }\n }\n \n this._sendQueue.resumeSending(parentLog);\n }\n\n /** @package */\n async load(summary, txn, log) {\n try {\n await super.load(summary, txn, log);\n await this._syncWriter.load(txn, log);\n } catch (err) {\n throw new WrappedError(`Could not load room ${this._roomId}`, err);\n }\n }\n\n async _writeGapFill(gapChunk, txn, log) {\n const removedPendingEvents = await this._sendQueue.removeRemoteEchos(gapChunk, txn, log);\n return removedPendingEvents;\n }\n\n _applyGapFill(removedPendingEvents) {\n this._sendQueue.emitRemovals(removedPendingEvents);\n }\n\n /** @public */\n sendEvent(eventType, content, attachments, log = null) {\n return this._platform.logger.wrapOrRun(log, \"send\", log => {\n log.set(\"id\", this.id);\n return this._sendQueue.enqueueEvent(eventType, content, attachments, log);\n });\n }\n\n /** @public */\n sendRedaction(eventIdOrTxnId, reason, log = null) {\n return this._platform.logger.wrapOrRun(log, \"redact\", log => {\n log.set(\"id\", this.id);\n return this._sendQueue.enqueueRedaction(eventIdOrTxnId, reason, log);\n });\n }\n\n /** @public */\n async ensureMessageKeyIsShared(log = null) {\n if (!this._roomEncryption) {\n return;\n }\n return this._platform.logger.wrapOrRun(log, \"ensureMessageKeyIsShared\", log => {\n log.set(\"id\", this.id);\n return this._roomEncryption.ensureMessageKeyIsShared(this._hsApi, log);\n });\n }\n\n get avatarColorId() {\n return this._heroes?.roomAvatarColorId || this._roomId;\n }\n\n get isUnread() {\n return this._summary.data.isUnread;\n }\n\n get notificationCount() {\n return this._summary.data.notificationCount;\n }\n \n get highlightCount() {\n return this._summary.data.highlightCount;\n }\n\n get isTrackingMembers() {\n return this._summary.data.isTrackingMembers;\n }\n\n async _getLastEventId() {\n const lastKey = this._syncWriter.lastMessageKey;\n if (lastKey) {\n const txn = await this._storage.readTxn([\n this._storage.storeNames.timelineEvents,\n ]);\n const eventEntry = await txn.timelineEvents.get(this._roomId, lastKey);\n return eventEntry?.event?.event_id;\n }\n }\n\n /**\n * Clear the unreaad count in the room, and optionally send a read receipt\n * @param {*} log Logger\n * @param {boolean} sendReceipt Should a receipt be sent.\n * @returns \n */\n async clearUnread(log = null, sendReceipt = true) {\n if (this.isUnread || this.notificationCount) {\n return await this._platform.logger.wrapOrRun(log, \"clearUnread\", async log => {\n log.set(\"id\", this.id);\n const txn = await this._storage.readWriteTxn([\n this._storage.storeNames.roomSummary,\n ]);\n let data;\n try {\n data = this._summary.writeClearUnread(txn);\n } catch (err) {\n txn.abort();\n throw err;\n }\n await txn.complete();\n this._summary.applyChanges(data);\n this._emitUpdate();\n \n try {\n const lastEventId = sendReceipt && await this._getLastEventId();\n if (lastEventId) {\n await this._hsApi.receipt(this._roomId, \"m.read\", lastEventId);\n }\n } catch (err) {\n // ignore ConnectionError\n if (err.name !== \"ConnectionError\") {\n throw err;\n }\n }\n });\n }\n }\n\n leave(log = null) {\n return this._platform.logger.wrapOrRun(log, \"leave room\", async log => {\n log.set(\"id\", this.id);\n await this._hsApi.leave(this.id, {log}).response();\n });\n }\n\n async inviteUser(userId, reason) {\n if (!userId) {\n throw new Error(\"userId is null/undefined\");\n }\n await this._hsApi.invite(this.id, userId, reason).response();\n }\n\n /* called by BaseRoom to pass pendingEvents when opening the timeline */\n _getPendingEvents() {\n return this._sendQueue.pendingEvents;\n }\n\n /** global room state handlers, run during writeSync step */\n _runRoomStateHandlers(roomResponse, memberSync, txn, log) {\n const promises = [];\n iterateResponseStateEvents(roomResponse, event => {\n promises.push(this._roomStateHandler.handleRoomState(this, event, memberSync, txn, log));\n });\n return Promise.all(promises);\n }\n\n /** local room state observers, run during afterSync step */\n _emitSyncRoomState(roomResponse) {\n iterateResponseStateEvents(roomResponse, event => {\n for (const handler of this._roomStateObservers) {\n handler.handleStateEvent(event);\n }\n });\n }\n\n /** @package */\n writeIsTrackingMembers(value, txn) {\n return this._summary.writeIsTrackingMembers(value, txn);\n }\n\n /** @package */\n applyIsTrackingMembersChanges(changes) {\n this._summary.applyChanges(changes);\n }\n\n createAttachment(blob, filename) {\n return new AttachmentUpload({blob, filename, platform: this._platform});\n }\n\n dispose() {\n super.dispose();\n this._sendQueue.dispose();\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {iterateResponseStateEvents} from \"./common\";\nimport {BaseRoom} from \"./BaseRoom.js\";\nimport {RoomMember, EVENT_TYPE as MEMBER_EVENT_TYPE} from \"./members/RoomMember.js\";\n\nexport class ArchivedRoom extends BaseRoom {\n constructor(options) {\n super(options);\n // archived rooms are reference counted,\n // as they are not kept in memory when not needed\n this._releaseCallback = options.releaseCallback;\n this._forgetCallback = options.forgetCallback;\n this._retentionCount = 1;\n /**\n Some details from our own member event when being kicked or banned.\n We can't get this from the member store, because we don't store the reason field there.\n */\n this._kickDetails = null;\n this._kickedBy = null;\n }\n\n retain() {\n this._retentionCount += 1;\n }\n\n release() {\n this._retentionCount -= 1;\n if (this._retentionCount === 0) {\n this._releaseCallback();\n }\n }\n\n async _getKickAuthor(sender, txn) {\n const senderMember = await txn.roomMembers.get(this.id, sender);\n if (senderMember) {\n return new RoomMember(senderMember);\n } else {\n return RoomMember.fromUserId(this.id, sender, \"join\");\n }\n }\n \n async load(archivedRoomSummary, txn, log) {\n const {summary, kickDetails} = archivedRoomSummary;\n this._kickDetails = kickDetails;\n if (this._kickDetails) {\n this._kickedBy = await this._getKickAuthor(this._kickDetails.sender, txn);\n }\n return super.load(summary, txn, log);\n }\n\n /** @package */\n async writeSync(joinedSummaryData, roomResponse, membership, txn, log) {\n log.set(\"id\", this.id);\n if (membership === \"leave\") {\n const newKickDetails = findKickDetails(roomResponse, this._user.id);\n if (newKickDetails || joinedSummaryData) {\n const kickDetails = newKickDetails || this._kickDetails;\n let kickedBy;\n if (newKickDetails) {\n kickedBy = await this._getKickAuthor(newKickDetails.sender, txn);\n }\n const summaryData = joinedSummaryData || this._summary.data;\n txn.archivedRoomSummary.set({\n summary: summaryData.serialize(),\n kickDetails,\n });\n return {kickDetails, kickedBy, summaryData};\n }\n } else if (membership === \"join\") {\n txn.archivedRoomSummary.remove(this.id);\n }\n // always return object\n return {};\n }\n\n /**\n * @package\n * Called with the changes returned from `writeSync` to apply them and emit changes.\n * No storage or network operations should be done here.\n */\n afterSync({summaryData, kickDetails, kickedBy}, log) {\n log.set(\"id\", this.id);\n if (summaryData) {\n this._summary.applyChanges(summaryData);\n }\n if (kickDetails) {\n this._kickDetails = kickDetails;\n }\n if (kickedBy) {\n this._kickedBy = kickedBy;\n }\n this._emitUpdate();\n }\n\n get isKicked() {\n return this._kickDetails?.membership === \"leave\";\n }\n\n get isBanned() {\n return this._kickDetails?.membership === \"ban\";\n }\n\n get kickedBy() {\n return this._kickedBy;\n }\n\n get kickReason() {\n return this._kickDetails?.reason;\n }\n\n isArchived() {\n return true;\n }\n\n forget(log = null) {\n return this._platform.logger.wrapOrRun(log, \"forget room\", async log => {\n log.set(\"id\", this.id);\n await this._hsApi.forget(this.id, {log}).response();\n const storeNames = this._storage.storeNames;\n const txn = await this._storage.readWriteTxn([\n storeNames.roomState,\n storeNames.archivedRoomSummary,\n storeNames.roomMembers,\n storeNames.timelineEvents,\n storeNames.timelineFragments,\n storeNames.timelineRelations,\n storeNames.pendingEvents,\n storeNames.inboundGroupSessions,\n storeNames.groupSessionDecryptions,\n storeNames.operations,\n ]);\n\n txn.roomState.removeAllForRoom(this.id);\n txn.archivedRoomSummary.remove(this.id);\n txn.roomMembers.removeAllForRoom(this.id);\n txn.timelineEvents.removeAllForRoom(this.id);\n txn.timelineFragments.removeAllForRoom(this.id);\n txn.timelineRelations.removeAllForRoom(this.id);\n txn.pendingEvents.removeAllForRoom(this.id);\n txn.inboundGroupSessions.removeAllForRoom(this.id);\n txn.groupSessionDecryptions.removeAllForRoom(this.id);\n await txn.operations.removeAllForScope(this.id);\n\n await txn.complete();\n\n this._retentionCount = 0;\n this._releaseCallback();\n \n this._forgetCallback(this.id);\n });\n }\n\n join(log = null) {\n return this._platform.logger.wrapOrRun(log, \"rejoin archived room\", async log => {\n await this._hsApi.join(this.id, {log}).response();\n });\n }\n}\n\nfunction findKickDetails(roomResponse, ownUserId) {\n let kickEvent;\n iterateResponseStateEvents(roomResponse, event => {\n if (event.type === MEMBER_EVENT_TYPE) {\n // did we get kicked?\n if (event.state_key === ownUserId && event.sender !== event.state_key) {\n kickEvent = event;\n }\n }\n });\n if (kickEvent) {\n return {\n // this is different from the room membership in the sync section, which can only be leave\n membership: kickEvent.content?.membership, // could be leave or ban\n reason: kickEvent.content?.reason,\n sender: kickEvent.sender,\n };\n }\n}\n\nexport function tests() {\n function createMemberEvent(sender, target, membership, reason) {\n return {\n sender,\n state_key: target,\n type: \"m.room.member\",\n content: { reason, membership }\n };\n }\n const bob = \"@bob:hs.tld\";\n const alice = \"@alice:hs.tld\";\n\n return {\n \"ban/kick sets kickDetails from state event\": assert => {\n const reason = \"Bye!\";\n const leaveEvent = createMemberEvent(alice, bob, \"ban\", reason);\n const kickDetails = findKickDetails({state: {events: [leaveEvent]}}, bob);\n assert.equal(kickDetails.membership, \"ban\");\n assert.equal(kickDetails.reason, reason);\n assert.equal(kickDetails.sender, alice);\n },\n \"ban/kick sets kickDetails from timeline state event, taking precedence over state\": assert => {\n const reason = \"Bye!\";\n const inviteEvent = createMemberEvent(alice, bob, \"invite\");\n const leaveEvent = createMemberEvent(alice, bob, \"ban\", reason);\n const kickDetails = findKickDetails({\n state: { events: [inviteEvent] },\n timeline: {events: [leaveEvent] }\n }, bob);\n assert.equal(kickDetails.membership, \"ban\");\n assert.equal(kickDetails.reason, reason);\n assert.equal(kickDetails.sender, alice);\n },\n \"leaving without being kicked doesn't produce kickDetails\": assert => {\n const leaveEvent = createMemberEvent(bob, bob, \"leave\");\n const kickDetails = findKickDetails({state: {events: [leaveEvent]}}, bob);\n assert.equal(kickDetails, null);\n }\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport type {HomeServerApi} from \"./net/HomeServerApi\";\nimport type {ILogItem} from \"../logging/types\";\n\nexport async function loadProfiles(userIds: string[], hsApi: HomeServerApi, log: ILogItem): Promise {\n const profiles = await Promise.all(userIds.map(async userId => {\n const response = await hsApi.profile(userId, {log}).response();\n return new Profile(userId, response.displayname as string, response.avatar_url as string);\n }));\n profiles.sort((a, b) => a.name.localeCompare(b.name));\n return profiles;\n}\n\nexport interface IProfile {\n get userId(): string;\n get displayName(): string | undefined;\n get avatarUrl(): string | undefined;\n get name(): string;\n}\n\nexport class Profile implements IProfile {\n constructor(\n public readonly userId: string,\n public readonly displayName: string,\n public readonly avatarUrl: string | undefined\n ) {}\n\n get name() { return this.displayName || this.userId; }\n}\n\nexport class UserIdProfile implements IProfile {\n constructor(public readonly userId: string) {}\n get displayName() { return undefined; }\n get name() { return this.userId; }\n get avatarUrl() { return undefined; }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {calculateRoomName} from \"./members/Heroes\";\nimport {createRoomEncryptionEvent} from \"../e2ee/common\";\nimport {MediaRepository} from \"../net/MediaRepository\";\nimport {EventEmitter} from \"../../utils/EventEmitter\";\nimport {AttachmentUpload} from \"./AttachmentUpload\";\nimport {loadProfiles, Profile, UserIdProfile} from \"../profile\";\nimport {RoomType, UnsentStateEvent} from \"./common\";\n\nimport type {HomeServerApi} from \"../net/HomeServerApi\";\nimport type {ILogItem} from \"../../logging/types\";\nimport type {Platform} from \"../../platform/web/Platform\";\nimport type {IBlobHandle} from \"../../platform/types/types\";\nimport type {User} from \"../User\";\nimport type {Storage} from \"../storage/idb/Storage\";\n\ntype CreateRoomPayload = {\n is_direct?: boolean;\n preset?: string;\n name?: string;\n topic?: string;\n invite?: string[];\n room_alias_name?: string;\n creation_content?: {\"m.federate\": boolean};\n initial_state: UnsentStateEvent[];\n power_level_content_override?: Record;\n}\n\ntype ImageInfo = {\n w: number;\n h: number;\n mimetype: string;\n size: number;\n}\n\ntype Avatar = {\n info: ImageInfo;\n blob: IBlobHandle;\n name: string;\n}\n\ntype Options = {\n type: RoomType;\n isEncrypted?: boolean;\n isFederationDisabled?: boolean;\n name?: string;\n topic?: string;\n invites?: string[];\n avatar?: Avatar;\n alias?: string;\n powerLevelContentOverride?: Record;\n}\n\nfunction defaultE2EEStatusForType(type: RoomType): boolean {\n switch (type) {\n case RoomType.DirectMessage:\n case RoomType.Private:\n return true;\n case RoomType.Public:\n return false;\n }\n}\n\nfunction presetForType(type: RoomType): string {\n switch (type) {\n case RoomType.DirectMessage:\n return \"trusted_private_chat\";\n case RoomType.Private:\n return \"private_chat\";\n case RoomType.Public:\n return \"public_chat\";\n }\n}\n\nexport class RoomBeingCreated extends EventEmitter<{change: never}> {\n private _roomId?: string;\n private profiles: Profile[] = [];\n\n public readonly isEncrypted: boolean;\n private _calculatedName: string;\n private _error?: Error;\n private _isCancelled = false;\n\n constructor(\n public readonly id: string,\n private readonly options: Options,\n private readonly updateCallback: (self: RoomBeingCreated, params: string | undefined) => void,\n public readonly mediaRepository: MediaRepository,\n public readonly platform: Platform,\n log: ILogItem\n ) {\n super();\n this.isEncrypted = options.isEncrypted === undefined ? defaultE2EEStatusForType(options.type) : options.isEncrypted;\n if (options.name) {\n this._calculatedName = options.name;\n } else {\n const summaryData = {\n joinCount: 1, // ourselves\n inviteCount: (options.invites?.length || 0)\n };\n const userIdProfiles = (options.invites || []).map(userId => new UserIdProfile(userId));\n this._calculatedName = calculateRoomName(userIdProfiles, summaryData, log);\n }\n }\n\n /** @internal */\n async create(hsApi: HomeServerApi, log: ILogItem): Promise {\n try {\n let avatarEventContent;\n if (this.options.avatar) {\n const {avatar} = this.options;\n const attachment = new AttachmentUpload({filename: avatar.name, blob: avatar.blob, platform: this.platform});\n await attachment.upload(hsApi, () => {}, log);\n avatarEventContent = {\n info: avatar.info\n };\n attachment.applyToContent(\"url\", avatarEventContent);\n }\n const createOptions: CreateRoomPayload = {\n is_direct: this.options.type === RoomType.DirectMessage,\n preset: presetForType(this.options.type),\n initial_state: []\n };\n if (this.options.name) {\n createOptions.name = this.options.name;\n }\n if (this.options.topic) {\n createOptions.topic = this.options.topic;\n }\n if (this.options.invites) {\n createOptions.invite = this.options.invites;\n }\n if (this.options.alias) {\n createOptions.room_alias_name = this.options.alias;\n }\n if (this.options.isFederationDisabled === true) {\n createOptions.creation_content = {\n \"m.federate\": false\n };\n }\n if (this.options.powerLevelContentOverride) {\n createOptions.power_level_content_override = this.options.powerLevelContentOverride;\n }\n if (this.isEncrypted) {\n createOptions.initial_state.push(createRoomEncryptionEvent());\n }\n if (avatarEventContent) {\n createOptions.initial_state.push({\n type: \"m.room.avatar\",\n state_key: \"\",\n content: avatarEventContent\n });\n }\n const response = await hsApi.createRoom(createOptions, {log}).response();\n this._roomId = response[\"room_id\"];\n } catch (err) {\n this._error = err;\n }\n this.emitChange();\n }\n\n /** requests the profiles of the invitees if needed to give an accurate\n * estimated room name in case an explicit room name is not set.\n * The room is being created in the background whether this is called\n * or not, and this just gives a more accurate name while that request\n * is running. */\n /** @internal */\n async loadProfiles(hsApi: HomeServerApi, log: ILogItem): Promise {\n try {\n // only load profiles if we need it for the room name and avatar\n if (!this.options.name && this.options.invites) {\n this.profiles = await loadProfiles(this.options.invites, hsApi, log);\n const summaryData = {\n joinCount: 1, // ourselves\n inviteCount: this.options.invites.length\n };\n this._calculatedName = calculateRoomName(this.profiles, summaryData, log);\n this.emitChange();\n }\n } catch (err) {} // swallow error, loading profiles is not essential\n }\n\n private emitChange(params?: string) {\n this.updateCallback(this, params);\n this.emit(\"change\");\n }\n\n get avatarColorId(): string { return this.options.invites?.[0] ?? this._roomId ?? this.id; }\n get avatarUrl(): string | undefined { return this.profiles?.[0]?.avatarUrl; }\n get avatarBlobUrl(): string | undefined { return this.options.avatar?.blob?.url; }\n get roomId(): string | undefined { return this._roomId; }\n get name() { return this._calculatedName; }\n get isBeingCreated(): boolean { return true; }\n get error(): Error | undefined { return this._error; }\n\n cancel() {\n if (!this._isCancelled) {\n this.dispose();\n this._isCancelled = true;\n this.emitChange(\"isCancelled\");\n }\n }\n // called from Session when updateCallback is invoked to remove it from the collection\n get isCancelled() { return this._isCancelled; }\n\n /** @internal */\n dispose() {\n if (this.options.avatar) {\n this.options.avatar.blob.dispose();\n }\n }\n\n async adjustDirectMessageMapIfNeeded(user: User, storage: Storage, hsApi: HomeServerApi, log: ILogItem): Promise {\n if (!this.options.invites || this.options.type !== RoomType.DirectMessage) {\n return;\n }\n const userId = this.options.invites[0];\n const DM_MAP_TYPE = \"m.direct\";\n await log.wrap(\"set \" + DM_MAP_TYPE, async log => {\n try {\n const txn = await storage.readWriteTxn([storage.storeNames.accountData]);\n let mapEntry;\n try {\n mapEntry = await txn.accountData.get(DM_MAP_TYPE);\n if (!mapEntry) {\n mapEntry = {type: DM_MAP_TYPE, content: {}};\n }\n const map = mapEntry.content;\n let userRooms = map[userId];\n if (!userRooms) {\n map[userId] = userRooms = [];\n }\n // this is a new room id so no need to check if it's already there\n userRooms.push(this._roomId);\n txn.accountData.set(mapEntry);\n await txn.complete();\n } catch (err) {\n txn.abort();\n throw err;\n }\n await hsApi.setAccountData(user.id, DM_MAP_TYPE, mapEntry.content, {log}).response();\n } catch (err) {\n // we can't really do anything else but logging here\n log.catch(err);\n }\n });\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {EventEmitter} from \"../../utils/EventEmitter\";\nimport {SummaryData, processStateEvent} from \"./RoomSummary.js\";\nimport {Heroes} from \"./members/Heroes.js\";\nimport {MemberChange, RoomMember, EVENT_TYPE as MEMBER_EVENT_TYPE} from \"./members/RoomMember.js\";\n\nexport class Invite extends EventEmitter {\n constructor({roomId, user, hsApi, mediaRepository, emitCollectionRemove, emitCollectionUpdate, platform}) {\n super();\n this._roomId = roomId;\n this._user = user;\n this._hsApi = hsApi;\n this._emitCollectionRemove = emitCollectionRemove;\n this._emitCollectionUpdate = emitCollectionUpdate;\n this._mediaRepository = mediaRepository;\n this._platform = platform;\n this._inviteData = null;\n this._accepting = false;\n this._rejecting = false;\n this._accepted = false;\n this._rejected = false;\n }\n\n get isInvite() {\n return true;\n }\n\n get id() {\n return this._roomId;\n }\n\n get name() {\n return this._inviteData.name || this._inviteData.canonicalAlias;\n }\n\n get isDirectMessage() {\n return this._inviteData.isDirectMessage;\n }\n\n get avatarUrl() {\n return this._inviteData.avatarUrl;\n }\n\n /** @see BaseRoom.avatarColorId */\n get avatarColorId() {\n return this._inviteData.avatarColorId || this.id;\n }\n\n get timestamp() {\n return this._inviteData.timestamp;\n }\n\n get isEncrypted() {\n return this._inviteData.isEncrypted;\n }\n\n get inviter() {\n return this._inviter;\n }\n\n isDirectMessageForUserId(userId) {\n return this.isDirectMessage && this._inviter.userId === userId;\n }\n\n get isPublic() {\n return this._inviteData.joinRule === \"public\";\n }\n\n get canonicalAlias() {\n return this._inviteData.canonicalAlias;\n }\n\n async accept(log = null) {\n await this._platform.logger.wrapOrRun(log, \"acceptInvite\", async log => {\n this._accepting = true;\n this._emitChange(\"accepting\");\n await this._hsApi.join(this._roomId, {log}).response();\n });\n }\n\n async reject(log = null) {\n await this._platform.logger.wrapOrRun(log, \"rejectInvite\", async log => {\n this._rejecting = true;\n this._emitChange(\"rejecting\");\n await this._hsApi.leave(this._roomId, {log}).response();\n });\n }\n\n get accepting() {\n return this._accepting;\n }\n\n get accepted() {\n return this._accepted;\n }\n\n get rejecting() {\n return this._rejecting;\n }\n\n get rejected() {\n return this._rejected;\n }\n\n get mediaRepository() {\n return this._mediaRepository;\n }\n\n _emitChange(params) {\n this.emit(\"change\");\n this._emitCollectionUpdate(this, params);\n }\n\n load(inviteData, log) {\n log.set(\"id\", this.id);\n this._inviteData = inviteData;\n this._inviter = inviteData.inviter ? new RoomMember(inviteData.inviter) : null;\n }\n\n async writeSync(membership, roomResponse, txn, log) {\n if (membership === \"invite\") {\n log.set(\"id\", this.id);\n log.set(\"add\", true);\n const inviteState = roomResponse[\"invite_state\"]?.events;\n if (!Array.isArray(inviteState)) {\n return null;\n }\n const summaryData = this._createSummaryData(inviteState);\n let heroes;\n if (!summaryData.name && !summaryData.canonicalAlias) {\n heroes = await this._createHeroes(inviteState, log);\n }\n const myInvite = this._getMyInvite(inviteState);\n if (!myInvite) {\n return null;\n }\n const inviter = this._getInviter(myInvite, inviteState);\n const inviteData = this._createData(inviteState, myInvite, inviter, summaryData, heroes);\n txn.invites.set(inviteData);\n return {inviteData, inviter};\n } else {\n log.set(\"id\", this.id);\n log.set(\"membership\", membership);\n txn.invites.remove(this.id);\n return {removed: true, membership};\n }\n }\n\n afterSync(changes, log) {\n log.set(\"id\", this.id);\n if (changes) {\n if (changes.removed) {\n this._accepting = false;\n this._rejecting = false;\n if (changes.membership === \"join\") {\n this._accepted = true;\n } else {\n this._rejected = true;\n }\n this.emit(\"change\");\n } else {\n // no emit change, adding to the collection is done by sync\n this._inviteData = changes.inviteData;\n this._inviter = changes.inviter;\n }\n }\n }\n\n _createData(inviteState, myInvite, inviter, summaryData, heroes) {\n const name = heroes ? heroes.roomName : summaryData.name;\n const avatarUrl = heroes ? heroes.roomAvatarUrl : summaryData.avatarUrl;\n const avatarColorId = heroes?.roomAvatarColorId || this.id;\n return {\n roomId: this.id,\n isEncrypted: !!summaryData.encryption,\n isDirectMessage: summaryData.isDirectMessage,\n// type: \n name,\n avatarUrl,\n avatarColorId,\n canonicalAlias: summaryData.canonicalAlias,\n timestamp: this._platform.clock.now(),\n joinRule: this._getJoinRule(inviteState),\n inviter: inviter?.serialize(),\n };\n }\n\n _createSummaryData(inviteState) {\n return inviteState.reduce((data, event) => processStateEvent(data, event, this._user.id), new SummaryData(null, this.id));\n }\n\n async _createHeroes(inviteState, log) {\n const members = inviteState.filter(e => e.type === MEMBER_EVENT_TYPE);\n const otherMembers = members.filter(e => e.state_key !== this._user.id);\n const memberChanges = otherMembers.reduce((map, e) => {\n const member = RoomMember.fromMemberEvent(this.id, e);\n map.set(member.userId, new MemberChange(member, null));\n return map;\n }, new Map());\n const otherUserIds = otherMembers.map(e => e.state_key);\n const heroes = new Heroes(this.id);\n const changes = await heroes.calculateChanges(otherUserIds, memberChanges, null);\n // we don't get an actual lazy-loading m.heroes summary on invites,\n // so just count the members by hand\n const countSummary = new SummaryData(null, this.id);\n countSummary.joinCount = members.reduce((sum, e) => sum + (e.content?.membership === \"join\" ? 1 : 0), 0);\n countSummary.inviteCount = members.reduce((sum, e) => sum + (e.content?.membership === \"invite\" ? 1 : 0), 0);\n heroes.applyChanges(changes, countSummary, log);\n return heroes;\n }\n\n _getMyInvite(inviteState) {\n return inviteState.find(e => e.type === MEMBER_EVENT_TYPE && e.state_key === this._user.id);\n }\n\n _getInviter(myInvite, inviteState) {\n const inviterMemberEvent = inviteState.find(e => e.type === MEMBER_EVENT_TYPE && e.state_key === myInvite.sender);\n if (inviterMemberEvent) {\n return RoomMember.fromMemberEvent(this.id, inviterMemberEvent);\n }\n }\n\n _getJoinRule(inviteState) {\n const event = inviteState.find(e => e.type === \"m.room.join_rules\");\n if (event) {\n return event.content?.join_rule;\n }\n return null;\n }\n}\n\nimport {NullLogItem} from \"../../logging/NullLogger\";\nimport {Clock as MockClock} from \"../../mocks/Clock.js\";\nimport {default as roomInviteFixture} from \"../../fixtures/matrix/invites/room.js\";\nimport {default as dmInviteFixture} from \"../../fixtures/matrix/invites/dm.js\";\n\nexport function tests() {\n\n function createStorage() {\n const invitesMap = new Map();\n return {\n invitesMap,\n invites: {\n set(invite) {\n invitesMap.set(invite.roomId, invite);\n },\n remove(roomId) {\n invitesMap.delete(roomId);\n }\n }\n }\n }\n\n const roomId = \"!123:hs.tld\";\n const aliceAvatarUrl = \"mxc://hs.tld/def456\";\n const roomAvatarUrl = \"mxc://hs.tld/roomavatar\";\n\n return {\n \"invite for room has correct fields\": async assert => {\n const invite = new Invite({\n roomId,\n platform: {clock: new MockClock(1001)},\n user: {id: \"@bob:hs.tld\"}\n });\n const txn = createStorage();\n const changes = await invite.writeSync(\"invite\", roomInviteFixture, txn, new NullLogItem());\n assert.equal(txn.invitesMap.get(roomId).roomId, roomId);\n invite.afterSync(changes, new NullLogItem());\n assert.equal(invite.name, \"Invite example\");\n assert.equal(invite.avatarUrl, roomAvatarUrl);\n assert.equal(invite.isPublic, false);\n assert.equal(invite.timestamp, 1001);\n assert.equal(invite.isEncrypted, false);\n assert.equal(invite.isDirectMessage, false);\n assert(invite.inviter);\n assert.equal(invite.inviter.userId, \"@alice:hs.tld\");\n assert.equal(invite.inviter.displayName, \"Alice\");\n assert.equal(invite.inviter.avatarUrl, aliceAvatarUrl);\n },\n \"invite for encrypted DM has correct fields\": async assert => {\n const invite = new Invite({\n roomId,\n platform: {clock: new MockClock(1003)},\n user: {id: \"@bob:hs.tld\"}\n });\n const txn = createStorage();\n const changes = await invite.writeSync(\"invite\", dmInviteFixture, txn, new NullLogItem());\n assert.equal(txn.invitesMap.get(roomId).roomId, roomId);\n invite.afterSync(changes, new NullLogItem());\n assert.equal(invite.name, \"Alice\");\n assert.equal(invite.avatarUrl, aliceAvatarUrl);\n assert.equal(invite.timestamp, 1003);\n assert.equal(invite.isEncrypted, true);\n assert.equal(invite.isDirectMessage, true);\n assert(invite.inviter);\n assert.equal(invite.inviter.userId, \"@alice:hs.tld\");\n assert.equal(invite.inviter.displayName, \"Alice\");\n assert.equal(invite.inviter.avatarUrl, aliceAvatarUrl);\n },\n \"load persisted invite has correct fields\": async assert => {\n const writeInvite = new Invite({\n roomId,\n platform: {clock: new MockClock(1003)},\n user: {id: \"@bob:hs.tld\"}\n });\n const txn = createStorage();\n await writeInvite.writeSync(\"invite\", dmInviteFixture, txn, new NullLogItem());\n const invite = new Invite({roomId});\n invite.load(txn.invitesMap.get(roomId), new NullLogItem());\n assert.equal(invite.name, \"Alice\");\n assert.equal(invite.avatarUrl, aliceAvatarUrl);\n assert.equal(invite.timestamp, 1003);\n assert.equal(invite.isEncrypted, true);\n assert.equal(invite.isDirectMessage, true);\n assert(invite.inviter);\n assert.equal(invite.inviter.userId, \"@alice:hs.tld\");\n assert.equal(invite.inviter.displayName, \"Alice\");\n assert.equal(invite.inviter.avatarUrl, aliceAvatarUrl);\n },\n \"syncing join sets accepted\": async assert => {\n let changeEmitCount = 0;\n const invite = new Invite({\n roomId,\n platform: {clock: new MockClock(1003)},\n user: {id: \"@bob:hs.tld\"},\n });\n invite.on(\"change\", () => { changeEmitCount += 1; });\n const txn = createStorage();\n const changes = await invite.writeSync(\"invite\", dmInviteFixture, txn, new NullLogItem());\n assert.equal(txn.invitesMap.get(roomId).roomId, roomId);\n invite.afterSync(changes, new NullLogItem());\n const joinChanges = await invite.writeSync(\"join\", null, txn, new NullLogItem());\n assert.strictEqual(changeEmitCount, 0);\n invite.afterSync(joinChanges, new NullLogItem());\n assert.strictEqual(changeEmitCount, 1);\n assert.equal(txn.invitesMap.get(roomId), undefined);\n assert.equal(invite.rejected, false);\n assert.equal(invite.accepted, true);\n }\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport type {HomeServerApi} from \"../net/HomeServerApi.js\";\nimport type {ILogItem} from \"../../logging/types\";\n\nexport interface IPusherDescription {\n kind: \"http\" | \"email\" | \"null\";\n lang: string;\n device_display_name: string;\n app_display_name: string;\n app_id: string;\n pushkey: string;\n data: IPusherData;\n append?: boolean;\n profile_tag?: string;\n}\n\ninterface IPusherData {\n format?: string;\n url?: string;\n endpoint?: PushSubscriptionJSON[\"endpoint\"];\n keys?: PushSubscriptionJSON[\"keys\"];\n}\n\nexport class Pusher {\n private readonly _description: IPusherDescription;\n\n constructor(description: IPusherDescription) {\n this._description = description;\n }\n\n static httpPusher(host: string, appId: string, pushkey: string, data: IPusherData): Pusher {\n return new Pusher({\n kind: \"http\",\n append: true, // as pushkeys are shared between multiple users on one origin\n data: Object.assign({}, data, {url: host + \"/_matrix/push/v1/notify\"}),\n pushkey,\n app_id: appId,\n app_display_name: \"Hydrogen\",\n device_display_name: \"Hydrogen\",\n lang: \"en\"\n });\n }\n\n static createDefaultPayload(sessionId: string): {session_id: string} {\n return {session_id: sessionId};\n }\n\n async enable(hsApi: HomeServerApi, log: ILogItem): Promise {\n try {\n log.set(\"endpoint\", new URL(this._description.data.endpoint!).host);\n } catch {\n log.set(\"endpoint\", null);\n }\n await hsApi.setPusher(this._description, {log}).response();\n }\n\n async disable(hsApi: HomeServerApi, log: ILogItem): Promise {\n const deleteDescription = Object.assign({}, this._description, {kind: null});\n await hsApi.setPusher(deleteDescription, {log}).response();\n }\n\n serialize(): IPusherDescription {\n return this._description;\n }\n\n equals(pusher): boolean {\n if (this._description.app_id !== pusher._description.app_id) {\n return false;\n }\n if (this._description.pushkey !== pusher._description.pushkey) {\n return false;\n }\n return JSON.stringify(this._description.data) === JSON.stringify(pusher._description.data);\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {OLM_ALGORITHM} from \"./e2ee/common\";\nimport {countBy, groupBy} from \"../utils/groupBy\";\nimport {LRUCache} from \"../utils/LRUCache\";\nimport {EventEmitter} from \"../utils/EventEmitter\";\n\nexport class DeviceMessageHandler extends EventEmitter{\n constructor({storage, callHandler}) {\n super();\n this._storage = storage;\n this._olmDecryption = null;\n this._megolmDecryption = null;\n this._callHandler = callHandler;\n this._senderDeviceCache = new LRUCache(10, di => di.curve25519Key);\n }\n\n enableEncryption({olmDecryption, megolmDecryption}) {\n this._olmDecryption = olmDecryption;\n this._megolmDecryption = megolmDecryption;\n }\n\n obtainSyncLock(toDeviceEvents) {\n return this._olmDecryption?.obtainDecryptionLock(toDeviceEvents);\n }\n\n async prepareSync(toDeviceEvents, lock, txn, log) {\n log.set(\"messageTypes\", countBy(toDeviceEvents, e => e.type));\n const encryptedEvents = toDeviceEvents.filter(e => e.type === \"m.room.encrypted\");\n this._emitUnencryptedEvents(toDeviceEvents);\n if (!this._olmDecryption) {\n log.log(\"can't decrypt, encryption not enabled\", log.level.Warn);\n return;\n }\n // only know olm for now\n const olmEvents = encryptedEvents.filter(e => e.content?.algorithm === OLM_ALGORITHM);\n if (olmEvents.length) {\n const olmDecryptChanges = await this._olmDecryption.decryptAll(olmEvents, lock, txn);\n log.set(\"decryptedTypes\", countBy(olmDecryptChanges.results, r => r.event?.type));\n for (const err of olmDecryptChanges.errors) {\n log.child(\"decrypt_error\").catch(err);\n }\n const newRoomKeys = this._megolmDecryption.roomKeysFromDeviceMessages(olmDecryptChanges.results, log);\n \n // TODO: somehow include rooms that received a call to_device message in the sync state?\n // or have updates flow through event emitter?\n // well, we don't really need to update the room other then when a call starts or stops\n // any changes within the call will be emitted on the call object?\n return new SyncPreparation(olmDecryptChanges, newRoomKeys);\n }\n }\n\n /** check that prep is not undefined before calling this */\n async writeSync(prep, txn) {\n // write olm changes\n prep.olmDecryptChanges.write(txn);\n const didWriteValues = await Promise.all(prep.newRoomKeys.map(key => this._megolmDecryption.writeRoomKey(key, txn)));\n const hasNewRoomKeys = didWriteValues.some(didWrite => !!didWrite);\n return {\n hasNewRoomKeys,\n decryptionResults: prep.olmDecryptChanges.results\n };\n }\n\n async afterSyncCompleted(decryptionResults, deviceTracker, hsApi, log) {\n await log.wrap(\"Verifying fingerprint of encrypted toDevice messages\", async (log) => {\n for (const result of decryptionResults) {\n const sender = result.event.sender;\n const device = await deviceTracker.deviceForCurveKey(\n sender,\n result.senderCurve25519Key,\n hsApi,\n log\n );\n result.setDevice(device);\n if (result.isVerified) {\n this.emit(\"message\", { encrypted: result });\n }\n else {\n log.log({\n l: \"could not verify olm fingerprint key matches, ignoring\",\n ed25519Key: result.device.ed25519Key,\n claimedEd25519Key: result.claimedEd25519Key,\n deviceId: device.deviceId,\n userId: device.userId,\n });\n }\n }\n });\n // todo: Refactor the following to use to device messages \n if (this._callHandler) {\n // if we don't have a device, we need to fetch the device keys the message claims\n // and check the keys, and we should only do network requests during\n // sync processing in the afterSyncCompleted step.\n const callMessages = decryptionResults.filter(dr => this._callHandler.handlesDeviceMessageEventType(dr.event?.type));\n if (callMessages.length) {\n await log.wrap(\"process call signalling messages\", async log => {\n for (const dr of callMessages) {\n // serialize device loading, so subsequent messages for the same device take advantage of the cache\n const device = await deviceTracker.deviceForId(dr.event.sender, dr.event.content.device_id, hsApi, log);\n dr.setDevice(device);\n if (dr.isVerified) {\n this._callHandler.handleDeviceMessage(dr.event, dr.userId, dr.deviceId, log);\n } else {\n log.log({\n l: \"could not verify olm fingerprint key matches, ignoring\",\n ed25519Key: dr.device.ed25519Key,\n claimedEd25519Key: dr.claimedEd25519Key,\n deviceId: device.deviceId,\n userId: device.userId,\n });\n }\n }\n });\n }\n }\n }\n\n _emitUnencryptedEvents(toDeviceEvents) {\n const unencryptedEvents = toDeviceEvents.filter(e => e.type !== \"m.room.encrypted\");\n for (const event of unencryptedEvents) {\n this.emit(\"message\", { unencrypted: event });\n }\n }\n\n}\n\nclass SyncPreparation {\n constructor(olmDecryptChanges, newRoomKeys) {\n this.olmDecryptChanges = olmDecryptChanges;\n this.newRoomKeys = newRoomKeys;\n this.newKeysByRoom = groupBy(newRoomKeys, r => r.roomId);\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport anotherjson from \"another-json\";\nimport {SESSION_E2EE_KEY_PREFIX, OLM_ALGORITHM, MEGOLM_ALGORITHM} from \"./common\";\n\n// use common prefix so it's easy to clear properties that are not e2ee related during session clear\nconst ACCOUNT_SESSION_KEY = SESSION_E2EE_KEY_PREFIX + \"olmAccount\";\nconst DEVICE_KEY_FLAG_SESSION_KEY = SESSION_E2EE_KEY_PREFIX + \"areDeviceKeysUploaded\";\nconst SERVER_OTK_COUNT_SESSION_KEY = SESSION_E2EE_KEY_PREFIX + \"serverOTKCount\";\n\nasync function initiallyStoreAccount(account, pickleKey, areDeviceKeysUploaded, serverOTKCount, storage) {\n const pickledAccount = account.pickle(pickleKey);\n const txn = await storage.readWriteTxn([\n storage.storeNames.session\n ]);\n try {\n // add will throw if the key already exists\n // we would not want to overwrite olmAccount here\n txn.session.add(ACCOUNT_SESSION_KEY, pickledAccount);\n txn.session.add(DEVICE_KEY_FLAG_SESSION_KEY, areDeviceKeysUploaded);\n txn.session.add(SERVER_OTK_COUNT_SESSION_KEY, serverOTKCount);\n } catch (err) {\n txn.abort();\n throw err;\n }\n await txn.complete();\n}\n\nexport class Account {\n static async load({olm, pickleKey, hsApi, userId, deviceId, olmWorker, txn}) {\n const pickledAccount = await txn.session.get(ACCOUNT_SESSION_KEY);\n if (pickledAccount) {\n const account = new olm.Account();\n const areDeviceKeysUploaded = await txn.session.get(DEVICE_KEY_FLAG_SESSION_KEY);\n account.unpickle(pickleKey, pickledAccount);\n const serverOTKCount = await txn.session.get(SERVER_OTK_COUNT_SESSION_KEY);\n return new Account({pickleKey, hsApi, account, userId,\n deviceId, areDeviceKeysUploaded, serverOTKCount, olm, olmWorker});\n }\n }\n\n static async adoptDehydratedDevice({olm, dehydratedDevice, pickleKey, hsApi, userId, olmWorker, storage}) {\n const account = dehydratedDevice.adoptUnpickledOlmAccount();\n const oneTimeKeys = JSON.parse(account.one_time_keys());\n // only one algorithm supported by olm atm, so hardcode its name\n const oneTimeKeysEntries = Object.entries(oneTimeKeys.curve25519);\n const serverOTKCount = oneTimeKeysEntries.length;\n const areDeviceKeysUploaded = true;\n await initiallyStoreAccount(account, pickleKey, areDeviceKeysUploaded, serverOTKCount, storage);\n return new Account({\n pickleKey, hsApi, account, userId,\n deviceId: dehydratedDevice.deviceId,\n areDeviceKeysUploaded, serverOTKCount, olm, olmWorker\n });\n }\n\n static async create({olm, pickleKey, hsApi, userId, deviceId, olmWorker, storage}) {\n const account = new olm.Account();\n if (olmWorker) {\n await olmWorker.createAccountAndOTKs(account, account.max_number_of_one_time_keys());\n } else {\n account.create();\n account.generate_one_time_keys(account.max_number_of_one_time_keys());\n }\n const areDeviceKeysUploaded = false;\n const serverOTKCount = 0;\n if (storage) {\n await initiallyStoreAccount(account, pickleKey, areDeviceKeysUploaded, serverOTKCount, storage);\n }\n return new Account({pickleKey, hsApi, account, userId,\n deviceId, areDeviceKeysUploaded, serverOTKCount, olm, olmWorker});\n }\n\n constructor({pickleKey, hsApi, account, userId, deviceId, areDeviceKeysUploaded, serverOTKCount, olm, olmWorker}) {\n this._olm = olm;\n this._pickleKey = pickleKey;\n this._hsApi = hsApi;\n this._account = account;\n this._userId = userId;\n this._deviceId = deviceId;\n this._areDeviceKeysUploaded = areDeviceKeysUploaded;\n this._serverOTKCount = serverOTKCount;\n this._olmWorker = olmWorker;\n this._identityKeys = JSON.parse(this._account.identity_keys());\n }\n\n get identityKeys() {\n return this._identityKeys;\n }\n\n setDeviceId(deviceId) {\n this._deviceId = deviceId;\n }\n\n async uploadKeys(storage, isDehydratedDevice, log) {\n const oneTimeKeys = JSON.parse(this._account.one_time_keys());\n // only one algorithm supported by olm atm, so hardcode its name\n const oneTimeKeysEntries = Object.entries(oneTimeKeys.curve25519);\n if (oneTimeKeysEntries.length || !this._areDeviceKeysUploaded) {\n const payload = {};\n if (!this._areDeviceKeysUploaded) {\n log.set(\"identity\", true);\n const identityKeys = JSON.parse(this._account.identity_keys());\n payload.device_keys = this._deviceKeysPayload(identityKeys);\n }\n if (oneTimeKeysEntries.length) {\n log.set(\"otks\", true);\n payload.one_time_keys = this._oneTimeKeysPayload(oneTimeKeysEntries);\n }\n const dehydratedDeviceId = isDehydratedDevice ? this._deviceId : undefined;\n const response = await this._hsApi.uploadKeys(dehydratedDeviceId, payload, {log}).response();\n this._serverOTKCount = response?.one_time_key_counts?.signed_curve25519;\n log.set(\"serverOTKCount\", this._serverOTKCount);\n // TODO: should we not modify this in the txn like we do elsewhere?\n // we'd have to pickle and unpickle the account to clone it though ...\n // and the upload has succeed at this point, so in-memory would be correct\n // but in-storage not if the txn fails. \n await this._updateSessionStorage(storage, sessionStore => {\n if (oneTimeKeysEntries.length) {\n this._account.mark_keys_as_published();\n sessionStore?.set(ACCOUNT_SESSION_KEY, this._account.pickle(this._pickleKey));\n sessionStore?.set(SERVER_OTK_COUNT_SESSION_KEY, this._serverOTKCount);\n }\n if (!this._areDeviceKeysUploaded) {\n this._areDeviceKeysUploaded = true;\n sessionStore?.set(DEVICE_KEY_FLAG_SESSION_KEY, this._areDeviceKeysUploaded);\n }\n });\n }\n }\n\n async generateOTKsIfNeeded(storage, log) {\n // We need to keep a pool of one time public keys on the server so that\n // other devices can start conversations with us. But we can only store\n // a finite number of private keys in the olm Account object.\n // To complicate things further there can be a delay between a device\n // claiming a public one time key from the server and it sending us a\n // message. We need to keep the corresponding private key locally until\n // we receive the message.\n // But that message might never arrive leaving us stuck with duff\n // private keys clogging up our local storage.\n // So we need some kind of engineering compromise to balance all of\n // these factors.\n \n // Check how many keys we can store in the Account object.\n const maxOTKs = this._account.max_number_of_one_time_keys();\n // Try to keep at most half that number on the server. This leaves the\n // rest of the slots free to hold keys that have been claimed from the\n // server but we haven't recevied a message for.\n // If we run out of slots when generating new keys then olm will\n // discard the oldest private keys first. This will eventually clean\n // out stale private keys that won't receive a message.\n const keyLimit = Math.floor(maxOTKs / 2);\n // does the server have insufficient OTKs?\n if (this._serverOTKCount < keyLimit) {\n const oneTimeKeys = JSON.parse(this._account.one_time_keys());\n const oneTimeKeysEntries = Object.entries(oneTimeKeys.curve25519);\n const unpublishedOTKCount = oneTimeKeysEntries.length;\n // we want to end up with maxOTKs / 2 key on the server,\n // so generate any on top of the remaining ones on the server and the unpublished ones\n // (we have generated before but haven't uploaded yet for some reason)\n // to get to that number.\n const newKeyCount = keyLimit - unpublishedOTKCount - this._serverOTKCount;\n if (newKeyCount > 0) {\n await log.wrap(\"generate otks\", log => {\n log.set(\"max\", maxOTKs);\n log.set(\"server\", this._serverOTKCount);\n log.set(\"unpublished\", unpublishedOTKCount);\n log.set(\"new\", newKeyCount);\n log.set(\"limit\", keyLimit);\n this._account.generate_one_time_keys(newKeyCount);\n this._updateSessionStorage(storage, sessionStore => {\n sessionStore.set(ACCOUNT_SESSION_KEY, this._account.pickle(this._pickleKey));\n });\n });\n }\n // even though we didn't generate any keys, we still have some unpublished ones that should be published\n return true;\n }\n return false;\n }\n\n createInboundOlmSession(senderKey, body) {\n const newSession = new this._olm.Session();\n try {\n newSession.create_inbound_from(this._account, senderKey, body);\n return newSession;\n } catch (err) {\n newSession.free();\n throw err;\n }\n }\n\n async createOutboundOlmSession(theirIdentityKey, theirOneTimeKey) {\n const newSession = new this._olm.Session();\n try {\n if (this._olmWorker) {\n await this._olmWorker.createOutboundOlmSession(this._account, newSession, theirIdentityKey, theirOneTimeKey);\n } else {\n newSession.create_outbound(this._account, theirIdentityKey, theirOneTimeKey);\n }\n return newSession;\n } catch (err) {\n newSession.free();\n throw err;\n }\n }\n\n writeRemoveOneTimeKey(session, txn) {\n // this is side-effecty and will have applied the change if the txn fails,\n // but don't want to clone the account for now\n // and it is not the worst thing to think we have used a OTK when\n // decrypting the message that actually used it threw for some reason.\n this._account.remove_one_time_keys(session);\n txn.session.set(ACCOUNT_SESSION_KEY, this._account.pickle(this._pickleKey));\n }\n\n writeSync(deviceOneTimeKeysCount, txn, log) {\n // we only upload signed_curve25519 otks\n const otkCount = deviceOneTimeKeysCount.signed_curve25519;\n if (Number.isSafeInteger(otkCount) && otkCount !== this._serverOTKCount) {\n txn.session.set(SERVER_OTK_COUNT_SESSION_KEY, otkCount);\n log.set(\"otkCount\", otkCount);\n return otkCount;\n }\n }\n\n afterSync(otkCount) {\n // could also be undefined\n if (Number.isSafeInteger(otkCount)) {\n this._serverOTKCount = otkCount;\n }\n }\n\n _keysAsSignableObject(identityKeys) {\n const obj = {\n user_id: this._userId,\n device_id: this._deviceId,\n algorithms: [OLM_ALGORITHM, MEGOLM_ALGORITHM],\n keys: {}\n };\n for (const [algorithm, pubKey] of Object.entries(identityKeys)) {\n obj.keys[`${algorithm}:${this._deviceId}`] = pubKey;\n }\n return obj;\n }\n\n getUnsignedDeviceKey() {\n const identityKeys = JSON.parse(this._account.identity_keys());\n return this._keysAsSignableObject(identityKeys);\n }\n\n _deviceKeysPayload(identityKeys) {\n const obj = this._keysAsSignableObject(identityKeys);\n this.signObject(obj);\n return obj;\n }\n\n _oneTimeKeysPayload(oneTimeKeysEntries) {\n const obj = {};\n for (const [keyId, pubKey] of oneTimeKeysEntries) {\n const keyObj = {\n key: pubKey \n };\n this.signObject(keyObj);\n obj[`signed_curve25519:${keyId}`] = keyObj;\n }\n return obj;\n }\n\n async _updateSessionStorage(storage, callback) {\n if (storage) {\n const txn = await storage.readWriteTxn([\n storage.storeNames.session\n ]);\n try {\n await callback(txn.session);\n } catch (err) {\n txn.abort();\n throw err;\n }\n await txn.complete();\n } else {\n await callback(undefined);\n }\n }\n\n signObject(obj) {\n const sigs = obj.signatures || {};\n const unsigned = obj.unsigned;\n\n delete obj.signatures;\n delete obj.unsigned;\n\n sigs[this._userId] = sigs[this._userId] || {};\n sigs[this._userId][\"ed25519:\" + this._deviceId] = \n this._account.sign(anotherjson.stringify(obj));\n obj.signatures = sigs;\n if (unsigned !== undefined) {\n obj.unsigned = unsigned;\n }\n }\n\n pickleWithKey(key) {\n return this._account.pickle(key);\n }\n\n dispose() {\n this._account.free();\n this._account = undefined;\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport type {Platform} from \"../../platform/web/Platform.js\";\n\nexport type KeyDescriptionData = {\n algorithm: string;\n passphrase: {\n algorithm: string;\n iterations: number;\n salt: string;\n bits?: number;\n };\n mac: string;\n iv: string;\n}\n\nexport class KeyDescription {\n private readonly _id: string;\n private readonly _keyDescription: KeyDescriptionData;\n\n constructor(id: string, keyDescription: KeyDescriptionData) {\n this._id = id;\n this._keyDescription = keyDescription;\n }\n\n get id(): string {\n return this._id;\n }\n\n get passphraseParams(): KeyDescriptionData[\"passphrase\"] {\n return this._keyDescription?.passphrase;\n }\n\n get algorithm(): string {\n return this._keyDescription?.algorithm;\n }\n\n async isCompatible(key: Key, platform: Platform): Promise {\n if (this.algorithm === \"m.secret_storage.v1.aes-hmac-sha2\") {\n const kd = this._keyDescription;\n if (kd.mac) {\n const otherMac = await calculateKeyMac(key.binaryKey, kd.iv, platform);\n return kd.mac === otherMac;\n } else if (kd.passphrase) {\n const kdOther = key.description._keyDescription;\n if (!kdOther.passphrase) {\n return false;\n }\n return kd.passphrase.algorithm === kdOther.passphrase.algorithm && \n kd.passphrase.iterations === kdOther.passphrase.iterations && \n kd.passphrase.salt === kdOther.passphrase.salt;\n }\n }\n return false;\n }\n}\n\nexport class Key {\n private readonly _keyDescription: KeyDescription;\n private readonly _binaryKey: Uint8Array;\n\n constructor(keyDescription: KeyDescription, binaryKey: Uint8Array) {\n this._keyDescription = keyDescription;\n this._binaryKey = binaryKey;\n }\n\n withDescription(description: KeyDescription): Key {\n return new Key(description, this._binaryKey);\n }\n\n get description(): KeyDescription {\n return this._keyDescription;\n }\n\n get id(): string {\n return this._keyDescription.id;\n }\n\n get binaryKey(): Uint8Array {\n return this._binaryKey;\n }\n\n get algorithm(): string {\n return this._keyDescription.algorithm;\n }\n}\n\nasync function calculateKeyMac(key: BufferSource, ivStr: string, platform: Platform): Promise {\n const {crypto, encoding} = platform;\n const {utf8, base64} = encoding;\n const {derive, aes, hmac} = crypto;\n\n const iv = base64.decode(ivStr);\n\n // salt for HKDF, with 8 bytes of zeros\n const zerosalt = new Uint8Array(8);\n const ZERO_STR = \"\\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\";\n \n const info = utf8.encode(\"\");\n const keybits = await derive.hkdf(key, zerosalt, info, \"SHA-256\", 512);\n const aesKey = keybits.slice(0, 32);\n const hmacKey = keybits.slice(32);\n const ciphertext = await aes.encryptCTR({key: aesKey, iv, data: utf8.encode(ZERO_STR)});\n const mac = await hmac.compute(hmacKey, ciphertext, \"SHA-256\");\n\n return base64.encode(mac);\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {Key} from \"./common\";\nimport type {KeyDescription} from \"./common\";\nimport type {Platform} from \"../../platform/web/Platform.js\";\n\nconst DEFAULT_ITERATIONS = 500000;\nconst DEFAULT_BITSIZE = 256;\n\n/**\n * @param {KeyDescription} keyDescription\n * @param {string} passphrase\n * @param {Platform} platform\n * @return {Key}\n */\nexport async function keyFromPassphrase(keyDescription: KeyDescription, passphrase: string, platform: Platform): Promise {\n const {passphraseParams} = keyDescription;\n if (!passphraseParams) {\n throw new Error(\"not a passphrase key\");\n }\n if (passphraseParams.algorithm !== \"m.pbkdf2\") {\n throw new Error(`Unsupported passphrase algorithm: ${passphraseParams.algorithm}`);\n }\n const {utf8} = platform.encoding;\n const keyBits = await platform.crypto.derive.pbkdf2(\n utf8.encode(passphrase),\n passphraseParams.iterations || DEFAULT_ITERATIONS,\n // salt is just a random string, not encoded in any way\n utf8.encode(passphraseParams.salt),\n \"SHA-512\",\n passphraseParams.bits || DEFAULT_BITSIZE);\n return new Key(keyDescription, keyBits);\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nimport {Key} from \"./common\";\nimport {KeyDescription} from \"./common\";\nimport type {Platform} from \"../../platform/web/Platform.js\";\nimport type * as OlmNamespace from \"@matrix-org/olm\";\ntype Olm = typeof OlmNamespace;\n\nconst OLM_RECOVERY_KEY_PREFIX = [0x8B, 0x01] as const;\n\n/**\n * @param {Olm} olm\n * @param {KeyDescription} keyDescription\n * @param {string} recoveryKey\n * @return {Key}\n */\nexport function keyFromRecoveryKey(keyDescription: KeyDescription, recoveryKey: string, olm: Olm, platform: Platform): Key {\n const result = platform.encoding.base58.decode(recoveryKey.replace(/ /g, ''));\n\n let parity = 0;\n for (const b of result) {\n parity ^= b;\n }\n if (parity !== 0) {\n throw new Error(\"Incorrect parity\");\n }\n\n for (let i = 0; i < OLM_RECOVERY_KEY_PREFIX.length; ++i) {\n if (result[i] !== OLM_RECOVERY_KEY_PREFIX[i]) {\n throw new Error(\"Incorrect prefix\");\n }\n }\n\n if (\n result.length !==\n OLM_RECOVERY_KEY_PREFIX.length + olm.PRIVATE_KEY_LENGTH + 1\n ) {\n throw new Error(\"Incorrect length\");\n }\n\n const keyBits = Uint8Array.from(result.slice(\n OLM_RECOVERY_KEY_PREFIX.length,\n OLM_RECOVERY_KEY_PREFIX.length + olm.PRIVATE_KEY_LENGTH,\n ));\n\n return new Key(keyDescription, keyBits);\n}\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport type {SecretStorage} from \"./SecretStorage\";\nimport type {SecretSharing} from \"./SecretSharing\";\n\n/**\n * This is a wrapper around SecretStorage and SecretSharing so that \n * you don't need to check both sources for a secret.\n */\nexport class SecretFetcher {\n public secretStorage: SecretStorage;\n public secretSharing: SecretSharing;\n\n async getSecret(name: string): Promise {\n /**\n * Note that we don't ask another device for secret here;\n * that should be done explicitly since it can take arbitrary\n * amounts of time to be fulfilled as the other devices may \n * be offline etc...\n */\n return await this.secretStorage?.readSecret(name) ??\n await this.secretSharing?.getLocallyStoredSecret(name);\n } \n\n setSecretStorage(storage: SecretStorage) {\n this.secretStorage = storage;\n }\n\n setSecretSharing(sharing: SecretSharing) {\n this.secretSharing = sharing;\n /**\n * SecretSharing also needs to respond to secret requests\n * from other devices, so it needs the secret fetcher as \n * well\n */\n this.secretSharing.setSecretFetcher(this);\n }\n}\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport type {HomeServerApi} from \"../net/HomeServerApi\";\nimport type {Storage} from \"../storage/idb/Storage\";\nimport type {DeviceMessageHandler} from \"../DeviceMessageHandler.js\"\nimport type {DeviceTracker} from \"../e2ee/DeviceTracker\";\nimport type {ILogger, ILogItem} from \"../../logging/types\";\nimport type {Encryption as OlmEncryption} from \"../e2ee/olm/Encryption\";\nimport type {Crypto} from \"../../platform/web/dom/Crypto.js\";\nimport type {Encoding} from \"../../platform/web/utils/Encoding.js\";\nimport type {CrossSigning} from \"../verification/CrossSigning\";\nimport type {SecretFetcher} from \"./SecretFetcher\";\nimport type {ObservableValue} from \"../../observable/value\";\nimport type {DecryptionResult} from \"../e2ee/DecryptionResult\";\nimport {makeTxnId, formatToDeviceMessagesPayload} from \"../common.js\";\nimport {Deferred} from \"../../utils/Deferred\";\nimport {StoreNames} from \"../storage/common\";\nimport {SESSION_E2EE_KEY_PREFIX} from \"../e2ee/common\";\n\ntype Options = {\n hsApi: HomeServerApi;\n storage: Storage;\n deviceMessageHandler: DeviceMessageHandler;\n deviceTracker: DeviceTracker;\n ourUserId: string;\n olmEncryption: OlmEncryption;\n crypto: Crypto;\n encoding: Encoding;\n crossSigning: ObservableValue;\n logger: ILogger;\n};\n\nconst enum EVENT_TYPE {\n REQUEST = \"m.secret.request\",\n SEND = \"m.secret.send\",\n}\n\n\nconst STORAGE_KEY = \"secretRequestIds\";\n\nexport class SecretSharing {\n private readonly hsApi: HomeServerApi;\n private readonly storage: Storage;\n private readonly deviceMessageHandler: DeviceMessageHandler;\n private readonly deviceTracker: DeviceTracker;\n private readonly ourUserId: string;\n private readonly olmEncryption: OlmEncryption;\n private readonly waitMap: Map, name: string }> = new Map();\n private readonly encoding: Encoding;\n private readonly aesEncryption: AESEncryption;\n private readonly crossSigning: ObservableValue;\n private readonly logger: ILogger;\n private secretFetcher: SecretFetcher;\n\n constructor(options: Options) {\n this.hsApi = options.hsApi;\n this.storage = options.storage;\n this.deviceMessageHandler = options.deviceMessageHandler;\n this.deviceTracker = options.deviceTracker;\n this.ourUserId = options.ourUserId;\n this.olmEncryption = options.olmEncryption;\n this.encoding = options.encoding;\n this.crossSigning = options.crossSigning;\n this.logger = options.logger;\n this.aesEncryption = new AESEncryption(this.storage, options.crypto, this.encoding);\n }\n\n async load(): Promise {\n this.deviceMessageHandler.on(\"message\", async ({ encrypted }) => {\n const type: EVENT_TYPE = encrypted?.event.type;\n switch (type) {\n case EVENT_TYPE.REQUEST: {\n await this._respondToRequest(encrypted);\n break;\n }\n case EVENT_TYPE.SEND: {\n const {secret} = encrypted.event.content;\n const name = await this.shouldAcceptSecret(encrypted);\n if (name) {\n this.writeSecretToStorage(name, secret);\n }\n break;\n }\n }\n });\n await this.aesEncryption.load();\n }\n\n private async _respondToRequest(request): Promise {\n await this.logger.run(\"SharedSecret.respondToRequest\", async (log) => {\n if (!await this.shouldRespondToRequest(request, log)) {\n return;\n }\n const requestContent = request.event.content;\n const id = requestContent.request_id;\n const deviceId = requestContent.requesting_device_id;\n const name = requestContent.name;\n \n const secret = await this.secretFetcher.getSecret(name);\n if (!secret) {\n // Can't share a secret that we don't know about.\n log.log({ l: \"Secret not available to share\" });\n return;\n }\n\n const content = { secret, request_id: id };\n const device = await this.deviceTracker.deviceForId(this.ourUserId, deviceId, this.hsApi, log);\n if (!device) {\n log.log({ l: \"Cannot find device\", deviceId });\n return;\n }\n const messages = await log.wrap(\"olm encrypt\", log => this.olmEncryption.encrypt(\n EVENT_TYPE.SEND, content, [device], this.hsApi, log));\n const payload = formatToDeviceMessagesPayload(messages);\n await this.hsApi.sendToDevice(\"m.room.encrypted\", payload, makeTxnId(), {log}).response();\n });\n }\n\n private async shouldRespondToRequest(request: any, log: ILogItem): Promise {\n return log.wrap(\"SecretSharing.shouldRespondToRequest\", async () => {\n if (request.event.content.requesting_device_id === this.deviceTracker.ownDeviceId) {\n // This is the request that we sent, so ignore\n return false;\n }\n const crossSigning = this.crossSigning.get();\n if (!crossSigning) {\n // We're not in a position to respond to this request\n log.log({ crossSigningNotAvailable: true });\n return false;\n }\n\n const content = request.event.content;\n if (\n request.event.sender !== this.ourUserId ||\n !(\n content.name &&\n content.action &&\n content.requesting_device_id &&\n content.request_id\n ) ||\n content.action === \"request_cancellation\"\n ) {\n // 1. Ensure that the message came from the same user as us\n // 2. Validate message format\n // 3. Check if this is a cancellation \n return false;\n }\n\n // 3. Check that the device is verified\n const deviceId = content.requesting_device_id;\n const device = await this.deviceTracker.deviceForId(this.ourUserId, deviceId, this.hsApi, log);\n if (!device) {\n log.log({ l: \"Device could not be acquired\", deviceId });\n return false;\n }\n if (!await crossSigning.isOurUserDeviceTrusted(device, log)) {\n log.log({ l: \"Device not trusted, returning\" });\n return false;\n }\n return true;\n });\n }\n\n /**\n * Returns name of the secret if we can accept the response.\n * Returns undefined otherwise.\n * @param decryptionResult Encrypted to-device event that contains the secret\n */\n private async shouldAcceptSecret(decryptionResult: DecryptionResult): Promise {\n // 1. Check if we can trust this response\n const crossSigning = this.crossSigning.get();\n if (!crossSigning) {\n return;\n }\n const device = decryptionResult.device;\n if (!device) {\n return;\n }\n if (!await crossSigning.isOurUserDeviceTrusted(device)) {\n // We don't want to accept secrets from an untrusted device\n return;\n }\n const content = decryptionResult.event.content!;\n const requestId = content.request_id;\n // 2. Check if this request is in waitMap\n const obj = this.waitMap.get(requestId);\n if (obj) {\n const { name, deferred } = obj;\n deferred.resolve(decryptionResult);\n this.waitMap.delete(requestId);\n await this.removeStoredRequestId(requestId);\n return name;\n }\n // 3. Check if we've persisted the request to storage\n const txn = await this.storage.readTxn([this.storage.storeNames.session]);\n const storedIds = await txn.session.get(STORAGE_KEY);\n const name = storedIds?.[requestId];\n if (name) {\n await this.removeStoredRequestId(requestId);\n return name;\n }\n }\n\n private async removeStoredRequestId(requestId: string): Promise {\n const txn = await this.storage.readWriteTxn([this.storage.storeNames.session]);\n const storedIds = await txn.session.get(STORAGE_KEY);\n if (storedIds) {\n delete storedIds[requestId];\n txn.session.set(STORAGE_KEY, storedIds);\n }\n }\n\n async checkSecretValidity(log: ILogItem): Promise {\n const crossSigning = this.crossSigning.get();\n const needsDeleting = !await crossSigning?.areWeVerified(log);\n if (needsDeleting) {\n // User probably reset their cross-signing keys\n // Can't trust the secrets anymore!\n const txn = await this.storage.readWriteTxn([this.storage.storeNames.sharedSecrets]);\n txn.sharedSecrets.deleteAllSecrets();\n }\n }\n\n async getLocallyStoredSecret(name: string): Promise {\n const txn = await this.storage.readTxn([\n this.storage.storeNames.sharedSecrets,\n ]);\n const storedSecret = await txn.sharedSecrets.get(name);\n if (storedSecret) {\n const secret = await this.aesEncryption.decrypt(storedSecret.encrypted);\n return secret;\n }\n }\n\n // todo: this will break if two different pieces of code call this method\n requestSecret(name: string, log: ILogItem): Promise {\n return log.wrap(\"SharedSecret.requestSecret\", async (_log) => {\n const request_id = makeTxnId();\n const promise = this.trackSecretRequest(request_id, name);\n await this.sendRequestForSecret(name, request_id, _log);\n await this.writeRequestIdToStorage(request_id, name);\n const request = new SecretRequest(promise);\n return request;\n });\n }\n\n /**\n * We will store the request-id of every secret request that we send.\n * If a device responds to our secret request when we're offline and we receive\n * it via sync when we come online at some later time, we can use this persisted\n * request-id to determine if we should accept the secret.\n */\n private async writeRequestIdToStorage(requestId: string, name: string): Promise {\n const txn = await this.storage.readWriteTxn([\n this.storage.storeNames.session,\n ]);\n const txnIds = await txn.session.get(STORAGE_KEY) ?? {};\n txnIds[requestId] = name;\n txn.session.set(STORAGE_KEY, txnIds)\n }\n\n private async writeSecretToStorage(name:string, secret: any): Promise {\n const encrypted = await this.aesEncryption.encrypt(secret);\n const txn = await this.storage.readWriteTxn([StoreNames.sharedSecrets]);\n txn.sharedSecrets.set(name, { encrypted });\n }\n\n private trackSecretRequest(request_id: string, name: string): Promise {\n const deferred = new Deferred(); \n this.waitMap.set(request_id, { deferred, name });\n return deferred.promise;\n }\n \n private async sendRequestForSecret(name: string, request_id: string, log: ILogItem): Promise {\n const content = {\n action: \"request\",\n name,\n request_id,\n requesting_device_id: this.deviceTracker.ownDeviceId,\n }\n let devices = await this.deviceTracker.devicesForUsers([this.ourUserId], this.hsApi, log);\n devices = devices.filter(d => d.device_id !== this.deviceTracker.ownDeviceId);\n const messages = await log.wrap(\"olm encrypt\", log => this.olmEncryption.encrypt(\n EVENT_TYPE.REQUEST, content, devices, this.hsApi, log));\n const payload = formatToDeviceMessagesPayload(messages);\n await this.hsApi.sendToDevice(\"m.room.encrypted\", payload, makeTxnId(), {log}).response();\n } \n\n setSecretFetcher(secretFetcher: SecretFetcher): void {\n this.secretFetcher = secretFetcher;\n }\n}\n\nclass SecretRequest {\n constructor(private receivedSecretPromise: Promise) {\n }\n\n /**\n * Wait for any of your device to respond to this secret request.\n * If you're going to await this method, make sure you do that within a try catch block.\n * @param timeout The max time (in seconds) that we will wait, after which the promise rejects\n */\n async waitForResponse(timeout: number = 30): Promise {\n const timeoutPromise: Promise = new Promise((_, reject) => {\n setTimeout(reject, timeout * 1000);\n });\n const response = await Promise.race([this.receivedSecretPromise, timeoutPromise]);\n return response.event.content.secret;\n }\n}\n\n\n/**\n * The idea is to encrypt the secret with AES before persisting to storage.\n * The AES key is also in storage so this isn't really that much more secure.\n * But it's a tiny bit better than storing the secret in plaintext.\n */\n// todo: We could also encrypt the access-token using AES like element does\nclass AESEncryption {\n private key: JsonWebKey;\n private iv: Uint8Array;\n\n constructor(private storage: Storage, private crypto: Crypto, private encoding: Encoding) { };\n\n async load(): Promise {\n const storageKey = `${SESSION_E2EE_KEY_PREFIX}localAESKey`;\n // 1. Check if we're already storing the AES key\n const txn = await this.storage.readTxn([StoreNames.session]);\n let { key, iv } = await txn.session.get(storageKey) ?? {};\n\n // 2. If no key, create it and store in session store\n if (!key) {\n /**\n * Element creates the key as \"non-extractable\", meaning that it cannot\n * be exported through the crypto DOM API. But since it's going\n * to end up in indexeddb anyway, it really doesn't matter.\n */\n key = await this.crypto.aes.generateKey(\"jwk\");\n iv = await this.crypto.aes.generateIV();\n const txn = await this.storage.readWriteTxn([StoreNames.session]);\n txn.session.set(storageKey, { key, iv });\n }\n\n // 3. Set props\n this.key = key;\n this.iv = iv;\n }\n\n async encrypt(secret: string): Promise {\n const data = this.encoding.utf8.encode(secret);\n const encrypted = await this.crypto.aes.encryptCTR({\n jwkKey: this.key,\n iv: this.iv,\n data,\n });\n return encrypted;\n }\n\n async decrypt(ciphertext: Uint8Array): Promise {\n const buffer = await this.crypto.aes.decryptCTR({\n jwkKey: this.key,\n iv: this.iv,\n data: ciphertext,\n });\n const secret = this.encoding.utf8.decode(buffer);\n return secret;\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nimport type {Key} from \"./common\";\nimport type {Platform} from \"../../platform/web/Platform.js\";\nimport type {Transaction} from \"../storage/idb/Transaction\";\nimport type {Storage} from \"../storage/idb/Storage\";\nimport type {AccountDataEntry} from \"../storage/idb/stores/AccountDataStore\";\n\ntype EncryptedData = {\n iv: string;\n ciphertext: string;\n mac: string;\n}\n\nexport enum DecryptionFailure {\n NotEncryptedWithKey,\n BadMAC,\n UnsupportedAlgorithm,\n}\n\nclass DecryptionError extends Error {\n constructor(msg: string, public readonly reason: DecryptionFailure) {\n super(msg);\n }\n}\n\nexport class SecretStorage {\n private readonly _key: Key;\n private readonly _platform: Platform;\n private readonly _storage: Storage;\n\n constructor({key, platform, storage}: {key: Key, platform: Platform, storage: Storage}) {\n this._key = key;\n this._platform = platform;\n this._storage = storage;\n }\n\n /** this method will auto-commit any indexeddb transaction because of its use of the webcrypto api */\n async hasValidKeyForAnyAccountData() {\n const txn = await this._storage.readTxn([\n this._storage.storeNames.accountData,\n ]);\n const allAccountData = await txn.accountData.getAll();\n for (const accountData of allAccountData) {\n try {\n const secret = await this._decryptAccountData(accountData);\n return true; // decryption succeeded\n } catch (err) {\n if (err instanceof DecryptionError && err.reason !== DecryptionFailure.NotEncryptedWithKey) {\n throw err;\n } else {\n continue;\n }\n }\n }\n return false;\n }\n\n /** this method will auto-commit any indexeddb transaction because of its use of the webcrypto api */\n async readSecret(name: string): Promise {\n const txn = await this._storage.readTxn([\n this._storage.storeNames.accountData,\n ]);\n const accountData = await txn.accountData.get(name);\n if (!accountData) {\n return;\n }\n return await this._decryptAccountData(accountData);\n }\n\n async _decryptAccountData(accountData: AccountDataEntry): Promise {\n const encryptedData = accountData?.content?.encrypted?.[this._key.id] as EncryptedData;\n if (!encryptedData) {\n throw new DecryptionError(`Secret ${accountData.type} is not encrypted for key ${this._key.id}`, DecryptionFailure.NotEncryptedWithKey);\n }\n\n if (this._key.algorithm === \"m.secret_storage.v1.aes-hmac-sha2\") {\n return await this._decryptAESSecret(accountData.type, encryptedData);\n } else {\n throw new DecryptionError(`Unsupported algorithm for key ${this._key.id}: ${this._key.algorithm}`, DecryptionFailure.UnsupportedAlgorithm);\n }\n }\n\n async _decryptAESSecret(type: string, encryptedData: EncryptedData): Promise {\n const {base64, utf8} = this._platform.encoding;\n // now derive the aes and mac key from the 4s key\n const hkdfKey = await this._platform.crypto.derive.hkdf(\n this._key.binaryKey,\n new Uint8Array(8).buffer, //zero salt\n utf8.encode(type), // info\n \"SHA-256\",\n 512 // 512 bits or 64 bytes\n );\n const aesKey = hkdfKey.slice(0, 32);\n const hmacKey = hkdfKey.slice(32);\n const ciphertextBytes = base64.decode(encryptedData.ciphertext);\n\n const isVerified = await this._platform.crypto.hmac.verify(\n hmacKey, base64.decode(encryptedData.mac),\n ciphertextBytes, \"SHA-256\");\n\n if (!isVerified) {\n throw new DecryptionError(\"Bad MAC\", DecryptionFailure.BadMAC);\n }\n\n const plaintextBytes = await this._platform.crypto.aes.decryptCTR({\n key: aesKey,\n iv: base64.decode(encryptedData.iv),\n data: ciphertextBytes\n });\n\n return utf8.decode(plaintextBytes);\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {KeyDescription, Key} from \"./common\";\nimport {keyFromPassphrase} from \"./passphrase\";\nimport {keyFromRecoveryKey} from \"./recoveryKey\";\nimport {SESSION_E2EE_KEY_PREFIX} from \"../e2ee/common\";\nimport type {Storage} from \"../storage/idb/Storage\";\nimport type {Transaction} from \"../storage/idb/Transaction\";\nimport type {KeyDescriptionData} from \"./common\";\nimport type {Platform} from \"../../platform/web/Platform.js\";\nimport type * as OlmNamespace from \"@matrix-org/olm\"\n\n// Add exports for other classes\nexport {SecretFetcher} from \"./SecretFetcher\";\nexport {SecretSharing} from \"./SecretSharing\";\nexport {SecretStorage} from \"./SecretStorage\";\n\ntype Olm = typeof OlmNamespace;\n\nconst SSSS_KEY = `${SESSION_E2EE_KEY_PREFIX}ssssKey`;\nconst BACKUPVERSION_KEY = `${SESSION_E2EE_KEY_PREFIX}keyBackupVersion`;\n\nexport enum KeyType {\n \"RecoveryKey\",\n \"Passphrase\"\n}\n\nasync function readDefaultKeyDescription(storage: Storage): Promise {\n const txn = await storage.readTxn([\n storage.storeNames.accountData\n ]);\n const defaultKeyEvent = await txn.accountData.get(\"m.secret_storage.default_key\");\n const id = defaultKeyEvent?.content?.key;\n if (!id) {\n return;\n }\n const keyAccountData = await txn.accountData.get(`m.secret_storage.key.${id}`);\n if (!keyAccountData) {\n return;\n }\n return new KeyDescription(id, keyAccountData.content as KeyDescriptionData);\n}\n\nexport async function writeKey(key: Key, keyBackupVersion: number, txn: Transaction): Promise {\n const existingVersion: number | undefined = await txn.session.get(BACKUPVERSION_KEY);\n txn.session.set(BACKUPVERSION_KEY, keyBackupVersion);\n txn.session.set(SSSS_KEY, {id: key.id, binaryKey: key.binaryKey});\n return existingVersion;\n}\n\nexport async function readKey(txn: Transaction): Promise {\n const keyData = await txn.session.get(SSSS_KEY);\n if (!keyData) {\n return;\n }\n const keyAccountData = await txn.accountData.get(`m.secret_storage.key.${keyData.id}`);\n if (keyAccountData) {\n return new Key(new KeyDescription(keyData.id, keyAccountData.content as KeyDescriptionData), keyData.binaryKey);\n }\n}\n\n\nexport async function removeKey(txn: Transaction): Promise {\n txn.session.remove(SSSS_KEY);\n}\n\nexport async function keyFromCredential(type: KeyType, credential: string, storage: Storage, platform: Platform, olm: Olm): Promise {\n const keyDescription = await readDefaultKeyDescription(storage);\n if (!keyDescription) {\n throw new Error(\"Could not find a default secret storage key in account data\");\n }\n return await keyFromCredentialAndDescription(type, credential, keyDescription, platform, olm);\n}\n\nexport async function keyFromCredentialAndDescription(type: KeyType, credential: string, keyDescription: KeyDescription, platform: Platform, olm: Olm): Promise {\n let key: Key;\n if (type === KeyType.Passphrase) {\n key = await keyFromPassphrase(keyDescription, credential, platform);\n } else if (type === KeyType.RecoveryKey) {\n key = keyFromRecoveryKey(keyDescription, credential, olm, platform);\n } else {\n throw new Error(`Invalid type: ${type}`);\n }\n return key;\n}\n\nexport async function keyFromDehydratedDeviceKey(key: Key, storage: Storage, platform: Platform): Promise {\n const keyDescription = await readDefaultKeyDescription(storage);\n if (await keyDescription?.isCompatible(key, platform)) {\n return key.withDescription(keyDescription!);\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nconst DEHYDRATION_LIBOLM_PICKLE_ALGORITHM = \"org.matrix.msc2697.v1.olm.libolm_pickle\"; \nimport {KeyDescription} from \"../ssss/common\";\nimport {keyFromCredentialAndDescription} from \"../ssss/index\";\n\nexport async function getDehydratedDevice(hsApi, olm, platform, log) {\n try {\n const response = await hsApi.getDehydratedDevice({log}).response();\n if (response.device_data.algorithm === DEHYDRATION_LIBOLM_PICKLE_ALGORITHM) {\n return new EncryptedDehydratedDevice(response, olm, platform);\n }\n } catch (err) {\n if (err.name !== \"HomeServerError\") {\n log.error = err;\n }\n return undefined;\n }\n}\n\nexport async function uploadAccountAsDehydratedDevice(account, hsApi, key, deviceDisplayName, log) {\n const response = await hsApi.createDehydratedDevice({\n device_data: {\n algorithm: DEHYDRATION_LIBOLM_PICKLE_ALGORITHM,\n account: account.pickleWithKey(key.binaryKey.slice()),\n passphrase: key.description?.passphraseParams || {},\n },\n initial_device_display_name: deviceDisplayName\n }).response();\n const deviceId = response.device_id;\n account.setDeviceId(deviceId);\n await account.uploadKeys(undefined, true, log);\n return deviceId;\n}\n\nclass EncryptedDehydratedDevice {\n constructor(dehydratedDevice, olm, platform) {\n this._dehydratedDevice = dehydratedDevice;\n this._olm = olm;\n this._platform = platform;\n }\n\n async decrypt(keyType, credential) {\n const keyDescription = new KeyDescription(\"dehydrated_device\", this._dehydratedDevice.device_data.passphrase);\n const key = await keyFromCredentialAndDescription(keyType, credential, keyDescription, this._platform, this._olm);\n const account = new this._olm.Account();\n try {\n const pickledAccount = this._dehydratedDevice.device_data.account;\n account.unpickle(key.binaryKey.slice(), pickledAccount);\n return new DehydratedDevice(this._dehydratedDevice, account, key);\n } catch (err) {\n account.free();\n if (err.message === \"OLM.BAD_ACCOUNT_KEY\") {\n return undefined;\n } else {\n throw err;\n }\n }\n }\n\n get deviceId() {\n return this._dehydratedDevice.device_id;\n }\n}\n\nclass DehydratedDevice {\n constructor(dehydratedDevice, account, key) {\n this._dehydratedDevice = dehydratedDevice;\n this._account = account;\n this._key = key;\n }\n\n async claim(hsApi, log) {\n try {\n const response = await hsApi.claimDehydratedDevice(this.deviceId, {log}).response();\n return response.success;\n } catch (err) {\n return false;\n }\n }\n\n // make it clear that ownership is transfered upon calling this\n adoptUnpickledOlmAccount() {\n const account = this._account;\n this._account = undefined;\n return account;\n }\n\n get deviceId() {\n return this._dehydratedDevice.device_id;\n }\n\n get key() {\n return this._key;\n }\n\n dispose() {\n this._account?.free();\n this._account = undefined;\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexport interface ILock {\n release(): void;\n}\n\nexport class Lock implements ILock {\n private _promise?: Promise;\n private _resolve?: (() => void);\n\n tryTake(): boolean {\n if (!this._promise) {\n this._promise = new Promise(resolve => {\n this._resolve = resolve;\n });\n return true;\n }\n return false;\n }\n\n async take(): Promise {\n while(!this.tryTake()) {\n await this.released();\n }\n }\n\n get isTaken(): boolean {\n return !!this._promise;\n }\n\n release(): void {\n if (this._resolve) {\n this._promise = undefined;\n const resolve = this._resolve;\n this._resolve = undefined;\n resolve();\n }\n }\n\n released(): Promise | undefined {\n return this._promise;\n }\n}\n\nexport class MultiLock implements ILock {\n\n constructor(public readonly locks: Lock[]) {\n }\n\n release(): void {\n for (const lock of this.locks) {\n lock.release();\n }\n }\n}\n\nexport function tests() {\n return {\n \"taking a lock twice returns false\": assert => {\n const lock = new Lock();\n assert.equal(lock.tryTake(), true);\n assert.equal(lock.isTaken, true);\n assert.equal(lock.tryTake(), false);\n },\n \"can take a released lock again\": assert => {\n const lock = new Lock();\n lock.tryTake();\n lock.release();\n assert.equal(lock.isTaken, false);\n assert.equal(lock.tryTake(), true);\n },\n \"2 waiting for lock, only first one gets it\": async assert => {\n const lock = new Lock();\n lock.tryTake();\n\n let first;\n lock.released()!.then(() => first = lock.tryTake());\n let second;\n lock.released()!.then(() => second = lock.tryTake());\n const promise = lock.released();\n lock.release();\n await promise;\n assert.strictEqual(first, true);\n assert.strictEqual(second, false);\n },\n \"await non-taken lock\": async assert => {\n const lock = new Lock();\n await lock.released();\n assert(true);\n }\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport type {OlmSessionEntry} from \"../../storage/idb/stores/OlmSessionStore\";\nimport type * as OlmNamespace from \"@matrix-org/olm\";\ntype Olm = typeof OlmNamespace;\n\nexport function createSessionEntry(olmSession: Olm.Session, senderKey: string, timestamp: number, pickleKey: string): OlmSessionEntry {\n return {\n session: olmSession.pickle(pickleKey),\n sessionId: olmSession.session_id(),\n senderKey,\n lastUsed: timestamp,\n };\n}\n\nexport class Session {\n public isModified: boolean;\n\n constructor(\n public readonly data: OlmSessionEntry,\n private readonly pickleKey: string,\n private readonly olm: Olm,\n public isNew: boolean = false\n ) {\n this.isModified = isNew;\n }\n\n static create(senderKey: string, olmSession: Olm.Session, olm: Olm, pickleKey: string, timestamp: number): Session {\n const data = createSessionEntry(olmSession, senderKey, timestamp, pickleKey);\n return new Session(data, pickleKey, olm, true);\n }\n\n get id(): string {\n return this.data.sessionId;\n }\n\n load(): Olm.Session {\n const session = new this.olm.Session();\n session.unpickle(this.pickleKey, this.data.session);\n return session;\n }\n\n unload(olmSession: Olm.Session): void {\n olmSession.free();\n }\n\n save(olmSession: Olm.Session): void {\n this.data.session = olmSession.pickle(this.pickleKey);\n this.isModified = true;\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n\n/**\n * @property {object} event the plaintext event (type and content property)\n * @property {string} senderCurve25519Key the curve25519 sender key of the olm event\n * @property {string} claimedEd25519Key The ed25519 fingerprint key retrieved from the decryption payload.\n * The sender of the olm event claims this is the ed25519 fingerprint key\n * that matches the curve25519 sender key.\n * The caller needs to check if this key does indeed match the senderKey\n * for a device with a valid signature returned from /keys/query,\n * see DeviceTracker\n */\n\nimport {getDeviceEd25519Key} from \"./common\";\nimport type {DeviceKey} from \"./common\";\nimport type {TimelineEvent} from \"../storage/types\";\n\ntype DecryptedEvent = {\n type?: string,\n content?: Record\n}\n\nexport class DecryptionResult {\n public device?: DeviceKey;\n\n constructor(\n public readonly event: DecryptedEvent,\n public readonly senderCurve25519Key: string,\n public readonly claimedEd25519Key: string,\n public readonly encryptedEvent?: TimelineEvent\n ) {}\n\n setDevice(device: DeviceKey): void {\n this.device = device;\n }\n\n get isVerified(): boolean {\n if (this.device) {\n const comesFromDevice = getDeviceEd25519Key(this.device) === this.claimedEd25519Key;\n return comesFromDevice;\n }\n return false;\n }\n\n get isUnverified(): boolean {\n if (this.device) {\n return !this.isVerified;\n } else {\n return true;\n }\n }\n\n get userId(): string | undefined {\n return this.device?.user_id;\n }\n\n get deviceId(): string | undefined {\n return this.device?.device_id;\n }\n\n get isVerificationUnknown(): boolean {\n return !this.device;\n }\n}\n","/*\nCopyright 2022 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport type {OLM_ALGORITHM} from \"../common\";\n\nexport const enum OlmPayloadType {\n PreKey = 0,\n Normal = 1\n}\n\nexport type OlmMessage = {\n type?: OlmPayloadType,\n body?: string\n}\n\nexport type OlmEncryptedMessageContent = {\n algorithm?: typeof OLM_ALGORITHM\n sender_key?: string,\n ciphertext?: {\n [deviceCurve25519Key: string]: OlmMessage\n }\n}\n\nexport type OlmEncryptedEvent = {\n type?: \"m.room.encrypted\",\n content?: OlmEncryptedMessageContent\n sender?: string\n}\n\nexport type OlmPayload = {\n type?: string;\n content?: Record;\n sender?: string;\n recipient?: string;\n recipient_keys?: {ed25519?: string};\n keys?: {ed25519?: string};\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {DecryptionError} from \"../common\";\nimport {groupBy} from \"../../../utils/groupBy\";\nimport {MultiLock, ILock} from \"../../../utils/Lock\";\nimport {Session} from \"./Session\";\nimport {DecryptionResult} from \"../DecryptionResult\";\nimport {OlmPayloadType} from \"./types\";\n\nimport type {OlmMessage, OlmPayload} from \"./types\";\nimport type {Account} from \"../Account\";\nimport type {LockMap} from \"../../../utils/LockMap\";\nimport type {Transaction} from \"../../storage/idb/Transaction\";\nimport type {OlmEncryptedEvent} from \"./types\";\nimport type * as OlmNamespace from \"@matrix-org/olm\";\ntype Olm = typeof OlmNamespace;\n\nconst SESSION_LIMIT_PER_SENDER_KEY = 4;\n\ntype DecryptionResults = {\n results: DecryptionResult[],\n errors: DecryptionError[],\n senderKeyDecryption: SenderKeyDecryption\n};\n\ntype CreateAndDecryptResult = {\n session: Session,\n plaintext: string\n};\n\nfunction sortSessions(sessions: Session[]): void {\n sessions.sort((a, b) => {\n return b.data.lastUsed - a.data.lastUsed;\n });\n}\n\nexport class Decryption {\n constructor(\n private readonly account: Account,\n private readonly pickleKey: string,\n private readonly now: () => number,\n private readonly ownUserId: string,\n private readonly olm: Olm,\n private readonly senderKeyLock: LockMap\n ) {}\n \n // we need to lock because both encryption and decryption can't be done in one txn,\n // so for them not to step on each other toes, we need to lock.\n // \n // the lock is release from 1 of 3 places, whichever comes first:\n // - decryptAll below fails (to release the lock as early as we can)\n // - DecryptionChanges.write succeeds\n // - Sync finishes the writeSync phase (or an error was thrown, in case we never get to DecryptionChanges.write) \n async obtainDecryptionLock(events: OlmEncryptedEvent[]): Promise {\n const senderKeys = new Set();\n for (const event of events) {\n const senderKey = event.content?.[\"sender_key\"];\n if (senderKey) {\n senderKeys.add(senderKey);\n }\n }\n // take a lock on all senderKeys so encryption or other calls to decryptAll (should not happen)\n // don't modify the sessions at the same time\n const locks = await Promise.all(Array.from(senderKeys).map(senderKey => {\n return this.senderKeyLock.takeLock(senderKey);\n }));\n return new MultiLock(locks);\n }\n\n // we need decryptAll because there is some parallelization we can do for decrypting different sender keys at once\n // but for the same sender key we need to do one by one\n // \n // also we want to store the room key, etc ... in the same txn as we remove the pending encrypted event\n // \n // so we need to decrypt events in a batch (so we can decide which ones can run in parallel and which one one by one)\n // and also can avoid side-effects before all can be stored this way\n // \n // doing it one by one would be possible, but we would lose the opportunity for parallelization\n // \n \n /**\n * It is importants the lock obtained from obtainDecryptionLock is for the same set of events as passed in here.\n * [decryptAll description]\n * @param {[type]} events\n * @return {Promise} [description]\n */\n async decryptAll(events: OlmEncryptedEvent[], lock: ILock, txn: Transaction): Promise {\n try {\n const eventsPerSenderKey = groupBy(events, (event: OlmEncryptedEvent) => event.content?.[\"sender_key\"]);\n const timestamp = this.now();\n // decrypt events for different sender keys in parallel\n const senderKeyOperations = await Promise.all(Array.from(eventsPerSenderKey.entries()).map(([senderKey, events]) => {\n return this._decryptAllForSenderKey(senderKey!, events, timestamp, txn);\n }));\n const results = senderKeyOperations.reduce((all, r) => all.concat(r.results), [] as DecryptionResult[]);\n const errors = senderKeyOperations.reduce((all, r) => all.concat(r.errors), [] as DecryptionError[]);\n const senderKeyDecryptions = senderKeyOperations.map(r => r.senderKeyDecryption);\n return new DecryptionChanges(senderKeyDecryptions, results, errors, this.account, lock);\n } catch (err) {\n // make sure the locks are release if something throws\n // otherwise they will be released in DecryptionChanges after having written\n // or after the writeSync phase in Sync\n lock.release();\n throw err;\n }\n }\n\n async _decryptAllForSenderKey(senderKey: string, events: OlmEncryptedEvent[], timestamp: number, readSessionsTxn: Transaction): Promise {\n const sessions = await this._getSessions(senderKey, readSessionsTxn);\n const senderKeyDecryption = new SenderKeyDecryption(senderKey, sessions, timestamp);\n const results: DecryptionResult[] = [];\n const errors: DecryptionError[] = [];\n // events for a single senderKey need to be decrypted one by one\n for (const event of events) {\n try {\n const result = this._decryptForSenderKey(senderKeyDecryption, event, timestamp);\n results.push(result);\n } catch (err) {\n errors.push(err);\n }\n }\n return {results, errors, senderKeyDecryption};\n }\n\n _decryptForSenderKey(senderKeyDecryption: SenderKeyDecryption, event: OlmEncryptedEvent, timestamp: number): DecryptionResult {\n const senderKey = senderKeyDecryption.senderKey;\n const message = this._getMessageAndValidateEvent(event);\n let plaintext: string | undefined;\n try {\n plaintext = senderKeyDecryption.decrypt(message);\n } catch (err) {\n // TODO: is it ok that an error on one session prevents other sessions from being attempted?\n throw new DecryptionError(\"OLM_BAD_ENCRYPTED_MESSAGE\", event, {senderKey, error: err.message});\n }\n // could not decrypt with any existing session\n if (typeof plaintext !== \"string\" && message.type === OlmPayloadType.PreKey) {\n let createResult: CreateAndDecryptResult;\n try {\n createResult = this._createSessionAndDecrypt(senderKey, message, timestamp);\n } catch (error) {\n throw new DecryptionError(`Could not create inbound olm session: ${error.message}`, event, {senderKey, error});\n }\n senderKeyDecryption.addNewSession(createResult.session);\n plaintext = createResult.plaintext;\n }\n if (typeof plaintext === \"string\") {\n let payload: OlmPayload;\n try {\n payload = JSON.parse(plaintext);\n } catch (error) {\n throw new DecryptionError(\"PLAINTEXT_NOT_JSON\", event, {plaintext, error});\n }\n this._validatePayload(payload, event);\n return new DecryptionResult(payload, senderKey, payload.keys!.ed25519!);\n } else {\n throw new DecryptionError(\"OLM_NO_MATCHING_SESSION\", event,\n {knownSessionIds: senderKeyDecryption.sessions.map(s => s.id)});\n }\n }\n\n // only for pre-key messages after having attempted decryption with existing sessions\n _createSessionAndDecrypt(senderKey: string, message: OlmMessage, timestamp: number): CreateAndDecryptResult {\n let plaintext;\n // if we have multiple messages encrypted with the same new session,\n // this could create multiple sessions as the OTK isn't removed yet\n // (this only happens in DecryptionChanges.write)\n // This should be ok though as we'll first try to decrypt with the new session\n const olmSession = this.account.createInboundOlmSession(senderKey, message.body);\n try {\n plaintext = olmSession.decrypt(message.type, message.body);\n const session = Session.create(senderKey, olmSession, this.olm, this.pickleKey, timestamp);\n session.unload(olmSession);\n return {session, plaintext};\n } catch (err) {\n olmSession.free();\n throw err;\n }\n }\n\n _getMessageAndValidateEvent(event: OlmEncryptedEvent): OlmMessage {\n const ciphertext = event.content?.ciphertext;\n if (!ciphertext) {\n throw new DecryptionError(\"OLM_MISSING_CIPHERTEXT\", event);\n }\n const message = ciphertext?.[this.account.identityKeys.curve25519];\n if (!message) {\n throw new DecryptionError(\"OLM_NOT_INCLUDED_IN_RECIPIENTS\", event);\n }\n\n return message;\n }\n\n async _getSessions(senderKey: string, txn: Transaction): Promise {\n const sessionEntries = await txn.olmSessions.getAll(senderKey);\n // sort most recent used sessions first\n const sessions = sessionEntries.map(s => new Session(s, this.pickleKey, this.olm));\n sortSessions(sessions);\n return sessions;\n }\n\n _validatePayload(payload: OlmPayload, event: OlmEncryptedEvent): void {\n if (payload.sender !== event.sender) {\n throw new DecryptionError(\"OLM_FORWARDED_MESSAGE\", event, {sentBy: event.sender, encryptedBy: payload.sender});\n }\n if (payload.recipient !== this.ownUserId) {\n throw new DecryptionError(\"OLM_BAD_RECIPIENT\", event, {recipient: payload.recipient});\n }\n if (payload.recipient_keys?.ed25519 !== this.account.identityKeys.ed25519) {\n throw new DecryptionError(\"OLM_BAD_RECIPIENT_KEY\", event, {key: payload.recipient_keys?.ed25519});\n }\n // TODO: check room_id\n if (!payload.type) {\n throw new DecryptionError(\"missing type on payload\", event, {payload});\n }\n if (typeof payload.keys?.ed25519 !== \"string\") {\n throw new DecryptionError(\"Missing or invalid claimed ed25519 key on payload\", event, {payload});\n }\n }\n}\n\n// decryption helper for a single senderKey\nclass SenderKeyDecryption {\n constructor(\n public readonly senderKey: string,\n public readonly sessions: Session[],\n private readonly timestamp: number\n ) {}\n\n addNewSession(session: Session): void {\n // add at top as it is most recent\n this.sessions.unshift(session);\n }\n\n decrypt(message: OlmMessage): string | undefined {\n for (const session of this.sessions) {\n const plaintext = this.decryptWithSession(session, message);\n if (typeof plaintext === \"string\") {\n // keep them sorted so will try the same session first for other messages\n // and so we can assume the excess ones are at the end\n // if they grow too large\n sortSessions(this.sessions);\n return plaintext;\n }\n }\n }\n\n getModifiedSessions(): Session[] {\n return this.sessions.filter(session => session.isModified);\n }\n\n get hasNewSessions(): boolean {\n return this.sessions.some(session => session.isNew);\n }\n\n // this could internally dispatch to a web-worker\n // and is why we unpickle/pickle on each iteration\n // if this turns out to be a real cost for IE11,\n // we could look into adding a less expensive serialization mechanism\n // for olm sessions to libolm\n private decryptWithSession(session: Session, message: OlmMessage): string | undefined {\n if (message.type === undefined || message.body === undefined) {\n throw new Error(\"Invalid message without type or body\");\n }\n const olmSession = session.load();\n try {\n if (message.type === OlmPayloadType.PreKey && !olmSession.matches_inbound(message.body)) {\n return;\n }\n try {\n const plaintext = olmSession.decrypt(message.type as number, message.body!);\n session.save(olmSession);\n session.data.lastUsed = this.timestamp;\n return plaintext;\n } catch (err) {\n if (message.type === OlmPayloadType.PreKey) {\n throw new Error(`Error decrypting prekey message with existing session id ${session.id}: ${err.message}`);\n }\n // decryption failed, bail out\n return;\n }\n } finally {\n session.unload(olmSession);\n }\n }\n}\n\n/**\n * @property {Array} results\n * @property {Array} errors see DecryptionError.event to retrieve the event that failed to decrypt.\n */\nclass DecryptionChanges {\n constructor(\n private readonly senderKeyDecryptions: SenderKeyDecryption[],\n public readonly results: DecryptionResult[],\n public readonly errors: DecryptionError[],\n private readonly account: Account,\n private readonly lock: ILock\n ) {}\n\n get hasNewSessions(): boolean {\n return this.senderKeyDecryptions.some(skd => skd.hasNewSessions);\n }\n\n write(txn: Transaction): void {\n try {\n for (const senderKeyDecryption of this.senderKeyDecryptions) {\n for (const session of senderKeyDecryption.getModifiedSessions()) {\n txn.olmSessions.set(session.data);\n if (session.isNew) {\n const olmSession = session.load();\n try {\n this.account.writeRemoveOneTimeKey(olmSession, txn);\n } finally {\n session.unload(olmSession);\n }\n }\n }\n if (senderKeyDecryption.sessions.length > SESSION_LIMIT_PER_SENDER_KEY) {\n const {senderKey, sessions} = senderKeyDecryption;\n // >= because index is zero-based\n for (let i = sessions.length - 1; i >= SESSION_LIMIT_PER_SENDER_KEY ; i -= 1) {\n const session = sessions[i];\n txn.olmSessions.remove(senderKey, session.id);\n }\n }\n }\n } finally {\n this.lock.release();\n }\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {groupByWithCreator} from \"../../../utils/groupBy\";\nimport {verifyEd25519Signature, OLM_ALGORITHM, getDeviceCurve25519Key, getDeviceEd25519Key, SignatureVerification} from \"../common\";\nimport {createSessionEntry} from \"./Session\";\n\nimport type {OlmMessage, OlmPayload, OlmEncryptedMessageContent} from \"./types\";\nimport type {Account} from \"../Account\";\nimport type {LockMap} from \"../../../utils/LockMap\";\nimport {Lock, MultiLock, ILock} from \"../../../utils/Lock\";\nimport type {Storage} from \"../../storage/idb/Storage\";\nimport type {Transaction} from \"../../storage/idb/Transaction\";\nimport type {DeviceKey} from \"../common\";\nimport type {HomeServerApi} from \"../../net/HomeServerApi\";\nimport type {ILogItem} from \"../../../logging/types\";\nimport type * as OlmNamespace from \"@matrix-org/olm\";\ntype Olm = typeof OlmNamespace;\n\ntype ClaimedOTKResponse = {\n [userId: string]: {\n [deviceId: string]: {\n [algorithmAndOtk: string]: {\n key: string,\n signatures: {\n [userId: string]: {\n [algorithmAndDevice: string]: string\n }\n }\n }\n }\n }\n};\n\nfunction findFirstSessionId(sessionIds) {\n return sessionIds.reduce((first, sessionId) => {\n if (!first || sessionId < first) {\n return sessionId;\n } else {\n return first;\n }\n }, null);\n}\n\nconst OTK_ALGORITHM = \"signed_curve25519\";\n// only encrypt this amount of olm messages at once otherwise we run out of wasm memory\n// with all the sessions loaded at the same time\n// See https://github.com/vector-im/hydrogen-web/issues/150 as well, which indicates the limit is 44,\n// but let's take a conservative limit as the megolm session cache also takes space\nconst MAX_BATCH_SIZE = 20;\n\nexport class Encryption {\n \n private _batchLocks: Array;\n\n constructor(\n private readonly account: Account,\n private readonly pickleKey: string,\n private readonly olm: Olm,\n private readonly storage: Storage,\n private readonly now: () => number,\n private readonly ownUserId: string,\n private readonly olmUtil: Olm.Utility,\n private readonly senderKeyLock: LockMap\n ) {\n this._batchLocks = new Array(MAX_BATCH_SIZE);\n for (let i = 0; i < MAX_BATCH_SIZE; i += 1) {\n this._batchLocks[i] = new Lock();\n }\n }\n\n /** A hack to prevent olm OOMing when `encrypt` is called several times concurrently,\n * which is the case when encrypting voip signalling message to send over to_device.\n * A better fix will be to extract the common bits from megolm/KeyLoader in a super class\n * and have some sort of olm/SessionLoader that is shared between encryption and decryption\n * and only keeps the olm session in wasm memory for a brief moment, like we already do for RoomKeys,\n * and get the benefit of an optimal cache at the same time.\n * */\n private async _takeBatchLock(amount: number): Promise {\n const locks = this._batchLocks.filter(l => !l.isTaken).slice(0, amount);\n if (locks.length < amount) {\n const takenLocks = this._batchLocks.filter(l => l.isTaken).slice(0, amount - locks.length);\n locks.push(...takenLocks);\n }\n await Promise.all(locks.map(l => l.take()));\n return new MultiLock(locks);\n }\n\n async encrypt(type: string, content: Record, devices: DeviceKey[], hsApi: HomeServerApi, log: ILogItem): Promise {\n let messages: EncryptedMessage[] = [];\n for (let i = 0; i < devices.length ; i += MAX_BATCH_SIZE) {\n const batchDevices = devices.slice(i, i + MAX_BATCH_SIZE);\n const batchLock = await this._takeBatchLock(batchDevices.length);\n try {\n const batchMessages = await this._encryptForMaxDevices(type, content, batchDevices, hsApi, log);\n messages = messages.concat(batchMessages);\n }\n finally {\n batchLock.release();\n }\n }\n return messages;\n }\n\n async _encryptForMaxDevices(type: string, content: Record, devices: DeviceKey[], hsApi: HomeServerApi, log: ILogItem): Promise {\n // TODO: see if we can only hold some of the locks until after the /keys/claim call (if needed) \n // take a lock on all senderKeys so decryption and other calls to encrypt (should not happen)\n // don't modify the sessions at the same time\n const locks = await Promise.all(devices.map(device => {\n return this.senderKeyLock.takeLock(getDeviceCurve25519Key(device));\n }));\n try {\n const {\n devicesWithoutSession,\n existingEncryptionTargets,\n } = await this._findExistingSessions(devices);\n \n const timestamp = this.now(); \n\n let encryptionTargets: EncryptionTarget[] = [];\n try {\n if (devicesWithoutSession.length) {\n const newEncryptionTargets = await log.wrap(\"create sessions\", log => this._createNewSessions(\n devicesWithoutSession, hsApi, timestamp, log));\n encryptionTargets = encryptionTargets.concat(newEncryptionTargets);\n }\n await this._loadSessions(existingEncryptionTargets);\n encryptionTargets = encryptionTargets.concat(existingEncryptionTargets);\n const encryptLog = {l: \"encrypt\", targets: encryptionTargets.length};\n const messages = log.wrap(encryptLog, () => encryptionTargets.map(target => {\n const encryptedContent = this._encryptForDevice(type, content, target);\n return new EncryptedMessage(encryptedContent, target.device);\n }));\n await this._storeSessions(encryptionTargets, timestamp);\n return messages;\n } finally {\n for (const target of encryptionTargets) {\n target.dispose();\n }\n }\n } finally {\n for (const lock of locks) {\n lock.release();\n }\n }\n }\n\n async _findExistingSessions(devices: DeviceKey[]): Promise<{devicesWithoutSession: DeviceKey[], existingEncryptionTargets: EncryptionTarget[]}> {\n const txn = await this.storage.readTxn([this.storage.storeNames.olmSessions]);\n const sessionIdsForDevice = await Promise.all(devices.map(async device => {\n return await txn.olmSessions.getSessionIds(getDeviceCurve25519Key(device));\n }));\n const devicesWithoutSession = devices.filter((_, i) => {\n const sessionIds = sessionIdsForDevice[i];\n return !(sessionIds?.length);\n });\n\n const existingEncryptionTargets = devices.map((device, i) => {\n const sessionIds = sessionIdsForDevice[i];\n if (sessionIds?.length > 0) {\n const sessionId = findFirstSessionId(sessionIds);\n return EncryptionTarget.fromSessionId(device, sessionId);\n }\n }).filter(target => !!target) as EncryptionTarget[];\n\n return {devicesWithoutSession, existingEncryptionTargets};\n }\n\n _encryptForDevice(type: string, content: Record, target: EncryptionTarget): OlmEncryptedMessageContent {\n const {session, device} = target;\n const plaintext = JSON.stringify(this._buildPlainTextMessageForDevice(type, content, device));\n const message = session!.encrypt(plaintext);\n const encryptedContent = {\n algorithm: OLM_ALGORITHM as typeof OLM_ALGORITHM,\n sender_key: this.account.identityKeys.curve25519,\n ciphertext: {\n [getDeviceCurve25519Key(device)]: message\n }\n };\n return encryptedContent;\n }\n\n _buildPlainTextMessageForDevice(type: string, content: Record, device: DeviceKey): OlmPayload {\n return {\n keys: {\n \"ed25519\": this.account.identityKeys.ed25519\n },\n recipient_keys: {\n \"ed25519\": getDeviceEd25519Key(device)\n },\n recipient: device.user_id,\n sender: this.ownUserId,\n content,\n type\n }\n }\n\n async _createNewSessions(devicesWithoutSession: DeviceKey[], hsApi: HomeServerApi, timestamp: number, log: ILogItem): Promise {\n const newEncryptionTargets = await log.wrap(\"claim\", log => this._claimOneTimeKeys(hsApi, devicesWithoutSession, log));\n try {\n for (const target of newEncryptionTargets) {\n const {device, oneTimeKey} = target;\n target.session = await this.account.createOutboundOlmSession(getDeviceCurve25519Key(device), oneTimeKey);\n }\n await this._storeSessions(newEncryptionTargets, timestamp);\n } catch (err) {\n for (const target of newEncryptionTargets) {\n target.dispose();\n }\n throw err;\n }\n return newEncryptionTargets;\n }\n\n async _claimOneTimeKeys(hsApi: HomeServerApi, deviceIdentities: DeviceKey[], log: ILogItem): Promise {\n // create a Map>\n const devicesByUser = groupByWithCreator(deviceIdentities,\n (device: DeviceKey) => device.user_id,\n (): Map => new Map(),\n (deviceMap: Map, device: DeviceKey) => deviceMap.set(device.device_id, device)\n );\n const oneTimeKeys = Array.from(devicesByUser.entries()).reduce((usersObj, [userId, deviceMap]) => {\n usersObj[userId] = Array.from(deviceMap.values()).reduce((devicesObj, device) => {\n devicesObj[device.device_id] = OTK_ALGORITHM;\n return devicesObj;\n }, {});\n return usersObj;\n }, {});\n const claimResponse = await hsApi.claimKeys({\n timeout: 10000,\n one_time_keys: oneTimeKeys\n }, {log}).response();\n if (Object.keys(claimResponse.failures).length) {\n log.log({l: \"failures\", servers: Object.keys(claimResponse.failures)}, log.level.Warn);\n }\n const userKeyMap = claimResponse?.[\"one_time_keys\"] as ClaimedOTKResponse;\n return this._verifyAndCreateOTKTargets(userKeyMap, devicesByUser, log);\n }\n\n _verifyAndCreateOTKTargets(userKeyMap: ClaimedOTKResponse, devicesByUser: Map>, log: ILogItem): EncryptionTarget[] {\n const verifiedEncryptionTargets: EncryptionTarget[] = [];\n for (const [userId, userSection] of Object.entries(userKeyMap)) {\n for (const [deviceId, deviceSection] of Object.entries(userSection)) {\n const [firstPropName, keySection] = Object.entries(deviceSection)[0];\n const [keyAlgorithm] = firstPropName.split(\":\");\n if (keyAlgorithm === OTK_ALGORITHM) {\n const device = devicesByUser.get(userId)?.get(deviceId);\n if (device) {\n const isValidSignature = verifyEd25519Signature(\n this.olmUtil, userId, deviceId, getDeviceEd25519Key(device), keySection, log) === SignatureVerification.Valid;\n if (isValidSignature) {\n const target = EncryptionTarget.fromOTK(device, keySection.key);\n verifiedEncryptionTargets.push(target);\n }\n }\n }\n } \n }\n return verifiedEncryptionTargets;\n }\n\n async _loadSessions(encryptionTargets: EncryptionTarget[]): Promise {\n const txn = await this.storage.readTxn([this.storage.storeNames.olmSessions]);\n // given we run loading in parallel, there might still be some\n // storage requests that will finish later once one has failed.\n // those should not allocate a session anymore.\n let failed = false;\n try {\n await Promise.all(encryptionTargets.map(async encryptionTarget => {\n const sessionEntry = await txn.olmSessions.get(\n getDeviceCurve25519Key(encryptionTarget.device), encryptionTarget.sessionId!);\n if (sessionEntry && !failed) {\n const olmSession = new this.olm.Session();\n olmSession.unpickle(this.pickleKey, sessionEntry.session);\n encryptionTarget.session = olmSession;\n }\n }));\n } catch (err) {\n failed = true;\n // clean up the sessions that did load\n for (const target of encryptionTargets) {\n target.dispose();\n }\n throw err;\n }\n }\n\n async _storeSessions(encryptionTargets: EncryptionTarget[], timestamp: number): Promise {\n const txn = await this.storage.readWriteTxn([this.storage.storeNames.olmSessions]);\n try {\n for (const target of encryptionTargets) {\n const sessionEntry = createSessionEntry(\n target.session!, getDeviceCurve25519Key(target.device), timestamp, this.pickleKey);\n txn.olmSessions.set(sessionEntry);\n }\n } catch (err) {\n txn.abort();\n throw err;\n }\n await txn.complete();\n }\n}\n\n// just a container needed to encrypt a message for a recipient device\n// it is constructed with either a oneTimeKey\n// (and later converted to a session) in case of a new session\n// or an existing session\nclass EncryptionTarget {\n \n public session: Olm.Session | null = null;\n\n constructor(\n public readonly device: DeviceKey, \n public readonly oneTimeKey: string | null,\n public readonly sessionId: string | null\n ) {}\n\n static fromOTK(device: DeviceKey, oneTimeKey: string): EncryptionTarget {\n return new EncryptionTarget(device, oneTimeKey, null);\n }\n\n static fromSessionId(device: DeviceKey, sessionId: string): EncryptionTarget {\n return new EncryptionTarget(device, null, sessionId);\n }\n\n dispose(): void {\n if (this.session) {\n this.session.free();\n }\n }\n}\n\nexport class EncryptedMessage {\n constructor(\n public readonly content: OlmEncryptedMessageContent,\n public readonly device: DeviceKey\n ) {}\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {DecryptionError} from \"../../common\";\n\nexport class DecryptionChanges {\n constructor(roomId, results, errors, replayEntries) {\n this._roomId = roomId;\n this._results = results;\n this._errors = errors;\n this._replayEntries = replayEntries;\n }\n\n /**\n * @type MegolmBatchDecryptionResult\n * @property {Map} results a map of event id to decryption result\n * @property {Map} errors event id -> errors\n * \n * Handle replay attack detection, and return result\n * @param {[type]} txn [description]\n * @return {MegolmBatchDecryptionResult}\n */\n async write(txn) {\n await Promise.all(this._replayEntries.map(async replayEntry => {\n try {\n this._handleReplayAttack(this._roomId, replayEntry, txn);\n } catch (err) {\n this._errors.set(replayEntry.eventId, err);\n }\n }));\n return {\n results: this._results,\n errors: this._errors\n };\n }\n\n // need to handle replay attack because\n // if we redecrypted the same message twice and showed it again\n // then it could be a malicious server admin replaying the word “yes”\n // to make you respond to a msg you didn’t say “yes” to, or something\n async _handleReplayAttack(roomId, replayEntry, txn) {\n const {messageIndex, sessionId, eventId, timestamp} = replayEntry;\n const decryption = await txn.groupSessionDecryptions.get(roomId, sessionId, messageIndex);\n\n if (decryption && decryption.eventId !== eventId) {\n // the one with the newest timestamp should be the attack\n const decryptedEventIsBad = decryption.timestamp < timestamp;\n const badEventId = decryptedEventIsBad ? eventId : decryption.eventId;\n // discard result\n this._results.delete(eventId);\n\n throw new DecryptionError(\"MEGOLM_REPLAYED_INDEX\", event, {\n messageIndex,\n badEventId,\n otherEventId: decryption.eventId\n });\n }\n\n if (!decryption) {\n txn.groupSessionDecryptions.set(roomId, sessionId, messageIndex, {\n eventId,\n timestamp\n });\n }\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexport function mergeMap(src: Map | undefined, dst: Map): void {\n if (src) {\n for (const [key, value] of src.entries()) {\n dst.set(key, value);\n }\n }\n}\n\nexport function tests() {\n return {\n \"mergeMap with src\": assert => {\n const src = new Map();\n src.set(1, \"a\");\n const dst = new Map();\n dst.set(2, \"b\");\n mergeMap(src, dst);\n assert.equal(dst.get(1), \"a\");\n assert.equal(dst.get(2), \"b\");\n assert.equal(src.get(2), null);\n },\n \"mergeMap without src doesn't fail\": () => {\n mergeMap(undefined, new Map());\n }\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {DecryptionChanges} from \"./DecryptionChanges.js\";\nimport {mergeMap} from \"../../../../utils/mergeMap\";\n\n/**\n * Class that contains all the state loaded from storage to decrypt the given events\n */\nexport class DecryptionPreparation {\n constructor(roomId, sessionDecryptions, errors) {\n this._roomId = roomId;\n this._sessionDecryptions = sessionDecryptions;\n this._initialErrors = errors;\n }\n\n async decrypt() {\n try {\n const errors = this._initialErrors;\n const results = new Map();\n const replayEntries = [];\n await Promise.all(this._sessionDecryptions.map(async sessionDecryption => {\n const sessionResult = await sessionDecryption.decryptAll();\n mergeMap(sessionResult.errors, errors);\n mergeMap(sessionResult.results, results);\n replayEntries.push(...sessionResult.replayEntries);\n }));\n return new DecryptionChanges(this._roomId, results, errors, replayEntries);\n } finally {\n this.dispose();\n }\n }\n\n dispose() {\n for (const sd of this._sessionDecryptions) {\n sd.dispose();\n }\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport type {TimelineEvent} from \"../../../storage/types\";\n\nexport class ReplayDetectionEntry {\n public readonly sessionId: string;\n public readonly messageIndex: number;\n public readonly event: TimelineEvent;\n\n constructor(sessionId: string, messageIndex: number, event: TimelineEvent) {\n this.sessionId = sessionId;\n this.messageIndex = messageIndex;\n this.event = event;\n }\n\n get eventId(): string {\n return this.event.event_id;\n }\n\n get timestamp(): number {\n return this.event.origin_server_ts;\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {DecryptionResult} from \"../../DecryptionResult\";\nimport {DecryptionError} from \"../../common\";\nimport {ReplayDetectionEntry} from \"./ReplayDetectionEntry\";\nimport type {RoomKey} from \"./RoomKey\";\nimport type {KeyLoader, OlmDecryptionResult} from \"./KeyLoader\";\nimport type {OlmWorker} from \"../../OlmWorker\";\nimport type {TimelineEvent} from \"../../../storage/types\";\n\ninterface DecryptAllResult {\n readonly results: Map;\n readonly errors?: Map;\n readonly replayEntries: ReplayDetectionEntry[];\n}\n/**\n * Does the actual decryption of all events for a given megolm session in a batch\n */\nexport class SessionDecryption {\n private decryptionRequests?: any[];\n\n constructor(\n private readonly key: RoomKey,\n private readonly events: TimelineEvent[],\n private readonly olmWorker: OlmWorker | undefined,\n private readonly keyLoader: KeyLoader\n ) {\n this.decryptionRequests = olmWorker ? [] : undefined;\n }\n\n async decryptAll(): Promise {\n const replayEntries: ReplayDetectionEntry[] = [];\n const results: Map = new Map();\n let errors: Map | undefined;\n\n await this.keyLoader.useKey(this.key, async session => {\n for (const event of this.events) {\n try {\n const ciphertext = event.content.ciphertext as string;\n let decryptionResult: OlmDecryptionResult | undefined;\n // TODO: pass all cipthertexts in one go to the megolm worker and don't deserialize the key until in the worker?\n if (this.olmWorker) {\n const request = this.olmWorker.megolmDecrypt(session, ciphertext);\n this.decryptionRequests!.push(request);\n decryptionResult = await request.response();\n } else {\n // the return type of Olm.InboundGroupSession::decrypt is likely wrong, message_index is a number and not a string AFAIK\n // getting it fixed upstream but fixing it like this for now.\n decryptionResult = session.decrypt(ciphertext) as unknown as OlmDecryptionResult;\n }\n const {plaintext} = decryptionResult!;\n let payload;\n try {\n payload = JSON.parse(plaintext);\n } catch (err) {\n throw new DecryptionError(\"PLAINTEXT_NOT_JSON\", event, {plaintext, err});\n }\n if (payload.room_id !== this.key.roomId) {\n throw new DecryptionError(\"MEGOLM_WRONG_ROOM\", event,\n {encryptedRoomId: payload.room_id, eventRoomId: this.key.roomId});\n }\n replayEntries.push(new ReplayDetectionEntry(this.key.sessionId, decryptionResult!.message_index, event));\n const result = new DecryptionResult(payload, this.key.senderKey, this.key.claimedEd25519Key, event);\n results.set(event.event_id, result);\n } catch (err) {\n // ignore AbortError from cancelling decryption requests in dispose method\n if (err.name === \"AbortError\") {\n return;\n }\n if (!errors) {\n errors = new Map();\n }\n errors.set(event.event_id, err);\n }\n }\n });\n\n return {results, errors, replayEntries};\n }\n\n dispose() {\n if (this.decryptionRequests) {\n for (const r of this.decryptionRequests) {\n r.abort();\n }\n }\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {groupByWithCreator} from \"../../../../utils/groupBy\";\nimport type {TimelineEvent} from \"../../../storage/types\";\n\nfunction getSenderKey(event: TimelineEvent): string | undefined {\n return event.content?.[\"sender_key\"];\n}\n\nfunction getSessionId(event: TimelineEvent): string | undefined {\n return event.content?.[\"session_id\"];\n}\n\nfunction getCiphertext(event: TimelineEvent): string | undefined {\n return event.content?.ciphertext;\n}\n\nexport function validateEvent(event: TimelineEvent) {\n return typeof getSenderKey(event) === \"string\" &&\n typeof getSessionId(event) === \"string\" &&\n typeof getCiphertext(event) === \"string\";\n}\n\nexport class SessionKeyGroup {\n public readonly events: TimelineEvent[];\n constructor() {\n this.events = [];\n }\n\n get senderKey(): string | undefined {\n return getSenderKey(this.events[0]!);\n }\n\n get sessionId(): string | undefined {\n return getSessionId(this.events[0]!);\n }\n}\n\nexport function groupEventsBySession(events: TimelineEvent[]): Map {\n return groupByWithCreator(events,\n (event: TimelineEvent) => `${getSenderKey(event)}|${getSessionId(event)}`,\n () => new SessionKeyGroup(),\n (group: SessionKeyGroup, event: TimelineEvent) => group.events.push(event)\n );\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {BackupStatus, KeySource} from \"../../../storage/idb/stores/InboundGroupSessionStore\";\nimport type {InboundGroupSessionEntry} from \"../../../storage/idb/stores/InboundGroupSessionStore\";\nimport type {Transaction} from \"../../../storage/idb/Transaction\";\nimport type {DecryptionResult} from \"../../DecryptionResult\";\nimport type {KeyLoader} from \"./KeyLoader\";\nimport type * as OlmNamespace from \"@matrix-org/olm\";\ntype Olm = typeof OlmNamespace;\n\nexport abstract class RoomKey {\n private _isBetter: boolean | undefined;\n\n isForSession(roomId: string, senderKey: string, sessionId: string) {\n return this.roomId === roomId && this.senderKey === senderKey && this.sessionId === sessionId;\n }\n\n abstract get roomId(): string;\n abstract get senderKey(): string;\n abstract get sessionId(): string;\n abstract get claimedEd25519Key(): string;\n abstract get serializationKey(): string;\n abstract get serializationType(): string;\n abstract get eventIds(): string[] | undefined;\n abstract loadInto(session: Olm.InboundGroupSession, pickleKey: string): void;\n /* Whether the key has been checked against storage (or is from storage)\n * to be the better key for a given session. Given that all keys are checked to be better\n * as part of writing, we can trust that when this returns true, it really is the best key\n * available between storage and cached keys in memory. This is why keys with this field set to\n * true are used by the key loader to return cached keys. Also see KeyOperation.isBest there. */\n get isBetter(): boolean | undefined { return this._isBetter; }\n // should only be set in key.checkBetterThanKeyInStorage\n set isBetter(value: boolean | undefined) { this._isBetter = value; }\n}\n\nexport function isBetterThan(newSession: Olm.InboundGroupSession, existingSession: Olm.InboundGroupSession) {\n return newSession.first_known_index() < existingSession.first_known_index();\n}\n\nexport abstract class IncomingRoomKey extends RoomKey {\n private _eventIds?: string[];\n \n checkBetterThanKeyInStorage(loader: KeyLoader, txn: Transaction): Promise {\n return this._checkBetterThanKeyInStorage(loader, undefined, txn);\n }\n\n async write(loader: KeyLoader, txn: Transaction): Promise {\n // we checked already and we had a better session in storage, so don't write\n let pickledSession: string | undefined;\n if (this.isBetter === undefined) {\n // if this key wasn't used to decrypt any messages in the same sync,\n // we haven't checked if this is the best key yet,\n // so do that now to not overwrite a better key.\n // while we have the key deserialized, also pickle it to store it later on here.\n await this._checkBetterThanKeyInStorage(loader, (session, pickleKey) => {\n pickledSession = session.pickle(pickleKey);\n }, txn);\n }\n if (this.isBetter === false) {\n return false;\n }\n // before calling write in parallel, we need to check loader.running is false so we are sure our transaction will not be closed\n if (!pickledSession) {\n pickledSession = await loader.useKey(this, (session, pickleKey) => session.pickle(pickleKey));\n }\n const sessionEntry = {\n roomId: this.roomId,\n senderKey: this.senderKey,\n sessionId: this.sessionId,\n session: pickledSession,\n backup: this.backupStatus,\n source: this.keySource,\n claimedKeys: {\"ed25519\": this.claimedEd25519Key},\n };\n txn.inboundGroupSessions.set(sessionEntry);\n return true;\n }\n\n get eventIds() { return this._eventIds; }\n\n private async _checkBetterThanKeyInStorage(loader: KeyLoader, callback: (((session: Olm.InboundGroupSession, pickleKey: string) => void) | undefined), txn: Transaction): Promise {\n if (this.isBetter !== undefined) {\n return this.isBetter;\n }\n let existingKey = loader.getCachedKey(this.roomId, this.senderKey, this.sessionId);\n if (!existingKey) {\n const storageKey = await keyFromStorage(this.roomId, this.senderKey, this.sessionId, txn);\n // store the event ids that can be decrypted with this key\n // before we overwrite them if called from `write`.\n if (storageKey) {\n if (storageKey.hasSession) {\n existingKey = storageKey;\n } else if (storageKey.eventIds) {\n this._eventIds = storageKey.eventIds;\n }\n }\n }\n if (existingKey) {\n const key = existingKey;\n await loader.useKey(this, async newSession => {\n await loader.useKey(key, (existingSession, pickleKey) => {\n // set isBetter as soon as possible, on both keys compared, \n // as it is is used to determine whether a key can be used for the cache\n this.isBetter = isBetterThan(newSession, existingSession);\n key.isBetter = !this.isBetter;\n if (this.isBetter && callback) {\n callback(newSession, pickleKey);\n }\n });\n });\n } else {\n // no previous key, so we're the best \\o/\n this.isBetter = true;\n }\n return this.isBetter!;\n }\n\n protected get backupStatus(): BackupStatus {\n return BackupStatus.NotBackedUp;\n }\n\n protected abstract get keySource(): KeySource;\n}\n\nclass DeviceMessageRoomKey extends IncomingRoomKey {\n private _decryptionResult: DecryptionResult;\n\n constructor(decryptionResult: DecryptionResult) {\n super();\n this._decryptionResult = decryptionResult;\n }\n\n get roomId() { return this._decryptionResult.event.content?.[\"room_id\"]; }\n get senderKey() { return this._decryptionResult.senderCurve25519Key; }\n get sessionId() { return this._decryptionResult.event.content?.[\"session_id\"]; }\n get claimedEd25519Key() { return this._decryptionResult.claimedEd25519Key; }\n get serializationKey(): string { return this._decryptionResult.event.content?.[\"session_key\"]; }\n get serializationType(): string { return \"create\"; }\n protected get keySource(): KeySource { return KeySource.DeviceMessage; }\n\n loadInto(session) {\n session.create(this.serializationKey);\n }\n}\n\n// a room key we send out ourselves,\n// here adapted to write it as an incoming key\n// as we don't send it to ourself with a to_device msg\nexport class OutboundRoomKey extends IncomingRoomKey {\n private _sessionKey: string;\n\n constructor(\n private readonly _roomId: string,\n private readonly outboundSession: Olm.OutboundGroupSession,\n private readonly identityKeys: {[algo: string]: string}\n ) {\n super();\n // this is a new key, so always better than what might be in storage, no need to check\n this.isBetter = true;\n // cache this, as it is used by key loader to find a matching key and\n // this calls into WASM so is not just reading a prop\n this._sessionKey = this.outboundSession.session_key();\n }\n\n get roomId(): string { return this._roomId; }\n get senderKey(): string { return this.identityKeys.curve25519; }\n get sessionId(): string { return this.outboundSession.session_id(); }\n get claimedEd25519Key(): string { return this.identityKeys.ed25519; }\n get serializationKey(): string { return this._sessionKey; }\n get serializationType(): string { return \"create\"; }\n protected get keySource(): KeySource { return KeySource.Outbound; }\n\n loadInto(session: Olm.InboundGroupSession) {\n session.create(this.serializationKey);\n }\n}\n\nclass BackupRoomKey extends IncomingRoomKey {\n constructor(private _roomId: string, private _sessionId: string, private _backupInfo: object) {\n super();\n }\n\n get roomId() { return this._roomId; }\n get senderKey() { return this._backupInfo[\"sender_key\"]; }\n get sessionId() { return this._sessionId; }\n get claimedEd25519Key() { return this._backupInfo[\"sender_claimed_keys\"]?.[\"ed25519\"]; }\n get serializationKey(): string { return this._backupInfo[\"session_key\"]; }\n get serializationType(): string { return \"import_session\"; }\n protected get keySource(): KeySource { return KeySource.Backup; }\n\n loadInto(session) {\n session.import_session(this.serializationKey);\n }\n\n protected get backupStatus(): BackupStatus {\n return BackupStatus.BackedUp;\n }\n}\n\nexport class StoredRoomKey extends RoomKey {\n private storageEntry: InboundGroupSessionEntry;\n\n constructor(storageEntry: InboundGroupSessionEntry) {\n super();\n this.isBetter = true; // usually the key in storage is the best until checks prove otherwise\n this.storageEntry = storageEntry;\n }\n\n get roomId() { return this.storageEntry.roomId; }\n get senderKey() { return this.storageEntry.senderKey; }\n get sessionId() { return this.storageEntry.sessionId; }\n get claimedEd25519Key() { return this.storageEntry.claimedKeys![\"ed25519\"]; }\n get eventIds() { return this.storageEntry.eventIds; }\n get serializationKey(): string { return this.storageEntry.session || \"\"; }\n get serializationType(): string { return \"unpickle\"; }\n \n loadInto(session, pickleKey) {\n session.unpickle(pickleKey, this.serializationKey);\n }\n\n get hasSession() {\n // sessions are stored before they are received\n // to keep track of events that need it to be decrypted.\n // This is used to retry decryption of those events once the session is received.\n return !!this.serializationKey;\n }\n}\n\nexport function keyFromDeviceMessage(dr: DecryptionResult): DeviceMessageRoomKey | undefined {\n const sessionKey = dr.event.content?.[\"session_key\"];\n const key = new DeviceMessageRoomKey(dr);\n if (\n typeof key.roomId === \"string\" && \n typeof key.sessionId === \"string\" && \n typeof key.senderKey === \"string\" &&\n typeof sessionKey === \"string\"\n ) {\n return key;\n }\n}\n\n/*\nsessionInfo is a response from key backup and has the following keys:\n algorithm\n forwarding_curve25519_key_chain\n sender_claimed_keys\n sender_key\n session_key\n */\nexport function keyFromBackup(roomId, sessionId, backupInfo): BackupRoomKey | undefined {\n const sessionKey = backupInfo[\"session_key\"];\n const senderKey = backupInfo[\"sender_key\"];\n // TODO: can we just trust this?\n const claimedEd25519Key = backupInfo[\"sender_claimed_keys\"]?.[\"ed25519\"];\n\n if (\n typeof roomId === \"string\" && \n typeof sessionId === \"string\" && \n typeof senderKey === \"string\" &&\n typeof sessionKey === \"string\" &&\n typeof claimedEd25519Key === \"string\"\n ) {\n return new BackupRoomKey(roomId, sessionId, backupInfo);\n }\n}\n\nexport async function keyFromStorage(roomId: string, senderKey: string, sessionId: string, txn: Transaction): Promise {\n const existingSessionEntry = await txn.inboundGroupSessions.get(roomId, senderKey, sessionId);\n if (existingSessionEntry) {\n return new StoredRoomKey(existingSessionEntry);\n }\n return;\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {DecryptionPreparation} from \"./decryption/DecryptionPreparation.js\";\nimport {SessionDecryption} from \"./decryption/SessionDecryption\";\nimport {DecryptionError, MEGOLM_ALGORITHM} from \"../common\";\nimport {validateEvent, groupEventsBySession} from \"./decryption/utils\";\nimport {keyFromStorage, keyFromDeviceMessage, keyFromBackup} from \"./decryption/RoomKey\";\nimport type {RoomKey, IncomingRoomKey} from \"./decryption/RoomKey\";\nimport type {KeyLoader} from \"./decryption/KeyLoader\";\nimport type {OlmWorker} from \"../OlmWorker\";\nimport type {Transaction} from \"../../storage/idb/Transaction\";\nimport type {TimelineEvent} from \"../../storage/types\";\nimport type {DecryptionResult} from \"../DecryptionResult\";\nimport type {ILogItem} from \"../../../logging/types\";\n\nexport class Decryption {\n private keyLoader: KeyLoader;\n private olmWorker?: OlmWorker;\n\n constructor(keyLoader: KeyLoader, olmWorker: OlmWorker | undefined) {\n this.keyLoader = keyLoader;\n this.olmWorker = olmWorker;\n }\n\n async addMissingKeyEventIds(roomId, senderKey, sessionId, eventIds, txn) {\n let sessionEntry = await txn.inboundGroupSessions.get(roomId, senderKey, sessionId);\n // we never want to overwrite an existing key\n if (sessionEntry?.session) {\n return;\n }\n if (sessionEntry) {\n const uniqueEventIds = new Set(sessionEntry.eventIds);\n for (const id of eventIds) {\n uniqueEventIds.add(id);\n }\n sessionEntry.eventIds = Array.from(uniqueEventIds);\n } else {\n sessionEntry = {roomId, senderKey, sessionId, eventIds};\n }\n txn.inboundGroupSessions.set(sessionEntry);\n }\n\n async getEventIdsForMissingKey(roomId, senderKey, sessionId, txn) {\n const sessionEntry = await txn.inboundGroupSessions.get(roomId, senderKey, sessionId);\n if (sessionEntry && !sessionEntry.session) {\n return sessionEntry.eventIds;\n }\n }\n\n async hasSession(roomId, senderKey, sessionId, txn) {\n const sessionEntry = await txn.inboundGroupSessions.get(roomId, senderKey, sessionId);\n const isValidSession = typeof sessionEntry?.session === \"string\";\n return isValidSession;\n }\n\n /**\n * Reads all the state from storage to be able to decrypt the given events.\n * Decryption can then happen outside of a storage transaction.\n * @param {[type]} roomId [description]\n * @param {[type]} events [description]\n * @param {RoomKey[]?} newKeys keys as returned from extractRoomKeys, but not yet committed to storage. May be undefined.\n * @param {[type]} sessionCache [description]\n * @param {[type]} txn [description]\n * @return {DecryptionPreparation}\n */\n async prepareDecryptAll(roomId: string, events: TimelineEvent[], newKeys: IncomingRoomKey[] | undefined, txn: Transaction) {\n const errors = new Map();\n const validEvents: TimelineEvent[] = [];\n\n for (const event of events) {\n if (validateEvent(event)) {\n validEvents.push(event);\n } else {\n errors.set(event.event_id, new DecryptionError(\"MEGOLM_INVALID_EVENT\", event))\n }\n }\n\n const eventsBySession = groupEventsBySession(validEvents);\n\n const sessionDecryptions: SessionDecryption[] = [];\n await Promise.all(Array.from(eventsBySession.values()).map(async group => {\n const key = await this.getRoomKey(roomId, group.senderKey!, group.sessionId!, newKeys, txn);\n if (key) {\n sessionDecryptions.push(new SessionDecryption(key, group.events, this.olmWorker, this.keyLoader));\n } else {\n for (const event of group.events) {\n errors.set(event.event_id, new DecryptionError(\"MEGOLM_NO_SESSION\", event));\n }\n }\n }));\n\n return new DecryptionPreparation(roomId, sessionDecryptions, errors);\n }\n\n private async getRoomKey(roomId: string, senderKey: string, sessionId: string, newKeys: IncomingRoomKey[] | undefined, txn: Transaction): Promise {\n if (newKeys) {\n const key = newKeys.find(k => k.isForSession(roomId, senderKey, sessionId));\n if (key && await key.checkBetterThanKeyInStorage(this.keyLoader, txn)) {\n return key;\n }\n }\n // look only in the cache after looking into newKeys as it may contains that are better\n const cachedKey = this.keyLoader.getCachedKey(roomId, senderKey, sessionId);\n if (cachedKey) {\n return cachedKey;\n }\n const storageKey = await keyFromStorage(roomId, senderKey, sessionId, txn);\n if (storageKey && storageKey.serializationKey) {\n return storageKey;\n }\n }\n\n /**\n * Writes the key as an inbound group session if there is not already a better key in the store\n */\n writeRoomKey(key: IncomingRoomKey, txn: Transaction): Promise {\n return key.write(this.keyLoader, txn);\n }\n\n /**\n * Extracts room keys from decrypted device messages.\n * The key won't be persisted yet, you need to call RoomKey.write for that.\n */\n roomKeysFromDeviceMessages(decryptionResults: DecryptionResult[], log: ILogItem): IncomingRoomKey[] {\n const keys: IncomingRoomKey[] = [];\n for (const dr of decryptionResults) {\n if (dr.event?.type !== \"m.room_key\" || dr.event.content?.algorithm !== MEGOLM_ALGORITHM) {\n continue;\n }\n log.wrap(\"room_key\", log => {\n const key = keyFromDeviceMessage(dr);\n if (key) {\n log.set(\"roomId\", key.roomId);\n log.set(\"id\", key.sessionId);\n keys.push(key);\n } else {\n log.logLevel = log.level.Warn;\n log.set(\"invalid\", true);\n }\n }, log.level.Detail);\n }\n return keys;\n }\n\n roomKeyFromBackup(roomId: string, sessionId: string, sessionInfo: string): IncomingRoomKey | undefined {\n return keyFromBackup(roomId, sessionId, sessionInfo);\n }\n\n dispose() {\n this.keyLoader.dispose();\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {isBetterThan, IncomingRoomKey} from \"./RoomKey\";\nimport {BaseLRUCache} from \"../../../../utils/LRUCache\";\nimport type {RoomKey} from \"./RoomKey\";\nimport type * as OlmNamespace from \"@matrix-org/olm\";\ntype Olm = typeof OlmNamespace;\n\nexport declare class OlmDecryptionResult {\n readonly plaintext: string;\n readonly message_index: number;\n}\n\n/*\nBecause Olm only has very limited memory available when compiled to wasm,\nwe limit the amount of sessions held in memory.\n*/\nexport class KeyLoader extends BaseLRUCache {\n\n private pickleKey: string;\n private olm: Olm;\n private resolveUnusedOperation?: () => void;\n private operationBecomesUnusedPromise?: Promise;\n\n constructor(olm: Olm, pickleKey: string, limit: number) {\n super(limit);\n this.pickleKey = pickleKey;\n this.olm = olm;\n }\n\n getCachedKey(roomId: string, senderKey: string, sessionId: string): RoomKey | undefined {\n const idx = this.findCachedKeyIndex(roomId, senderKey, sessionId);\n if (idx !== -1) {\n return this._getByIndexAndMoveUp(idx)!.key;\n }\n }\n\n async useKey(key: RoomKey, callback: (session: Olm.InboundGroupSession, pickleKey: string) => Promise | T): Promise {\n const keyOp = await this.allocateOperation(key);\n try {\n return await callback(keyOp.session, this.pickleKey);\n } finally {\n this.releaseOperation(keyOp);\n }\n }\n\n get running() {\n return this._entries.some(op => op.refCount !== 0);\n }\n\n dispose() {\n for (let i = 0; i < this._entries.length; i += 1) {\n this._entries[i].dispose();\n }\n // remove all entries\n this._entries.splice(0, this._entries.length);\n }\n\n private async allocateOperation(key: RoomKey): Promise {\n let idx;\n while((idx = this.findIndexForAllocation(key)) === -1) {\n await this.operationBecomesUnused();\n }\n if (idx < this.size) {\n const op = this._getByIndexAndMoveUp(idx)!;\n // cache hit\n if (op.isForKey(key)) {\n op.refCount += 1;\n return op;\n } else {\n // refCount should be 0 here\n op.refCount = 1;\n op.key = key;\n key.loadInto(op.session, this.pickleKey);\n }\n return op;\n } else {\n // create new operation\n const session = new this.olm.InboundGroupSession();\n key.loadInto(session, this.pickleKey);\n const op = new KeyOperation(key, session);\n this._set(op);\n return op;\n }\n }\n\n private releaseOperation(op: KeyOperation) {\n op.refCount -= 1;\n if (op.refCount <= 0 && this.resolveUnusedOperation) {\n this.resolveUnusedOperation();\n // promise is resolved now, we'll need a new one for next await so clear\n this.operationBecomesUnusedPromise = this.resolveUnusedOperation = undefined;\n }\n }\n\n private operationBecomesUnused(): Promise {\n if (!this.operationBecomesUnusedPromise) {\n this.operationBecomesUnusedPromise = new Promise(resolve => {\n this.resolveUnusedOperation = resolve;\n });\n }\n return this.operationBecomesUnusedPromise;\n }\n\n private findIndexForAllocation(key: RoomKey) {\n let idx = this.findIndexSameKey(key); // cache hit\n if (idx === -1) {\n if (this.size < this.limit) {\n idx = this.size;\n } else {\n idx = this.findIndexSameSessionUnused(key);\n if (idx === -1) {\n idx = this.findIndexOldestUnused();\n }\n }\n }\n return idx;\n }\n\n private findCachedKeyIndex(roomId: string, senderKey: string, sessionId: string): number {\n return this._entries.reduce((bestIdx, op, i, arr) => {\n const bestOp = bestIdx === -1 ? undefined : arr[bestIdx];\n // only operations that are the \"best\" for their session can be used, see comment on isBest\n if (op.isBest === true && op.isForSameSession(roomId, senderKey, sessionId)) {\n if (!bestOp || op.isBetter(bestOp)) {\n return i;\n }\n }\n return bestIdx;\n }, -1);\n }\n\n private findIndexSameKey(key: RoomKey): number {\n return this._entries.findIndex(op => {\n return op.isForSameSession(key.roomId, key.senderKey, key.sessionId) && op.isForKey(key);\n });\n }\n\n private findIndexSameSessionUnused(key: RoomKey): number {\n return this._entries.reduce((worstIdx, op, i, arr) => {\n const worst = worstIdx === -1 ? undefined : arr[worstIdx];\n // we try to pick the worst operation to overwrite, so the best one stays in the cache\n if (op.refCount === 0 && op.isForSameSession(key.roomId, key.senderKey, key.sessionId)) {\n if (!worst || !op.isBetter(worst)) {\n return i;\n }\n }\n return worstIdx;\n }, -1);\n }\n\n private findIndexOldestUnused(): number {\n for (let i = this._entries.length - 1; i >= 0; i -= 1) {\n const op = this._entries[i];\n if (op.refCount === 0) {\n return i;\n }\n }\n return -1;\n }\n}\n\nclass KeyOperation {\n session: Olm.InboundGroupSession;\n key: RoomKey;\n refCount: number;\n\n constructor(key: RoomKey, session: Olm.InboundGroupSession) {\n this.key = key;\n this.session = session;\n this.refCount = 1;\n }\n\n isForSameSession(roomId: string, senderKey: string, sessionId: string): boolean {\n return this.key.roomId === roomId && this.key.senderKey === senderKey && this.key.sessionId === sessionId;\n }\n\n // assumes isForSameSession is true\n isBetter(other: KeyOperation) {\n return isBetterThan(this.session, other.session);\n }\n\n isForKey(key: RoomKey) {\n return this.key.serializationKey === key.serializationKey &&\n this.key.serializationType === key.serializationType;\n }\n\n dispose() {\n this.session.free();\n this.session = undefined as any;\n }\n\n /** returns whether the key for this operation has been checked at some point against storage\n * and was determined to be the better key, undefined if it hasn't been checked yet.\n * Only keys that are the best keys can be returned by getCachedKey as returning a cache hit\n * will usually not check for a better session in storage. Also see RoomKey.isBetter. */\n get isBest(): boolean | undefined {\n return this.key.isBetter;\n }\n}\n\nimport {KeySource} from \"../../../storage/idb/stores/InboundGroupSessionStore\";\n\n\nexport function tests() {\n let instances = 0;\n\n class MockRoomKey extends IncomingRoomKey {\n private _roomId: string;\n private _senderKey: string;\n private _sessionId: string;\n private _firstKnownIndex: number;\n\n constructor(roomId: string, senderKey: string, sessionId: string, firstKnownIndex: number) {\n super();\n this._roomId = roomId;\n this._senderKey = senderKey;\n this._sessionId = sessionId;\n this._firstKnownIndex = firstKnownIndex;\n }\n\n get roomId(): string { return this._roomId; }\n get senderKey(): string { return this._senderKey; }\n get sessionId(): string { return this._sessionId; }\n get claimedEd25519Key(): string { return \"claimedEd25519Key\"; }\n get serializationKey(): string { return `key-${this.sessionId}-${this._firstKnownIndex}`; }\n get serializationType(): string { return \"type\"; }\n get eventIds(): string[] | undefined { return undefined; }\n get keySource(): KeySource { return KeySource.DeviceMessage; }\n\n loadInto(session: Olm.InboundGroupSession) {\n const mockSession = session as unknown as MockInboundSession;\n mockSession.sessionId = this.sessionId;\n mockSession.firstKnownIndex = this._firstKnownIndex;\n }\n }\n\n class MockInboundSession {\n public sessionId: string = \"\";\n public firstKnownIndex: number = 0;\n\n constructor() {\n instances += 1;\n }\n\n free(): void { instances -= 1; }\n pickle(key: string | Uint8Array): string { return `${this.sessionId}-pickled-session`; }\n unpickle(key: string | Uint8Array, pickle: string) {}\n create(session_key: string): string { return `${this.sessionId}-created-session`; }\n import_session(session_key: string): string { return \"\"; }\n decrypt(message: string): OlmDecryptionResult { return {} as OlmDecryptionResult; }\n session_id(): string { return this.sessionId; }\n first_known_index(): number { return this.firstKnownIndex; }\n export_session(message_index: number): string { return `${this.sessionId}-exported-session`; }\n }\n\n const PICKLE_KEY = \"🥒🔑\";\n const olm = {InboundGroupSession: MockInboundSession};\n const roomId = \"!abc:hs.tld\";\n const aliceSenderKey = \"abc\";\n const bobSenderKey = \"def\";\n const sessionId1 = \"s123\";\n const sessionId2 = \"s456\";\n \n return {\n \"load key gives correct session\": async assert => {\n const loader = new KeyLoader(olm as any as Olm, PICKLE_KEY, 2);\n let callback1Called = false;\n let callback2Called = false;\n const p1 = loader.useKey(new MockRoomKey(roomId, aliceSenderKey, sessionId1, 1), async session => {\n callback1Called = true;\n assert.equal(session.session_id(), sessionId1);\n assert.equal(session.first_known_index(), 1);\n await Promise.resolve(); // make sure they are busy in parallel\n });\n const p2 = loader.useKey(new MockRoomKey(roomId, aliceSenderKey, sessionId2, 2), async session => {\n callback2Called = true;\n assert.equal(session.session_id(), sessionId2);\n assert.equal(session.first_known_index(), 2);\n await Promise.resolve(); // make sure they are busy in parallel\n });\n assert.equal(loader.size, 2);\n await Promise.all([p1, p2]);\n assert(callback1Called);\n assert(callback2Called);\n },\n \"keys with different first index are kept separate\": async assert => {\n const loader = new KeyLoader(olm as any as Olm, PICKLE_KEY, 2);\n let callback1Called = false;\n let callback2Called = false;\n const p1 = loader.useKey(new MockRoomKey(roomId, aliceSenderKey, sessionId1, 1), async session => {\n callback1Called = true;\n assert.equal(session.session_id(), sessionId1);\n assert.equal(session.first_known_index(), 1);\n await Promise.resolve(); // make sure they are busy in parallel\n });\n const p2 = loader.useKey(new MockRoomKey(roomId, aliceSenderKey, sessionId1, 2), async session => {\n callback2Called = true;\n assert.equal(session.session_id(), sessionId1);\n assert.equal(session.first_known_index(), 2);\n await Promise.resolve(); // make sure they are busy in parallel\n });\n assert.equal(loader.size, 2);\n await Promise.all([p1, p2]);\n assert(callback1Called);\n assert(callback2Called);\n },\n \"useKey blocks as long as no free sessions are available\": async assert => {\n const loader = new KeyLoader(olm as any as Olm, PICKLE_KEY, 1);\n let resolve;\n let callbackCalled = false;\n loader.useKey(new MockRoomKey(roomId, aliceSenderKey, sessionId1, 1), async session => {\n await new Promise(r => resolve = r);\n });\n await Promise.resolve();\n assert.equal(loader.size, 1);\n const promise = loader.useKey(new MockRoomKey(roomId, aliceSenderKey, sessionId2, 1), session => {\n callbackCalled = true;\n });\n assert.equal(callbackCalled, false);\n resolve();\n await promise;\n assert.equal(callbackCalled, true);\n },\n \"cache hit while key in use, then replace (check refCount works properly)\": async assert => {\n const loader = new KeyLoader(olm as any as Olm, PICKLE_KEY, 1);\n let resolve1, resolve2;\n const key1 = new MockRoomKey(roomId, aliceSenderKey, sessionId1, 1);\n const p1 = loader.useKey(key1, async session => {\n await new Promise(r => resolve1 = r);\n });\n const p2 = loader.useKey(key1, async session => {\n await new Promise(r => resolve2 = r);\n });\n await Promise.resolve();\n assert.equal(loader.size, 1);\n assert.equal(loader.running, true);\n resolve1();\n await p1;\n assert.equal(loader.running, true);\n resolve2();\n await p2;\n assert.equal(loader.running, false);\n let callbackCalled = false;\n await loader.useKey(new MockRoomKey(roomId, aliceSenderKey, sessionId2, 1), async session => {\n callbackCalled = true;\n assert.equal(session.session_id(), sessionId2);\n assert.equal(session.first_known_index(), 1);\n });\n assert.equal(loader.size, 1);\n assert.equal(callbackCalled, true);\n },\n \"cache hit while key not in use\": async assert => {\n const loader = new KeyLoader(olm as any as Olm, PICKLE_KEY, 2);\n let resolve1, resolve2, invocations = 0;\n const key1 = new MockRoomKey(roomId, aliceSenderKey, sessionId1, 1);\n await loader.useKey(key1, async session => { invocations += 1; });\n key1.isBetter = true;\n assert.equal(loader.size, 1);\n const cachedKey = loader.getCachedKey(roomId, aliceSenderKey, sessionId1)!;\n assert.equal(cachedKey, key1);\n await loader.useKey(cachedKey, async session => { invocations += 1; });\n assert.equal(loader.size, 1);\n assert.equal(invocations, 2);\n },\n \"dispose calls free on all sessions\": async assert => {\n instances = 0;\n const loader = new KeyLoader(olm as any as Olm, PICKLE_KEY, 2);\n await loader.useKey(new MockRoomKey(roomId, aliceSenderKey, sessionId1, 1), async session => {});\n await loader.useKey(new MockRoomKey(roomId, aliceSenderKey, sessionId2, 1), async session => {});\n assert.equal(instances, 2);\n assert.equal(loader.size, 2);\n loader.dispose();\n assert.strictEqual(instances, 0, \"instances\");\n assert.strictEqual(loader.size, 0, \"loader.size\");\n },\n \"checkBetterThanKeyInStorage false with cache\": async assert => {\n const loader = new KeyLoader(olm as any as Olm, PICKLE_KEY, 2);\n const key1 = new MockRoomKey(roomId, aliceSenderKey, sessionId1, 2);\n await loader.useKey(key1, async session => {});\n // fake we've checked with storage that this is the best key,\n // and as long is it remains the best key with newly added keys,\n // it will be returned from getCachedKey (as called from checkBetterThanKeyInStorage)\n key1.isBetter = true;\n const key2 = new MockRoomKey(roomId, aliceSenderKey, sessionId1, 3);\n // this will hit cache of key 1 so we pass in null as txn\n const isBetter = await key2.checkBetterThanKeyInStorage(loader, null as any);\n assert.strictEqual(isBetter, false);\n assert.strictEqual(key2.isBetter, false);\n },\n \"checkBetterThanKeyInStorage true with cache\": async assert => {\n const loader = new KeyLoader(olm as any as Olm, PICKLE_KEY, 2);\n const key1 = new MockRoomKey(roomId, aliceSenderKey, sessionId1, 2);\n key1.isBetter = true; // fake we've check with storage so far (not including key2) this is the best key\n await loader.useKey(key1, async session => {});\n const key2 = new MockRoomKey(roomId, aliceSenderKey, sessionId1, 1);\n // this will hit cache of key 1 so we pass in null as txn\n const isBetter = await key2.checkBetterThanKeyInStorage(loader, null as any);\n assert.strictEqual(isBetter, true);\n assert.strictEqual(key2.isBetter, true);\n },\n \"prefer to remove worst key for a session from cache\": async assert => {\n const loader = new KeyLoader(olm as any as Olm, PICKLE_KEY, 2);\n const key1 = new MockRoomKey(roomId, aliceSenderKey, sessionId1, 2);\n await loader.useKey(key1, async session => {});\n key1.isBetter = true; // set to true just so it gets returned from getCachedKey\n const key2 = new MockRoomKey(roomId, aliceSenderKey, sessionId1, 4);\n await loader.useKey(key2, async session => {});\n const key3 = new MockRoomKey(roomId, aliceSenderKey, sessionId1, 3);\n await loader.useKey(key3, async session => {});\n assert.strictEqual(loader.getCachedKey(roomId, aliceSenderKey, sessionId1), key1);\n },\n }\n}\n","/*\nCopyright 2022 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {MEGOLM_ALGORITHM} from \"../../common\";\nimport type {RoomKey} from \"../decryption/RoomKey\";\n\nimport type {BaseBackupInfo, SignatureMap, SessionKeyInfo} from \"./types\";\nimport type * as OlmNamespace from \"@matrix-org/olm\";\ntype Olm = typeof OlmNamespace;\n\nexport const Algorithm = \"m.megolm_backup.v1.curve25519-aes-sha2\";\n\nexport type BackupInfo = BaseBackupInfo & {\n algorithm: typeof Algorithm,\n auth_data: AuthData,\n}\n\ntype AuthData = {\n public_key: string,\n signatures: SignatureMap\n}\n\nexport type SessionData = {\n ciphertext: string,\n mac: string,\n ephemeral: string,\n}\n\nexport class BackupEncryption {\n constructor(\n private encryption?: Olm.PkEncryption,\n private decryption?: Olm.PkDecryption\n ) {}\n\n static fromAuthData(authData: AuthData, privateKey: Uint8Array, olm: Olm): BackupEncryption {\n const expectedPubKey = authData.public_key;\n const decryption = new olm.PkDecryption();\n const encryption = new olm.PkEncryption();\n try {\n const pubKey = decryption.init_with_private_key(privateKey);\n if (pubKey !== expectedPubKey) {\n throw new Error(`Bad backup key, public key does not match. Calculated ${pubKey} but expected ${expectedPubKey}`);\n }\n encryption.set_recipient_key(pubKey);\n } catch(err) {\n decryption.free();\n encryption.free();\n throw err;\n }\n return new BackupEncryption(encryption, decryption);\n }\n\n decryptRoomKey(sessionData: SessionData): SessionKeyInfo {\n const sessionInfo = this.decryption!.decrypt(\n sessionData.ephemeral,\n sessionData.mac,\n sessionData.ciphertext,\n );\n return JSON.parse(sessionInfo) as SessionKeyInfo;\n }\n\n encryptRoomKey(key: RoomKey, sessionKey: string): SessionData {\n const sessionInfo: SessionKeyInfo = {\n algorithm: MEGOLM_ALGORITHM,\n sender_key: key.senderKey,\n sender_claimed_keys: {ed25519: key.claimedEd25519Key},\n forwarding_curve25519_key_chain: [],\n session_key: sessionKey\n };\n return this.encryption!.encrypt(JSON.stringify(sessionInfo)) as SessionData;\n }\n\n dispose() {\n this.decryption?.free();\n this.decryption = undefined;\n this.encryption?.free();\n this.encryption = undefined;\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {StoreNames} from \"../../../storage/common\";\nimport {StoredRoomKey, keyFromBackup} from \"../decryption/RoomKey\";\nimport {MEGOLM_ALGORITHM} from \"../../common\";\nimport * as Curve25519 from \"./Curve25519\";\nimport {AbortableOperation} from \"../../../../utils/AbortableOperation\";\nimport {ObservableValue} from \"../../../../observable/value\";\nimport {Deferred} from \"../../../../utils/Deferred\";\nimport {EventEmitter} from \"../../../../utils/EventEmitter\";\n\nimport {SetAbortableFn} from \"../../../../utils/AbortableOperation\";\nimport type {BackupInfo, SessionData, SessionKeyInfo, SessionInfo, KeyBackupPayload} from \"./types\";\nimport type {HomeServerApi} from \"../../../net/HomeServerApi\";\nimport type {IncomingRoomKey, RoomKey} from \"../decryption/RoomKey\";\nimport type {KeyLoader} from \"../decryption/KeyLoader\";\nimport type {SecretStorage} from \"../../../ssss/SecretStorage\";\nimport type {Storage} from \"../../../storage/idb/Storage\";\nimport type {ILogItem} from \"../../../../logging/types\";\nimport type {Platform} from \"../../../../platform/web/Platform\";\nimport type {Transaction} from \"../../../storage/idb/Transaction\";\nimport type {IHomeServerRequest} from \"../../../net/HomeServerRequest\";\nimport type * as OlmNamespace from \"@matrix-org/olm\";\ntype Olm = typeof OlmNamespace;\n\nconst KEYS_PER_REQUEST = 200;\n\n// a set of fields we need to store once we've fetched\n// the backup info from the homeserver, which happens in start()\nclass BackupConfig {\n constructor(\n public readonly info: BackupInfo,\n public readonly crypto: Curve25519.BackupEncryption\n ) {}\n}\n\nexport class KeyBackup extends EventEmitter<{change: never}> {\n private _operationInProgress?: AbortableOperation, Progress>;\n private _stopped = false;\n private _needsNewKey = false;\n private _hasBackedUpAllKeys = false;\n private _error?: Error;\n private crypto?: Curve25519.BackupEncryption;\n private backupInfo?: BackupInfo;\n private privateKey?: Uint8Array;\n private backupConfigDeferred: Deferred = new Deferred();\n private backupInfoRequest?: IHomeServerRequest;\n\n constructor(\n private readonly hsApi: HomeServerApi,\n private readonly olm: Olm,\n private readonly keyLoader: KeyLoader,\n private readonly storage: Storage,\n private readonly platform: Platform,\n private readonly maxDelay: number = 10000\n ) {\n super();\n // doing the network request for getting the backup info\n // and hence creating the crypto instance depending on the chose algorithm\n // is delayed until start() is called, but we want to already take requests\n // for fetching the room keys, so put the crypto and backupInfo in a deferred.\n this.backupConfigDeferred = new Deferred();\n }\n\n get hasStopped(): boolean { return this._stopped; }\n get error(): Error | undefined { return this._error; }\n get version(): string | undefined { return this.backupConfigDeferred.value?.info?.version; }\n get needsNewKey(): boolean { return this._needsNewKey; }\n get hasBackedUpAllKeys(): boolean { return this._hasBackedUpAllKeys; }\n get operationInProgress(): AbortableOperation, Progress> | undefined { return this._operationInProgress; }\n\n async getRoomKey(roomId: string, sessionId: string, log: ILogItem): Promise {\n if (this.needsNewKey) {\n return;\n }\n const backupConfig = await this.backupConfigDeferred.promise;\n if (!backupConfig) {\n return;\n }\n const sessionResponse = await this.hsApi.roomKeyForRoomAndSession(backupConfig.info.version, roomId, sessionId, {log}).response();\n if (!sessionResponse.session_data) {\n return;\n }\n const sessionKeyInfo = backupConfig.crypto.decryptRoomKey(sessionResponse.session_data as SessionData);\n if (sessionKeyInfo?.algorithm === MEGOLM_ALGORITHM) {\n return keyFromBackup(roomId, sessionId, sessionKeyInfo);\n } else if (sessionKeyInfo?.algorithm) {\n log.set(\"unknown algorithm\", sessionKeyInfo.algorithm);\n }\n }\n\n markAllForBackup(txn: Transaction): Promise {\n return txn.inboundGroupSessions.markAllAsNotBackedUp();\n }\n\n async load(secretStorage: SecretStorage, log: ILogItem) {\n const base64PrivateKey = await secretStorage.readSecret(\"m.megolm_backup.v1\");\n if (base64PrivateKey) {\n this.privateKey = new Uint8Array(this.platform.encoding.base64.decode(base64PrivateKey));\n return true;\n } else {\n this.backupConfigDeferred.resolve(undefined);\n return false;\n }\n }\n\n async start(log: ILogItem) {\n await log.wrap(\"KeyBackup.start\", async log => {\n if (this.privateKey && !this.backupInfoRequest) {\n let backupInfo: BackupInfo;\n try {\n this.backupInfoRequest = this.hsApi.roomKeysVersion(undefined, {log});\n backupInfo = await this.backupInfoRequest.response() as BackupInfo;\n } catch (err) {\n if (err.name === \"AbortError\") {\n log.set(\"aborted\", true);\n return;\n } else {\n throw err;\n }\n } finally {\n this.backupInfoRequest = undefined;\n }\n // TODO: what if backupInfo is undefined or we get 404 or something?\n if (backupInfo.algorithm === Curve25519.Algorithm) {\n const crypto = Curve25519.BackupEncryption.fromAuthData(backupInfo.auth_data, this.privateKey, this.olm);\n this.backupConfigDeferred.resolve(new BackupConfig(backupInfo, crypto));\n this.emit(\"change\");\n } else {\n this.backupConfigDeferred.resolve(undefined);\n log.log({l: `Unknown backup algorithm`, algorithm: backupInfo.algorithm});\n }\n this.privateKey = undefined;\n }\n // fetch latest version\n this.flush(log);\n });\n }\n\n flush(log: ILogItem): void {\n if (!this._operationInProgress) {\n log.wrapDetached(\"flush key backup\", async log => {\n if (this._needsNewKey) {\n log.set(\"needsNewKey\", this._needsNewKey);\n return;\n }\n this._stopped = false;\n this._error = undefined;\n this._hasBackedUpAllKeys = false;\n const operation = this._runFlushOperation(log);\n this._operationInProgress = operation;\n this.emit(\"change\");\n try {\n await operation.result;\n this._hasBackedUpAllKeys = true;\n } catch (err) {\n this._stopped = true;\n if (err.name === \"HomeServerError\" && (err.errcode === \"M_WRONG_ROOM_KEYS_VERSION\" || err.errcode === \"M_NOT_FOUND\")) {\n log.set(\"wrong_version\", true);\n this._needsNewKey = true;\n } else {\n // TODO should really also use AbortError in storage\n if (err.name !== \"AbortError\" || (err.name === \"StorageError\" && err.errcode === \"AbortError\")) {\n this._error = err;\n }\n }\n log.catch(err);\n }\n this._operationInProgress = undefined;\n this.emit(\"change\");\n });\n }\n }\n\n private _runFlushOperation(log: ILogItem): AbortableOperation, Progress> {\n return new AbortableOperation(async (setAbortable, setProgress) => {\n const backupConfig = await this.backupConfigDeferred.promise;\n if (!backupConfig) {\n return;\n }\n let total = 0;\n let amountFinished = 0;\n while (true) {\n const waitMs = this.platform.random() * this.maxDelay;\n const timeout = this.platform.clock.createTimeout(waitMs);\n setAbortable(timeout);\n await timeout.elapsed();\n const txn = await this.storage.readTxn([StoreNames.inboundGroupSessions]);\n setAbortable(txn);\n // fetch total again on each iteration as while we are flushing, sync might be adding keys\n total = amountFinished + await txn.inboundGroupSessions.countNonBackedUpSessions();\n setProgress(new Progress(total, amountFinished));\n const keysNeedingBackup = (await txn.inboundGroupSessions.getFirstNonBackedUpSessions(KEYS_PER_REQUEST))\n .map(entry => new StoredRoomKey(entry));\n if (keysNeedingBackup.length === 0) {\n log.set(\"total\", total);\n return;\n }\n const payload = await this.encodeKeysForBackup(keysNeedingBackup, backupConfig.crypto);\n const uploadRequest = this.hsApi.uploadRoomKeysToBackup(backupConfig.info.version, payload, {log});\n setAbortable(uploadRequest);\n await uploadRequest.response();\n await this.markKeysAsBackedUp(keysNeedingBackup, setAbortable);\n amountFinished += keysNeedingBackup.length;\n setProgress(new Progress(total, amountFinished));\n }\n });\n }\n\n private async encodeKeysForBackup(roomKeys: RoomKey[], crypto: Curve25519.BackupEncryption): Promise {\n const payload: KeyBackupPayload = { rooms: {} };\n const payloadRooms = payload.rooms;\n for (const key of roomKeys) {\n let roomPayload = payloadRooms[key.roomId];\n if (!roomPayload) {\n roomPayload = payloadRooms[key.roomId] = { sessions: {} };\n }\n roomPayload.sessions[key.sessionId] = await this.encodeRoomKey(key, crypto);\n }\n return payload;\n }\n\n private async markKeysAsBackedUp(roomKeys: RoomKey[], setAbortable: SetAbortableFn) {\n const txn = await this.storage.readWriteTxn([\n StoreNames.inboundGroupSessions,\n ]);\n setAbortable(txn);\n try {\n await Promise.all(roomKeys.map(key => {\n return txn.inboundGroupSessions.markAsBackedUp(key.roomId, key.senderKey, key.sessionId);\n }));\n } catch (err) {\n txn.abort();\n throw err;\n }\n await txn.complete();\n }\n\n private async encodeRoomKey(roomKey: RoomKey, crypto: Curve25519.BackupEncryption): Promise {\n return await this.keyLoader.useKey(roomKey, session => {\n const firstMessageIndex = session.first_known_index();\n const sessionKey = session.export_session(firstMessageIndex);\n return {\n first_message_index: firstMessageIndex,\n forwarded_count: 0,\n is_verified: false,\n session_data: crypto.encryptRoomKey(roomKey, sessionKey)\n };\n });\n }\n\n dispose() {\n this.backupInfoRequest?.abort();\n this.backupConfigDeferred.value?.crypto?.dispose();\n }\n}\n\nexport class Progress {\n constructor(\n public readonly total: number,\n public readonly finished: number\n ) {}\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {MEGOLM_ALGORITHM} from \"../common\";\nimport {OutboundRoomKey} from \"./decryption/RoomKey\";\n\nexport class Encryption {\n constructor({pickleKey, olm, account, keyLoader, storage, now, ownDeviceId}) {\n this._pickleKey = pickleKey;\n this._olm = olm;\n this._account = account;\n this._keyLoader = keyLoader;\n this._storage = storage;\n this._now = now;\n this._ownDeviceId = ownDeviceId;\n }\n\n discardOutboundSession(roomId, txn) {\n txn.outboundGroupSessions.remove(roomId);\n }\n\n async createRoomKeyMessage(roomId, txn) {\n let sessionEntry = await txn.outboundGroupSessions.get(roomId);\n if (sessionEntry) {\n const session = new this._olm.OutboundGroupSession();\n try {\n session.unpickle(this._pickleKey, sessionEntry.session);\n return this._createRoomKeyMessage(session, roomId);\n } finally {\n session.free();\n }\n }\n }\n\n createWithheldMessage(roomMessage, code, reason) {\n return {\n algorithm: roomMessage.algorithm,\n code,\n reason,\n room_id: roomMessage.room_id,\n sender_key: this._account.identityKeys.curve25519,\n session_id: roomMessage.session_id\n };\n }\n\n async ensureOutboundSession(roomId, encryptionParams) {\n let session = new this._olm.OutboundGroupSession();\n try {\n const txn = await this._storage.readWriteTxn([\n this._storage.storeNames.inboundGroupSessions,\n this._storage.storeNames.outboundGroupSessions,\n ]);\n let roomKeyMessage;\n try {\n let sessionEntry = await txn.outboundGroupSessions.get(roomId);\n roomKeyMessage = await this._readOrCreateSession(session, sessionEntry, roomId, encryptionParams, txn);\n if (roomKeyMessage) {\n this._writeSession(this._now(), session, roomId, txn);\n }\n } catch (err) {\n txn.abort();\n throw err;\n }\n await txn.complete();\n return roomKeyMessage;\n } finally {\n session.free();\n }\n }\n\n async _readOrCreateSession(session, sessionEntry, roomId, encryptionParams, txn) {\n if (sessionEntry) {\n session.unpickle(this._pickleKey, sessionEntry.session);\n }\n if (!sessionEntry || this._needsToRotate(session, sessionEntry.createdAt, encryptionParams)) {\n // in the case of rotating, recreate a session as we already unpickled into it\n if (sessionEntry) {\n session.free();\n session = new this._olm.OutboundGroupSession();\n }\n session.create();\n const roomKeyMessage = this._createRoomKeyMessage(session, roomId);\n const roomKey = new OutboundRoomKey(roomId, session, this._account.identityKeys);\n await roomKey.write(this._keyLoader, txn);\n return roomKeyMessage;\n }\n }\n\n _writeSession(createdAt, session, roomId, txn) {\n txn.outboundGroupSessions.set({\n roomId,\n session: session.pickle(this._pickleKey),\n createdAt,\n });\n }\n\n /**\n * Encrypts a message with megolm\n * @param {string} roomId \n * @param {string} type event type to encrypt\n * @param {string} content content to encrypt\n * @param {object} encryptionParams the content of the m.room.encryption event\n * @return {Promise}\n */\n async encrypt(roomId, type, content, encryptionParams) {\n let session = new this._olm.OutboundGroupSession();\n try {\n const txn = await this._storage.readWriteTxn([\n this._storage.storeNames.inboundGroupSessions,\n this._storage.storeNames.outboundGroupSessions,\n ]);\n let roomKeyMessage;\n let encryptedContent;\n try {\n let sessionEntry = await txn.outboundGroupSessions.get(roomId);\n roomKeyMessage = await this._readOrCreateSession(session, sessionEntry, roomId, encryptionParams, txn);\n encryptedContent = this._encryptContent(roomId, session, type, content);\n // update timestamp when a new session is created\n const createdAt = roomKeyMessage ? this._now() : sessionEntry.createdAt;\n this._writeSession(createdAt, session, roomId, txn);\n\n } catch (err) {\n txn.abort();\n throw err;\n }\n await txn.complete();\n return new EncryptionResult(encryptedContent, roomKeyMessage);\n } finally {\n if (session) {\n session.free();\n }\n }\n }\n\n _needsToRotate(session, createdAt, encryptionParams) {\n let rotationPeriodMs = 604800000; // default\n if (Number.isSafeInteger(encryptionParams?.rotation_period_ms)) {\n rotationPeriodMs = encryptionParams?.rotation_period_ms;\n }\n let rotationPeriodMsgs = 100; // default\n if (Number.isSafeInteger(encryptionParams?.rotation_period_msgs)) {\n rotationPeriodMsgs = encryptionParams?.rotation_period_msgs;\n }\n\n if (this._now() > (createdAt + rotationPeriodMs)) {\n return true;\n }\n if (session.message_index() >= rotationPeriodMsgs) {\n return true;\n } \n }\n\n _encryptContent(roomId, session, type, content) {\n const plaintext = JSON.stringify({\n room_id: roomId,\n type,\n content\n });\n const ciphertext = session.encrypt(plaintext);\n\n const encryptedContent = {\n algorithm: MEGOLM_ALGORITHM,\n sender_key: this._account.identityKeys.curve25519,\n ciphertext,\n session_id: session.session_id(),\n device_id: this._ownDeviceId\n };\n\n return encryptedContent;\n }\n\n _createRoomKeyMessage(session, roomId) {\n return {\n room_id: roomId,\n session_id: session.session_id(),\n session_key: session.session_key(),\n algorithm: MEGOLM_ALGORITHM,\n // chain_index is ignored by element-web if not all clients\n // but let's send it anyway, as element-web does so\n chain_index: session.message_index()\n }\n }\n}\n\n/**\n * @property {object?} roomKeyMessage if encrypting this message\n * created a new outbound session,\n * this contains the content of the m.room_key message\n * that should be sent out over olm.\n * @property {object} content the encrypted message as the content of\n * the m.room.encrypted event that should be sent out \n */\nclass EncryptionResult {\n constructor(content, roomKeyMessage) {\n this.content = content;\n this.roomKeyMessage = roomKeyMessage;\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {MEGOLM_ALGORITHM, DecryptionSource} from \"./common\";\nimport {groupEventsBySession} from \"./megolm/decryption/utils\";\nimport {mergeMap} from \"../../utils/mergeMap\";\nimport {groupBy} from \"../../utils/groupBy\";\nimport {makeTxnId, formatToDeviceMessagesPayload} from \"../common.js\";\nimport {iterateResponseStateEvents} from \"../room/common\";\n\nconst ENCRYPTED_TYPE = \"m.room.encrypted\";\nconst ROOM_HISTORY_VISIBILITY_TYPE = \"m.room.history_visibility\";\n// how often ensureMessageKeyIsShared can check if it needs to\n// create a new outbound session\n// note that encrypt could still create a new session\nconst MIN_PRESHARE_INTERVAL = 60 * 1000; // 1min\n\n// TODO: this class is a good candidate for splitting up into encryption and decryption, there doesn't seem to be much overlap\nexport class RoomEncryption {\n constructor({room, deviceTracker, olmEncryption, megolmEncryption, megolmDecryption, encryptionParams, storage, keyBackup, notifyMissingMegolmSession, clock}) {\n this._room = room;\n this._deviceTracker = deviceTracker;\n this._olmEncryption = olmEncryption;\n this._megolmEncryption = megolmEncryption;\n this._megolmDecryption = megolmDecryption;\n // content of the m.room.encryption event\n this._encryptionParams = encryptionParams;\n // caches devices to verify events\n this._senderDeviceCache = new Map();\n this._storage = storage;\n this._keyBackup = keyBackup;\n this._notifyMissingMegolmSession = notifyMissingMegolmSession;\n this._clock = clock;\n this._isFlushingRoomKeyShares = false;\n this._lastKeyPreShareTime = null;\n this._keySharePromise = null;\n this._historyVisibility = undefined;\n this._disposed = false;\n }\n\n enableKeyBackup(keyBackup) {\n if (this._keyBackup && !!keyBackup) {\n return;\n }\n this._keyBackup = keyBackup;\n }\n\n async restoreMissingSessionsFromBackup(entries, log) {\n const events = entries.filter(e => e.isEncrypted && !e.isDecrypted && e.event).map(e => e.event);\n const eventsBySession = groupEventsBySession(events);\n const groups = Array.from(eventsBySession.values());\n const txn = await this._storage.readTxn([this._storage.storeNames.inboundGroupSessions]);\n const hasSessions = await Promise.all(groups.map(async group => {\n return this._megolmDecryption.hasSession(this._room.id, group.senderKey, group.sessionId, txn);\n }));\n const missingSessions = groups.filter((_, i) => !hasSessions[i]);\n if (missingSessions.length) {\n // start with last sessions which should be for the last items in the timeline\n for (var i = missingSessions.length - 1; i >= 0; i--) {\n const session = missingSessions[i];\n await log.wrap(\"session\", log => this._requestMissingSessionFromBackup(session.senderKey, session.sessionId, log));\n }\n }\n }\n\n notifyTimelineClosed() {\n this._senderDeviceCache = new Map(); // purge the sender device cache\n }\n\n async writeSync(roomResponse, memberChanges, txn, log) {\n let historyVisibility = await this._loadHistoryVisibilityIfNeeded(this._historyVisibility, txn);\n const addedMembers = [];\n const removedMembers = [];\n // update the historyVisibility if needed\n await iterateResponseStateEvents(roomResponse, event => {\n // TODO: can the same state event appear twice? Hence we would be rewriting the useridentities twice...\n // we'll see in the logs\n if(event.state_key === \"\" && event.type === ROOM_HISTORY_VISIBILITY_TYPE) {\n const newHistoryVisibility = event?.content?.history_visibility;\n if (newHistoryVisibility !== historyVisibility) {\n return log.wrap({\n l: \"history_visibility changed\",\n from: historyVisibility,\n to: newHistoryVisibility\n }, async log => {\n historyVisibility = newHistoryVisibility;\n const result = await this._deviceTracker.writeHistoryVisibility(this._room, historyVisibility, txn, log);\n addedMembers.push(...result.added);\n removedMembers.push(...result.removed);\n });\n }\n }\n });\n // process member changes\n if (memberChanges.size) {\n const result = await this._deviceTracker.writeMemberChanges(\n this._room, memberChanges, historyVisibility, txn);\n addedMembers.push(...result.added);\n removedMembers.push(...result.removed);\n }\n // discard key if somebody (including ourselves) left\n if (removedMembers.length) {\n log.log({\n l: \"discardOutboundSession\",\n leftUsers: removedMembers,\n });\n this._megolmEncryption.discardOutboundSession(this._room.id, txn);\n }\n let shouldFlush = false;\n // add room to userIdentities if needed, and share the current key with them\n if (addedMembers.length) {\n shouldFlush = await this._addShareRoomKeyOperationForMembers(addedMembers, txn, log);\n }\n return {shouldFlush, historyVisibility};\n }\n\n afterSync({historyVisibility}) {\n this._historyVisibility = historyVisibility;\n }\n\n async _loadHistoryVisibilityIfNeeded(historyVisibility, txn = undefined) {\n if (!historyVisibility) {\n if (!txn) {\n txn = await this._storage.readTxn([this._storage.storeNames.roomState]);\n }\n const visibilityEntry = await txn.roomState.get(this._room.id, ROOM_HISTORY_VISIBILITY_TYPE, \"\");\n if (visibilityEntry) {\n return visibilityEntry.event?.content?.history_visibility;\n }\n }\n return historyVisibility;\n }\n\n async prepareDecryptAll(events, newKeys, source, txn) {\n const errors = new Map();\n const validEvents = [];\n for (const event of events) {\n if (event.redacted_because || event.unsigned?.redacted_because) {\n continue;\n }\n if (event.content?.algorithm !== MEGOLM_ALGORITHM) {\n errors.set(event.event_id, new Error(\"Unsupported algorithm: \" + event.content?.algorithm));\n }\n validEvents.push(event);\n }\n const preparation = await this._megolmDecryption.prepareDecryptAll(\n this._room.id, validEvents, newKeys, txn);\n return new DecryptionPreparation(preparation, errors, source, this, events);\n }\n\n async _processDecryptionResults(events, results, errors, source, txn, log) {\n const missingSessionEvents = events.filter(event => {\n const error = errors.get(event.event_id);\n return error?.code === \"MEGOLM_NO_SESSION\";\n });\n if (!missingSessionEvents.length) {\n return;\n }\n // store missing event ids if received from sync\n const missingEventsBySession = groupEventsBySession(missingSessionEvents);\n if (source === DecryptionSource.Sync) {\n await Promise.all(Array.from(missingEventsBySession.values()).map(async group => {\n const eventIds = group.events.map(e => e.event_id);\n return this._megolmDecryption.addMissingKeyEventIds(\n this._room.id, group.senderKey, group.sessionId, eventIds, txn);\n }));\n }\n \n if (!this._keyBackup) {\n return;\n }\n\n log.wrapDetached(\"check key backup\", async log => {\n // if the message came from sync, wait 10s to see if the room key arrives late,\n // and only after that proceed to request from backup\n log.set(\"source\", source);\n log.set(\"events\", missingSessionEvents.length);\n log.set(\"sessions\", missingEventsBySession.size);\n if (source === DecryptionSource.Sync) {\n await this._clock.createTimeout(10000).elapsed();\n if (this._disposed) {\n return;\n }\n // now check which sessions have been received already\n const txn = await this._storage.readTxn([this._storage.storeNames.inboundGroupSessions]);\n await Promise.all(Array.from(missingEventsBySession).map(async ([key, group]) => {\n if (await this._megolmDecryption.hasSession(this._room.id, group.senderKey, group.sessionId, txn)) {\n missingEventsBySession.delete(key);\n }\n }));\n }\n await Promise.all(Array.from(missingEventsBySession.values()).map(group => {\n return log.wrap(\"session\", log => this._requestMissingSessionFromBackup(group.senderKey, group.sessionId, log));\n }));\n });\n }\n\n async _verifyDecryptionResults(results, txn) {\n await Promise.all(results.map(async result => {\n let device = this._senderDeviceCache.get(result.senderCurve25519Key);\n if (!device) {\n device = await this._deviceTracker.getDeviceByCurve25519Key(result.senderCurve25519Key, txn);\n this._senderDeviceCache.set(result.senderCurve25519Key, device);\n }\n if (device) {\n result.setDevice(device);\n }\n }));\n }\n\n /** fetches the devices that are not yet known locally from the homeserver to verify the sender of this message. */\n async _fetchKeyAndVerifyDecryptionResults(results, hsApi, log) {\n const resultsWithoutDevice = results.filter(r => r.isVerificationUnknown);\n if (resultsWithoutDevice.length) {\n return log.wrap(\"fetch unverified senders\", async log => {\n const sendersWithoutDevice = Array.from(resultsWithoutDevice.reduce((senders, r) => {\n return senders.add(r.encryptedEvent.sender);\n }, new Set()));\n log.set(\"senders\", sendersWithoutDevice);\n // Fetch the devices, ignore return value, and just reuse\n // _verifyDecryptionResults method so we only have one impl how to verify.\n // Use devicesForUsers rather than devicesForRoomMembers as the room might not be tracked yet\n await this._deviceTracker.devicesForUsers(sendersWithoutDevice, hsApi, log);\n // now that we've fetched the missing devices, try verifying the results again\n const txn = await this._storage.readTxn([this._storage.storeNames.deviceKeys]);\n await this._verifyDecryptionResults(resultsWithoutDevice, txn);\n const resultsWithFoundDevice = resultsWithoutDevice.filter(r => !r.isVerificationUnknown);\n const resultsToEventIdMap = resultsWithFoundDevice.reduce((map, r) => {\n map.set(r.encryptedEvent.event_id, r);\n return map;\n }, new Map());\n return new BatchDecryptionResult(resultsToEventIdMap, new Map(), this);\n });\n }\n return new BatchDecryptionResult(new Map(), new Map(), this);\n }\n\n async _requestMissingSessionFromBackup(senderKey, sessionId, log) {\n // show prompt to enable secret storage\n if (!this._keyBackup) {\n log.set(\"enabled\", false);\n this._notifyMissingMegolmSession();\n return;\n }\n log.set(\"id\", sessionId);\n log.set(\"senderKey\", senderKey);\n try {\n const roomKey = await this._keyBackup.getRoomKey(this._room.id, sessionId, log);\n if (roomKey) {\n if (roomKey.senderKey !== senderKey) {\n log.set(\"wrong_sender_key\", roomKey.senderKey);\n log.logLevel = log.level.Warn;\n return;\n }\n let keyIsBestOne = false;\n let retryEventIds;\n const txn = await this._storage.readWriteTxn([this._storage.storeNames.inboundGroupSessions]);\n try {\n keyIsBestOne = await this._megolmDecryption.writeRoomKey(roomKey, txn);\n log.set(\"isBetter\", keyIsBestOne);\n if (keyIsBestOne) {\n retryEventIds = roomKey.eventIds;\n }\n } catch (err) {\n txn.abort();\n throw err;\n }\n await txn.complete();\n if (keyIsBestOne) {\n await log.wrap(\"retryDecryption\", log => this._room.notifyRoomKey(roomKey, retryEventIds || [], log));\n }\n }\n } catch (err) {\n if (!(err.name === \"HomeServerError\" && err.errcode === \"M_NOT_FOUND\")) {\n log.set(\"not_found\", true);\n } else {\n log.error = err;\n log.logLevel = log.level.Error;\n }\n }\n }\n\n /**\n * @param {RoomKey} roomKeys\n * @param {Transaction} txn\n * @return {Promise>} the event ids that should be retried to decrypt\n */\n getEventIdsForMissingKey(roomKey, txn) {\n return this._megolmDecryption.getEventIdsForMissingKey(this._room.id, roomKey.senderKey, roomKey.sessionId, txn);\n }\n\n /** shares the encryption key for the next message if needed */\n async ensureMessageKeyIsShared(hsApi, log) {\n if (this._lastKeyPreShareTime?.measure() < MIN_PRESHARE_INTERVAL) {\n return;\n }\n this._lastKeyPreShareTime = this._clock.createMeasure();\n try {\n this._keySharePromise = (async () => {\n const roomKeyMessage = await this._megolmEncryption.ensureOutboundSession(this._room.id, this._encryptionParams);\n if (roomKeyMessage) {\n this._keyBackup?.flush(log);\n await log.wrap(\"share key\", log => this._shareNewRoomKey(roomKeyMessage, hsApi, log));\n }\n })();\n await this._keySharePromise;\n } finally {\n this._keySharePromise = null;\n }\n }\n\n async encrypt(type, content, hsApi, log) {\n // ensureMessageKeyIsShared is still running,\n // wait for it to create and share a key if needed\n if (this._keySharePromise) {\n log.set(\"waitForRunningKeyShare\", true);\n await this._keySharePromise;\n }\n const megolmResult = await log.wrap(\"megolm encrypt\", () => this._megolmEncryption.encrypt(this._room.id, type, content, this._encryptionParams));\n if (megolmResult.roomKeyMessage) {\n this._keyBackup?.flush(log);\n await log.wrap(\"share key\", log => this._shareNewRoomKey(megolmResult.roomKeyMessage, hsApi, log));\n }\n return {\n type: ENCRYPTED_TYPE,\n content: megolmResult.content\n };\n }\n\n needsToShareKeys(memberChanges) {\n for (const m of memberChanges.values()) {\n if (m.hasJoined) {\n return true;\n }\n }\n return false;\n }\n\n async _shareNewRoomKey(roomKeyMessage, hsApi, log) {\n this._historyVisibility = await this._loadHistoryVisibilityIfNeeded(this._historyVisibility);\n await this._deviceTracker.trackRoom(this._room, this._historyVisibility, log);\n const devices = await this._deviceTracker.devicesForTrackedRoom(this._room.id, hsApi, log);\n const userIds = Array.from(devices.reduce((set, device) => set.add(device.user_id), new Set()));\n \n let writeOpTxn = await this._storage.readWriteTxn([this._storage.storeNames.operations]);\n let operation;\n try {\n operation = this._writeRoomKeyShareOperation(roomKeyMessage, userIds, writeOpTxn);\n } catch (err) {\n writeOpTxn.abort();\n throw err;\n }\n // TODO: at this point we have the room key stored, and the rest is sort of optional\n // it would be nice if we could signal SendQueue that any error from here on is non-fatal and\n // return the encrypted payload.\n await this._processShareRoomKeyOperation(operation, hsApi, log);\n }\n\n async _addShareRoomKeyOperationForMembers(userIds, txn, log) {\n const roomKeyMessage = await this._megolmEncryption.createRoomKeyMessage(\n this._room.id, txn);\n if (roomKeyMessage) {\n log.log({\n l: \"share key for new members\", userIds,\n id: roomKeyMessage.session_id,\n chain_index: roomKeyMessage.chain_index\n });\n this._writeRoomKeyShareOperation(roomKeyMessage, userIds, txn);\n return true;\n }\n return false;\n }\n\n async flushPendingRoomKeyShares(hsApi, operations, log) {\n // this has to be reentrant as it can be called from Room.start while still running\n if (this._isFlushingRoomKeyShares) {\n return;\n }\n this._isFlushingRoomKeyShares = true;\n try {\n if (!operations) {\n const txn = await this._storage.readTxn([this._storage.storeNames.operations]);\n operations = await txn.operations.getAllByTypeAndScope(\"share_room_key\", this._room.id);\n }\n for (const operation of operations) {\n // just to be sure\n if (operation.type !== \"share_room_key\") {\n continue;\n }\n await log.wrap(\"operation\", log => this._processShareRoomKeyOperation(operation, hsApi, log));\n }\n } finally {\n this._isFlushingRoomKeyShares = false;\n }\n }\n\n _writeRoomKeyShareOperation(roomKeyMessage, userIds, txn) {\n const id = Math.floor(Math.random() * Number.MAX_SAFE_INTEGER).toString();\n const operation = {\n id,\n type: \"share_room_key\",\n scope: this._room.id,\n userIds,\n roomKeyMessage,\n };\n txn.operations.add(operation);\n return operation;\n }\n\n async _processShareRoomKeyOperation(operation, hsApi, log) {\n log.set(\"id\", operation.id);\n this._historyVisibility = await this._loadHistoryVisibilityIfNeeded(this._historyVisibility);\n await this._deviceTracker.trackRoom(this._room, this._historyVisibility, log);\n const devices = await this._deviceTracker.devicesForRoomMembers(this._room.id, operation.userIds, hsApi, log);\n const messages = await log.wrap(\"olm encrypt\", log => this._olmEncryption.encrypt(\n \"m.room_key\", operation.roomKeyMessage, devices, hsApi, log));\n const missingDevices = devices.filter(d => !messages.some(m => m.device === d));\n await log.wrap(\"send\", log => this._sendMessagesToDevices(ENCRYPTED_TYPE, messages, hsApi, log));\n if (missingDevices.length) {\n await log.wrap(\"missingDevices\", async log => {\n log.set(\"devices\", missingDevices.map(d => d.device_id));\n const unsentUserIds = operation.userIds.filter(userId => missingDevices.some(d => d.user_id === userId));\n log.set(\"unsentUserIds\", unsentUserIds);\n operation.userIds = unsentUserIds;\n // first remove the users that we've sent the keys already from the operation,\n // so if anything fails, we don't send them again\n await this._updateOperationsStore(operations => operations.update(operation));\n // now, let the devices we could not claim their key\n const withheldMessage = this._megolmEncryption.createWithheldMessage(operation.roomKeyMessage, \"m.no_olm\", \"OTKs exhausted\");\n await this._sendSharedMessageToDevices(\"org.matrix.room_key.withheld\", withheldMessage, missingDevices, hsApi, log);\n });\n }\n await this._updateOperationsStore(operations => operations.remove(operation.id));\n }\n\n async _updateOperationsStore(callback) {\n const writeTxn = await this._storage.readWriteTxn([this._storage.storeNames.operations]);\n try {\n callback(writeTxn.operations);\n } catch (err) {\n writeTxn.abort();\n throw err;\n }\n await writeTxn.complete();\n }\n\n // TODO: make this use _sendMessagesToDevices\n async _sendSharedMessageToDevices(type, message, devices, hsApi, log) {\n const devicesByUser = groupBy(devices, device => device.user_id);\n const payload = {\n messages: Array.from(devicesByUser.entries()).reduce((userMap, [userId, devices]) => {\n userMap[userId] = devices.reduce((deviceMap, device) => {\n deviceMap[device.device_id] = message;\n return deviceMap;\n }, {});\n return userMap;\n }, {})\n };\n const txnId = makeTxnId();\n await hsApi.sendToDevice(type, payload, txnId, {log}).response();\n }\n\n async _sendMessagesToDevices(type, messages, hsApi, log) {\n log.set(\"messages\", messages.length);\n const payload = formatToDeviceMessagesPayload(messages);\n const txnId = makeTxnId();\n await hsApi.sendToDevice(type, payload, txnId, {log}).response();\n }\n\n filterUndecryptedEventEntriesForKeys(entries, keys) {\n return entries.filter(entry => {\n if (entry.isEncrypted && !entry.isDecrypted) {\n const {event} = entry;\n if (event) {\n const senderKey = event.content?.[\"sender_key\"];\n const sessionId = event.content?.[\"session_id\"];\n return keys.some(key => senderKey === key.senderKey && sessionId === key.sessionId);\n }\n }\n return false;\n });\n }\n\n dispose() {\n this._disposed = true;\n }\n}\n\n/**\n * wrappers around megolm decryption classes to be able to post-process\n * the decryption results before turning them\n */\nclass DecryptionPreparation {\n constructor(megolmDecryptionPreparation, extraErrors, source, roomEncryption, events) {\n this._megolmDecryptionPreparation = megolmDecryptionPreparation;\n this._extraErrors = extraErrors;\n this._source = source;\n this._roomEncryption = roomEncryption;\n this._events = events;\n }\n\n async decrypt() {\n return new DecryptionChanges(\n await this._megolmDecryptionPreparation.decrypt(),\n this._extraErrors,\n this._source,\n this._roomEncryption,\n this._events);\n }\n\n dispose() {\n this._megolmDecryptionPreparation.dispose();\n }\n}\n\nclass DecryptionChanges {\n constructor(megolmDecryptionChanges, extraErrors, source, roomEncryption, events) {\n this._megolmDecryptionChanges = megolmDecryptionChanges;\n this._extraErrors = extraErrors;\n this._source = source;\n this._roomEncryption = roomEncryption;\n this._events = events;\n }\n\n async write(txn, log) {\n const {results, errors} = await this._megolmDecryptionChanges.write(txn);\n mergeMap(this._extraErrors, errors);\n await this._roomEncryption._processDecryptionResults(this._events, results, errors, this._source, txn, log);\n return new BatchDecryptionResult(results, errors, this._roomEncryption);\n }\n}\n\nclass BatchDecryptionResult {\n constructor(results, errors, roomEncryption) {\n this.results = results;\n this.errors = errors;\n this._roomEncryption = roomEncryption;\n }\n\n applyToEntries(entries, callback = undefined) {\n for (const entry of entries) {\n const result = this.results.get(entry.id);\n if (result) {\n entry.setDecryptionResult(result);\n callback?.(entry);\n } else {\n const error = this.errors.get(entry.id);\n if (error) {\n entry.setDecryptionError(error);\n callback?.(entry);\n }\n }\n }\n }\n\n /** Verify the decryption results by looking for the corresponding device in local persistance\n * @returns {BatchDecryptionResult} a new batch result with the results for which we now found a device */\n verifyKnownSenders(txn) {\n return this._roomEncryption._verifyDecryptionResults(Array.from(this.results.values()), txn);\n }\n\n get hasUnverifiedSenders() {\n for (const r of this.results.values()) {\n if (r.isVerificationUnknown) {\n return true;\n }\n }\n return false;\n }\n\n /** Verify any decryption results for which we could not find a device when\n * calling `verifyKnownSenders` prior, by fetching them from the homeserver.\n * @returns {Promise} the results for which we found a device */\n fetchAndVerifyRemainingSenders(hsApi, log) {\n return this._roomEncryption._fetchKeyAndVerifyDecryptionResults(Array.from(this.results.values()), hsApi, log);\n }\n}\n\nimport {createMockStorage} from \"../../mocks/Storage\";\nimport {Clock as MockClock} from \"../../mocks/Clock\";\nimport {poll} from \"../../mocks/poll\";\nimport {Instance as NullLoggerInstance} from \"../../logging/NullLogger\";\nimport {HomeServer as MockHomeServer} from \"../../mocks/HomeServer.js\";\n\nexport function tests() {\n const roomId = \"!abc:hs.tld\";\n return {\n \"ensureMessageKeyIsShared tracks room and passes correct history visibility to deviceTracker\": async assert => {\n const storage = await createMockStorage();\n const megolmMock = {\n async ensureOutboundSession() { return { }; }\n };\n const olmMock = {\n async encrypt() { return []; }\n }\n let isRoomTracked = false;\n let isDevicesRequested = false;\n const deviceTracker = {\n async trackRoom(room, historyVisibility) {\n // only assert on first call\n if (isRoomTracked) { return; }\n assert(!isDevicesRequested);\n assert.equal(room.id, roomId);\n assert.equal(historyVisibility, \"invited\");\n isRoomTracked = true;\n },\n async devicesForTrackedRoom() {\n assert(isRoomTracked);\n isDevicesRequested = true;\n return [];\n },\n async devicesForRoomMembers() {\n return [];\n }\n }\n const writeTxn = await storage.readWriteTxn([storage.storeNames.roomState]);\n writeTxn.roomState.set(roomId, {state_key: \"\", type: ROOM_HISTORY_VISIBILITY_TYPE, content: {\n history_visibility: \"invited\"\n }});\n await writeTxn.complete();\n const roomEncryption = new RoomEncryption({\n room: {id: roomId},\n megolmEncryption: megolmMock,\n olmEncryption: olmMock,\n storage,\n deviceTracker,\n clock: new MockClock()\n });\n const homeServer = new MockHomeServer();\n const promise = roomEncryption.ensureMessageKeyIsShared(homeServer.api, NullLoggerInstance.item);\n // need to poll because sendToDevice isn't first async step\n const request = await poll(() => homeServer.requests.sendToDevice?.[0]);\n request.respond({});\n await promise;\n assert(isRoomTracked);\n assert(isDevicesRequested);\n },\n \"encrypt tracks room and passes correct history visibility to deviceTracker\": async assert => {\n const storage = await createMockStorage();\n const megolmMock = {\n async encrypt() { return { roomKeyMessage: {} }; }\n };\n const olmMock = {\n async encrypt() { return []; }\n }\n let isRoomTracked = false;\n let isDevicesRequested = false;\n const deviceTracker = {\n async trackRoom(room, historyVisibility) {\n // only assert on first call\n if (isRoomTracked) { return; }\n assert(!isDevicesRequested);\n assert.equal(room.id, roomId);\n assert.equal(historyVisibility, \"invited\");\n isRoomTracked = true;\n },\n async devicesForTrackedRoom() {\n assert(isRoomTracked);\n isDevicesRequested = true;\n return [];\n },\n async devicesForRoomMembers() {\n return [];\n }\n }\n const writeTxn = await storage.readWriteTxn([storage.storeNames.roomState]);\n writeTxn.roomState.set(roomId, {state_key: \"\", type: ROOM_HISTORY_VISIBILITY_TYPE, content: {\n history_visibility: \"invited\"\n }});\n await writeTxn.complete();\n const roomEncryption = new RoomEncryption({\n room: {id: roomId},\n megolmEncryption: megolmMock,\n olmEncryption: olmMock,\n storage,\n deviceTracker\n });\n const homeServer = new MockHomeServer();\n const promise = roomEncryption.encrypt(\"m.room.message\", {body: \"hello\"}, homeServer.api, NullLoggerInstance.item);\n // need to poll because sendToDevice isn't first async step\n const request = await poll(() => homeServer.requests.sendToDevice?.[0]);\n request.respond({});\n await promise;\n assert(isRoomTracked);\n assert(isDevicesRequested);\n },\n \"writeSync passes correct history visibility to deviceTracker\": async assert => {\n const storage = await createMockStorage();\n let isMemberChangesCalled = false;\n const deviceTracker = {\n async writeMemberChanges(room, memberChanges, historyVisibility) {\n assert.equal(historyVisibility, \"invited\");\n isMemberChangesCalled = true;\n return {removed: [], added: []};\n },\n async devicesForRoomMembers() {\n return [];\n }\n }\n const writeTxn = await storage.readWriteTxn([storage.storeNames.roomState]);\n writeTxn.roomState.set(roomId, {state_key: \"\", type: ROOM_HISTORY_VISIBILITY_TYPE, content: {\n history_visibility: \"invited\"\n }});\n const memberChanges = new Map([[\"@alice:hs.tld\", {}]]);\n const roomEncryption = new RoomEncryption({\n room: {id: roomId},\n storage,\n deviceTracker\n });\n const roomResponse = {};\n const txn = await storage.readWriteTxn([storage.storeNames.roomState]);\n await roomEncryption.writeSync(roomResponse, memberChanges, txn, NullLoggerInstance.item);\n assert(isMemberChangesCalled);\n },\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {Lock} from \"./Lock\";\n\nexport class LockMap {\n private readonly _map: Map = new Map();\n\n async takeLock(key: T): Promise {\n let lock = this._map.get(key);\n if (lock) {\n await lock.take();\n } else {\n lock = new Lock();\n lock.tryTake();\n this._map.set(key, lock);\n }\n // don't leave old locks lying around\n lock.released()!.then(() => {\n // give others a chance to take the lock first\n Promise.resolve().then(() => {\n if (!lock!.isTaken) {\n this._map.delete(key);\n }\n });\n });\n return lock;\n }\n}\n\nexport function tests() {\n return {\n \"taking a lock on the same key blocks\": async assert => {\n const lockMap = new LockMap();\n const lock = await lockMap.takeLock(\"foo\");\n let second = false;\n const prom = lockMap.takeLock(\"foo\").then(() => {\n second = true;\n });\n assert.equal(second, false);\n // do a delay to make sure prom does not resolve on its own\n await Promise.resolve();\n lock.release();\n await prom;\n assert.equal(second, true);\n },\n \"lock is not cleaned up with second request\": async assert => {\n const lockMap = new LockMap();\n const lock = await lockMap.takeLock(\"foo\");\n let ranSecond = false;\n const prom = lockMap.takeLock(\"foo\").then(returnedLock => {\n ranSecond = true;\n assert.equal(returnedLock.isTaken, true);\n // peek into internals, naughty\n // @ts-ignore\n assert.equal(lockMap._map.get(\"foo\"), returnedLock);\n });\n lock.release();\n await prom;\n // double delay to make sure cleanup logic ran\n await Promise.resolve();\n await Promise.resolve();\n assert.equal(ranSecond, true);\n },\n \"lock is cleaned up without other request\": async assert => {\n const lockMap = new LockMap();\n const lock = await lockMap.takeLock(\"foo\");\n await Promise.resolve();\n lock.release();\n // double delay to make sure cleanup logic ran\n await Promise.resolve();\n await Promise.resolve();\n // @ts-ignore\n assert.equal(lockMap._map.has(\"foo\"), false);\n },\n \n };\n}\n","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2019 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n\n/**\n * This function is similar to Object.assign() but it assigns recursively and\n * allows you to ignore nullish values from the source\n *\n * @param {Object} target\n * @param {Object} source\n * @returns the target object\n */\nexport function recursivelyAssign(target: Object, source: Object, ignoreNullish = false): any {\n for (const [sourceKey, sourceValue] of Object.entries(source)) {\n if (target[sourceKey] instanceof Object && sourceValue) {\n recursivelyAssign(target[sourceKey], sourceValue);\n continue;\n }\n if ((sourceValue !== null && sourceValue !== undefined) || !ignoreNullish) {\n target[sourceKey] = sourceValue;\n continue;\n }\n }\n return target;\n}","/*\nCopyright 2022 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexport interface Event {}\n\nexport interface MediaDevices {\n // filter out audiooutput\n enumerate(): Promise;\n // to assign to a video element, we downcast to WrappedTrack and use the stream property. \n getMediaTracks(audio: true | MediaDeviceInfo, video: boolean | MediaDeviceInfo): Promise;\n getScreenShareTrack(): Promise;\n createVolumeMeasurer(stream: Stream, callback: () => void): VolumeMeasurer;\n}\n\n// Typescript definitions derived from https://github.com/microsoft/TypeScript/blob/main/lib/lib.dom.d.ts\n/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\nexport interface StreamTrackEvent extends Event {\n readonly track: Track;\n}\n\nexport interface StreamEventMap {\n \"addtrack\": StreamTrackEvent;\n \"removetrack\": StreamTrackEvent;\n}\n\nexport interface Stream {\n getTracks(): ReadonlyArray;\n getAudioTracks(): ReadonlyArray;\n getVideoTracks(): ReadonlyArray;\n readonly id: string;\n clone(): Stream;\n addEventListener(type: K, listener: (this: Stream, ev: StreamEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n removeEventListener(type: K, listener: (this: Stream, ev: StreamEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n addTrack(track: Track);\n removeTrack(track: Track);\n}\n\nexport enum TrackKind {\n Video = \"video\",\n Audio = \"audio\"\n}\n\nexport interface Track {\n readonly kind: TrackKind;\n readonly label: string;\n readonly id: string;\n enabled: boolean;\n // getSettings(): MediaTrackSettings;\n stop(): void;\n}\n\nexport interface VolumeMeasurer {\n get isSpeaking(): boolean;\n setSpeakingThreshold(threshold: number): void;\n stop();\n}\n","/*\nCopyright 2022 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {ILogItem} from \"../../logging/types\";\nimport type {Track, Stream} from \"../../platform/types/MediaDevices\";\nimport {LocalMedia} from \"./LocalMedia\";\n\nexport function getStreamAudioTrack(stream: Stream | undefined): Track | undefined {\n return stream?.getAudioTracks()[0];\n}\n\nexport function getStreamVideoTrack(stream: Stream | undefined): Track | undefined {\n return stream?.getVideoTracks()[0];\n}\n\nexport function mute(localMedia: LocalMedia, localMuteSettings: MuteSettings, log: ILogItem) {\n return log.wrap(\"mute\", log => {\n log.set(\"cameraMuted\", localMuteSettings.camera);\n log.set(\"microphoneMuted\", localMuteSettings.microphone);\n\n // Mute audio\n const userMediaAudio = getStreamAudioTrack(localMedia.userMedia);\n if (userMediaAudio) {\n const enabled = !localMuteSettings.microphone;\n log.set(\"microphone enabled\", enabled);\n userMediaAudio.enabled = enabled;\n }\n\n // Mute video\n const userMediaVideo = getStreamVideoTrack(localMedia.userMedia);\n if (userMediaVideo) {\n const enabled = !localMuteSettings.camera;\n log.set(\"camera enabled\", enabled);\n userMediaVideo.enabled = enabled;\n }\n });\n}\n\nexport class MuteSettings {\n constructor (\n private readonly isMicrophoneMuted: boolean = false,\n private readonly isCameraMuted: boolean = false,\n private hasMicrophoneTrack: boolean = false,\n private hasCameraTrack: boolean = false,\n ) {}\n\n updateTrackInfo(userMedia: Stream | undefined) {\n this.hasMicrophoneTrack = !!getStreamAudioTrack(userMedia);\n this.hasCameraTrack = !!getStreamVideoTrack(userMedia);\n }\n\n get microphone(): boolean {\n return !this.hasMicrophoneTrack || this.isMicrophoneMuted;\n }\n\n get camera(): boolean {\n return !this.hasCameraTrack || this.isCameraMuted;\n }\n\n toggleCamera(): MuteSettings {\n return new MuteSettings(this.microphone, !this.camera, this.hasMicrophoneTrack, this.hasCameraTrack);\n }\n\n toggleMicrophone(): MuteSettings {\n return new MuteSettings(!this.microphone, this.camera, this.hasMicrophoneTrack, this.hasCameraTrack);\n }\n\n equals(other: MuteSettings) {\n return this.microphone === other.microphone && this.camera === other.camera;\n }\n}\n\nexport const CALL_LOG_TYPE = \"call\";\nexport const CALL_MEMBER_VALIDITY_PERIOD_MS = 3600 * 1000; // 1h\n","// allow non-camelcase as these are events type that go onto the wire\n/* eslint-disable camelcase */\nimport type {StateEvent} from \"../storage/types\";\nimport type {SessionDescription} from \"../../platform/types/WebRTC\";\nexport enum EventType {\n GroupCall = \"org.matrix.msc3401.call\",\n GroupCallMember = \"org.matrix.msc3401.call.member\",\n Invite = \"m.call.invite\",\n Candidates = \"m.call.candidates\",\n Answer = \"m.call.answer\",\n Hangup = \"m.call.hangup\",\n Reject = \"m.call.reject\",\n SelectAnswer = \"m.call.select_answer\",\n Negotiate = \"m.call.negotiate\",\n SDPStreamMetadataChanged = \"m.call.sdp_stream_metadata_changed\",\n SDPStreamMetadataChangedPrefix = \"org.matrix.call.sdp_stream_metadata_changed\",\n Replaces = \"m.call.replaces\",\n AssertedIdentity = \"m.call.asserted_identity\",\n AssertedIdentityPrefix = \"org.matrix.call.asserted_identity\",\n}\n\n// TODO: Change to \"sdp_stream_metadata\" when MSC3077 is merged\nexport const SDPStreamMetadataKey = \"org.matrix.msc3077.sdp_stream_metadata\";\n\nexport interface FocusConfig {\n user_id: string,\n device_id: string\n}\n\nexport interface CallDeviceMembership {\n device_id: string,\n session_id: string,\n [\"expires_ts\"]?: number,\n feeds?: Array<{purpose: string}>\n [\"m.foci.active\"]?: Array\n}\n\nexport interface CallMembership {\n [\"m.call_id\"]: string,\n [\"m.devices\"]: CallDeviceMembership[]\n}\n\nexport interface CallMemberContent {\n [\"m.calls\"]: CallMembership[];\n}\n\nexport enum SDPStreamMetadataPurpose {\n Usermedia = \"m.usermedia\",\n Screenshare = \"m.screenshare\",\n}\n\nexport interface SDPStreamMetadataObject {\n purpose: SDPStreamMetadataPurpose;\n audio_muted: boolean;\n video_muted: boolean;\n}\n\nexport interface SDPStreamMetadata {\n [key: string]: SDPStreamMetadataObject;\n}\n\nexport interface CallCapabilities {\n 'm.call.transferee': boolean;\n 'm.call.dtmf': boolean;\n}\n\nexport interface CallReplacesTarget {\n id: string;\n display_name: string;\n avatar_url: string;\n}\n\nexport type MCallBase = {\n call_id: string;\n version: string | number;\n}\n\nexport type MGroupCallBase = MCallBase & {\n conf_id: string;\n device_id: string;\n sender_session_id: string;\n dest_session_id: string;\n party_id: string; // Should not need this?\n seq: number;\n} \n\nexport type MCallAnswer = Base & {\n answer: SessionDescription;\n capabilities?: CallCapabilities;\n [SDPStreamMetadataKey]: SDPStreamMetadata;\n}\n\nexport type MCallSelectAnswer = Base & {\n selected_party_id: string;\n}\n\nexport type MCallInvite = Base & {\n offer: SessionDescription;\n lifetime: number;\n [SDPStreamMetadataKey]: SDPStreamMetadata;\n}\n\nexport type MCallNegotiate = Base & {\n description: SessionDescription;\n lifetime: number;\n [SDPStreamMetadataKey]: SDPStreamMetadata;\n}\n\nexport type MCallSDPStreamMetadataChanged = Base & {\n [SDPStreamMetadataKey]: SDPStreamMetadata;\n}\n\nexport type MCallReplacesEvent = Base & {\n replacement_id: string;\n target_user: CallReplacesTarget;\n create_call: string;\n await_call: string;\n target_room: string;\n}\n\nexport type MCAllAssertedIdentity = Base & {\n asserted_identity: {\n id: string;\n display_name: string;\n avatar_url: string;\n };\n}\n\nexport type MCallCandidates = Base & {\n candidates: RTCIceCandidate[];\n}\n\nexport type MCallHangupReject = Base & {\n reason?: CallErrorCode;\n}\n\nexport enum CallErrorCode {\n /** The user chose to end the call */\n UserHangup = 'user_hangup',\n\n /** An error code when the local client failed to create an offer. */\n LocalOfferFailed = 'local_offer_failed',\n /**\n * An error code when there is no local mic/camera to use. This may be because\n * the hardware isn't plugged in, or the user has explicitly denied access.\n */\n NoUserMedia = 'no_user_media',\n\n /**\n * Error code used when a call event failed to send\n * because unknown devices were present in the room\n */\n UnknownDevices = 'unknown_devices',\n\n /**\n * Error code used when we fail to send the invite\n * for some reason other than there being unknown devices\n */\n SendInvite = 'send_invite',\n\n /**\n * An answer could not be created\n */\n CreateAnswer = 'create_answer',\n\n /**\n * Error code used when we fail to send the answer\n * for some reason other than there being unknown devices\n */\n SendAnswer = 'send_answer',\n\n /**\n * The session description from the other side could not be set\n */\n SetRemoteDescription = 'set_remote_description',\n\n /**\n * The session description from this side could not be set\n */\n SetLocalDescription = 'set_local_description',\n\n /**\n * A different device answered the call\n */\n AnsweredElsewhere = 'answered_elsewhere',\n\n /**\n * No media connection could be established to the other party\n */\n IceFailed = 'ice_failed',\n\n /**\n * The invite timed out whilst waiting for an answer\n */\n InviteTimeout = 'invite_timeout',\n\n /**\n * The call was replaced by another call\n */\n Replaced = 'replaced',\n\n /**\n * Signalling for the call could not be sent (other than the initial invite)\n */\n SignallingFailed = 'signalling_timeout',\n\n /**\n * The remote party is busy\n */\n UserBusy = 'user_busy',\n\n /**\n * We transferred the call off to somewhere else\n */\n Transfered = 'transferred',\n\n /**\n * A call from the same user was found with a new session id\n */\n NewSession = 'new_session',\n}\n\nexport type SignallingMessage =\n {type: EventType.Invite, content: MCallInvite} |\n {type: EventType.Negotiate, content: MCallNegotiate} |\n {type: EventType.Answer, content: MCallAnswer} |\n {type: EventType.SDPStreamMetadataChanged | EventType.SDPStreamMetadataChangedPrefix, content: MCallSDPStreamMetadataChanged} |\n {type: EventType.Candidates, content: MCallCandidates} |\n {type: EventType.Hangup | EventType.Reject, content: MCallHangupReject};\n\nexport enum CallIntent {\n Ring = \"m.ring\",\n Prompt = \"m.prompt\",\n Room = \"m.room\",\n};\n\nexport enum CallType {\n Video = \"m.video\",\n Voice = \"m.voice\",\n}\n","/*\nCopyright 2022 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {ObservableMap} from \"../../observable/map\";\nimport {BaseObservableValue} from \"../../observable/value\";\nimport {recursivelyAssign} from \"../../utils/recursivelyAssign\";\nimport {Disposables, Disposable, IDisposable} from \"../../utils/Disposables\";\nimport {WebRTC, PeerConnection, Transceiver, TransceiverDirection, Sender, Receiver, PeerConnectionEventMap} from \"../../platform/types/WebRTC\";\nimport {MediaDevices, Track, TrackKind, Stream, StreamTrackEvent} from \"../../platform/types/MediaDevices\";\nimport {getStreamVideoTrack, getStreamAudioTrack, MuteSettings, mute} from \"./common\";\nimport {\n SDPStreamMetadataKey,\n SDPStreamMetadataPurpose,\n EventType,\n CallErrorCode,\n} from \"./callEventTypes\";\n\nimport type {Room} from \"../room/Room\";\nimport type {StateEvent} from \"../storage/types\";\nimport type {ILogItem} from \"../../logging/types\";\nimport type {TimeoutCreator, Timeout} from \"../../platform/types/types\";\nimport type {LocalMedia} from \"./LocalMedia\";\nimport type {\n MCallBase,\n MCallInvite,\n MCallNegotiate,\n MCallAnswer,\n MCallSDPStreamMetadataChanged,\n MCallCandidates,\n MCallHangupReject,\n SDPStreamMetadata,\n SignallingMessage\n} from \"./callEventTypes\";\nimport type { ErrorBoundary } from \"../../utils/ErrorBoundary\";\nimport { AbortError } from \"../../utils/error\";\n\nexport type Options = {\n webRTC: WebRTC,\n forceTURN: boolean,\n turnServer: BaseObservableValue,\n createTimeout: TimeoutCreator,\n emitUpdate: (peerCall: PeerCall, params: any, log: ILogItem) => void;\n errorBoundary: ErrorBoundary; \n sendSignallingMessage: (message: SignallingMessage, log: ILogItem) => Promise;\n};\n\nexport enum IncomingMessageAction {\n InviteGlare,\n Handle,\n Ignore\n};\n\nexport class RemoteMedia {\n constructor(public userMedia?: Stream | undefined, public screenShare?: Stream | undefined) {}\n}\n\n// when sending, we need to encrypt message with olm. I think the flow of room => roomEncryption => olmEncryption as we already\n// do for sharing keys will be best as that already deals with room tracking.\n/**\n * Does WebRTC signalling for a single PeerConnection, and deals with WebRTC wrappers from platform\n * */\n/** Implements a call between two peers with the signalling state keeping, while still delegating the signalling message sending. Used by GroupCall.*/\nexport class PeerCall implements IDisposable {\n private readonly peerConnection: PeerConnection;\n private _state = CallState.Fledgling;\n private direction: CallDirection;\n // we don't own localMedia and should hence not call dispose on it from here\n private localMedia?: LocalMedia;\n private localMuteSettings?: MuteSettings;\n // TODO: this should go in member\n // A queue for candidates waiting to go out.\n // We try to amalgamate candidates into a single candidate message where\n // possible\n private candidateSendQueue: Array = [];\n // If candidates arrive before we've picked an opponent (which, in particular,\n // will happen if the opponent sends candidates eagerly before the user answers\n // the call) we buffer them up here so we can then add the ones from the party we pick\n private remoteCandidateBuffer? = new Map();\n\n private remoteSDPStreamMetadata?: SDPStreamMetadata;\n private responsePromiseChain?: Promise;\n private opponentPartyId?: PartyId;\n private hangupParty: CallParty;\n private disposables = new Disposables();\n private statePromiseMap = new Map void, promise: Promise}>();\n private _remoteTrackToStreamId = new Map();\n private _remoteStreams = new Map();\n // perfect negotiation flags\n private makingOffer: boolean = false;\n private ignoreOffer: boolean = false;\n\n private sentEndOfCandidates: boolean = false;\n private iceDisconnectedTimeout?: Timeout;\n\n private _dataChannel?: any;\n private _hangupReason?: CallErrorCode;\n private _remoteMedia: RemoteMedia;\n private _remoteMuteSettings = new MuteSettings();\n private flushCandidatesLog?: ILogItem;\n \n constructor(\n private callId: string,\n private readonly options: Options,\n private readonly logItem: ILogItem,\n ) {\n logItem.log({l: \"create PeerCall\", id: callId});\n this._remoteMedia = new RemoteMedia();\n this.peerConnection = options.webRTC.createPeerConnection(\n this.options.forceTURN,\n [this.options.turnServer.get()],\n 0\n );\n // update turn servers when they change (see TurnServerSource)\n this.disposables.track(this.options.turnServer.subscribe(turnServer => {\n this.logItem.log({l: \"updating turn server\", turnServer})\n this.peerConnection.setConfiguration({iceServers: [turnServer]});\n }));\n const listen = (type: K, listener: (ev: PeerConnectionEventMap[K]) => any, options?: boolean | EventListenerOptions): void => {\n const newListener = (e) => {\n this.options.errorBoundary.try(() => listener(e));\n };\n this.peerConnection.addEventListener(type, newListener);\n const dispose = () => {\n this.peerConnection.removeEventListener(type, newListener);\n };\n this.disposables.track(dispose);\n };\n\n listen(\"iceconnectionstatechange\", async () => {\n const state = this.peerConnection.iceConnectionState;\n await logItem.wrap({l: \"onIceConnectionStateChange\", status: state}, async log => {\n await this.onIceConnectionStateChange(state, log);\n });\n });\n listen(\"icecandidate\", async (event) => {\n await logItem.wrap(\"onLocalIceCandidate\", async log => {\n if (event.candidate) {\n await this.handleLocalIceCandidate(event.candidate, log);\n }\n });\n });\n listen(\"icegatheringstatechange\", async () => {\n const state = this.peerConnection.iceGatheringState;\n await logItem.wrap({l: \"onIceGatheringStateChange\", status: state}, async log => {\n await this.handleIceGatheringState(state, log);\n });\n });\n listen(\"track\", event => {\n logItem.wrap(\"onRemoteTrack\", log => {\n this.onRemoteTrack(event.track, event.streams, log);\n });\n });\n listen(\"datachannel\", event => {\n logItem.wrap(\"onRemoteDataChannel\", log => {\n this._dataChannel = event.channel;\n this.options.emitUpdate(this, undefined, log);\n });\n });\n listen(\"negotiationneeded\", () => {\n const signalingState = this.peerConnection.signalingState;\n const promiseCreator = () => {\n return logItem.wrap({l: \"onNegotiationNeeded\", signalingState}, log => {\n return this.handleNegotiation(log);\n });\n };\n this.responsePromiseChain = this.responsePromiseChain?.then(promiseCreator) ?? promiseCreator();\n this.responsePromiseChain.catch((e) =>\n this.options.errorBoundary.reportError(e)\n );\n });\n }\n\n get dataChannel(): any | undefined { return this._dataChannel; }\n\n get state(): CallState { return this._state; }\n\n get hangupReason(): CallErrorCode | undefined { return this._hangupReason; }\n\n get remoteMedia(): Readonly {\n return this._remoteMedia;\n }\n\n get remoteMuteSettings(): MuteSettings {\n return this._remoteMuteSettings;\n }\n\n call(localMedia: LocalMedia, localMuteSettings: MuteSettings, log: ILogItem): Promise {\n return log.wrap(\"call\", async log => {\n if (this._state !== CallState.Fledgling) {\n return;\n }\n log.set(\"signalingState\", this.peerConnection.signalingState);\n this.direction = CallDirection.Outbound;\n this.setState(CallState.CreateOffer, log);\n this.localMuteSettings = localMuteSettings;\n await this.updateLocalMedia(localMedia, log);\n if (this.localMedia?.dataChannelOptions) {\n this._dataChannel = this.peerConnection.createDataChannel(\"channel\", this.localMedia.dataChannelOptions);\n }\n // after adding the local tracks, and wait for handleNegotiation to be called,\n // or invite glare where we give up our invite and answer instead\n // TODO: we don't actually use this\n await this.waitForState([CallState.InviteSent, CallState.CreateAnswer]);\n });\n }\n\n answer(localMedia: LocalMedia, localMuteSettings: MuteSettings, log: ILogItem): Promise {\n return log.wrap(\"answer\", async log => {\n if (this._state !== CallState.Ringing) {\n return;\n }\n this.setState(CallState.CreateAnswer, log);\n this.localMuteSettings = localMuteSettings;\n await this.updateLocalMedia(localMedia, log);\n let myAnswer: RTCSessionDescriptionInit;\n try {\n myAnswer = await this.peerConnection.createAnswer();\n } catch (err) {\n await log.wrap(`Failed to create answer`, log => {\n log.catch(err);\n this.terminate(CallParty.Local, CallErrorCode.CreateAnswer, log);\n });\n return;\n }\n\n try {\n await this.peerConnection.setLocalDescription(myAnswer);\n this.setState(CallState.Connecting, log);\n } catch (err) {\n await log.wrap(`Error setting local description!`, log => {\n log.catch(err);\n this.terminate(CallParty.Local, CallErrorCode.SetLocalDescription, log);\n });\n return;\n }\n // Allow a short time for initial candidates to be gathered\n try { await this.delay(200); }\n catch (err) { return; }\n await this.sendAnswer(log);\n });\n }\n\n setMedia(localMedia: LocalMedia, log: ILogItem): Promise {\n return log.wrap(\"setMedia\", async log => {\n log.set(\"userMedia_audio\", !!getStreamAudioTrack(localMedia.userMedia));\n log.set(\"userMedia_video\", !!getStreamVideoTrack(localMedia.userMedia));\n log.set(\"screenShare_video\", !!getStreamVideoTrack(localMedia.screenShare));\n log.set(\"datachannel\", !!localMedia.dataChannelOptions);\n await this.updateLocalMedia(localMedia, log);\n const content: MCallSDPStreamMetadataChanged = {\n call_id: this.callId,\n version: 1,\n [SDPStreamMetadataKey]: this.getSDPMetadata()\n };\n await this.sendSignallingMessage({type: EventType.SDPStreamMetadataChangedPrefix, content}, log);\n });\n }\n\n setMuted(localMuteSettings: MuteSettings, log: ILogItem): Promise {\n return log.wrap(\"setMuted\", async log => {\n this.localMuteSettings = localMuteSettings;\n log.set(\"cameraMuted\", localMuteSettings.camera);\n log.set(\"microphoneMuted\", localMuteSettings.microphone);\n\n if (this.localMedia) {\n mute(this.localMedia, localMuteSettings, log);\n const content: MCallSDPStreamMetadataChanged = {\n call_id: this.callId,\n version: 1,\n [SDPStreamMetadataKey]: this.getSDPMetadata()\n };\n await this.sendSignallingMessage({type: EventType.SDPStreamMetadataChangedPrefix, content}, log);\n }\n });\n }\n\n hangup(errorCode: CallErrorCode, log: ILogItem): Promise {\n return log.wrap(\"hangup\", log => {\n return this._hangup(errorCode, log);\n });\n }\n\n private async _hangup(errorCode: CallErrorCode, log: ILogItem): Promise {\n if (this._state === CallState.Ended || this._state === CallState.Ending) {\n return;\n }\n this.setState(CallState.Ending, log);\n await this.sendHangupWithCallId(this.callId, errorCode, log);\n this.terminate(CallParty.Local, errorCode, log);\n }\n\n getMessageAction(message: SignallingMessage): IncomingMessageAction {\n const callIdMatches = this.callId === message.content.call_id;\n if (message.type === EventType.Invite && !callIdMatches) {\n return IncomingMessageAction.InviteGlare;\n } if (callIdMatches) {\n return IncomingMessageAction.Handle;\n } else {\n return IncomingMessageAction.Ignore;\n }\n }\n\n handleIncomingSignallingMessage(message: SignallingMessage, partyId: PartyId, log: ILogItem): ILogItem {\n // return logItem item immediately so it can be referenced by the sync log\n let logItem;\n log.wrap({\n l: \"receive signalling message\",\n type: message.type,\n callId: message.content.call_id,\n payload: message.content\n }, async log => {\n logItem = log;\n if (this.getMessageAction(message) !== IncomingMessageAction.Handle) {\n log.set(\"wrongCallId\", true);\n return;\n }\n switch (message.type) {\n case EventType.Invite:\n await this.handleFirstInvite(message.content, partyId, log);\n break;\n case EventType.Answer:\n await this.handleAnswer(message.content, partyId, log);\n break;\n case EventType.Negotiate:\n await this.onNegotiateReceived(message.content, log);\n break;\n case EventType.Candidates:\n await this.handleRemoteIceCandidates(message.content, partyId, log);\n break;\n case EventType.SDPStreamMetadataChanged:\n case EventType.SDPStreamMetadataChangedPrefix:\n this.updateRemoteSDPStreamMetadata(message.content[SDPStreamMetadataKey], log);\n break;\n case EventType.Hangup:\n // TODO: this is a bit hacky, double check its what we need\n log.set(\"reason\", message.content.reason);\n this.terminate(CallParty.Remote, message.content.reason ?? CallErrorCode.UserHangup, log);\n break;\n default:\n log.log(`Unknown event type for call: ${message.type}`);\n break;\n }\n });\n return logItem;\n }\n\n private sendHangupWithCallId(callId: string, reason: CallErrorCode | undefined, log: ILogItem): Promise {\n const content = {\n call_id: callId,\n version: 1,\n };\n // TODO: Don't send UserHangup reason to older clients\n if (reason) {\n content[\"reason\"] = reason;\n }\n return this.sendSignallingMessage({\n type: EventType.Hangup,\n content\n }, log);\n }\n\n // calls are serialized and deduplicated by responsePromiseChain\n private async handleNegotiation(log: ILogItem): Promise {\n this.makingOffer = true;\n try {\n try {\n await this.peerConnection.setLocalDescription();\n } catch (err) {\n log.log(`Error setting local description!`).catch(err);\n this.terminate(CallParty.Local, CallErrorCode.SetLocalDescription, log);\n return;\n }\n\n if (this.peerConnection.iceGatheringState === 'gathering') {\n // Allow a short time for initial candidates to be gathered\n try { await this.delay(200); }\n catch (err) { return; }\n }\n\n if (this._state === CallState.Ended) {\n return;\n }\n\n const offer = this.peerConnection.localDescription!;\n // Get rid of any candidates waiting to be sent: they'll be included in the local\n // description we just got and will send in the offer.\n log.set(\"includedCandidates\", this.candidateSendQueue.length);\n this.candidateSendQueue = [];\n\n // need to queue this\n if (this._state === CallState.CreateOffer) {\n const content = {\n call_id: this.callId,\n offer,\n [SDPStreamMetadataKey]: this.getSDPMetadata(),\n version: 1,\n lifetime: CALL_TIMEOUT_MS\n };\n await this.sendSignallingMessage({type: EventType.Invite, content}, log);\n this.setState(CallState.InviteSent, log);\n } else if (this._state === CallState.Connected || this._state === CallState.Connecting) {\n const content = {\n call_id: this.callId,\n description: offer,\n [SDPStreamMetadataKey]: this.getSDPMetadata(),\n version: 1,\n lifetime: CALL_TIMEOUT_MS\n };\n await this.sendSignallingMessage({type: EventType.Negotiate, content}, log);\n }\n } finally {\n this.makingOffer = false;\n }\n\n this.sendCandidateQueue(log);\n\n if (this._state === CallState.InviteSent) {\n const timeoutLog = this.logItem.child(\"invite timeout\");\n log.refDetached(timeoutLog);\n // don't await this, as it would block other negotationneeded events from being processed\n // as they are processed serially\n await timeoutLog.run(async log => {\n try { await this.delay(CALL_TIMEOUT_MS); }\n catch (err) { return; } // return when delay is cancelled by throwing an AbortError\n // @ts-ignore TS doesn't take the await above into account to know that the state could have changed in between\n if (this._state === CallState.InviteSent) {\n await this._hangup(CallErrorCode.InviteTimeout, log);\n }\n });\n }\n };\n\n /**\n * @returns {boolean} whether or not this call should be replaced\n * */\n handleInviteGlare(message: SignallingMessage, partyId: PartyId, log: ILogItem): {shouldReplace: boolean, log?: ILogItem} {\n if (message.type !== EventType.Invite) {\n return {shouldReplace: false};\n }\n\n const {content} = message;\n const newCallId = content.call_id;\n const shouldReplace = this.callId! > newCallId;\n\n let logItem;\n log.wrap(\"handling call glare\", async log => {\n logItem = log;\n if (shouldReplace) {\n log.log(\n \"Glare detected: answering incoming call \" + newCallId +\n \" and canceling outgoing call \"\n );\n // TODO: How do we interrupt `call()`? well, perhaps we need to not just await InviteSent but also CreateAnswer?\n if (this._state !== CallState.Fledgling && this._state !== CallState.CreateOffer) {\n await this.sendHangupWithCallId(this.callId, CallErrorCode.Replaced, log);\n }\n // since this method isn't awaited, we dispose ourselves once we hung up\n this.close(CallErrorCode.Replaced, log);\n this.dispose();\n } else {\n log.log(\n \"Glare detected: rejecting incoming call \" + newCallId +\n \" and keeping outgoing call \"\n );\n await this.sendHangupWithCallId(newCallId, CallErrorCode.Replaced, log);\n }\n });\n\n return {shouldReplace, log: logItem};\n }\n\n private handleHangupReceived(content: MCallHangupReject, log: ILogItem) {\n // party ID must match (our chosen partner hanging up the call) or be undefined (we haven't chosen\n // a partner yet but we're treating the hangup as a reject as per VoIP v0)\n // if (this.state === CallState.Ringing) {\n // default reason is user_hangup\n this.terminate(CallParty.Remote, content.reason || CallErrorCode.UserHangup, log);\n // } else {\n // log.set(\"ignored\", true);\n // }\n };\n\n private async handleFirstInvite(content: MCallInvite, partyId: PartyId, log: ILogItem): Promise {\n if (this._state !== CallState.Fledgling || this.opponentPartyId !== undefined) {\n // TODO: hangup or ignore?\n return;\n }\n await this.handleInvite(content, partyId, log);\n }\n\n private async handleInvite(content: MCallInvite, partyId: PartyId, log: ILogItem): Promise {\n\n // we must set the party ID before await-ing on anything: the call event\n // handler will start giving us more call events (eg. candidates) so if\n // we haven't set the party ID, we'll ignore them.\n this.opponentPartyId = partyId;\n this.direction = CallDirection.Inbound;\n\n const sdpStreamMetadata = content[SDPStreamMetadataKey];\n if (sdpStreamMetadata) {\n this.updateRemoteSDPStreamMetadata(sdpStreamMetadata, log);\n } else {\n log.log(`Call did not get any SDPStreamMetadata! Can not send/receive multiple streams`);\n }\n\n try {\n // Q: Why do we set the remote description before accepting the call? To start creating ICE candidates?\n await this.peerConnection.setRemoteDescription(content.offer);\n await this.addBufferedIceCandidates(log);\n } catch (e) {\n await log.wrap(`Call failed to set remote description`, async log => {\n log.catch(e);\n return this.terminate(CallParty.Local, CallErrorCode.SetRemoteDescription, log);\n });\n return;\n }\n\n // According to previous comments in this file, firefox at some point did not\n // add streams until media started arriving on them. Testing latest firefox\n // (81 at time of writing), this is no longer a problem, so let's do it the correct way.\n if (this.peerConnection.getReceivers().length === 0) {\n await log.wrap(`Call no remote stream or no tracks after setting remote description!`, async log => {\n return this.terminate(CallParty.Local, CallErrorCode.SetRemoteDescription, log);\n });\n return;\n }\n\n this.setState(CallState.Ringing, log);\n\n try { await this.delay(content.lifetime ?? CALL_TIMEOUT_MS); }\n catch (err) { return; }\n // @ts-ignore TS doesn't take the await above into account to know that the state could have changed in between\n if (this._state === CallState.Ringing) {\n log.log(`Invite has expired. Hanging up.`);\n this.hangupParty = CallParty.Remote; // effectively\n this.setState(CallState.Ended, log);\n //this.localMedia?.dispose();\n //this.localMedia = undefined;\n if (this.peerConnection.signalingState != 'closed') {\n this.peerConnection.close();\n }\n }\n }\n\n private async handleAnswer(content: MCallAnswer, partyId: PartyId, log: ILogItem): Promise {\n if (this._state === CallState.Ended) {\n log.log(`Ignoring answer because call has ended`);\n return;\n }\n\n if (this.opponentPartyId !== undefined) {\n log.log(`Ignoring answer: we already have an answer/reject from ${this.opponentPartyId}`);\n return;\n }\n\n this.opponentPartyId = partyId;\n await this.addBufferedIceCandidates(log);\n\n this.setState(CallState.Connecting, log);\n\n const sdpStreamMetadata = content[SDPStreamMetadataKey];\n if (sdpStreamMetadata) {\n this.updateRemoteSDPStreamMetadata(sdpStreamMetadata, log);\n } else {\n log.log(`Did not get any SDPStreamMetadata! Can not send/receive multiple streams`);\n }\n\n try {\n await this.peerConnection.setRemoteDescription(content.answer);\n } catch (e) {\n await log.wrap(`Failed to set remote description`, log => {\n log.catch(e);\n this.terminate(CallParty.Local, CallErrorCode.SetRemoteDescription, log);\n });\n return;\n }\n }\n\n private async handleIceGatheringState(state: RTCIceGatheringState, log: ILogItem) {\n if (state === 'complete' && !this.sentEndOfCandidates) {\n // If we didn't get an empty-string candidate to signal the end of candidates,\n // create one ourselves now gathering has finished.\n // We cast because the interface lists all the properties as required but we\n // only want to send 'candidate'\n // XXX: We probably want to send either sdpMid or sdpMLineIndex, as it's not strictly\n // correct to have a candidate that lacks both of these. We'd have to figure out what\n // previous candidates had been sent with and copy them.\n const c = {\n candidate: '',\n } as RTCIceCandidate;\n await this.queueCandidate(c, log);\n this.sentEndOfCandidates = true;\n }\n }\n\n private async handleLocalIceCandidate(candidate: RTCIceCandidate, log: ILogItem) {\n log.set(\"sdpMid\", candidate.sdpMid);\n log.set(\"candidate\", candidate.candidate);\n\n if (this._state === CallState.Ended) {\n return;\n }\n // As with the offer, note we need to make a copy of this object, not\n // pass the original: that broke in Chrome ~m43.\n if (candidate.candidate !== '' || !this.sentEndOfCandidates) {\n await this.queueCandidate(candidate, log);\n if (candidate.candidate === '') {\n this.sentEndOfCandidates = true;\n }\n }\n }\n\n private async handleRemoteIceCandidates(content: MCallCandidates, partyId: PartyId, log: ILogItem) {\n if (this.state === CallState.Ended) {\n log.log(\"Ignoring remote ICE candidate because call has ended\");\n return;\n }\n\n const candidates = content.candidates;\n if (!candidates) {\n log.log(`Ignoring candidates event with no candidates!`);\n return;\n }\n\n const fromPartyId = content.version === 0 ? null : partyId || null;\n\n if (this.opponentPartyId === undefined) {\n // we haven't picked an opponent yet so save the candidates\n log.log(`Buffering ${candidates.length} candidates until we pick an opponent`);\n const bufferedCandidates = this.remoteCandidateBuffer!.get(fromPartyId) || [];\n bufferedCandidates.push(...candidates);\n this.remoteCandidateBuffer!.set(fromPartyId, bufferedCandidates);\n return;\n }\n\n if (this.opponentPartyId !== partyId) {\n log.log(\n `Ignoring candidates from party ID ${partyId}: ` +\n `we have chosen party ID ${this.opponentPartyId}`\n );\n\n return;\n }\n\n await this.addIceCandidates(candidates, log);\n }\n\n private async onNegotiateReceived(content: MCallNegotiate, log: ILogItem): Promise {\n const description = content.description;\n if (!description || !description.sdp || !description.type) {\n log.log(`Ignoring invalid m.call.negotiate event`);\n return;\n }\n // Politeness always follows the direction of the call: in a glare situation,\n // we pick either the inbound or outbound call, so one side will always be\n // inbound and one outbound\n const polite = this.direction === CallDirection.Inbound;\n\n // Here we follow the perfect negotiation logic from\n // https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Perfect_negotiation\n const offerCollision = (\n (description.type === 'offer') &&\n (this.makingOffer || this.peerConnection.signalingState !== 'stable')\n );\n\n this.ignoreOffer = !polite && offerCollision;\n if (this.ignoreOffer) {\n log.log(`Ignoring colliding negotiate event because we're impolite`);\n return;\n }\n\n const sdpStreamMetadata = content[SDPStreamMetadataKey];\n if (sdpStreamMetadata) {\n this.updateRemoteSDPStreamMetadata(sdpStreamMetadata, log);\n } else {\n log.log(`Received negotiation event without SDPStreamMetadata!`);\n }\n\n try {\n await this.peerConnection.setRemoteDescription(description);\n if (description.type === 'offer') {\n await this.peerConnection.setLocalDescription();\n const content = {\n call_id: this.callId,\n description: this.peerConnection.localDescription!,\n [SDPStreamMetadataKey]: this.getSDPMetadata(),\n version: 1,\n lifetime: CALL_TIMEOUT_MS\n };\n await this.sendSignallingMessage({type: EventType.Negotiate, content}, log);\n }\n } catch (err) {\n log.log(`Failed to complete negotiation`).catch(err);\n }\n }\n\n private async sendAnswer(log: ILogItem): Promise {\n const localDescription = this.peerConnection.localDescription!;\n const answerContent: MCallAnswer = {\n call_id: this.callId,\n version: 1,\n answer: {\n sdp: localDescription.sdp,\n type: localDescription.type,\n },\n [SDPStreamMetadataKey]: this.getSDPMetadata(),\n };\n\n // We have just taken the local description from the peerConn which will\n // contain all the local candidates added so far, so we can discard any candidates\n // we had queued up because they'll be in the answer.\n log.log(`Discarding ${\n this.candidateSendQueue.length} candidates that will be sent in answer`);\n this.candidateSendQueue = [];\n\n try {\n await this.sendSignallingMessage({type: EventType.Answer, content: answerContent}, log);\n } catch (error) {\n this.terminate(CallParty.Local, CallErrorCode.SendAnswer, log);\n throw error;\n }\n\n // error handler re-throws so this won't happen on error, but\n // we don't want the same error handling on the candidate queue\n this.sendCandidateQueue(log);\n }\n\n private async queueCandidate(content: RTCIceCandidate, log: ILogItem): Promise {\n // We partially de-trickle candidates by waiting for `delay` before sending them\n // amalgamated, in order to avoid sending too many m.call.candidates events and hitting\n // rate limits in Matrix.\n // In practice, it'd be better to remove rate limits for m.call.*\n\n // N.B. this deliberately lets you queue and send blank candidates, which MSC2746\n // currently proposes as the way to indicate that candidate gathering is complete.\n // This will hopefully be changed to an explicit rather than implicit notification\n // shortly.\n this.candidateSendQueue.push(content);\n\n // Don't send the ICE candidates yet if the call is in the ringing state\n if (this._state === CallState.Ringing) return;\n\n\n this.flushCandidatesLog = this.flushCandidatesLog ?? this.logItem.child(\"flush candidate queue\");\n log.refDetached(this.flushCandidatesLog);\n const {flushCandidatesLog} = this;\n // MSC2746 recommends these values (can be quite long when calling because the\n // callee will need a while to answer the call)\n try { await this.delay(this.direction === CallDirection.Inbound ? 500 : 2000); }\n catch (err) { return; }\n this.sendCandidateQueue(flushCandidatesLog);\n this.flushCandidatesLog = undefined;\n }\n\n private async sendCandidateQueue(log: ILogItem): Promise {\n if (this.candidateSendQueue.length === 0 || this._state === CallState.Ended) {\n return;\n }\n const candidates = this.candidateSendQueue;\n this.candidateSendQueue = [];\n return log.wrap({l: \"send candidates\", size: candidates.length}, async log => {\n try {\n await this.sendSignallingMessage({\n type: EventType.Candidates,\n content: {\n call_id: this.callId,\n version: 1,\n candidates\n },\n }, log);\n // Try to send candidates again just in case we received more candidates while sending.\n await this.sendCandidateQueue(log);\n } catch (error) {\n log.catch(error);\n // don't retry this event: we'll send another one later as we might\n // have more candidates by then.\n // put all the candidates we failed to send back in the queue\n\n // TODO: terminate doesn't seem to vibe with the comment above?\n this.terminate(CallParty.Local, CallErrorCode.SignallingFailed, log);\n }\n });\n }\n\n private updateRemoteSDPStreamMetadata(metadata: SDPStreamMetadata, log: ILogItem): void {\n // this will accumulate all updates into one object, so we still have the old stream info when we change stream id\n this.remoteSDPStreamMetadata = recursivelyAssign(this.remoteSDPStreamMetadata || {}, metadata, true);\n this.updateRemoteMedia(log);\n \n }\n\n private async addBufferedIceCandidates(log: ILogItem): Promise {\n if (this.remoteCandidateBuffer && this.opponentPartyId) {\n const bufferedCandidates = this.remoteCandidateBuffer.get(this.opponentPartyId);\n if (bufferedCandidates) {\n log.log(`Adding ${\n bufferedCandidates.length} buffered candidates for opponent ${this.opponentPartyId}`);\n await this.addIceCandidates(bufferedCandidates, log);\n }\n this.remoteCandidateBuffer = undefined;\n }\n }\n\n private async addIceCandidates(candidates: RTCIceCandidate[], log: ILogItem): Promise {\n for (const candidate of candidates) {\n let logItem;\n if (\n (candidate.sdpMid === null || candidate.sdpMid === undefined) &&\n (candidate.sdpMLineIndex === null || candidate.sdpMLineIndex === undefined)\n ) {\n logItem = log.log(`Got remote end-of-ICE candidates`);\n }\n else {\n logItem = log.log(`Adding remote ICE ${candidate.sdpMid} candidate: ${candidate.candidate}`);\n }\n try {\n await this.peerConnection.addIceCandidate(candidate);\n } catch (err) {\n if (!this.ignoreOffer) {\n logItem.catch(err);\n }\n }\n }\n }\n\n private onIceConnectionStateChange = async (state: RTCIceConnectionState, log: ILogItem): Promise => {\n if (this._state === CallState.Ended) {\n return; // because ICE can still complete as we're ending the call\n }\n let logStats = false;\n // ideally we'd consider the call to be connected when we get media but\n // chrome doesn't implement any of the 'onstarted' events yet\n if (state == 'connected') {\n this.iceDisconnectedTimeout?.abort();\n this.iceDisconnectedTimeout = undefined;\n this.setState(CallState.Connected, log);\n } else if (state == 'failed') {\n logStats = true;\n this.iceDisconnectedTimeout?.abort();\n this.iceDisconnectedTimeout = undefined;\n await this._hangup(CallErrorCode.IceFailed, log);\n } else if (state == 'disconnected') {\n logStats = true;\n this.iceDisconnectedTimeout = this.options.createTimeout(30 * 1000);\n try {\n await this.iceDisconnectedTimeout.elapsed()\n await this._hangup(CallErrorCode.IceFailed, log);\n }\n catch (e){\n if (!(e instanceof AbortError)) {\n throw e; \n }\n }\n }\n if (logStats) {\n const stats = await this.peerConnection.getStats();\n const statsObj = {};\n stats.forEach((value, key) => {\n statsObj[key] = value;\n });\n log.set(\"peerConnectionStats\", statsObj);\n }\n };\n\n private setState(state: CallState, log: ILogItem): void {\n if (state !== this._state) {\n log.log({l: \"change state\", status: state, oldState: this._state});\n const oldState = this._state;\n this._state = state;\n let deferred = this.statePromiseMap.get(state);\n if (deferred) {\n deferred.resolve();\n this.statePromiseMap.delete(state);\n }\n this.options.emitUpdate(this, undefined, log);\n }\n }\n\n private waitForState(states: CallState[]): Promise {\n // TODO: rework this, do we need to clean up the promises?\n return Promise.race(states.map(state => {\n let deferred = this.statePromiseMap.get(state);\n if (!deferred) {\n let resolve;\n const promise = new Promise(r => {\n resolve = r;\n });\n deferred = {resolve, promise};\n this.statePromiseMap.set(state, deferred);\n }\n return deferred.promise;\n }));\n }\n\n private terminate(hangupParty: CallParty, hangupReason: CallErrorCode, log: ILogItem): void {\n if (this._state === CallState.Ended) {\n return;\n }\n\n this.hangupParty = hangupParty;\n this._hangupReason = hangupReason;\n this.setState(CallState.Ended, log);\n this.localMedia = undefined;\n\n // TODO: change signalingState to connectionState?\n if (this.peerConnection && this.peerConnection.signalingState !== 'closed') {\n this.peerConnection.close();\n }\n }\n\n private getSDPMetadata(): SDPStreamMetadata {\n const metadata = {};\n if (this.localMedia?.userMedia) {\n const streamId = this.localMedia.userMedia.id;\n metadata[streamId] = {\n purpose: SDPStreamMetadataPurpose.Usermedia,\n audio_muted: this.localMuteSettings?.microphone ?? false,\n video_muted: this.localMuteSettings?.camera ?? false,\n };\n }\n if (this.localMedia?.screenShare) {\n const streamId = this.localMedia.screenShare.id;\n metadata[streamId] = {\n purpose: SDPStreamMetadataPurpose.Screenshare\n };\n }\n return metadata;\n }\n\n private findReceiverForStream(kind: TrackKind, streamId: string): Receiver | undefined {\n return this.peerConnection.getReceivers().find(r => {\n return r.track.kind === kind && this._remoteTrackToStreamId.get(r.track.id) === streamId;\n });\n }\n\n private findTransceiverForTrack(track: Track): Transceiver | undefined {\n return this.peerConnection.getTransceivers().find(t => {\n return t.sender.track?.id === track.id;\n });\n }\n\n\n private onRemoteTrack(track: Track, streams: ReadonlyArray, log: ILogItem) {\n log.set(\"kind\", track.kind);\n log.set(\"id\", track.id);\n log.set(\"streams\", streams.map(s => s.id));\n if (streams.length === 0) {\n log.log({l: `ignoring ${track.kind} streamless track`, id: track.id});\n return;\n }\n const stream = streams[0];\n this._remoteTrackToStreamId.set(track.id, stream.id);\n if (!this._remoteStreams.has(stream.id)) {\n const listener = (event: StreamTrackEvent): void => {\n this.logItem.wrap({l: \"removetrack\", id: event.track.id}, log => {\n const streamId = this._remoteTrackToStreamId.get(event.track.id);\n if (streamId) {\n this._remoteTrackToStreamId.delete(event.track.id);\n const streamDetails = this._remoteStreams.get(streamId);\n if (streamDetails && streamDetails.stream.getTracks().length === 0) {\n this.disposables.disposeTracked(disposeListener);\n this._remoteStreams.delete(stream.id);\n this.updateRemoteMedia(log);\n }\n }\n });\n };\n stream.addEventListener(\"removetrack\", listener);\n const disposeListener = () => {\n stream.removeEventListener(\"removetrack\", listener);\n };\n this.disposables.track(disposeListener);\n this._remoteStreams.set(stream.id, {\n disposeListener,\n stream\n });\n }\n this.updateRemoteMedia(log);\n }\n\n private updateRemoteMedia(log: ILogItem): void {\n log.wrap(\"reevaluating remote media\", log => {\n this._remoteMedia.userMedia = undefined;\n this._remoteMedia.screenShare = undefined;\n if (this.remoteSDPStreamMetadata) {\n for (const streamDetails of this._remoteStreams.values()) {\n const {stream} = streamDetails;\n const metaData = this.remoteSDPStreamMetadata[stream.id];\n if (metaData) {\n if (metaData.purpose === SDPStreamMetadataPurpose.Usermedia) {\n this._remoteMedia.userMedia = stream;\n const audioReceiver = this.findReceiverForStream(TrackKind.Audio, stream.id);\n if (audioReceiver) {\n audioReceiver.track.enabled = !metaData.audio_muted;\n }\n const videoReceiver = this.findReceiverForStream(TrackKind.Video, stream.id);\n if (videoReceiver) {\n videoReceiver.track.enabled = !metaData.video_muted;\n }\n this._remoteMuteSettings = new MuteSettings(\n metaData.audio_muted ?? false,\n metaData.video_muted ?? false,\n !!audioReceiver?.track ?? false,\n !!videoReceiver?.track ?? false\n );\n log.log({\n l: \"setting userMedia\",\n micMuted: this._remoteMuteSettings.microphone,\n cameraMuted: this._remoteMuteSettings.camera\n });\n } else if (metaData.purpose === SDPStreamMetadataPurpose.Screenshare) {\n this._remoteMedia.screenShare = stream;\n log.log(\"setting screenShare\");\n }\n } else {\n log.log({l: \"no metadata yet for stream, ignoring for now\", id: stream.id});\n }\n }\n }\n this.options.emitUpdate(this, undefined, log);\n });\n }\n\n private updateLocalMedia(localMedia: LocalMedia, logItem: ILogItem): Promise {\n return logItem.wrap(\"updateLocalMedia\", async log => {\n const senders = this.peerConnection.getSenders();\n const applyStream = async (oldStream: Stream | undefined, stream: Stream | undefined, streamPurpose: SDPStreamMetadataPurpose) => {\n const applyTrack = async (oldTrack: Track | undefined, newTrack: Track | undefined) => {\n const oldSender = senders.find(s => s.track === oldTrack);\n const streamToKeep = (oldStream ?? stream)!;\n if (streamToKeep !== stream) {\n if (oldTrack) {\n streamToKeep.removeTrack(oldTrack);\n oldTrack.stop();\n }\n if (newTrack) {\n streamToKeep.addTrack(newTrack);\n }\n }\n if (newTrack && oldSender) {\n try {\n await log.wrap(`attempting to replace ${streamPurpose} ${newTrack.kind} track`, log => {\n return oldSender.replaceTrack(newTrack);\n });\n // replaceTrack succeeded, nothing left to do\n return;\n } catch (err) {}\n }\n if(oldSender) {\n log.wrap(`removing ${streamPurpose} ${oldSender.track!.kind} track`, log => {\n this.peerConnection.removeTrack(oldSender);\n });\n }\n if (newTrack) {\n log.wrap(`adding ${streamPurpose} ${newTrack.kind} track`, log => {\n const newSender = this.peerConnection.addTrack(newTrack, streamToKeep);\n this.options.webRTC.prepareSenderForPurpose(this.peerConnection, newSender, streamPurpose);\n });\n }\n }\n if (!oldStream && !stream) {\n return;\n }\n await applyTrack(getStreamAudioTrack(oldStream), getStreamAudioTrack(stream));\n await applyTrack(getStreamVideoTrack(oldStream), getStreamVideoTrack(stream));\n };\n\n await applyStream(this.localMedia?.userMedia, localMedia?.userMedia, SDPStreamMetadataPurpose.Usermedia);\n await applyStream(this.localMedia?.screenShare, localMedia?.screenShare, SDPStreamMetadataPurpose.Screenshare);\n // we explicitly don't replace this.localMedia if already set\n // as we need to keep the old stream so the stream id doesn't change\n // instead we add and remove tracks in the stream in applyTrack\n if (!this.localMedia) {\n this.localMedia = localMedia;\n }\n // TODO: datachannel, but don't do it here as we don't want to do it from answer, rather in different method\n });\n }\n\n private async delay(timeoutMs: number): Promise {\n // Allow a short time for initial candidates to be gathered\n const timeout = this.disposables.track(this.options.createTimeout(timeoutMs));\n try {\n await timeout.elapsed();\n } finally {\n this.disposables.untrack(timeout);\n }\n }\n\n private sendSignallingMessage(message: SignallingMessage, log: ILogItem) {\n return log.wrap({l: \"send\", id: message.type}, async log => {\n return this.options.sendSignallingMessage(message, log);\n });\n }\n\n public dispose(): void {\n this.disposables.dispose();\n this.iceDisconnectedTimeout?.abort();\n this.peerConnection.close();\n // replace emitUpdate in case any eventhandler in here is still attached\n // we really don't want to trigger any code in Member after this\n this.options.emitUpdate = (_, __, log) => {\n log.log(\"emitting update from PeerCall after disposal\", this.logItem.level.Error);\n console.trace(\"emitting update from PeerCall after disposal\");\n };\n }\n\n public close(reason: CallErrorCode | undefined, log: ILogItem): void {\n if (reason === undefined) {\n reason = CallErrorCode.UserHangup;\n }\n this.terminate(CallParty.Local, reason, log);\n }\n}\n\n\n\n//import { randomString } from '../randomstring';\n\n// null is used as a special value meaning that the we're in a legacy 1:1 call\n// without MSC2746 that doesn't provide an id which device sent the message.\ntype PartyId = string | null;\n\nexport enum CallParty {\n Local = 'local',\n Remote = 'remote',\n}\n\nexport enum CallState {\n Fledgling = 'fledgling',\n CreateOffer = 'create_offer',\n InviteSent = 'invite_sent',\n CreateAnswer = 'create_answer',\n Connecting = 'connecting',\n Connected = 'connected',\n Ringing = 'ringing',\n Ending = 'ending',\n Ended = 'ended',\n}\n\nexport enum CallDirection {\n Inbound = 'inbound',\n Outbound = 'outbound',\n}\n\n/**\n * The version field that we set in m.call.* events\n */\nconst VOIP_PROTO_VERSION = 1;\n\n/** The length of time a call can be ringing for. */\nconst CALL_TIMEOUT_MS = 60000;\n\n//const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n\nexport class CallError extends Error {\n code: string;\n\n constructor(code: CallErrorCode, msg: string, err: Error) {\n // Still don't think there's any way to have proper nested errors\n super(msg + \": \" + err);\n\n this.code = code;\n }\n}\n\nexport function handlesEventType(eventType: string): boolean {\n return eventType === EventType.Invite ||\n eventType === EventType.Candidates ||\n eventType === EventType.Answer ||\n eventType === EventType.Hangup ||\n eventType === EventType.SDPStreamMetadataChanged ||\n eventType === EventType.SDPStreamMetadataChangedPrefix ||\n eventType === EventType.Negotiate;\n}\n\nfunction enableSenderOnTransceiver(transceiver: Transceiver, enabled: boolean) {\n return enableTransceiver(transceiver, enabled, \"sendonly\", \"recvonly\");\n}\n\nfunction enableTransceiver(transceiver: Transceiver, enabled: boolean, exclusiveValue: TransceiverDirection, excludedValue: TransceiverDirection) {\n if (enabled) {\n if (transceiver.direction === \"inactive\") {\n transceiver.direction = exclusiveValue;\n } else {\n transceiver.direction = \"sendrecv\";\n }\n } else {\n if (transceiver.direction === \"sendrecv\") {\n transceiver.direction = excludedValue;\n } else {\n transceiver.direction = \"inactive\";\n }\n }\n}\n\n/**\n * tests to write:\n * \n * upgradeCall: adding a track with setMedia calls the correct methods on the peerConnection\n * upgradeCall: removing a track with setMedia calls the correct methods on the peerConnection\n * upgradeCall: replacing compatible track with setMedia calls the correct methods on the peerConnection\n * upgradeCall: replacing incompatible track (sender.replaceTrack throws) with setMedia calls the correct methods on the peerConnection\n * \n * */\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexport class ErrorBoundary {\n private _error?: Error;\n\n constructor(private readonly errorCallback: (err: Error) => void) {}\n\n /**\n * Executes callback() and then runs errorCallback() on error.\n * This will never throw but instead return `errorValue` if an error occurred.\n */\n try(callback: () => T, errorValue?: E): T | typeof errorValue;\n try(callback: () => Promise, errorValue?: E): Promise | typeof errorValue {\n try {\n let result: T | Promise = callback();\n if (result instanceof Promise) {\n result = result.catch(err => {\n this._error = err;\n this.reportError(err);\n return errorValue;\n });\n }\n return result;\n } catch (err) {\n this._error = err;\n this.reportError(err);\n return errorValue;\n }\n }\n\n reportError(err: Error) {\n try {\n this.errorCallback(err);\n } catch (err) {\n console.error(\"error in ErrorBoundary callback\", err);\n }\n }\n\n get error(): Error | undefined {\n return this._error;\n }\n}\n\nexport function tests() {\n return {\n \"catches sync error\": assert => {\n let emitted = false;\n const boundary = new ErrorBoundary(() => emitted = true);\n const result = boundary.try(() => {\n throw new Error(\"fail!\");\n }, 0);\n assert(emitted);\n assert.strictEqual(result, 0);\n },\n \"return value of callback is forwarded\": assert => {\n let emitted = false;\n const boundary = new ErrorBoundary(() => emitted = true);\n const result = boundary.try(() => {\n return \"hello\";\n });\n assert(!emitted);\n assert.strictEqual(result, \"hello\");\n },\n \"catches async error\": async assert => {\n let emitted = false;\n const boundary = new ErrorBoundary(() => emitted = true);\n const result = await boundary.try(async () => {\n throw new Error(\"fail!\");\n }, 0);\n assert(emitted);\n assert.strictEqual(result, 0);\n },\n \"exception in error callback is swallowed\": async assert => {\n let emitted = false;\n const boundary = new ErrorBoundary(() => { throw new Error(\"bug in errorCallback\"); });\n assert.doesNotThrow(() => {\n boundary.try(() => {\n throw new Error(\"fail!\");\n });\n });\n }\n }\n}\n","/*\nCopyright 2022 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {PeerCall, CallState, IncomingMessageAction} from \"../PeerCall\";\nimport {makeTxnId, makeId} from \"../../common\";\nimport {EventType, CallErrorCode} from \"../callEventTypes\";\nimport {formatToDeviceMessagesPayload} from \"../../common\";\nimport {sortedIndex} from \"../../../utils/sortedIndex\";\nimport { ErrorBoundary } from \"../../../utils/ErrorBoundary\";\n\nimport {MuteSettings} from \"../common\";\nimport type {Options as PeerCallOptions, RemoteMedia} from \"../PeerCall\";\nimport type {LocalMedia} from \"../LocalMedia\";\nimport type {HomeServerApi} from \"../../net/HomeServerApi\";\nimport type {MCallBase, MGroupCallBase, SignallingMessage, CallDeviceMembership} from \"../callEventTypes\";\nimport type {GroupCall} from \"./GroupCall\";\nimport {RoomMember} from \"../../room/members/RoomMember\";\nimport type {EncryptedMessage} from \"../../e2ee/olm/Encryption\";\nimport type {ILogItem} from \"../../../logging/types\";\nimport type {BaseObservableValue} from \"../../../observable/value\";\nimport type {Clock, Timeout} from \"../../../platform/web/dom/Clock\";\n\nexport type Options = Omit & {\n confId: string,\n ownUserId: string,\n ownDeviceId: string,\n // local session id of our client\n sessionId: string,\n hsApi: HomeServerApi,\n encryptDeviceMessage: (userId: string, deviceId: string, message: SignallingMessage, log: ILogItem) => Promise,\n emitUpdate: (participant: Member, params?: any) => void,\n clock: Clock\n}\n\nconst errorCodesWithoutRetry = [\n CallErrorCode.UserHangup,\n CallErrorCode.AnsweredElsewhere,\n CallErrorCode.Replaced,\n CallErrorCode.UserBusy,\n CallErrorCode.Transfered,\n CallErrorCode.NewSession\n];\n\n/** @internal */\nclass MemberConnection {\n public retryCount: number = 0;\n public peerCall?: PeerCall;\n public lastProcessedSeqNr: number | undefined;\n // XXX: Not needed anymore when seq is scoped to call_id\n // see https://github.com/matrix-org/matrix-spec-proposals/pull/3401#discussion_r1097482166\n public lastIgnoredSeqNr: number | undefined;\n public queuedSignallingMessages: SignallingMessage[] = [];\n public outboundSeqCounter: number = 0;\n\n constructor(\n public localMedia: LocalMedia,\n public localMuteSettings: MuteSettings,\n public turnServer: BaseObservableValue,\n public readonly logItem: ILogItem\n ) {}\n\n get canDequeueNextSignallingMessage() {\n if (this.queuedSignallingMessages.length === 0) {\n return false;\n }\n const first = this.queuedSignallingMessages[0];\n const firstSeq = first.content.seq;\n // prevent not being able to jump over seq values of ignored messages for other call ids\n // as they don't increase lastProcessedSeqNr.\n if (this.lastIgnoredSeqNr !== undefined && firstSeq === this.lastIgnoredSeqNr + 1) {\n return true;\n }\n if (this.lastProcessedSeqNr === undefined) {\n return firstSeq === 0;\n }\n // allow messages with both a seq we've just seen and\n // the next one to be dequeued as it can happen\n // that messages for other callIds (which could repeat seq)\n // are present in the queue\n // XXX: Not needed anymore when seq is scoped to call_id\n // see https://github.com/matrix-org/matrix-spec-proposals/pull/3401#discussion_r1097482166\n return firstSeq <= (this.lastProcessedSeqNr + 1);\n }\n\n dispose() {\n this.peerCall?.dispose();\n this.localMedia.dispose();\n this.logItem.finish();\n }\n}\n\nexport class Member {\n private connection?: MemberConnection;\n private expireTimeout?: Timeout;\n private errorBoundary = new ErrorBoundary(err => {\n this.options.emitUpdate(this, \"error\");\n if (this.connection) {\n // in case the error happens in code that does not log,\n // log it here to make sure it isn't swallowed\n this.connection.logItem.log(\"error at boundary\").catch(err);\n }\n });\n\n constructor(\n public member: RoomMember,\n private callDeviceMembership: CallDeviceMembership,\n private options: Options,\n updateMemberLog: ILogItem\n ) {\n this._renewExpireTimeout(updateMemberLog);\n }\n\n get error(): Error | undefined {\n return this.errorBoundary.error;\n }\n\n get usesFoci(): boolean {\n const activeFoci = this.callDeviceMembership[\"m.foci.active\"];\n return Array.isArray(activeFoci) && activeFoci.length > 0;\n }\n\n private _renewExpireTimeout(log: ILogItem) {\n this.expireTimeout?.dispose();\n this.expireTimeout = undefined;\n const expiresAt = memberExpiresAt(this.callDeviceMembership);\n if (typeof expiresAt !== \"number\") {\n return;\n }\n const expiresFromNow = Math.max(0, expiresAt - this.options.clock.now());\n log?.set(\"expiresIn\", expiresFromNow);\n // add 10ms to make sure isExpired returns true\n this.expireTimeout = this.options.clock.createTimeout(expiresFromNow + 10);\n this.expireTimeout.elapsed().then(\n () => { this.options.emitUpdate(this, \"isExpired\"); },\n (err) => { /* ignore abort error */ },\n );\n }\n\n /**\n * Gives access the log item for this item once joined to the group call.\n * The signalling for this member will be log in this item.\n * Can be used for call diagnostics while in the call.\n **/\n get logItem(): ILogItem | undefined {\n return this.connection?.logItem;\n }\n\n get remoteMedia(): RemoteMedia | undefined {\n return this.connection?.peerCall?.remoteMedia;\n }\n\n get isExpired(): boolean {\n // never consider a peer we're connected to, to be expired\n return !this.isConnected && isMemberExpired(this.callDeviceMembership, this.options.clock.now());\n }\n\n get remoteMuteSettings(): MuteSettings | undefined {\n return this.connection?.peerCall?.remoteMuteSettings;\n }\n\n get isConnected(): boolean {\n return this.connection?.peerCall?.state === CallState.Connected;\n }\n\n get userId(): string {\n return this.member.userId;\n }\n\n get deviceId(): string {\n return this.callDeviceMembership.device_id;\n }\n\n /** @internal, to emulate deviceKey properties when calling formatToDeviceMessagesPayload */ \n get user_id(): string {\n return this.userId;\n }\n \n /** @internal, to emulate deviceKey properties when calling formatToDeviceMessagesPayload */\n get device_id(): string {\n return this.deviceId;\n }\n\n /** session id of the member */\n get sessionId(): string {\n return this.callDeviceMembership.session_id;\n }\n\n get dataChannel(): any | undefined {\n return this.connection?.peerCall?.dataChannel;\n }\n\n /** @internal */\n connect(localMedia: LocalMedia, localMuteSettings: MuteSettings, turnServer: BaseObservableValue, memberLogItem: ILogItem): Promise | undefined {\n return this.errorBoundary.try(async () => {\n if (this.connection) {\n return;\n }\n // Safari can't send a MediaStream to multiple sources, so clone it\n const connection = new MemberConnection(\n localMedia.clone(),\n localMuteSettings,\n turnServer,\n memberLogItem\n );\n this.connection = connection;\n let connectLogItem: ILogItem | undefined;\n await connection.logItem.wrap(\"connect\", async log => {\n connectLogItem = log;\n await this.callIfNeeded(log);\n });\n return connectLogItem;\n });\n }\n\n private callIfNeeded(log: ILogItem): Promise {\n return log.wrap(\"callIfNeeded\", async log => {\n // otherwise wait for it to connect\n let shouldInitiateCall;\n // the lexicographically lower side initiates the call\n if (this.member.userId === this.options.ownUserId) {\n shouldInitiateCall = this.deviceId > this.options.ownDeviceId;\n } else {\n shouldInitiateCall = this.member.userId > this.options.ownUserId;\n }\n if (shouldInitiateCall) {\n const connection = this.connection!;\n connection.peerCall = this._createPeerCall(makeId(\"c\"));\n await connection.peerCall.call(\n connection.localMedia,\n connection.localMuteSettings,\n log\n );\n } else {\n log.set(\"wait_for_invite\", true);\n }\n });\n }\n\n /** @internal */\n disconnect(hangup: boolean): Promise | undefined {\n return this.errorBoundary.try(async () => {\n const {connection} = this;\n if (!connection) {\n return;\n }\n let disconnectLogItem: ILogItem | undefined;\n // if if not sending the hangup, still log disconnect\n await connection.logItem.wrap(\"disconnect\", async log => {\n disconnectLogItem = log;\n if (hangup && connection.peerCall) {\n await connection.peerCall.hangup(CallErrorCode.UserHangup, log);\n }\n });\n connection.dispose();\n this.connection = undefined;\n return disconnectLogItem;\n });\n }\n\n /** @internal */\n updateCallInfo(callDeviceMembership: CallDeviceMembership, causeItem: ILogItem) {\n this.errorBoundary.try(() => {\n this.callDeviceMembership = callDeviceMembership;\n this._renewExpireTimeout(causeItem);\n if (this.connection) {\n this.connection.logItem.refDetached(causeItem);\n }\n });\n }\n \n /** @internal */\n updateRoomMember(roomMember: RoomMember) {\n this.member = roomMember;\n // TODO: this emits an update during the writeSync phase, which we usually try to avoid\n this.options.emitUpdate(this);\n }\n\n /** @internal */\n emitUpdateFromPeerCall = async (peerCall: PeerCall, params: any, log: ILogItem): Promise => {\n const connection = this.connection!;\n if (peerCall.state === CallState.Ringing) {\n connection.logItem.wrap(\"ringing, answer peercall\", answerLog => {\n log.refDetached(answerLog);\n return peerCall.answer(connection.localMedia, connection.localMuteSettings, answerLog);\n });\n }\n else if (peerCall.state === CallState.Ended) {\n const hangupReason = peerCall.hangupReason;\n peerCall.dispose();\n connection.peerCall = undefined;\n if (hangupReason && !errorCodesWithoutRetry.includes(hangupReason)) {\n connection.retryCount += 1;\n const {retryCount} = connection;\n await connection.logItem.wrap({l: \"retry connection\", retryCount}, async retryLog => {\n log.refDetached(retryLog);\n if (retryCount <= 3) {\n await this.callIfNeeded(retryLog);\n } else {\n const disconnectLogItem = await this.disconnect(false);\n if (disconnectLogItem) {\n retryLog.refDetached(disconnectLogItem);\n }\n }\n });\n }\n }\n this.options.emitUpdate(this, params);\n }\n\n /** @internal */\n sendSignallingMessage = async (message: SignallingMessage, log: ILogItem): Promise => {\n const groupMessage = message as SignallingMessage;\n groupMessage.content.seq = this.connection!.outboundSeqCounter++;\n groupMessage.content.conf_id = this.options.confId;\n groupMessage.content.device_id = this.options.ownDeviceId;\n groupMessage.content.party_id = this.options.ownDeviceId;\n groupMessage.content.sender_session_id = this.options.sessionId;\n groupMessage.content.dest_session_id = this.sessionId;\n let payload;\n let type: string = message.type;\n const encryptedMessages = await this.options.encryptDeviceMessage(this.member.userId, this.deviceId, groupMessage, log);\n if (encryptedMessages) {\n payload = formatToDeviceMessagesPayload(encryptedMessages);\n type = \"m.room.encrypted\";\n } else {\n // device needs deviceId and userId\n payload = formatToDeviceMessagesPayload([{content: groupMessage.content, device: this}]);\n }\n // TODO: remove this for release\n log.set(\"payload\", groupMessage.content);\n const request = this.options.hsApi.sendToDevice(\n type,\n payload,\n makeTxnId(),\n {log}\n );\n await request.response();\n }\n\n /** @internal */\n handleDeviceMessage(message: SignallingMessage, syncLog: ILogItem): void {\n this.errorBoundary.try(() => {\n syncLog.wrap({l: \"Member.handleDeviceMessage\", type: message.type, seq: message.content?.seq}, log => {\n const {connection} = this;\n if (connection) {\n const destSessionId = message.content.dest_session_id;\n if (destSessionId !== this.options.sessionId) {\n const logItem = connection.logItem.log({l: \"ignoring to_device event with wrong session_id\", destSessionId, type: message.type});\n log.refDetached(logItem);\n return;\n }\n // if there is no peerCall, we either create it with an invite and Handle is implied or we'll ignore it \n if (connection.peerCall) {\n const action = connection.peerCall.getMessageAction(message);\n // deal with glare and replacing the call before creating new calls\n if (action === IncomingMessageAction.InviteGlare) {\n const {shouldReplace, log} = connection.peerCall.handleInviteGlare(message, this.deviceId, connection.logItem);\n if (log) {\n log.refDetached(log);\n }\n if (shouldReplace) {\n connection.peerCall.dispose();\n connection.peerCall = undefined;\n }\n }\n }\n // create call on invite\n if (message.type === EventType.Invite && !connection.peerCall) {\n connection.peerCall = this._createPeerCall(message.content.call_id);\n }\n // enqueue\n const idx = sortedIndex(connection.queuedSignallingMessages, message, (a, b) => a.content.seq - b.content.seq);\n connection.queuedSignallingMessages.splice(idx, 0, message);\n // dequeue as much as we can\n let hasNewMessageBeenDequeued = false;\n if (connection.peerCall) {\n hasNewMessageBeenDequeued = this.dequeueSignallingMessages(connection, connection.peerCall, message, log);\n }\n if (!hasNewMessageBeenDequeued) {\n log.refDetached(connection.logItem.log({l: \"queued message\", type: message.type, seq: message.content.seq, idx}));\n }\n } else {\n // TODO: the right thing to do here would be to at least enqueue the message rather than drop it,\n // and if it's up to the other end to send the invite and the type is an invite to actually\n // call connect and assume the m.call.member state update is on its way?\n syncLog.log({l: \"member not connected\", userId: this.userId, deviceId: this.deviceId});\n }\n });\n });\n }\n\n private dequeueSignallingMessages(connection: MemberConnection, peerCall: PeerCall, newMessage: SignallingMessage, syncLog: ILogItem): boolean {\n let hasNewMessageBeenDequeued = false;\n while (connection.canDequeueNextSignallingMessage) {\n const message = connection.queuedSignallingMessages.shift()!;\n const isNewMsg = message === newMessage;\n hasNewMessageBeenDequeued = hasNewMessageBeenDequeued || isNewMsg;\n syncLog.wrap(isNewMsg ? \"process message\" : \"dequeue message\", log => {\n const seq = message.content?.seq;\n log.set(\"seq\", seq);\n log.set(\"type\", message.type);\n // ignore items in the queue that should not be handled and prevent\n // the lastProcessedSeqNr being corrupted with the `seq` for other call ids\n // XXX: Not needed anymore when seq is scoped to call_id\n // see https://github.com/matrix-org/matrix-spec-proposals/pull/3401#discussion_r1097482166\n const action = peerCall.getMessageAction(message);\n if (action === IncomingMessageAction.Handle) {\n const item = peerCall.handleIncomingSignallingMessage(message, this.deviceId, connection.logItem);\n log.refDetached(item);\n connection.lastProcessedSeqNr = seq;\n } else {\n log.set(\"ignored\", true);\n connection.lastIgnoredSeqNr = seq;\n }\n });\n }\n return hasNewMessageBeenDequeued;\n }\n\n /** @internal */\n async setMedia(localMedia: LocalMedia, previousMedia: LocalMedia): Promise {\n return this.errorBoundary.try(async () => {\n const {connection} = this;\n if (connection) {\n connection.localMedia = localMedia.replaceClone(connection.localMedia, previousMedia);\n await connection.peerCall?.setMedia(connection.localMedia, connection.logItem);\n }\n });\n }\n\n async setMuted(muteSettings: MuteSettings): Promise {\n return this.errorBoundary.try(async () => {\n const {connection} = this;\n if (connection) {\n connection.localMuteSettings = muteSettings;\n await connection.peerCall?.setMuted(muteSettings, connection.logItem);\n }\n });\n }\n\n private _createPeerCall(callId: string): PeerCall {\n const connection = this.connection!;\n return new PeerCall(callId, Object.assign({}, this.options, {\n errorBoundary: this.errorBoundary,\n emitUpdate: this.emitUpdateFromPeerCall,\n sendSignallingMessage: this.sendSignallingMessage,\n turnServer: connection.turnServer\n }), connection.logItem);\n }\n\n dispose() {\n this.connection?.dispose();\n this.connection = undefined;\n this.expireTimeout?.dispose();\n this.expireTimeout = undefined;\n // ensure the emitUpdate callback can't be called anymore\n this.options.emitUpdate = () => {};\n }\n}\n\nexport function memberExpiresAt(callDeviceMembership: CallDeviceMembership): number | undefined {\n const expiresAt = callDeviceMembership[\"expires_ts\"];\n if (Number.isSafeInteger(expiresAt)) {\n return expiresAt;\n }\n}\n\nexport function isMemberExpired(callDeviceMembership: CallDeviceMembership, now: number, margin: number = 0) {\n const expiresAt = memberExpiresAt(callDeviceMembership);\n return typeof expiresAt === \"number\" ? ((expiresAt + margin) <= now) : true;\n}\n\nimport {ObservableValue} from \"../../../observable/value\";\nimport {Clock as MockClock} from \"../../../mocks/Clock\";\nimport {Instance as NullLoggerInstance} from \"../../../logging/NullLogger\";\n\nexport function tests() {\n \n class MockMedia {\n clone(): MockMedia { return this; }\n }\n\n class MockPeerConn {\n addEventListener() {}\n removeEventListener() {}\n setConfiguration() {}\n setRemoteDescription() {}\n getReceivers() { return [{}]; } // non-empty array\n getSenders() { return []; }\n addTrack() { return {}; }\n removeTrack() {}\n close() {}\n }\n return {\n \"test queue doesn't get blocked by enqueued, then ignored device message\": assert => {\n // XXX we might want to refactor the queue code a bit so it's easier to test\n // without having to provide so many mocks\n const clock = new MockClock();\n // setup logging\n const logger = NullLoggerInstance;\n // const logger = new Logger({platform: {clock, random: Math.random}});\n // logger.addReporter(new ConsoleReporter());\n \n // create member\n const callDeviceMembership = {\n [\"device_id\"]: \"BVPIHSKXFC\",\n [\"session_id\"]: \"s1d5863f41ec5a5\",\n [\"expires_ts\"]: 123,\n feeds: [{purpose: \"m.usermedia\"}]\n };\n const roomMember = RoomMember.fromUserId(\"!abc\", \"@bruno4:matrix.org\", \"join\");\n const turnServer = new ObservableValue({}) as ObservableValue;\n // @ts-ignore\n const options = {\n confId: \"conf\",\n ownUserId: \"@foobaraccount2:matrix.org\",\n ownDeviceId: \"CMLEZSARRT\",\n sessionId: \"s1cece7088b9d35\",\n clock,\n emitUpdate: () => {},\n webRTC: {\n prepareSenderForPurpose: () => {},\n createPeerConnection() {\n return new MockPeerConn();\n }\n }\n } as Options;\n const member = new Member(roomMember, callDeviceMembership, options, logger.child(\"member\"));\n member.connect(new MockMedia() as LocalMedia, new MuteSettings(), turnServer, logger.child(\"connect\"));\n // pretend we've already received 3 messages\n // @ts-ignore\n member.connection!.lastProcessedSeqNr = 2;\n // send hangup with seq=3, this will enqueue the message because there is no peerCall\n // as it's up to @bruno4:matrix.org to send the invite\n const hangup = {\n type: EventType.Hangup,\n content: {\n \"call_id\": \"c0ac1b0e37afe73\",\n \"version\": 1,\n \"reason\": \"invite_timeout\",\n \"seq\": 3,\n \"conf_id\": \"conf-16a120796440a6\",\n \"device_id\": \"BVPIHSKXFC\",\n \"party_id\": \"BVPIHSKXFC\",\n \"sender_session_id\": \"s1d5863f41ec5a5\",\n \"dest_session_id\": \"s1cece7088b9d35\"\n }\n } as SignallingMessage;\n member.handleDeviceMessage(hangup, logger.child(\"handle hangup\"));\n // Send an invite with seq=4, this will create a new peer call with a the call id\n // when dequeueing the hangup from before, it'll get ignored because it is\n // for the previous call id.\n const invite = {\n type: EventType.Invite,\n content: {\n \"call_id\": \"c1175b12d559fb1\",\n \"offer\": {\n \"type\": \"offer\",\n \"sdp\": \"...\"\n },\n \"org.matrix.msc3077.sdp_stream_metadata\": {\n \"60087b60-487e-4fa0-8229-b232c18e1332\": {\n \"purpose\": \"m.usermedia\",\n \"audio_muted\": false,\n \"video_muted\": false\n }\n },\n \"version\": 1,\n \"lifetime\": 60000,\n \"seq\": 4,\n \"conf_id\": \"conf-16a120796440a6\",\n \"device_id\": \"BVPIHSKXFC\",\n \"party_id\": \"BVPIHSKXFC\",\n \"sender_session_id\": \"s1d5863f41ec5a5\",\n \"dest_session_id\": \"s1cece7088b9d35\"\n }\n } as SignallingMessage;\n member.handleDeviceMessage(invite, logger.child(\"handle invite\"));\n // @ts-ignore\n assert.equal(member.connection!.queuedSignallingMessages.length, 0);\n // logger.reporters[0].printOpenItems();\n }\n };\n}\n","/*\nCopyright 2022 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {ObservableMap} from \"../../../observable/map\";\nimport {Member, isMemberExpired, memberExpiresAt} from \"./Member\";\nimport {LocalMedia} from \"../LocalMedia\";\nimport {MuteSettings, CALL_LOG_TYPE, CALL_MEMBER_VALIDITY_PERIOD_MS, mute} from \"../common\";\nimport {MemberChange, RoomMember} from \"../../room/members/RoomMember\";\nimport {EventEmitter} from \"../../../utils/EventEmitter\";\nimport {EventType, CallIntent, CallType} from \"../callEventTypes\";\nimport { ErrorBoundary } from \"../../../utils/ErrorBoundary\";\n\nimport type {Options as MemberOptions} from \"./Member\";\nimport type {TurnServerSource} from \"../TurnServerSource\";\nimport type {BaseObservableMap} from \"../../../observable/map\";\nimport type {Track} from \"../../../platform/types/MediaDevices\";\nimport type {SignallingMessage, MGroupCallBase, CallMembership, CallMemberContent, CallDeviceMembership} from \"../callEventTypes\";\nimport type {Room} from \"../../room/Room\";\nimport type {StateEvent} from \"../../storage/types\";\nimport type {Platform} from \"../../../platform/web/Platform\";\nimport type {EncryptedMessage} from \"../../e2ee/olm/Encryption\";\nimport type {ILogItem, ILogger} from \"../../../logging/types\";\nimport type {Storage} from \"../../storage/idb/Storage\";\nimport type {BaseObservableValue} from \"../../../observable/value\";\nimport type {Clock, Timeout} from \"../../../platform/web/dom/Clock\";\n\nexport enum GroupCallState {\n Fledgling = \"fledgling\",\n Creating = \"creating\",\n Created = \"created\",\n Joining = \"joining\",\n Joined = \"joined\",\n}\n\nfunction getMemberKey(userId: string, deviceId: string) {\n return JSON.stringify(userId)+`,`+JSON.stringify(deviceId);\n}\n\nfunction memberKeyIsForUser(key: string, userId: string) {\n return key.startsWith(JSON.stringify(userId)+`,`);\n}\n\nfunction getDeviceFromMemberKey(key: string): string {\n return JSON.parse(`[${key}]`)[1];\n}\n\nexport type Options = Omit & {\n emitUpdate: (call: GroupCall, params?: any) => void;\n encryptDeviceMessage: (roomId: string, userId: string, deviceId: string, message: SignallingMessage, log: ILogItem) => Promise,\n storage: Storage,\n random: () => number,\n logger: ILogger,\n turnServerSource: TurnServerSource\n};\n\nclass JoinedData {\n public renewMembershipTimeout?: Timeout;\n\n constructor(\n public readonly logItem: ILogItem,\n public readonly membersLogItem: ILogItem,\n public localMedia: LocalMedia,\n public localPreviewMedia: LocalMedia,\n public localMuteSettings: MuteSettings,\n public readonly turnServer: BaseObservableValue\n ) {}\n\n dispose() {\n this.localMedia.dispose();\n this.localPreviewMedia.dispose();\n this.logItem.finish();\n this.renewMembershipTimeout?.dispose();\n }\n}\n\nexport class GroupCall extends EventEmitter<{change: never}> {\n private readonly _members: ObservableMap = new ObservableMap();\n private _memberOptions: MemberOptions;\n private _state: GroupCallState;\n private bufferedDeviceMessages = new Map>>();\n /** Set between calling join and leave. */\n private joinedData?: JoinedData;\n private errorBoundary = new ErrorBoundary(err => {\n this.emitChange();\n if (this.joinedData) {\n // in case the error happens in code that does not log,\n // log it here to make sure it isn't swallowed\n this.joinedData.logItem.log(\"error at boundary\").catch(err);\n console.error(err);\n }\n });\n\n constructor(\n public readonly id: string,\n public readonly isLoadedFromStorage: boolean,\n newCall: boolean,\n private startTime: number | undefined,\n private callContent: Record,\n public readonly roomId: string,\n private readonly options: Options,\n ) {\n super();\n this._state = newCall ? GroupCallState.Fledgling : GroupCallState.Created;\n this._memberOptions = Object.assign({}, options, {\n confId: this.id,\n emitUpdate: member => {\n const memberKey = getMemberKey(member.userId, member.deviceId);\n // only remove expired members to whom we're not already connected\n if (member.isExpired && !member.isConnected) {\n const logItem = this.options.logger.log({\n l: \"removing expired member from call\",\n memberKey,\n callId: this.id\n })\n member.logItem?.refDetached(logItem);\n member.dispose();\n this._members.remove(memberKey);\n } else {\n this._members.update(memberKey);\n }\n },\n encryptDeviceMessage: (userId: string, deviceId: string, message: SignallingMessage, log) => {\n return this.options.encryptDeviceMessage(this.roomId, userId, deviceId, message, log);\n }\n });\n }\n\n get localMedia(): LocalMedia | undefined { return this.joinedData?.localMedia; }\n get localPreviewMedia(): LocalMedia | undefined { return this.joinedData?.localPreviewMedia; }\n get members(): BaseObservableMap { return this._members; }\n\n get isTerminated(): boolean {\n return !!this.callContent?.[\"m.terminated\"];\n }\n\n get usesFoci(): boolean {\n for (const member of this._members.values()) {\n if (member.usesFoci) {\n return true;\n }\n }\n return false;\n }\n\n get duration(): number | undefined {\n if (typeof this.startTime === \"number\") {\n return (this.options.clock.now() - this.startTime);\n }\n }\n\n get isRinging(): boolean {\n return this._state === GroupCallState.Created && this.intent === \"m.ring\" && !this.isMember(this.options.ownUserId);\n }\n\n get name(): string {\n return this.callContent?.[\"m.name\"];\n }\n\n get intent(): CallIntent {\n return this.callContent?.[\"m.intent\"];\n }\n\n get type(): CallType {\n return this.callContent?.[\"m.type\"];\n }\n\n /**\n * Gives access the log item for this call while joined.\n * Can be used for call diagnostics while in the call.\n **/\n get logItem(): ILogItem | undefined {\n return this.joinedData?.logItem;\n }\n\n get error(): Error | undefined {\n return this.errorBoundary.error;\n }\n\n join(localMedia: LocalMedia, log?: ILogItem): Promise {\n return this.options.logger.wrapOrRun(log, \"Call.join\", async joinLog => {\n if (this._state !== GroupCallState.Created || this.joinedData || this.usesFoci) {\n localMedia.dispose();\n return;\n }\n const logItem = this.options.logger.child({\n l: \"Call.connection\",\n t: CALL_LOG_TYPE,\n id: this.id,\n ownSessionId: this.options.sessionId\n });\n const turnServer = await this.options.turnServerSource.getSettings(logItem);\n const membersLogItem = logItem.child(\"member connections\");\n const localMuteSettings = new MuteSettings();\n localMuteSettings.updateTrackInfo(localMedia.userMedia);\n const localPreviewMedia = localMedia.asPreview();\n const joinedData = new JoinedData(\n logItem,\n membersLogItem,\n localMedia,\n localPreviewMedia,\n localMuteSettings,\n turnServer\n );\n this.joinedData = joinedData;\n await joinedData.logItem.wrap(\"join\", async log => {\n joinLog.refDetached(log);\n this._state = GroupCallState.Joining;\n this.emitChange();\n await log.wrap(\"update member state\", async log => {\n const memberContent = await this._createMemberPayload(true);\n log.set(\"payload\", memberContent);\n // send m.call.member state event\n const request = this.options.hsApi.sendState(this.roomId, EventType.GroupCallMember, this.options.ownUserId, memberContent, {log});\n await request.response();\n this.emitChange();\n });\n // send invite to all members that are < my userId\n for (const member of this._members.values()) {\n this.connectToMember(member, joinedData, log);\n }\n });\n });\n }\n\n async setMedia(localMedia: LocalMedia): Promise {\n if ((this._state === GroupCallState.Joining || this._state === GroupCallState.Joined) && this.joinedData) {\n const oldMedia = this.joinedData.localMedia;\n this.joinedData.localMedia = localMedia;\n this.joinedData.localPreviewMedia?.dispose();\n this.joinedData.localPreviewMedia = localMedia.asPreview();\n // reflect the fact we gained or lost local tracks in the local mute settings\n // and update the track info so PeerCall can use it to send up to date metadata,\n this.joinedData.localMuteSettings.updateTrackInfo(localMedia.userMedia);\n this.emitChange(); //allow listeners to see new media/mute settings\n // TODO: if setMedia fails on one of the members, we should revert to the old media\n // on the members processed so far, and show an error that we could not set the new media\n // for this, we will need to remove the usage of the errorBoundary in member.setMedia.\n await Promise.all(Array.from(this._members.values()).map(m => {\n return m.setMedia(localMedia, oldMedia);\n }));\n oldMedia?.dispose();\n }\n }\n\n async setMuted(muteSettings: MuteSettings): Promise {\n const {joinedData} = this;\n if (!joinedData) {\n return;\n }\n const prevMuteSettings = joinedData.localMuteSettings;\n // we still update the mute settings if nothing changed because\n // you might be muted because you don't have a track or because\n // you actively chosen to mute\n // (which we want to respect in the future when you add a track)\n muteSettings.updateTrackInfo(joinedData.localMedia.userMedia);\n joinedData.localMuteSettings = muteSettings;\n if (!prevMuteSettings.equals(muteSettings)) {\n // Mute our copies of LocalMedias;\n // otherwise the camera lights will still be on.\n if (this.localPreviewMedia) {\n mute(this.localPreviewMedia, muteSettings, this.joinedData!.logItem);\n }\n if (this.localMedia) {\n mute(this.localMedia, muteSettings, this.joinedData!.logItem);\n }\n // TODO: if setMuted fails on one of the members, we should revert to the old media\n // on the members processed so far, and show an error that we could not set the new media\n // for this, we will need to remove the usage of the errorBoundary in member.setMuted.\n await Promise.all(Array.from(this._members.values()).map(m => {\n return m.setMuted(joinedData.localMuteSettings);\n }));\n this.emitChange();\n }\n }\n\n get muteSettings(): MuteSettings | undefined {\n return this.joinedData?.localMuteSettings;\n }\n\n get hasJoined() {\n return this._state === GroupCallState.Joining || this._state === GroupCallState.Joined;\n }\n\n async leave(log?: ILogItem): Promise {\n await this.options.logger.wrapOrRun(log, \"Call.leave\", async log => {\n const {joinedData} = this;\n if (!joinedData) {\n return;\n }\n try {\n joinedData.renewMembershipTimeout?.dispose();\n joinedData.renewMembershipTimeout = undefined;\n const memberContent = await this._createMemberPayload(false);\n // send m.call.member state event\n if (memberContent) {\n const request = this.options.hsApi.sendState(this.roomId, EventType.GroupCallMember, this.options.ownUserId, memberContent, {log});\n await request.response();\n // our own user isn't included in members, so not in the count\n if ((this.intent === CallIntent.Ring || this.intent === CallIntent.Prompt) && this._members.size === 0) {\n await this.terminate(log);\n }\n } else {\n log.set(\"already_left\", true);\n }\n } finally {\n // disconnect is called both from the sync loop and from methods like this one that\n // are called from the view model. We want errors during the sync loop being caught\n // by the errorboundary, but since leave is called from the view model, we want\n // the error to be thrown. So here we check if disconnect succeeded, and if not\n // we rethrow the error put into the errorBoundary.\n if(!this.disconnect(log)) {\n throw this.errorBoundary.error;\n }\n }\n });\n }\n\n private terminate(log?: ILogItem): Promise {\n return this.options.logger.wrapOrRun(log, {l: \"terminate call\", t: CALL_LOG_TYPE}, async log => {\n if (this._state === GroupCallState.Fledgling) {\n return;\n }\n const request = this.options.hsApi.sendState(this.roomId, EventType.GroupCall, this.id, Object.assign({}, this.callContent, {\n \"m.terminated\": true\n }), {log});\n await request.response();\n });\n }\n\n /** @internal */\n create(type: CallType, log: ILogItem): Promise {\n return log.wrap({l: \"create call\", t: CALL_LOG_TYPE}, async log => {\n if (this._state !== GroupCallState.Fledgling) {\n return;\n }\n this._state = GroupCallState.Creating;\n this.emitChange();\n this.callContent = Object.assign({\n \"m.type\": type,\n }, this.callContent);\n const request = this.options.hsApi.sendState(this.roomId, EventType.GroupCall, this.id, this.callContent!, {log});\n await request.response();\n this._state = GroupCallState.Created;\n this.emitChange();\n });\n }\n\n /** @internal */\n updateCallEvent(event: StateEvent, syncLog: ILogItem) {\n this.errorBoundary.try(() => {\n syncLog.wrap({l: \"update call\", t: CALL_LOG_TYPE, id: this.id}, log => {\n\n if (typeof this.startTime !== \"number\") {\n this.startTime = event.origin_server_ts;\n }\n this.callContent = event.content;\n if (this._state === GroupCallState.Creating) {\n this._state = GroupCallState.Created;\n }\n log.set(\"status\", this._state);\n this.emitChange();\n });\n });\n }\n\n /** @internal */\n updateRoomMembers(memberChanges: Map) {\n this.errorBoundary.try(() => {\n for (const change of memberChanges.values()) {\n const {member} = change;\n for (const callMember of this._members.values()) {\n // find all call members for a room member (can be multiple, for every device)\n if (callMember.userId === member.userId) {\n callMember.updateRoomMember(member);\n }\n }\n }\n });\n }\n\n /** @internal */\n updateMembership(userId: string, roomMember: RoomMember, callMembership: CallMembership, syncLog: ILogItem) {\n this.errorBoundary.try(async () => {\n await syncLog.wrap({l: \"update call membership\", t: CALL_LOG_TYPE, id: this.id, userId}, async log => {\n const now = this.options.clock.now();\n const devices = callMembership[\"m.devices\"];\n const previousDeviceIds = this.getDeviceIdsForUserId(userId);\n for (const device of devices) {\n const deviceId = device.device_id;\n const memberKey = getMemberKey(userId, deviceId);\n if (userId === this.options.ownUserId && deviceId === this.options.ownDeviceId) {\n log.wrap(\"update own membership\", log => {\n if (this.hasJoined) {\n if (this.joinedData) {\n this.joinedData.logItem.refDetached(log);\n }\n this._setupRenewMembershipTimeout(device, log);\n }\n if (this._state === GroupCallState.Joining) {\n log.set(\"joined\", true);\n this._state = GroupCallState.Joined;\n this.emitChange();\n }\n });\n } else {\n await log.wrap({l: \"update device membership\", id: memberKey, sessionId: device.session_id}, async log => {\n if (isMemberExpired(device, now)) {\n log.set(\"expired\", true);\n const member = this._members.get(memberKey);\n if (member) {\n member.dispose();\n this._members.remove(memberKey);\n log.set(\"removed\", true);\n } else {\n // We don't want to pollute the logs with all the expired members.\n // This can be an issue for long lived calls that have had a large number\n // of users join and leave at some point in time.\n log.discard();\n }\n return;\n }\n let member = this._members.get(memberKey);\n const sessionIdChanged = member && member.sessionId !== device.session_id;\n if (member && !sessionIdChanged) {\n log.set(\"update\", true);\n member.updateCallInfo(device, log);\n } else {\n if (member && sessionIdChanged) {\n log.set(\"removedSessionId\", member.sessionId);\n const disconnectLogItem = await member.disconnect(false);\n if (disconnectLogItem) {\n log.refDetached(disconnectLogItem);\n }\n member.dispose();\n this._members.remove(memberKey);\n member = undefined;\n }\n log.set(\"add\", true);\n member = new Member(\n roomMember,\n device, this._memberOptions,\n log\n );\n this._members.add(memberKey, member);\n if (this.joinedData) {\n this.connectToMember(member, this.joinedData, log);\n }\n }\n // flush pending messages, either after having created the member,\n // or updated the session id with updateCallInfo\n this.flushPendingIncomingDeviceMessages(member, log);\n });\n }\n }\n\n const newDeviceIds = new Set(devices.map(call => call.device_id));\n // remove user as member of any calls not present anymore\n for (const previousDeviceId of previousDeviceIds) {\n if (!newDeviceIds.has(previousDeviceId)) {\n this.removeMemberDevice(userId, previousDeviceId, log);\n }\n }\n if (userId === this.options.ownUserId && !newDeviceIds.has(this.options.ownDeviceId)) {\n this.removeOwnDevice(log);\n }\n });\n });\n }\n\n /** @internal */\n removeMembership(userId: string, syncLog: ILogItem) {\n this.errorBoundary.try(() => {\n const deviceIds = this.getDeviceIdsForUserId(userId);\n syncLog.wrap({\n l: \"remove call member\",\n t: CALL_LOG_TYPE,\n id: this.id,\n userId\n }, log => {\n for (const deviceId of deviceIds) {\n this.removeMemberDevice(userId, deviceId, log);\n }\n if (userId === this.options.ownUserId) {\n this.removeOwnDevice(log);\n }\n });\n });\n }\n\n private flushPendingIncomingDeviceMessages(member: Member, log: ILogItem) {\n const memberKey = getMemberKey(member.userId, member.deviceId);\n const bufferedMessages = this.bufferedDeviceMessages.get(memberKey);\n // check if we have any pending message for the member with (userid, deviceid, sessionid)\n if (bufferedMessages) {\n for (const message of bufferedMessages) {\n if (message.content.sender_session_id === member.sessionId) {\n member.handleDeviceMessage(message, log);\n bufferedMessages.delete(message);\n }\n }\n if (bufferedMessages.size === 0) {\n this.bufferedDeviceMessages.delete(memberKey);\n }\n }\n }\n\n private getDeviceIdsForUserId(userId: string): string[] {\n return Array.from(this._members.keys())\n .filter(key => memberKeyIsForUser(key, userId))\n .map(key => getDeviceFromMemberKey(key));\n }\n\n private isMember(userId: string): boolean {\n return Array.from(this._members.keys()).some(key => memberKeyIsForUser(key, userId));\n }\n\n private removeOwnDevice(log: ILogItem) {\n log.wrap(\"remove own membership\", log => {\n this.disconnect(log);\n });\n }\n\n /** @internal */\n disconnect(log: ILogItem): Promise | true {\n return this.errorBoundary.try(async () => {\n if (this.hasJoined) {\n for (const member of this._members.values()) {\n const disconnectLogItem = await member.disconnect(true);\n if (disconnectLogItem) {\n log.refDetached(disconnectLogItem);\n }\n }\n this._state = GroupCallState.Created;\n }\n this.joinedData?.dispose();\n this.joinedData = undefined;\n this.emitChange();\n }, false) || true;\n }\n\n /** @internal */\n private async removeMemberDevice(userId: string, deviceId: string, log: ILogItem) {\n const memberKey = getMemberKey(userId, deviceId);\n await log.wrap({l: \"remove device member\", id: memberKey}, async log => {\n const member = this._members.get(memberKey);\n if (member) {\n log.set(\"leave\", true);\n const disconnectLogItem = await member.disconnect(false);\n if (disconnectLogItem) {\n log.refDetached(disconnectLogItem);\n }\n member.dispose();\n this._members.remove(memberKey);\n }\n });\n }\n\n /** @internal */\n handleDeviceMessage(message: SignallingMessage, userId: string, deviceId: string, syncLog: ILogItem) {\n this.errorBoundary.try(() => {\n // TODO: return if we are not membering to the call\n const key = getMemberKey(userId, deviceId);\n let member = this._members.get(key);\n if (member && message.content.sender_session_id === member.sessionId) {\n member.handleDeviceMessage(message, syncLog);\n } else {\n const item = syncLog.log({\n l: \"call: buffering to_device message, member not found\",\n t: CALL_LOG_TYPE,\n id: this.id,\n userId,\n deviceId,\n sessionId: message.content.sender_session_id,\n type: message.type\n });\n // we haven't received the m.call.member yet for this caller (or with this session id).\n // buffer the device messages or create the member/call as it should arrive in a moment\n let messages = this.bufferedDeviceMessages.get(key);\n if (!messages) {\n messages = new Set();\n this.bufferedDeviceMessages.set(key, messages);\n }\n messages.add(message);\n }\n });\n }\n\n private async _createMemberPayload(includeOwn: boolean): Promise {\n const {storage} = this.options;\n const txn = await storage.readTxn([storage.storeNames.roomState]);\n const stateEvent = await txn.roomState.get(this.roomId, EventType.GroupCallMember, this.options.ownUserId);\n const stateContent: CallMemberContent = stateEvent?.event?.content as CallMemberContent ?? {\n [\"m.calls\"]: []\n };\n let callsInfo = stateContent[\"m.calls\"];\n let callInfo = callsInfo.find(c => c[\"m.call_id\"] === this.id);\n if (!callInfo) {\n callInfo = {\n [\"m.call_id\"]: this.id,\n [\"m.devices\"]: []\n };\n callsInfo.push(callInfo);\n }\n const now = this.options.clock.now();\n callInfo[\"m.devices\"] = callInfo[\"m.devices\"].filter(d => {\n // remove our own device (to add it again below)\n if (d[\"device_id\"] === this.options.ownDeviceId) {\n return false;\n }\n // also remove any expired devices (+ the validity period added again)\n if (memberExpiresAt(d) === undefined || isMemberExpired(d, now, CALL_MEMBER_VALIDITY_PERIOD_MS)) {\n return false;\n }\n return true;\n });\n if (includeOwn) {\n callInfo[\"m.devices\"].push({\n [\"device_id\"]: this.options.ownDeviceId,\n [\"session_id\"]: this.options.sessionId,\n [\"expires_ts\"]: now + CALL_MEMBER_VALIDITY_PERIOD_MS,\n feeds: [{purpose: \"m.usermedia\"}]\n });\n }\n // filter out empty call membership\n stateContent[\"m.calls\"] = callsInfo.filter(c => c[\"m.devices\"].length !== 0);\n return stateContent;\n }\n\n private async connectToMember(member: Member, joinedData: JoinedData, log: ILogItem) {\n const memberKey = getMemberKey(member.userId, member.deviceId);\n const logItem = joinedData.membersLogItem.child({\n l: \"member\",\n id: memberKey,\n sessionId: member.sessionId\n });\n await log.wrap({l: \"connect\", id: memberKey}, async log => {\n const connectItem = await member.connect(\n joinedData.localMedia,\n joinedData.localMuteSettings,\n joinedData.turnServer,\n logItem\n );\n if (connectItem) {\n log.refDetached(connectItem);\n }\n });\n }\n\n protected emitChange() {\n this.emit(\"change\");\n this.options.emitUpdate(this);\n }\n\n private _setupRenewMembershipTimeout(callDeviceMembership: CallDeviceMembership, log: ILogItem) {\n const {joinedData} = this;\n if (!joinedData) {\n return;\n }\n joinedData.renewMembershipTimeout?.dispose();\n joinedData.renewMembershipTimeout = undefined;\n const expiresAt = memberExpiresAt(callDeviceMembership);\n if (typeof expiresAt !== \"number\") {\n return;\n }\n const expiresFromNow = expiresAt - this.options.clock.now();\n // renew 1 to 5 minutes (8.3% of 1h, but min 10s) before expiring\n // do it a bit beforehand and somewhat random to not collide with\n // other clients trying to renew as well\n const timeToRenewBeforeExpiration = Math.max(10000, Math.ceil((0.2 +(this.options.random() * 0.8)) * (0.08333 * CALL_MEMBER_VALIDITY_PERIOD_MS)));\n const renewFromNow = Math.max(0, expiresFromNow - timeToRenewBeforeExpiration);\n log.set(\"expiresIn\", expiresFromNow);\n log.set(\"renewIn\", renewFromNow);\n joinedData.renewMembershipTimeout = this.options.clock.createTimeout(renewFromNow);\n joinedData.renewMembershipTimeout.elapsed().then(\n () => {\n joinedData.logItem.wrap(\"renew membership\", async log => {\n const memberContent = await this._createMemberPayload(true);\n log.set(\"payload\", memberContent);\n // send m.call.member state event\n const request = this.options.hsApi.sendState(this.roomId, EventType.GroupCallMember, this.options.ownUserId, memberContent, {log});\n await request.response();\n });\n },\n () => { /* assume we're swallowing AbortError from dispose above */ }\n );\n }\n\n dispose() {\n this.joinedData?.dispose();\n for (const member of this._members.values()) {\n member.dispose();\n }\n }\n}\n","/*\nCopyright 2022 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {RetainedObservableValue} from \"../../observable/value\";\n\nimport type {HomeServerApi} from \"../net/HomeServerApi\";\nimport type {IHomeServerRequest} from \"../net/HomeServerRequest\";\nimport type {BaseObservableValue, ObservableValue} from \"../../observable/value\";\nimport type {Clock, Timeout} from \"../../platform/web/dom/Clock\";\nimport type {ILogItem} from \"../../logging/types\";\n\ntype TurnServerSettings = {\n uris: string[],\n username: string,\n password: string,\n ttl: number\n};\n\nconst DEFAULT_TTL = 5 * 60; // 5min\nconst DEFAULT_SETTINGS: RTCIceServer = {\n urls: [\"stun:turn.matrix.org\"],\n username: \"\",\n credential: \"\",\n};\n\nexport class TurnServerSource {\n private currentObservable?: ObservableValue;\n private pollTimeout?: Timeout;\n private pollRequest?: IHomeServerRequest;\n private isPolling = false;\n\n constructor(\n private hsApi: HomeServerApi,\n private clock: Clock,\n private defaultSettings: RTCIceServer = DEFAULT_SETTINGS\n ) {}\n\n getSettings(log: ILogItem): Promise> {\n return log.wrap(\"get turn server\", async log => {\n if (!this.isPolling) {\n const settings = await this.doRequest(log);\n const iceServer = settings ? toIceServer(settings) : this.defaultSettings;\n log.set(\"iceServer\", iceServer);\n if (this.currentObservable) {\n this.currentObservable.set(iceServer);\n } else {\n this.currentObservable = new RetainedObservableValue(iceServer, \n () => {\n this.stopPollLoop();\n },\n () => {\n // start loop on first subscribe\n this.runLoop(settings?.ttl ?? DEFAULT_TTL);\n });\n }\n }\n return this.currentObservable!;\n });\n }\n\n private async runLoop(initialTtl: number): Promise {\n let ttl = initialTtl;\n this.isPolling = true;\n while(this.isPolling) {\n try {\n this.pollTimeout = this.clock.createTimeout(ttl * 1000);\n await this.pollTimeout.elapsed();\n this.pollTimeout = undefined;\n const settings = await this.doRequest(undefined);\n if (settings) {\n const iceServer = toIceServer(settings);\n if (shouldUpdate(this.currentObservable!, iceServer)) {\n this.currentObservable!.set(iceServer);\n }\n if (settings.ttl > 0) {\n ttl = settings.ttl;\n } else {\n // stop polling is settings are good indefinitely\n this.stopPollLoop();\n }\n } else {\n ttl = DEFAULT_TTL;\n }\n } catch (err) {\n if (err.name === \"AbortError\") {\n /* ignore, the loop will exit because isPolling is false */\n } else {\n // TODO: log error\n }\n }\n }\n }\n\n private async doRequest(log: ILogItem | undefined): Promise {\n try {\n this.pollRequest = this.hsApi.getTurnServer({log});\n const settings = await this.pollRequest.response();\n return settings;\n } catch (err) {\n if (err.name === \"HomeServerError\") {\n return undefined;\n }\n throw err;\n } finally {\n this.pollRequest = undefined;\n }\n }\n\n private stopPollLoop() {\n this.isPolling = false;\n this.currentObservable = undefined;\n this.pollTimeout?.dispose();\n this.pollTimeout = undefined;\n this.pollRequest?.abort();\n this.pollRequest = undefined;\n }\n\n dispose() {\n this.stopPollLoop();\n }\n}\n\nfunction shouldUpdate(observable: BaseObservableValue, settings: RTCIceServer): boolean {\n const currentSettings = observable.get();\n if (!currentSettings) {\n return true;\n }\n // same length and new settings doesn't contain any uri the old settings don't contain\n const currentUrls = Array.isArray(currentSettings.urls) ? currentSettings.urls : [currentSettings.urls];\n const newUrls = Array.isArray(settings.urls) ? settings.urls : [settings.urls];\n const arraysEqual = currentUrls.length === newUrls.length &&\n !newUrls.some(uri => !currentUrls.includes(uri));\n return !arraysEqual || settings.username !== currentSettings.username ||\n settings.credential !== currentSettings.credential;\n}\n\nfunction toIceServer(settings: TurnServerSettings): RTCIceServer {\n return {\n urls: settings.uris,\n username: settings.username,\n credential: settings.password,\n // @ts-ignore\n // this field is deprecated but providing it nonetheless\n credentialType: \"password\"\n }\n}\n\nexport function tests() {\n return {\n \"shouldUpdate returns false for same object\": assert => {\n const observable = {get() {\n return {\n urls: [\"a\", \"b\"],\n username: \"alice\",\n credential: \"f00\",\n };\n }};\n const same = {\n urls: [\"a\", \"b\"],\n username: \"alice\",\n credential: \"f00\",\n };\n assert.equal(false, shouldUpdate(observable as any as BaseObservableValue, same));\n },\n \"shouldUpdate returns true for 1 different uri\": assert => {\n const observable = {get() {\n return {\n urls: [\"a\", \"c\"],\n username: \"alice\",\n credential: \"f00\",\n };\n }};\n const same = {\n urls: [\"a\", \"b\"],\n username: \"alice\",\n credential: \"f00\",\n };\n assert.equal(true, shouldUpdate(observable as any as BaseObservableValue, same));\n },\n \"shouldUpdate returns true for different user\": assert => {\n const observable = {get() {\n return {\n urls: [\"a\", \"b\"],\n username: \"alice\",\n credential: \"f00\",\n };\n }};\n const same = {\n urls: [\"a\", \"b\"],\n username: \"bob\",\n credential: \"f00\",\n };\n assert.equal(true, shouldUpdate(observable as any as BaseObservableValue, same));\n },\n \"shouldUpdate returns true for different password\": assert => {\n const observable = {get() {\n return {\n urls: [\"a\", \"b\"],\n username: \"alice\",\n credential: \"f00\",\n };\n }};\n const same = {\n urls: [\"a\", \"b\"],\n username: \"alice\",\n credential: \"b4r\",\n };\n assert.equal(true, shouldUpdate(observable as any as BaseObservableValue, same));\n }\n }\n}\n","/*\nCopyright 2022 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {ObservableMap} from \"../../observable/map\";\nimport {WebRTC, PeerConnection} from \"../../platform/types/WebRTC\";\nimport {MediaDevices, Track} from \"../../platform/types/MediaDevices\";\nimport {handlesEventType} from \"./PeerCall\";\nimport {EventType, CallIntent, CallType} from \"./callEventTypes\";\nimport {GroupCall} from \"./group/GroupCall\";\nimport {makeId} from \"../common\";\nimport {CALL_LOG_TYPE} from \"./common\";\nimport {EVENT_TYPE as MEMBER_EVENT_TYPE, RoomMember} from \"../room/members/RoomMember\";\nimport {TurnServerSource} from \"./TurnServerSource\";\n\nimport type {LocalMedia} from \"./LocalMedia\";\nimport type {Room} from \"../room/Room\";\nimport type {MemberChange} from \"../room/members/RoomMember\";\nimport type {StateEvent} from \"../storage/types\";\nimport type {ILogItem, ILogger} from \"../../logging/types\";\nimport type {Platform} from \"../../platform/web/Platform\";\nimport type {BaseObservableMap} from \"../../observable/map\";\nimport type {SignallingMessage, MGroupCallBase} from \"./callEventTypes\";\nimport type {Options as GroupCallOptions} from \"./group/GroupCall\";\nimport type {Transaction} from \"../storage/idb/Transaction\";\nimport type {CallEntry} from \"../storage/idb/stores/CallStore\";\nimport type {Clock} from \"../../platform/web/dom/Clock\";\nimport type {RoomStateHandler} from \"../room/state/types\";\nimport type {MemberSync} from \"../room/timeline/persistence/MemberWriter\";\n\nexport type Options = Omit & {\n clock: Clock\n};\n\nfunction getRoomMemberKey(roomId: string, userId: string): string {\n return JSON.stringify(roomId)+`,`+JSON.stringify(userId);\n}\n\nexport class CallHandler implements RoomStateHandler {\n // group calls by call id\n private readonly _calls: ObservableMap = new ObservableMap();\n // map of `\"roomId\",\"userId\"` to set of conf_id's they are in\n private roomMemberToCallIds: Map> = new Map();\n private groupCallOptions: GroupCallOptions;\n private sessionId = makeId(\"s\");\n\n constructor(private readonly options: Options) {\n this.groupCallOptions = Object.assign({}, this.options, {\n turnServerSource: new TurnServerSource(this.options.hsApi, this.options.clock),\n emitUpdate: (groupCall, params) => this._calls.update(groupCall.id, params),\n createTimeout: this.options.clock.createTimeout,\n sessionId: this.sessionId\n });\n }\n\n loadCalls(intent?: CallIntent, log?: ILogItem) {\n return this.options.logger.wrapOrRun(log, \"CallHandler.loadCalls\", async log => {\n if (!intent) {\n intent = CallIntent.Ring;\n }\n log.set(\"intent\", intent);\n const txn = await this._getLoadTxn();\n const callEntries = await txn.calls.getByIntent(intent);\n await this._loadCallEntries(callEntries, txn, log);\n });\n }\n\n loadCallsForRoom(intent: CallIntent, roomId: string, log?: ILogItem) {\n return this.options.logger.wrapOrRun(log, \"CallHandler.loadCallsForRoom\", async log => {\n log.set(\"intent\", intent);\n log.set(\"roomId\", roomId);\n const txn = await this._getLoadTxn();\n const callEntries = await txn.calls.getByIntentAndRoom(intent, roomId);\n await this._loadCallEntries(callEntries, txn, log);\n });\n }\n\n private async _getLoadTxn(): Promise {\n const names = this.options.storage.storeNames;\n const txn = await this.options.storage.readTxn([\n names.calls,\n names.roomState,\n ]);\n return txn;\n }\n\n private async _loadCallEntries(callEntries: CallEntry[], txn: Transaction, log: ILogItem): Promise {\n log.set(\"entries\", callEntries.length);\n await Promise.all(callEntries.map(async callEntry => {\n if (this._calls.get(callEntry.callId)) {\n return;\n }\n const event = await txn.roomState.get(callEntry.roomId, EventType.GroupCall, callEntry.callId);\n if (event) {\n const call = new GroupCall(\n event.event.state_key, // id\n true, // isLoadedFromStorage\n false, // newCall\n callEntry.timestamp, // startTime\n event.event.content, // callContent\n event.roomId, // roomId\n this.groupCallOptions // options\n );\n this._calls.set(call.id, call);\n }\n }));\n const roomIds = Array.from(new Set(callEntries.map(e => e.roomId)));\n await Promise.all(roomIds.map(async roomId => {\n // TODO: don't load all members until we need them\n const callsMemberEvents = await txn.roomState.getAllForType(roomId, EventType.GroupCallMember);\n await Promise.all(callsMemberEvents.map(async entry => {\n const userId = entry.event.sender;\n const roomMemberState = await txn.roomState.get(roomId, MEMBER_EVENT_TYPE, userId);\n let roomMember;\n if (roomMemberState) {\n roomMember = RoomMember.fromMemberEvent(roomMemberState.event);\n }\n if (!roomMember) {\n // we'll be missing the member here if we received a call and it's members\n // as pre-gap state and the members weren't active in the timeline we got.\n roomMember = RoomMember.fromUserId(roomId, userId, \"join\");\n }\n this.handleCallMemberEvent(entry.event, roomMember, roomId, log);\n }));\n }));\n log.set(\"newSize\", this._calls.size);\n }\n\n createCall(roomId: string, type: CallType, name: string, intent?: CallIntent, log?: ILogItem): Promise {\n return this.options.logger.wrapOrRun(log, \"CallHandler.createCall\", async log => {\n if (!intent) {\n intent = CallIntent.Ring;\n }\n const call = new GroupCall(\n makeId(\"conf-\"), // id\n false, // isLoadedFromStorage\n true, // newCall\n undefined, // startTime\n {\"m.name\": name, \"m.intent\": intent}, // callContent\n roomId, // roomId\n this.groupCallOptions // options\n );\n this._calls.set(call.id, call);\n\n try {\n await call.create(type, log);\n // store call info so it will ring again when reopening the app\n const txn = await this.options.storage.readWriteTxn([this.options.storage.storeNames.calls]);\n txn.calls.add({\n intent: call.intent,\n callId: call.id,\n timestamp: this.options.clock.now(),\n roomId: roomId\n });\n await txn.complete();\n } catch (err) {\n //if (err.name === \"ConnectionError\") {\n // if we're offline, give up and remove the call again\n this._calls.remove(call.id);\n //}\n throw err;\n }\n return call;\n });\n }\n\n get calls(): BaseObservableMap { return this._calls; }\n\n // TODO: check and poll turn server credentials here\n\n /** @internal */\n async handleRoomState(room: Room, event: StateEvent, memberSync: MemberSync, txn: Transaction, log: ILogItem) {\n if (event.type === EventType.GroupCall) {\n this.handleCallEvent(event, room.id, txn, log);\n }\n if (event.type === EventType.GroupCallMember) {\n let member = await memberSync.lookupMemberAtEvent(event.sender, event, txn);\n if (!member) {\n // we'll be missing the member here if we received a call and it's members\n // as pre-gap state and the members weren't active in the timeline we got.\n member = RoomMember.fromUserId(room.id, event.sender, \"join\");\n }\n this.handleCallMemberEvent(event, member, room.id, log);\n }\n }\n\n /** @internal */\n updateRoomMembers(room: Room, memberChanges: Map) {\n // TODO: also have map for roomId to calls, so we can easily update members\n // we will also need this to get the call for a room\n for (const call of this._calls.values()) {\n if (call.roomId === room.id) {\n call.updateRoomMembers(memberChanges);\n }\n }\n }\n\n /** @internal */\n handlesDeviceMessageEventType(eventType: string): boolean {\n return handlesEventType(eventType);\n }\n\n /** @internal */\n handleDeviceMessage(message: SignallingMessage, userId: string, deviceId: string, log: ILogItem) {\n // TODO: buffer messages for calls we haven't received the state event for yet?\n const call = this._calls.get(message.content.conf_id);\n call?.handleDeviceMessage(message, userId, deviceId, log);\n }\n\n private handleCallEvent(event: StateEvent, roomId: string, txn: Transaction, log: ILogItem) {\n const callId = event.state_key;\n let call = this._calls.get(callId);\n if (call) {\n call.updateCallEvent(event, log);\n if (call.isTerminated) {\n call.disconnect(log);\n this._calls.remove(call.id);\n txn.calls.remove(call.intent, roomId, call.id);\n }\n } else if(!event.content[\"m.terminated\"]) {\n // We don't have this call already and it isn't terminated, so create the call:\n call = new GroupCall(\n event.state_key, // id\n false, // isLoadedFromStorage\n false, // newCall\n event.origin_server_ts, // startTime\n event.content, // callContent\n roomId, // roomId\n this.groupCallOptions // options\n );\n this._calls.set(call.id, call);\n txn.calls.add({\n intent: call.intent,\n callId: call.id,\n timestamp: event.origin_server_ts,\n roomId: roomId\n });\n }\n }\n\n private handleCallMemberEvent(event: StateEvent, member: RoomMember, roomId: string, log: ILogItem) {\n const userId = event.state_key;\n const roomMemberKey = getRoomMemberKey(roomId, userId)\n const calls = event.content[\"m.calls\"] ?? [];\n for (const call of calls) {\n const callId = call[\"m.call_id\"];\n const groupCall = this._calls.get(callId);\n // TODO: also check the member when receiving the m.call event\n groupCall?.updateMembership(userId, member, call, log);\n };\n const newCallIdsMemberOf = new Set(calls.map(call => call[\"m.call_id\"]));\n let previousCallIdsMemberOf = this.roomMemberToCallIds.get(roomMemberKey);\n\n // remove user as member of any calls not present anymore\n if (previousCallIdsMemberOf) {\n for (const previousCallId of previousCallIdsMemberOf) {\n if (!newCallIdsMemberOf.has(previousCallId)) {\n const groupCall = this._calls.get(previousCallId);\n groupCall?.removeMembership(userId, log);\n }\n }\n }\n if (newCallIdsMemberOf.size === 0) {\n this.roomMemberToCallIds.delete(roomMemberKey);\n } else {\n this.roomMemberToCallIds.set(roomMemberKey, newCallIdsMemberOf);\n }\n }\n\n dispose() {\n this.groupCallOptions.turnServerSource.dispose();\n for(const call of this._calls.values()) {\n call.dispose();\n }\n }\n}\n\n","/*\nCopyright 2022 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport type {ILogItem} from \"../../../logging/types\";\nimport type {StateEvent} from \"../../storage/types\";\nimport type {Transaction} from \"../../storage/idb/Transaction\";\nimport type {Room} from \"../Room\";\nimport type {MemberChange} from \"../members/RoomMember\";\nimport type {RoomStateHandler} from \"./types\";\nimport type {MemberSync} from \"../timeline/persistence/MemberWriter.js\";\nimport {BaseObservable} from \"../../../observable/BaseObservable\";\n\n/** keeps track of all handlers registered with Session.observeRoomState */\nexport class RoomStateHandlerSet extends BaseObservable implements RoomStateHandler {\n async handleRoomState(room: Room, stateEvent: StateEvent, memberSync: MemberSync, txn: Transaction, log: ILogItem): Promise {\n const promises: Promise[] = [];\n for(let h of this._handlers) {\n promises.push(h.handleRoomState(room, stateEvent, memberSync, txn, log));\n }\n await Promise.all(promises);\n }\n updateRoomMembers(room: Room, memberChanges: Map) {\n for(let h of this._handlers) {\n h.updateRoomMembers(room, memberChanges);\n }\n }\n}\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport type {SettingsStorage} from \"./platform/web/dom/SettingsStorage\";\n\nexport enum FeatureFlag {\n Calls = 1 << 0,\n CrossSigning = 1 << 1\n}\n\nexport class FeatureSet {\n constructor(public readonly flags: number = 0) {}\n\n withFeature(flag: FeatureFlag): FeatureSet {\n return new FeatureSet(this.flags | flag);\n }\n\n withoutFeature(flag: FeatureFlag): FeatureSet {\n return new FeatureSet(this.flags ^ flag);\n }\n \n isFeatureEnabled(flag: FeatureFlag): boolean {\n return (this.flags & flag) !== 0;\n }\n\n get calls(): boolean {\n return this.isFeatureEnabled(FeatureFlag.Calls);\n }\n\n get crossSigning(): boolean {\n return this.isFeatureEnabled(FeatureFlag.CrossSigning);\n }\n\n static async load(settingsStorage: SettingsStorage): Promise {\n const flags = await settingsStorage.getInt(\"enabled_features\") || 0;\n return new FeatureSet(flags);\n }\n\n async store(settingsStorage: SettingsStorage): Promise {\n await settingsStorage.setInt(\"enabled_features\", this.flags);\n }\n}\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2020, 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {Room} from \"./room/Room.js\";\nimport {ArchivedRoom} from \"./room/ArchivedRoom.js\";\nimport {RoomStatus} from \"./room/common\";\nimport {RoomBeingCreated} from \"./room/RoomBeingCreated\";\nimport {Invite} from \"./room/Invite.js\";\nimport {Pusher} from \"./push/Pusher\";\nimport {ObservableMap} from \"../observable\";\nimport {User} from \"./User.js\";\nimport {DeviceMessageHandler} from \"./DeviceMessageHandler.js\";\nimport {Account as E2EEAccount} from \"./e2ee/Account.js\";\nimport {uploadAccountAsDehydratedDevice} from \"./e2ee/Dehydration.js\";\nimport {Decryption as OlmDecryption} from \"./e2ee/olm/Decryption\";\nimport {Encryption as OlmEncryption} from \"./e2ee/olm/Encryption\";\nimport {Decryption as MegOlmDecryption} from \"./e2ee/megolm/Decryption\";\nimport {KeyLoader as MegOlmKeyLoader} from \"./e2ee/megolm/decryption/KeyLoader\";\nimport {KeyBackup} from \"./e2ee/megolm/keybackup/KeyBackup\";\nimport {CrossSigning} from \"./verification/CrossSigning\";\nimport {Encryption as MegOlmEncryption} from \"./e2ee/megolm/Encryption.js\";\nimport {MEGOLM_ALGORITHM} from \"./e2ee/common\";\nimport {RoomEncryption} from \"./e2ee/RoomEncryption.js\";\nimport {DeviceTracker} from \"./e2ee/DeviceTracker\";\nimport {LockMap} from \"../utils/LockMap\";\nimport {groupBy} from \"../utils/groupBy\";\nimport {\n keyFromCredential as ssssKeyFromCredential,\n readKey as ssssReadKey,\n writeKey as ssssWriteKey,\n removeKey as ssssRemoveKey,\n keyFromDehydratedDeviceKey as createSSSSKeyFromDehydratedDeviceKey,\n SecretStorage,\n SecretSharing,\n SecretFetcher\n} from \"./ssss/index\";\nimport {ObservableValue, RetainedObservableValue} from \"../observable/value\";\nimport {CallHandler} from \"./calls/CallHandler\";\nimport {RoomStateHandlerSet} from \"./room/state/RoomStateHandlerSet\";\n\nconst PICKLE_KEY = \"DEFAULT_KEY\";\nconst PUSHER_KEY = \"pusher\";\n\nexport class Session {\n // sessionInfo contains deviceId, userId and homeserver\n constructor({storage, hsApi, sessionInfo, olm, olmWorker, platform, mediaRepository, features}) {\n this._platform = platform;\n this._storage = storage;\n this._hsApi = hsApi;\n this._mediaRepository = mediaRepository;\n this._features = features;\n this._syncInfo = null;\n this._sessionInfo = sessionInfo;\n this._rooms = new ObservableMap();\n this._roomUpdateCallback = (room, params) => this._rooms.update(room.id, params);\n this._activeArchivedRooms = new Map();\n this._invites = new ObservableMap();\n this._inviteUpdateCallback = (invite, params) => this._invites.update(invite.id, params);\n this._roomsBeingCreatedUpdateCallback = (rbc, params) => {\n if (rbc.isCancelled) {\n this._roomsBeingCreated.remove(rbc.id);\n } else {\n this._roomsBeingCreated.update(rbc.id, params)\n }\n };\n this._roomsBeingCreated = new ObservableMap();\n this._user = new User(sessionInfo.userId);\n this._roomStateHandler = new RoomStateHandlerSet();\n if (features.calls) {\n this._setupCallHandler();\n }\n this._deviceMessageHandler = new DeviceMessageHandler({storage, callHandler: this._callHandler});\n this._olm = olm;\n this._olmUtil = null;\n this._e2eeAccount = null;\n this._deviceTracker = null;\n this._olmEncryption = null;\n this._keyLoader = null;\n this._megolmEncryption = null;\n this._megolmDecryption = null;\n this._getSyncToken = () => this.syncToken;\n this._olmWorker = olmWorker;\n this._keyBackup = new ObservableValue(undefined);\n this._crossSigning = new ObservableValue(undefined);\n this._observedRoomStatus = new Map();\n\n if (olm) {\n this._olmUtil = new olm.Utility();\n this._deviceTracker = new DeviceTracker({\n storage,\n getSyncToken: this._getSyncToken,\n olmUtil: this._olmUtil,\n ownUserId: sessionInfo.userId,\n ownDeviceId: sessionInfo.deviceId,\n });\n }\n this._createRoomEncryption = this._createRoomEncryption.bind(this);\n this._forgetArchivedRoom = this._forgetArchivedRoom.bind(this);\n this.needsKeyBackup = new ObservableValue(false);\n this._secretFetcher = new SecretFetcher();\n this._secretSharing = null;\n this._secretStorage = null;\n }\n\n get fingerprintKey() {\n return this._e2eeAccount?.identityKeys.ed25519;\n }\n\n get hasSecretStorageKey() {\n return this._hasSecretStorageKey;\n }\n\n get deviceId() {\n return this._sessionInfo.deviceId;\n }\n\n get userId() {\n return this._sessionInfo.userId;\n }\n\n get callHandler() {\n return this._callHandler;\n }\n\n get features() {\n return this._features;\n }\n\n _setupCallHandler() {\n this._callHandler = new CallHandler({\n clock: this._platform.clock,\n random: this._platform.random,\n hsApi: this._hsApi,\n encryptDeviceMessage: async (roomId, userId, deviceId, message, log) => {\n if (!this._deviceTracker || !this._olmEncryption) {\n log.set(\"encryption_disabled\", true);\n return;\n }\n const device = await log.wrap(\"get device key\", async log => {\n const device = this._deviceTracker.deviceForId(userId, deviceId, this._hsApi, log);\n if (!device) {\n log.set(\"not_found\", true);\n }\n return device;\n });\n if (device) {\n const encryptedMessages = await this._olmEncryption.encrypt(message.type, message.content, [device], this._hsApi, log);\n return encryptedMessages;\n }\n },\n storage: this._storage,\n webRTC: this._platform.webRTC,\n ownDeviceId: this._sessionInfo.deviceId,\n ownUserId: this._sessionInfo.userId,\n logger: this._platform.logger,\n forceTURN: false,\n });\n this.observeRoomState(this._callHandler);\n }\n\n // called once this._e2eeAccount is assigned\n async _setupEncryption() {\n // TODO: this should all go in a wrapper in e2ee/ that is bootstrapped by passing in the account\n // and can create RoomEncryption objects and handle encrypted to_device messages and device list changes.\n const senderKeyLock = new LockMap();\n const olmDecryption = new OlmDecryption(\n this._e2eeAccount,\n PICKLE_KEY,\n this._platform.clock.now,\n this._user.id,\n this._olm,\n senderKeyLock\n );\n this._olmEncryption = new OlmEncryption(\n this._e2eeAccount,\n PICKLE_KEY,\n this._olm,\n this._storage,\n this._platform.clock.now,\n this._user.id,\n this._olmUtil,\n senderKeyLock\n );\n this._keyLoader = new MegOlmKeyLoader(this._olm, PICKLE_KEY, 20);\n this._megolmEncryption = new MegOlmEncryption({\n account: this._e2eeAccount,\n pickleKey: PICKLE_KEY,\n olm: this._olm,\n storage: this._storage,\n keyLoader: this._keyLoader,\n now: this._platform.clock.now,\n ownDeviceId: this._sessionInfo.deviceId,\n });\n this._megolmDecryption = new MegOlmDecryption(this._keyLoader, this._olmWorker);\n this._deviceMessageHandler.enableEncryption({olmDecryption, megolmDecryption: this._megolmDecryption});\n this._secretSharing = new SecretSharing({\n hsApi: this._hsApi,\n storage: this._storage,\n deviceMessageHandler: this._deviceMessageHandler,\n deviceTracker: this._deviceTracker,\n ourUserId: this.userId,\n olmEncryption: this._olmEncryption,\n crypto: this._platform.crypto,\n encoding: this._platform.encoding,\n crossSigning: this._crossSigning,\n logger: this._platform.logger,\n });\n await this._secretSharing.load();\n this._secretFetcher.setSecretSharing(this._secretSharing);\n }\n\n _createRoomEncryption(room, encryptionParams) {\n // TODO: this will actually happen when users start using the e2ee version for the first time\n\n // this should never happen because either a session was already synced once\n // and thus an e2ee account was created as well and _setupEncryption is called from load\n // OR\n // this is a new session and loading it will load zero rooms, thus not calling this method.\n // in this case _setupEncryption is called from beforeFirstSync, right after load,\n // so any incoming synced rooms won't be there yet\n if (!this._olmEncryption) {\n throw new Error(\"creating room encryption before encryption got globally enabled\");\n }\n // only support megolm\n if (encryptionParams.algorithm !== MEGOLM_ALGORITHM) {\n return null;\n }\n return new RoomEncryption({\n room,\n deviceTracker: this._deviceTracker,\n olmEncryption: this._olmEncryption,\n megolmEncryption: this._megolmEncryption,\n megolmDecryption: this._megolmDecryption,\n storage: this._storage,\n keyBackup: this._keyBackup?.get(),\n encryptionParams,\n notifyMissingMegolmSession: () => {\n if (!this._keyBackup.get()) {\n this.needsKeyBackup.set(true)\n }\n },\n clock: this._platform.clock\n });\n }\n\n /**\n * Enable secret storage by providing the secret storage credential.\n * This will also see if there is a megolm key backup and try to enable that if so.\n *\n * @param {KeyType} type either KeyType.RecoveryKey (0) or KeyType.Passphrase (1)\n * @param {string} credential either the passphrase or the recovery key, depending on the type\n * @return {Promise} resolves or rejects after having tried to enable secret storage\n */\n enableSecretStorage(type, credential, log = undefined) {\n return this._platform.logger.wrapOrRun(log, \"enable secret storage\", async log => {\n if (!this._olm) {\n throw new Error(\"olm required\");\n }\n if (this._keyBackup.get()) {\n this._keyBackup.get().dispose();\n this._keyBackup.set(undefined);\n }\n const key = await ssssKeyFromCredential(type, credential, this._storage, this._platform, this._olm);\n if (await this._tryLoadSecretStorage(key, log)) {\n // only after having read a secret, write the key\n // as we only find out if it was good if the MAC verification succeeds\n await this._writeSSSSKey(key, log);\n await this._keyBackup.get()?.start(log);\n await this._crossSigning.get()?.start(log);\n return key;\n } else {\n throw new Error(\"Could not read key backup with the given key\");\n }\n });\n }\n\n async _writeSSSSKey(key, log) {\n // we're going to write the 4S key, and also the backup version.\n // this way, we can detect when we enter a key for a new backup version\n // and mark all inbound sessions to be backed up again\n const keyBackup = this._keyBackup.get();\n if (!keyBackup) {\n return;\n }\n const backupVersion = keyBackup.version;\n const writeTxn = await this._storage.readWriteTxn([\n this._storage.storeNames.session,\n this._storage.storeNames.inboundGroupSessions,\n ]);\n try {\n const previousBackupVersion = await ssssWriteKey(key, backupVersion, writeTxn);\n log.set(\"previousBackupVersion\", previousBackupVersion);\n log.set(\"backupVersion\", backupVersion);\n if (!!previousBackupVersion && previousBackupVersion !== backupVersion) {\n const amountMarked = await keyBackup.markAllForBackup(writeTxn);\n log.set(\"amountMarkedForBackup\", amountMarked);\n }\n } catch (err) {\n writeTxn.abort();\n throw err;\n }\n await writeTxn.complete();\n }\n\n async disableSecretStorage() {\n const writeTxn = await this._storage.readWriteTxn([\n this._storage.storeNames.session,\n ]);\n try {\n ssssRemoveKey(writeTxn);\n } catch (err) {\n writeTxn.abort();\n throw err;\n }\n await writeTxn.complete();\n if (this._keyBackup.get()) {\n for (const room of this._rooms.values()) {\n if (room.isEncrypted) {\n room.enableKeyBackup(undefined);\n }\n }\n this._keyBackup.get().dispose();\n this._keyBackup.set(undefined);\n }\n const crossSigning = this._crossSigning.get();\n if (crossSigning) {\n crossSigning.dispose();\n this._crossSigning.set(undefined);\n }\n }\n\n _tryLoadSecretStorage(ssssKey, log) {\n return log.wrap(\"enable secret storage\", async log => {\n const secretStorage = new SecretStorage({key: ssssKey, platform: this._platform, storage: this._storage});\n const isValid = await secretStorage.hasValidKeyForAnyAccountData();\n log.set(\"isValid\", isValid);\n if (isValid) {\n this._secretStorage = secretStorage;\n await this._loadSecretStorageServices(secretStorage, log);\n this._secretFetcher.setSecretStorage(secretStorage);\n }\n return isValid;\n });\n }\n\n async _loadSecretStorageServices(secretStorage, log) {\n try {\n await log.wrap(\"enable key backup\", async log => {\n const keyBackup = new KeyBackup(\n this._hsApi,\n this._olm,\n this._keyLoader,\n this._storage,\n this._platform,\n );\n if (await keyBackup.load(secretStorage, log)) {\n for (const room of this._rooms.values()) {\n if (room.isEncrypted) {\n room.enableKeyBackup(keyBackup);\n }\n }\n this._keyBackup.set(keyBackup);\n return true;\n } else {\n log.set(\"no_backup\", true);\n }\n });\n } catch (err) {\n log.catch(err);\n }\n }\n\n /**\n * @type {ObservableValue this._e2eeAccount.uploadKeys(this._storage, false, log));\n }\n await this._createCrossSigning();\n }\n }\n\n /** @internal */\n async dehydrateIdentity(dehydratedDevice, log) {\n log.set(\"deviceId\", dehydratedDevice.deviceId);\n if (!this._olm) {\n log.set(\"no_olm\", true);\n return false;\n }\n if (dehydratedDevice.deviceId !== this.deviceId) {\n log.set(\"wrong_device\", true);\n return false;\n }\n if (this._e2eeAccount) {\n log.set(\"account_already_setup\", true);\n return false;\n }\n if (!await dehydratedDevice.claim(this._hsApi, log)) {\n log.set(\"already_claimed\", true);\n return false;\n }\n this._e2eeAccount = await E2EEAccount.adoptDehydratedDevice({\n dehydratedDevice,\n hsApi: this._hsApi,\n olm: this._olm,\n pickleKey: PICKLE_KEY,\n userId: this._sessionInfo.userId,\n olmWorker: this._olmWorker,\n deviceId: this.deviceId,\n storage: this._storage,\n });\n log.set(\"keys\", this._e2eeAccount.identityKeys);\n this._setupEncryption();\n return true;\n }\n\n _createNewAccount(deviceId, storage = undefined) {\n // storage is optional and if omitted the account won't be persisted (useful for dehydrating devices)\n return E2EEAccount.create({\n hsApi: this._hsApi,\n olm: this._olm,\n pickleKey: PICKLE_KEY,\n userId: this._sessionInfo.userId,\n olmWorker: this._olmWorker,\n deviceId,\n storage,\n });\n }\n\n setupDehydratedDevice(key, log = null) {\n return this._platform.logger.wrapOrRun(log, \"setupDehydratedDevice\", async log => {\n const dehydrationAccount = await this._createNewAccount(\"temp-device-id\");\n try {\n const deviceId = await uploadAccountAsDehydratedDevice(\n dehydrationAccount, this._hsApi, key, \"Dehydrated device\", log);\n log.set(\"deviceId\", deviceId);\n return deviceId;\n } finally {\n dehydrationAccount.dispose();\n }\n });\n }\n\n /** @internal */\n async load(log) {\n const txn = await this._storage.readTxn([\n this._storage.storeNames.session,\n this._storage.storeNames.roomSummary,\n this._storage.storeNames.invites,\n this._storage.storeNames.roomMembers,\n this._storage.storeNames.timelineEvents,\n this._storage.storeNames.timelineFragments,\n this._storage.storeNames.pendingEvents,\n this._storage.storeNames.accountData,\n this._storage.storeNames.crossSigningKeys,\n ]);\n // restore session object\n this._syncInfo = await txn.session.get(\"sync\");\n // restore e2ee account, if any\n if (this._olm) {\n this._e2eeAccount = await E2EEAccount.load({\n hsApi: this._hsApi,\n olm: this._olm,\n pickleKey: PICKLE_KEY,\n userId: this._sessionInfo.userId,\n deviceId: this._sessionInfo.deviceId,\n olmWorker: this._olmWorker,\n txn\n });\n if (this._e2eeAccount) {\n log.set(\"keys\", this._e2eeAccount.identityKeys);\n }\n this._setupEncryption();\n }\n const pendingEventsByRoomId = await this._getPendingEventsByRoom(txn);\n // load invites\n const invites = await txn.invites.getAll();\n const inviteLoadPromise = Promise.all(invites.map(async inviteData => {\n const invite = this.createInvite(inviteData.roomId);\n log.wrap(\"invite\", log => invite.load(inviteData, log));\n this._invites.add(invite.id, invite);\n }));\n // load rooms\n const rooms = await txn.roomSummary.getAll();\n const roomLoadPromise = Promise.all(rooms.map(async summary => {\n const room = this.createJoinedRoom(summary.roomId, pendingEventsByRoomId.get(summary.roomId));\n await log.wrap(\"room\", log => room.load(summary, txn, log));\n this._rooms.add(room.id, room);\n }));\n // load invites and rooms in parallel\n await Promise.all([inviteLoadPromise, roomLoadPromise]);\n for (const [roomId, invite] of this.invites) {\n const room = this.rooms.get(roomId);\n if (room) {\n room.setInvite(invite);\n }\n }\n if (this._olm && this._e2eeAccount) {\n // try set up session backup and cross-signing if we stored the ssss key\n const ssssKey = await ssssReadKey(txn);\n if (ssssKey) {\n // this will close the txn above, so we do it last\n await this._tryLoadSecretStorage(ssssKey, log);\n }\n }\n if (this._e2eeAccount) {\n await this._createCrossSigning();\n }\n }\n\n async _createCrossSigning() {\n if (this._features.crossSigning) {\n this._platform.logger.run(\"enable cross-signing\", async log => {\n const crossSigning = new CrossSigning({\n storage: this._storage,\n secretFetcher: this._secretFetcher,\n platform: this._platform,\n olm: this._olm,\n olmUtil: this._olmUtil,\n deviceTracker: this._deviceTracker,\n deviceMessageHandler: this._deviceMessageHandler,\n hsApi: this._hsApi,\n ownUserId: this.userId,\n e2eeAccount: this._e2eeAccount,\n deviceId: this.deviceId,\n });\n await crossSigning.load(log);\n this._crossSigning.set(crossSigning);\n });\n }\n }\n\n dispose() {\n this._olmWorker?.dispose();\n this._olmWorker = undefined;\n this._keyBackup.get()?.dispose();\n this._keyBackup.set(undefined);\n this._megolmDecryption?.dispose();\n this._megolmDecryption = undefined;\n this._e2eeAccount?.dispose();\n this._e2eeAccount = undefined;\n this._callHandler?.dispose();\n this._callHandler = undefined;\n this._crossSigning.get()?.dispose();\n for (const room of this._rooms.values()) {\n room.dispose();\n }\n this._rooms = undefined;\n }\n\n /**\n * @internal called from session container when coming back online and catchup syncs have finished.\n * @param {Object} lastVersionResponse a response from /versions, which is polled while offline,\n * and useful to store so we can later tell what capabilities\n * our homeserver has.\n */\n async start(lastVersionResponse, dehydratedDevice, log) {\n if (lastVersionResponse) {\n // store /versions response\n const txn = await this._storage.readWriteTxn([\n this._storage.storeNames.session\n ]);\n txn.session.set(\"serverVersions\", lastVersionResponse);\n // TODO: what can we do if this throws?\n await txn.complete();\n }\n // try if the key used to decrypt the dehydrated device also fits for secret storage\n if (dehydratedDevice) {\n await log.wrap(\"SSSSKeyFromDehydratedDeviceKey\", async log => {\n const ssssKey = await createSSSSKeyFromDehydratedDeviceKey(dehydratedDevice.key, this._storage, this._platform);\n if (ssssKey) {\n if (await this._tryLoadSecretStorage(ssssKey, log)) {\n log.set(\"success\", true);\n await this._writeSSSSKey(ssssKey);\n }\n }\n });\n }\n await this._keyBackup.get()?.start(log);\n await this._crossSigning.get()?.start(log);\n \n // restore unfinished operations, like sending out room keys\n const opsTxn = await this._storage.readWriteTxn([\n this._storage.storeNames.operations\n ]);\n const operations = await opsTxn.operations.getAll();\n const operationsByScope = groupBy(operations, o => o.scope);\n\n for (const room of this._rooms.values()) {\n let roomOperationsByType;\n const roomOperations = operationsByScope.get(room.id);\n if (roomOperations) {\n roomOperationsByType = groupBy(roomOperations, r => r.type);\n }\n room.start(roomOperationsByType, log);\n }\n }\n\n async _getPendingEventsByRoom(txn) {\n const pendingEvents = await txn.pendingEvents.getAll();\n return pendingEvents.reduce((groups, pe) => {\n const group = groups.get(pe.roomId);\n if (group) {\n group.push(pe);\n } else {\n groups.set(pe.roomId, [pe]);\n }\n return groups;\n }, new Map());\n }\n\n get rooms() {\n return this._rooms;\n }\n\n findDirectMessageForUserId(userId) {\n for (const [,room] of this._rooms) {\n if (room.isDirectMessageForUserId(userId)) {\n return room;\n }\n }\n for (const [,invite] of this._invites) {\n if (invite.isDirectMessageForUserId(userId)) {\n return invite;\n }\n }\n }\n\n /** @internal */\n createJoinedRoom(roomId, pendingEvents) {\n return new Room({\n roomId,\n getSyncToken: this._getSyncToken,\n storage: this._storage,\n emitCollectionChange: this._roomUpdateCallback,\n hsApi: this._hsApi,\n mediaRepository: this._mediaRepository,\n pendingEvents,\n user: this._user,\n createRoomEncryption: this._createRoomEncryption,\n platform: this._platform,\n roomStateHandler: this._roomStateHandler\n });\n }\n\n /** @internal */\n _createArchivedRoom(roomId) {\n const room = new ArchivedRoom({\n roomId,\n getSyncToken: this._getSyncToken,\n storage: this._storage,\n emitCollectionChange: () => {},\n releaseCallback: () => this._activeArchivedRooms.delete(roomId),\n forgetCallback: this._forgetArchivedRoom,\n hsApi: this._hsApi,\n mediaRepository: this._mediaRepository,\n user: this._user,\n createRoomEncryption: this._createRoomEncryption,\n platform: this._platform\n });\n this._activeArchivedRooms.set(roomId, room);\n return room;\n }\n\n get invites() {\n return this._invites;\n }\n\n /** @internal */\n createInvite(roomId) {\n return new Invite({\n roomId,\n hsApi: this._hsApi,\n emitCollectionUpdate: this._inviteUpdateCallback,\n mediaRepository: this._mediaRepository,\n user: this._user,\n platform: this._platform,\n });\n }\n\n get roomsBeingCreated() {\n return this._roomsBeingCreated;\n }\n\n async createRoom(options) {\n let roomBeingCreated;\n await this._platform.logger.run(\"create room\", async log => {\n const id = `local-${Math.floor(this._platform.random() * Number.MAX_SAFE_INTEGER)}`;\n roomBeingCreated = new RoomBeingCreated(\n id, options, this._roomsBeingCreatedUpdateCallback,\n this._mediaRepository, this._platform, log);\n this._roomsBeingCreated.set(id, roomBeingCreated);\n const promises = [roomBeingCreated.create(this._hsApi, log)];\n const loadProfiles = options.loadProfiles !== false; // default to true\n if (loadProfiles) {\n promises.push(roomBeingCreated.loadProfiles(this._hsApi, log));\n }\n await Promise.all(promises);\n // we should now know the roomId, check if the room was synced before we received\n // the room id. Replace the room being created with the synced room.\n if (roomBeingCreated.roomId) {\n if (this.rooms.get(roomBeingCreated.roomId)) {\n this._tryReplaceRoomBeingCreated(roomBeingCreated.roomId, log);\n }\n await roomBeingCreated.adjustDirectMessageMapIfNeeded(this._user, this._storage, this._hsApi, log);\n }\n });\n return roomBeingCreated;\n }\n\n async obtainSyncLock(syncResponse) {\n const toDeviceEvents = syncResponse.to_device?.events;\n if (Array.isArray(toDeviceEvents) && toDeviceEvents.length) {\n return await this._deviceMessageHandler.obtainSyncLock(toDeviceEvents);\n }\n }\n\n async prepareSync(syncResponse, lock, txn, log) {\n const toDeviceEvents = syncResponse.to_device?.events;\n if (Array.isArray(toDeviceEvents) && toDeviceEvents.length) {\n return await log.wrap(\"deviceMsgs\", log => this._deviceMessageHandler.prepareSync(toDeviceEvents, lock, txn, log));\n }\n }\n\n /** @internal */\n async writeSync(syncResponse, syncFilterId, preparation, txn, log) {\n const changes = {\n syncInfo: null,\n e2eeAccountChanges: null,\n hasNewRoomKeys: false,\n deviceMessageDecryptionResults: null,\n changedDevices: null,\n };\n const syncToken = syncResponse.next_batch;\n if (syncToken !== this.syncToken) {\n const syncInfo = {token: syncToken, filterId: syncFilterId};\n // don't modify `this` because transaction might still fail\n txn.session.set(\"sync\", syncInfo);\n changes.syncInfo = syncInfo;\n }\n\n const deviceOneTimeKeysCount = syncResponse.device_one_time_keys_count;\n if (this._e2eeAccount && deviceOneTimeKeysCount) {\n changes.e2eeAccountChanges = this._e2eeAccount.writeSync(deviceOneTimeKeysCount, txn, log);\n }\n\n const deviceLists = syncResponse.device_lists;\n if (this._deviceTracker && Array.isArray(deviceLists?.changed) && deviceLists.changed.length) {\n await log.wrap(\"deviceLists\", log => this._deviceTracker.writeDeviceChanges(deviceLists.changed, txn, log));\n changes.changedDevices = deviceLists.changed;\n }\n\n if (preparation) {\n const {hasNewRoomKeys, decryptionResults} = await log.wrap(\"deviceMsgs\", log => this._deviceMessageHandler.writeSync(preparation, txn, log));\n changes.hasNewRoomKeys = hasNewRoomKeys;\n changes.deviceMessageDecryptionResults = decryptionResults;\n }\n\n // store account data\n const accountData = syncResponse[\"account_data\"];\n if (Array.isArray(accountData?.events)) {\n for (const event of accountData.events) {\n if (typeof event.type === \"string\") {\n txn.accountData.set(event);\n }\n }\n }\n return changes;\n }\n\n /** @internal */\n afterSync({syncInfo, e2eeAccountChanges}) {\n if (syncInfo) {\n // sync transaction succeeded, modify object state now\n this._syncInfo = syncInfo;\n }\n if (this._e2eeAccount) {\n this._e2eeAccount.afterSync(e2eeAccountChanges);\n }\n }\n\n /** @internal */\n async afterSyncCompleted(changes, isCatchupSync, log) {\n // we don't start uploading one-time keys until we've caught up with\n // to-device messages, to help us avoid throwing away one-time-keys that we\n // are about to receive messages for\n // (https://github.com/vector-im/riot-web/issues/2782).\n if (this._e2eeAccount && !isCatchupSync && !this._sessionInfo.isReadOnly) {\n const needsToUploadOTKs = await this._e2eeAccount.generateOTKsIfNeeded(this._storage, log);\n if (needsToUploadOTKs) {\n await log.wrap(\"uploadKeys\", log => this._e2eeAccount.uploadKeys(this._storage, false, log));\n }\n }\n if (changes.hasNewRoomKeys) {\n this._keyBackup.get()?.flush(log);\n }\n if (changes.deviceMessageDecryptionResults) {\n await this._deviceMessageHandler.afterSyncCompleted(changes.deviceMessageDecryptionResults, this._deviceTracker, this._hsApi, log);\n }\n if (changes.changedDevices?.includes(this.userId)) {\n this._secretSharing?.checkSecretValidity();\n }\n }\n\n _tryReplaceRoomBeingCreated(roomId, log) {\n for (const [,roomBeingCreated] of this._roomsBeingCreated) {\n if (roomBeingCreated.roomId === roomId) {\n const observableStatus = this._observedRoomStatus.get(roomBeingCreated.id);\n if (observableStatus) {\n log.log(`replacing room being created`)\n .set(\"localId\", roomBeingCreated.id)\n .set(\"roomId\", roomBeingCreated.roomId);\n observableStatus.set(observableStatus.get() | RoomStatus.Replaced);\n }\n roomBeingCreated.dispose();\n this._roomsBeingCreated.remove(roomBeingCreated.id);\n return;\n }\n }\n }\n\n async applyRoomCollectionChangesAfterSync(inviteStates, roomStates, archivedRoomStates, log) {\n // update the collections after sync\n for (const rs of roomStates) {\n if (rs.shouldAdd) {\n this._rooms.add(rs.id, rs.room);\n this._tryReplaceRoomBeingCreated(rs.id, log);\n } else if (rs.shouldRemove) {\n this._rooms.remove(rs.id);\n }\n }\n for (const is of inviteStates) {\n if (is.shouldAdd) {\n this._invites.add(is.id, is.invite);\n } else if (is.shouldRemove) {\n this._invites.remove(is.id);\n }\n }\n // now all the collections are updated, update the room status\n // so any listeners to the status will find the collections\n // completely up to date\n if (this._observedRoomStatus.size !== 0) {\n for (const ars of archivedRoomStates) {\n if (ars.shouldAdd) {\n this._observedRoomStatus.get(ars.id)?.set(RoomStatus.Archived);\n }\n }\n for (const rs of roomStates) {\n if (rs.shouldAdd) {\n this._observedRoomStatus.get(rs.id)?.set(RoomStatus.Joined);\n }\n }\n for (const is of inviteStates) {\n const statusObservable = this._observedRoomStatus.get(is.id);\n if (statusObservable) {\n const withInvited = statusObservable.get() | RoomStatus.Invited;\n if (is.shouldAdd) {\n statusObservable.set(withInvited);\n } else if (is.shouldRemove) {\n const withoutInvited = withInvited ^ RoomStatus.Invited;\n statusObservable.set(withoutInvited);\n }\n }\n }\n }\n }\n\n _forgetArchivedRoom(roomId) {\n const statusObservable = this._observedRoomStatus.get(roomId);\n if (statusObservable) {\n statusObservable.set((statusObservable.get() | RoomStatus.Archived) ^ RoomStatus.Archived);\n }\n }\n\n /** @internal */\n get syncToken() {\n return this._syncInfo?.token;\n }\n\n /** @internal */\n get syncFilterId() {\n return this._syncInfo?.filterId;\n }\n\n get user() {\n return this._user;\n }\n\n get mediaRepository() {\n return this._mediaRepository;\n }\n\n enablePushNotifications(enable) {\n if (enable) {\n return this._enablePush();\n } else {\n return this._disablePush();\n }\n }\n\n async _enablePush() {\n return this._platform.logger.run(\"enablePush\", async log => {\n const defaultPayload = Pusher.createDefaultPayload(this._sessionInfo.id);\n const pusher = await this._platform.notificationService.enablePush(Pusher, defaultPayload);\n if (!pusher) {\n log.set(\"no_pusher\", true);\n return false;\n }\n await pusher.enable(this._hsApi, log);\n // store pusher data, so we know we enabled it across reloads,\n // and we can disable it without too much hassle\n const txn = await this._storage.readWriteTxn([this._storage.storeNames.session]);\n txn.session.set(PUSHER_KEY, pusher.serialize());\n await txn.complete();\n return true;\n });\n }\n\n\n async _disablePush() {\n return this._platform.logger.run(\"disablePush\", async log => {\n await this._platform.notificationService.disablePush();\n const readTxn = await this._storage.readTxn([this._storage.storeNames.session]);\n const pusherData = await readTxn.session.get(PUSHER_KEY);\n if (!pusherData) {\n // we've disabled push in the notif service at least\n return true;\n }\n const pusher = new Pusher(pusherData);\n await pusher.disable(this._hsApi, log);\n const txn = await this._storage.readWriteTxn([this._storage.storeNames.session]);\n txn.session.remove(PUSHER_KEY);\n await txn.complete();\n return true;\n });\n }\n\n async arePushNotificationsEnabled() {\n if (!await this._platform.notificationService.isPushEnabled()) {\n return false;\n }\n const readTxn = await this._storage.readTxn([this._storage.storeNames.session]);\n const pusherData = await readTxn.session.get(PUSHER_KEY);\n return !!pusherData;\n }\n\n async checkPusherEnabledOnHomeserver() {\n const readTxn = await this._storage.readTxn([this._storage.storeNames.session]);\n const pusherData = await readTxn.session.get(PUSHER_KEY);\n if (!pusherData) {\n return false;\n }\n const myPusher = new Pusher(pusherData);\n const serverPushersData = await this._hsApi.getPushers().response();\n const serverPushers = (serverPushersData?.pushers || []).map(data => new Pusher(data));\n return serverPushers.some(p => p.equals(myPusher));\n }\n\n async getRoomStatus(roomId) {\n const isBeingCreated = !!this._roomsBeingCreated.get(roomId);\n if (isBeingCreated) {\n return RoomStatus.BeingCreated;\n }\n const isJoined = !!this._rooms.get(roomId);\n if (isJoined) {\n return RoomStatus.Joined;\n } else {\n const isInvited = !!this._invites.get(roomId);\n const txn = await this._storage.readTxn([this._storage.storeNames.archivedRoomSummary]);\n const isArchived = await txn.archivedRoomSummary.has(roomId);\n if (isInvited && isArchived) {\n return RoomStatus.Invited | RoomStatus.Archived;\n } else if (isInvited) {\n return RoomStatus.Invited;\n } else if (isArchived) {\n return RoomStatus.Archived;\n } else {\n return RoomStatus.None;\n }\n }\n }\n\n async observeRoomStatus(roomId) {\n let observable = this._observedRoomStatus.get(roomId);\n if (!observable) {\n let status = undefined;\n // Create and set the observable with value = undefined, so that\n // we don't loose any sync changes that come in while we are busy\n // calculating the current room status.\n observable = new RetainedObservableValue(status, () => {\n this._observedRoomStatus.delete(roomId);\n });\n this._observedRoomStatus.set(roomId, observable);\n status = await this.getRoomStatus(roomId);\n // If observable.value is not undefined anymore, then some\n // change has come through the sync.\n if (observable.get() === undefined) {\n observable.set(status);\n }\n }\n return observable;\n }\n\n observeRoomState(roomStateHandler) {\n return this._roomStateHandler.subscribe(roomStateHandler);\n }\n\n /**\n Creates an empty (summary isn't loaded) the archived room if it isn't\n loaded already, assuming sync will either remove it (when rejoining) or\n write a full summary adopting it from the joined room when leaving\n\n @internal\n */\n createOrGetArchivedRoomForSync(roomId) {\n let archivedRoom = this._activeArchivedRooms.get(roomId);\n if (archivedRoom) {\n archivedRoom.retain();\n } else {\n archivedRoom = this._createArchivedRoom(roomId);\n }\n return archivedRoom;\n }\n\n loadArchivedRoom(roomId, log = null) {\n return this._platform.logger.wrapOrRun(log, \"loadArchivedRoom\", async log => {\n log.set(\"id\", roomId);\n const activeArchivedRoom = this._activeArchivedRooms.get(roomId);\n if (activeArchivedRoom) {\n activeArchivedRoom.retain();\n return activeArchivedRoom;\n }\n const txn = await this._storage.readTxn([\n this._storage.storeNames.archivedRoomSummary,\n this._storage.storeNames.roomMembers,\n ]);\n const summary = await txn.archivedRoomSummary.get(roomId);\n if (summary) {\n const room = this._createArchivedRoom(roomId);\n await room.load(summary, txn, log);\n return room;\n }\n });\n }\n\n joinRoom(roomIdOrAlias, log = null) {\n return this._platform.logger.wrapOrRun(log, \"joinRoom\", async log => {\n const body = await this._hsApi.joinIdOrAlias(roomIdOrAlias, {log}).response();\n return body.room_id;\n });\n }\n\n /**\n * Updates the access token used by the API. Does NOT\n * change the token in storage.\n * @param {string} token \n */\n updateAccessToken(token) {\n this._hsApi.updateAccessToken(token);\n }\n}\n\nimport {FeatureSet} from \"../features\";\nexport function tests() {\n function createStorageMock(session, pendingEvents = []) {\n return {\n readTxn() {\n return {\n session: {\n get(key) {\n return Promise.resolve(session[key]);\n }\n },\n pendingEvents: {\n getAll() {\n return Promise.resolve(pendingEvents);\n }\n },\n roomSummary: {\n getAll() {\n return Promise.resolve([]);\n }\n },\n invites: {\n getAll() {\n return Promise.resolve([]);\n }\n }\n };\n },\n storeNames: {}\n };\n }\n\n return {\n \"session data is not modified until after sync\": async (assert) => {\n const storage = createStorageMock({\n sync: {token: \"a\", filterId: 5}\n });\n const session = new Session({\n storage,\n sessionInfo: {userId: \"\"},\n platform: {\n clock: {\n createTimeout: () => undefined\n }\n },\n features: new FeatureSet(0)\n });\n await session.load();\n let syncSet = false;\n const syncTxn = {\n session: {\n set(key, value) {\n if (key === \"sync\") {\n assert.equal(value.token, \"b\");\n assert.equal(value.filterId, 6);\n syncSet = true;\n }\n }\n }\n };\n const newSessionData = await session.writeSync({next_batch: \"b\"}, 6, null, syncTxn, {});\n assert(syncSet);\n assert.equal(session.syncToken, \"a\");\n assert.equal(session.syncFilterId, 5);\n session.afterSync(newSessionData);\n assert.equal(session.syncToken, \"b\");\n assert.equal(session.syncFilterId, 6);\n }\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {ILogItem} from \"../../logging/types\";\nimport {ILoginMethod} from \"./LoginMethod\";\nimport {HomeServerApi} from \"../net/HomeServerApi.js\";\n\nexport class PasswordLoginMethod implements ILoginMethod {\n private readonly _username: string;\n private readonly _password: string;\n public readonly homeserver: string;\n\n constructor({username, password, homeserver}: {username: string, password: string, homeserver: string}) {\n this._username = username;\n this._password = password;\n this.homeserver = homeserver;\n }\n\n async login(hsApi: HomeServerApi, deviceName: string, log: ILogItem): Promise> {\n return await hsApi.passwordLogin(this._username, this._password, deviceName, {log}).response();\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {makeTxnId} from \"../common.js\";\nimport {ILogItem} from \"../../logging/types\";\nimport {ILoginMethod} from \"./LoginMethod\";\nimport {HomeServerApi} from \"../net/HomeServerApi.js\";\n\nexport class TokenLoginMethod implements ILoginMethod {\n private readonly _loginToken: string;\n public readonly homeserver: string;\n\n constructor({ homeserver, loginToken }: { homeserver: string, loginToken: string}) {\n this.homeserver = homeserver;\n this._loginToken = loginToken;\n }\n\n async login(hsApi: HomeServerApi, deviceName: string, log: ILogItem): Promise> {\n return await hsApi.tokenLogin(this._loginToken, makeTxnId(), deviceName, {log}).response();\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexport class SSOLoginHelper{\n private _homeserver: string;\n\n constructor(homeserver: string) {\n this._homeserver = homeserver;\n }\n\n get homeserver(): string { return this._homeserver; }\n\n createSSORedirectURL(returnURL: string): string {\n return `${this._homeserver}/_matrix/client/r0/login/sso/redirect?redirectUrl=${encodeURIComponent(returnURL)}`;\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport type {AuthenticationData, RegistrationParams} from \"../types\";\n\nexport abstract class BaseRegistrationStage {\n protected _session: string;\n protected _nextStage: BaseRegistrationStage;\n protected readonly _params?: Record\n\n constructor(session: string, params?: RegistrationParams) {\n this._session = session;\n this._params = params;\n }\n\n /**\n * eg: m.login.recaptcha or m.login.dummy\n */\n abstract get type(): string;\n\n /**\n * This method should return auth part that must be provided to\n * /register endpoint to successfully complete this stage\n */\n /** @internal */\n abstract generateAuthenticationData(): AuthenticationData;\n\n setNextStage(stage: BaseRegistrationStage) {\n this._nextStage = stage;\n }\n\n get nextStage(): BaseRegistrationStage {\n return this._nextStage;\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {AuthenticationData} from \"../types\";\nimport {BaseRegistrationStage} from \"./BaseRegistrationStage\";\n\nexport class DummyAuth extends BaseRegistrationStage {\n generateAuthenticationData(): AuthenticationData {\n return {\n session: this._session,\n type: this.type,\n }; \n }\n\n get type(): string {\n return \"m.login.dummy\";\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {AuthenticationData} from \"../types\";\nimport {BaseRegistrationStage} from \"./BaseRegistrationStage\";\n\nexport class TermsAuth extends BaseRegistrationStage {\n generateAuthenticationData(): AuthenticationData {\n return {\n session: this._session,\n type: this.type,\n // No other auth data needed for m.login.terms\n }; \n }\n\n get type(): string {\n return \"m.login.terms\";\n }\n\n get privacyPolicy() {\n return this._params?.policies[\"privacy_policy\"];\n }\n\n get termsOfService() {\n return this._params?.policies[\"terms_of_service\"];\n }\n}\n","/*\nCopyright 2022 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {AuthenticationData, RegistrationParams} from \"../types\";\nimport {BaseRegistrationStage} from \"./BaseRegistrationStage\";\n\nexport class TokenAuth extends BaseRegistrationStage {\n private _token?: string;\n private readonly _type: string;\n\n constructor(session: string, params: RegistrationParams | undefined, type: string) {\n super(session, params);\n this._type = type;\n }\n\n\n generateAuthenticationData(): AuthenticationData {\n if (!this._token) {\n throw new Error(\"No token provided for TokenAuth\");\n }\n return {\n session: this._session,\n type: this._type,\n token: this._token,\n }; \n }\n\n setToken(token: string) {\n this._token = token;\n }\n\n get type(): string {\n return this._type;\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport type {HomeServerApi} from \"../net/HomeServerApi\";\nimport type {BaseRegistrationStage} from \"./stages/BaseRegistrationStage\";\nimport {DummyAuth} from \"./stages/DummyAuth\";\nimport {TermsAuth} from \"./stages/TermsAuth\";\nimport {TokenAuth} from \"./stages/TokenAuth\";\nimport type {\n AccountDetails,\n RegistrationFlow,\n RegistrationResponseMoreDataNeeded,\n RegistrationResponse,\n RegistrationResponseSuccess,\n AuthData,\n RegistrationParams,\n} from \"./types\";\n\ntype FlowSelector = (flows: RegistrationFlow[]) => RegistrationFlow | void;\n\nexport class Registration {\n private readonly _hsApi: HomeServerApi;\n private readonly _accountDetails: AccountDetails;\n private readonly _flowSelector: FlowSelector;\n private _registerResponse?: RegistrationResponseSuccess;\n public readonly homeserver: string;\n\n constructor(homeserver: string, hsApi: HomeServerApi, accountDetails: AccountDetails, flowSelector?: FlowSelector) {\n this.homeserver = homeserver;\n this._hsApi = hsApi;\n this._accountDetails = accountDetails;\n this._flowSelector = flowSelector ?? (flows => flows[0]);\n }\n\n async start(): Promise {\n const response = await this._hsApi.register(\n this._accountDetails.username,\n this._accountDetails.password,\n this._accountDetails.initialDeviceDisplayName,\n undefined,\n this._accountDetails.inhibitLogin).response();\n return this.parseStagesFromResponse(response);\n }\n\n /**\n * Finish a registration stage, return value is:\n * - the next stage if this stage was completed successfully\n * - undefined if registration is completed\n */\n async submitStage(stage: BaseRegistrationStage): Promise {\n const auth = stage.generateAuthenticationData();\n const { username, password, initialDeviceDisplayName, inhibitLogin } = this._accountDetails;\n const request = this._hsApi.register(username, password, initialDeviceDisplayName, auth, inhibitLogin);\n const response = await request.response();\n const status = await request.responseCode();\n const registrationResponse: RegistrationResponse = { ...response, status };\n return this.parseRegistrationResponse(registrationResponse, stage);\n }\n\n private parseStagesFromResponse(response: RegistrationResponseMoreDataNeeded): BaseRegistrationStage {\n const { session, params } = response;\n const flow = this._flowSelector(response.flows);\n if (!flow) {\n throw new Error(\"flowSelector did not return any flow!\");\n }\n let firstStage: BaseRegistrationStage | undefined;\n let lastStage: BaseRegistrationStage | undefined;\n for (const stage of flow.stages) {\n const registrationStage = this._createRegistrationStage(stage, session, params);\n if (!firstStage) {\n firstStage = registrationStage;\n lastStage = registrationStage;\n } else {\n lastStage!.setNextStage(registrationStage);\n lastStage = registrationStage;\n }\n }\n return firstStage!;\n }\n\n private async parseRegistrationResponse(response: RegistrationResponse, currentStage: BaseRegistrationStage) {\n switch (response.status) {\n case 200:\n this._registerResponse = response;\n return undefined;\n case 401:\n if (response.completed?.includes(currentStage.type)) {\n return currentStage.nextStage;\n }\n else {\n throw new Error(\"This stage could not be completed!\");\n }\n }\n }\n\n private _createRegistrationStage(type: string, session: string, params?: RegistrationParams) {\n switch (type) {\n case \"m.login.dummy\":\n return new DummyAuth(session, params?.[type]);\n case \"m.login.terms\":\n return new TermsAuth(session, params?.[type]);\n case \"org.matrix.msc3231.login.registration_token\":\n case \"m.login.registration_token\":\n return new TokenAuth(session, params?.[type], type);\n default:\n throw new Error(`Unknown stage: ${type}`);\n }\n }\n\n get authData(): AuthData | undefined {\n if (this._registerResponse) {\n return {\n accessToken: this._registerResponse.access_token,\n homeserver: this.homeserver,\n userId: this._registerResponse.user_id,\n deviceId: this._registerResponse.device_id,\n };\n }\n }\n}\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2020, 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {createEnum} from \"../utils/enum\";\nimport {lookupHomeserver} from \"./well-known.js\";\nimport {AbortableOperation} from \"../utils/AbortableOperation\";\nimport {ObservableValue} from \"../observable/value\";\nimport {HomeServerApi} from \"./net/HomeServerApi\";\nimport {Reconnector, ConnectionStatus} from \"./net/Reconnector\";\nimport {ExponentialRetryDelay} from \"./net/ExponentialRetryDelay\";\nimport {MediaRepository} from \"./net/MediaRepository\";\nimport {RequestScheduler} from \"./net/RequestScheduler\";\nimport {Sync, SyncStatus} from \"./Sync.js\";\nimport {Session} from \"./Session.js\";\nimport {PasswordLoginMethod} from \"./login/PasswordLoginMethod\";\nimport {TokenLoginMethod} from \"./login/TokenLoginMethod\";\nimport {SSOLoginHelper} from \"./login/SSOLoginHelper\";\nimport {getDehydratedDevice} from \"./e2ee/Dehydration.js\";\nimport {Registration} from \"./registration/Registration\";\nimport {FeatureSet} from \"../features\";\n\nexport const LoadStatus = createEnum(\n \"NotLoading\",\n \"Login\",\n \"LoginFailed\",\n \"QueryAccount\", // check for dehydrated device after login\n \"AccountSetup\", // asked to restore from dehydrated device if present, call sc.accountSetup.finish() to progress to the next stage\n \"Loading\",\n \"SessionSetup\", // upload e2ee keys, ...\n \"Migrating\", // not used atm, but would fit here\n \"FirstSync\",\n \"Error\",\n \"Ready\",\n);\n\nexport const LoginFailure = createEnum(\n \"Connection\",\n \"Credentials\",\n \"Unknown\",\n);\n\nexport class Client {\n constructor(platform, features = new FeatureSet(0)) {\n this._platform = platform;\n this._sessionStartedByReconnector = false;\n this._status = new ObservableValue(LoadStatus.NotLoading);\n this._error = null;\n this._loginFailure = null;\n this._reconnector = null;\n this._session = null;\n this._sync = null;\n this._sessionId = null;\n this._storage = null;\n this._requestScheduler = null;\n this._olmPromise = platform.loadOlm();\n this._workerPromise = platform.loadOlmWorker();\n this._accountSetup = undefined;\n this._features = features;\n }\n\n createNewSessionId() {\n return (Math.floor(this._platform.random() * Number.MAX_SAFE_INTEGER)).toString();\n }\n\n get sessionId() {\n return this._sessionId;\n }\n\n async startWithExistingSession(sessionId) {\n if (this._status.get() !== LoadStatus.NotLoading) {\n return;\n }\n this._status.set(LoadStatus.Loading);\n await this._platform.logger.run(\"load session\", async log => {\n log.set(\"id\", sessionId);\n try {\n const sessionInfo = await this._platform.sessionInfoStorage.get(sessionId);\n if (!sessionInfo) {\n throw new Error(\"Invalid session id: \" + sessionId);\n }\n await this._loadSessionInfo(sessionInfo, null, log);\n log.set(\"status\", this._status.get());\n } catch (err) {\n log.catch(err);\n this._error = err;\n this._status.set(LoadStatus.Error);\n }\n });\n }\n\n // TODO: When converted to typescript this should return the same type\n // as this._loginOptions is in LoginViewModel.ts (LoginOptions).\n _parseLoginOptions(options, homeserver) {\n /*\n Take server response and return new object which has two props password and sso which\n implements LoginMethod\n */\n const flows = options.flows;\n const result = {homeserver};\n for (const flow of flows) {\n if (flow.type === \"m.login.password\") {\n result.password = (username, password) => new PasswordLoginMethod({homeserver, username, password});\n }\n else if (flow.type === \"m.login.sso\" && flows.find(flow => flow.type === \"m.login.token\")) {\n result.sso = new SSOLoginHelper(homeserver);\n }\n else if (flow.type === \"m.login.token\") {\n result.token = loginToken => new TokenLoginMethod({homeserver, loginToken});\n }\n }\n return result;\n }\n\n queryLogin(homeserver) {\n return new AbortableOperation(async setAbortable => {\n homeserver = await lookupHomeserver(homeserver, (url, options) => {\n return setAbortable(this._platform.request(url, options));\n });\n const hsApi = new HomeServerApi({homeserver, request: this._platform.request});\n const response = await setAbortable(hsApi.getLoginFlows()).response();\n return this._parseLoginOptions(response, homeserver);\n });\n }\n\n async startRegistration(homeserver, username, password, initialDeviceDisplayName, flowSelector) {\n const request = this._platform.request;\n const hsApi = new HomeServerApi({homeserver, request});\n const registration = new Registration(homeserver, hsApi, {\n username,\n password,\n initialDeviceDisplayName,\n },\n flowSelector);\n return registration;\n }\n\n /** Method to start client after registration or with given access token.\n * To start the client after registering, use `startWithAuthData(registration.authData)`.\n * `homeserver` won't be resolved or normalized using this method,\n * use `lookupHomeserver` first if needed (not needed after registration) \n * \n * Setting isReadOnly to false disables OTK uploads.\n * Only do this if you're sure that you will never send encrypted messages.\n * */\n async startWithAuthData({accessToken, deviceId, userId, homeserver, isReadOnly = false}) {\n await this._platform.logger.run(\"startWithAuthData\", async (log) => {\n if (isReadOnly) {\n log.set(\"isReadonly (Disabled OTK Upload)\", true);\n }\n await this._createSessionAfterAuth({accessToken, deviceId, userId, homeserver}, true, isReadOnly, log);\n });\n }\n\n async startWithLogin(loginMethod, {inspectAccountSetup} = {}) {\n const currentStatus = this._status.get();\n if (currentStatus !== LoadStatus.LoginFailed &&\n currentStatus !== LoadStatus.NotLoading &&\n currentStatus !== LoadStatus.Error) {\n return;\n }\n this._resetStatus();\n await this._platform.logger.run(\"login\", async log => {\n this._status.set(LoadStatus.Login);\n let sessionInfo;\n try {\n const request = this._platform.request;\n const hsApi = new HomeServerApi({homeserver: loginMethod.homeserver, request});\n const loginData = await loginMethod.login(hsApi, \"Hydrogen\", log);\n sessionInfo = {\n deviceId: loginData.device_id,\n userId: loginData.user_id,\n homeserver: loginMethod.homeserver,\n accessToken: loginData.access_token,\n };\n } catch (err) {\n this._error = err;\n if (err.name === \"HomeServerError\") {\n if (err.errcode === \"M_FORBIDDEN\") {\n this._loginFailure = LoginFailure.Credentials;\n } else {\n this._loginFailure = LoginFailure.Unknown;\n }\n log.set(\"loginFailure\", this._loginFailure);\n this._status.set(LoadStatus.LoginFailed);\n } else if (err.name === \"ConnectionError\") {\n this._loginFailure = LoginFailure.Connection;\n this._status.set(LoadStatus.LoginFailed);\n } else {\n this._status.set(LoadStatus.Error);\n }\n return;\n }\n await this._createSessionAfterAuth(sessionInfo, inspectAccountSetup, false, log);\n });\n }\n\n async _createSessionAfterAuth({deviceId, userId, accessToken, homeserver}, inspectAccountSetup, isReadOnly, log) {\n const id = this.createNewSessionId();\n const lastUsed = this._platform.clock.now();\n const sessionInfo = {\n id,\n deviceId,\n userId,\n homeServer: homeserver, // deprecate this over time\n homeserver,\n accessToken,\n lastUsed,\n isReadOnly,\n };\n let dehydratedDevice;\n if (inspectAccountSetup) {\n dehydratedDevice = await this._inspectAccountAfterLogin(sessionInfo, log);\n if (dehydratedDevice) {\n sessionInfo.deviceId = dehydratedDevice.deviceId;\n }\n }\n await this._platform.sessionInfoStorage.add(sessionInfo);\n // loading the session can only lead to\n // LoadStatus.Error in case of an error,\n // so separate try/catch\n try {\n await this._loadSessionInfo(sessionInfo, dehydratedDevice, log);\n log.set(\"status\", this._status.get());\n } catch (err) {\n log.catch(err);\n // free olm Account that might be contained\n dehydratedDevice?.dispose();\n this._error = err;\n this._status.set(LoadStatus.Error);\n }\n }\n\n async _loadSessionInfo(sessionInfo, dehydratedDevice, log) {\n log.set(\"appVersion\", this._platform.version);\n const clock = this._platform.clock;\n this._sessionStartedByReconnector = false;\n this._status.set(LoadStatus.Loading);\n this._reconnector = new Reconnector({\n onlineStatus: this._platform.onlineStatus,\n retryDelay: new ExponentialRetryDelay(clock.createTimeout),\n createMeasure: clock.createMeasure,\n });\n const hsApi = new HomeServerApi({\n homeserver: sessionInfo.homeServer,\n accessToken: sessionInfo.accessToken,\n request: this._platform.request,\n reconnector: this._reconnector,\n });\n this._sessionId = sessionInfo.id;\n this._storage = await this._platform.storageFactory.create(\n sessionInfo.id,\n log\n );\n // no need to pass access token to session\n const filteredSessionInfo = {\n id: sessionInfo.id,\n deviceId: sessionInfo.deviceId,\n userId: sessionInfo.userId,\n homeserver: sessionInfo.homeServer,\n isReadOnly: sessionInfo.isReadOnly,\n };\n const olm = await this._olmPromise;\n let olmWorker = null;\n if (this._workerPromise) {\n olmWorker = await this._workerPromise;\n }\n this._requestScheduler = new RequestScheduler({ hsApi, clock });\n this._requestScheduler.start();\n\n const lastVersionsResponse = await hsApi\n .versions({ timeout: 10000, log })\n .response();\n const mediaRepository = new MediaRepository({\n homeserver: sessionInfo.homeServer,\n platform: this._platform,\n serverVersions: lastVersionsResponse.versions,\n });\n\n // Let the serviceWorkerHandler know of this access-token and homeserver\n this._platform.updateService.updateAuthData({\n accessToken: sessionInfo.accessToken,\n homeserver: sessionInfo.homeServer,\n });\n\n this._session = new Session({\n storage: this._storage,\n sessionInfo: filteredSessionInfo,\n hsApi: this._requestScheduler.hsApi,\n olm,\n olmWorker,\n mediaRepository,\n platform: this._platform,\n features: this._features,\n });\n await this._session.load(log);\n if (dehydratedDevice) {\n await log.wrap(\"dehydrateIdentity\", (log) =>\n this._session.dehydrateIdentity(dehydratedDevice, log)\n );\n await this._session.setupDehydratedDevice(\n dehydratedDevice.key,\n log\n );\n } else if (!this._session.hasIdentity) {\n this._status.set(LoadStatus.SessionSetup);\n await log.wrap(\"createIdentity\", (log) =>\n this._session.createIdentity(log)\n );\n }\n\n this._sync = new Sync({\n hsApi: this._requestScheduler.hsApi,\n storage: this._storage,\n session: this._session,\n logger: this._platform.logger,\n });\n // notify sync and session when back online\n this._reconnectSubscription =\n this._reconnector.connectionStatus.subscribe((state) => {\n if (state === ConnectionStatus.Online) {\n this._platform.logger.runDetached(\n \"reconnect\",\n async (log) => {\n // needs to happen before sync and session or it would abort all requests\n this._requestScheduler.start();\n this._sync.start();\n this._sessionStartedByReconnector = true;\n const d = dehydratedDevice;\n dehydratedDevice = undefined;\n await log.wrap(\"session start\", (log) =>\n this._session.start(\n this._reconnector.lastVersionsResponse,\n d,\n log\n )\n );\n }\n );\n }\n });\n await log.wrap(\"wait first sync\", () => this._waitForFirstSync());\n if (this._isDisposed) {\n return;\n }\n this._status.set(LoadStatus.Ready);\n\n // if the sync failed, and then the reconnector\n // restored the connection, it would have already\n // started to session, so check first\n // to prevent an extra /versions request\n if (!this._sessionStartedByReconnector) {\n if (this._isDisposed) {\n return;\n }\n const d = dehydratedDevice;\n dehydratedDevice = undefined;\n // log as ref as we don't want to await it\n await log.wrap(\"session start\", (log) =>\n this._session.start(lastVersionsResponse, d, log)\n );\n }\n }\n\n /**\n * Update the access token in use by the client.\n * Will also update the token in session storage.\n * @param {string} token A Matrix Access Token \n */\n async updateAccessToken(token) {\n if (!this._session) {\n throw Error(\"No session loaded, cannot update access token\");\n }\n this._session.updateAccessToken(token);\n this._platform.updateService.updateAuthData({\n accessToken: token,\n });\n await this._platform.sessionInfoStorage.updateAccessToken(this._sessionId, token);\n }\n\n async _waitForFirstSync() {\n this._sync.start();\n this._status.set(LoadStatus.FirstSync);\n // only transition into Ready once the first sync has succeeded\n this._waitForFirstSyncHandle = this._sync.status.waitFor(s => {\n if (s === SyncStatus.Stopped) {\n // keep waiting if there is a ConnectionError\n // as the reconnector above will call\n // sync.start again to retry in this case\n return this._sync.error?.name !== \"ConnectionError\";\n }\n return s === SyncStatus.Syncing;\n });\n try {\n await this._waitForFirstSyncHandle.promise;\n if (this._sync.status.get() === SyncStatus.Stopped && this._sync.error) {\n throw this._sync.error;\n }\n } catch (err) {\n // if dispose is called from stop, bail out\n if (err.name === \"AbortError\") {\n return;\n }\n throw err;\n } finally {\n this._waitForFirstSyncHandle = null;\n }\n }\n\n _inspectAccountAfterLogin(sessionInfo, log) {\n return log.wrap(\"inspectAccount\", async log => {\n this._status.set(LoadStatus.QueryAccount);\n const hsApi = new HomeServerApi({\n homeserver: sessionInfo.homeServer,\n accessToken: sessionInfo.accessToken,\n request: this._platform.request,\n });\n const olm = await this._olmPromise;\n let encryptedDehydratedDevice;\n try {\n encryptedDehydratedDevice = await getDehydratedDevice(hsApi, olm, this._platform, log);\n } catch (err) {\n if (err.name === \"HomeServerError\") {\n log.set(\"not_supported\", true);\n } else {\n throw err;\n }\n }\n if (encryptedDehydratedDevice) {\n let resolveStageFinish;\n const promiseStageFinish = new Promise(r => resolveStageFinish = r);\n this._accountSetup = new AccountSetup(encryptedDehydratedDevice, resolveStageFinish);\n this._status.set(LoadStatus.AccountSetup);\n await promiseStageFinish;\n const dehydratedDevice = this._accountSetup?._dehydratedDevice;\n this._accountSetup = null;\n return dehydratedDevice;\n }\n });\n }\n\n get accountSetup() {\n return this._accountSetup;\n }\n\n get loadStatus() {\n return this._status;\n }\n\n get loadError() {\n return this._error;\n }\n\n get loginFailure() {\n return this._loginFailure;\n }\n\n /** only set at loadStatus InitialSync, CatchupSync or Ready */\n get sync() {\n return this._sync;\n }\n\n /** only set at loadStatus InitialSync, CatchupSync or Ready */\n get session() {\n return this._session;\n }\n\n get reconnector() {\n return this._reconnector;\n }\n\n get _isDisposed() {\n return !this._reconnector;\n }\n\n startLogout(sessionId) {\n return this._platform.logger.run(\"logout\", async log => {\n this._sessionId = sessionId;\n log.set(\"id\", this._sessionId);\n const sessionInfo = await this._platform.sessionInfoStorage.get(this._sessionId);\n if (!sessionInfo) {\n throw new Error(`Could not find session for id ${this._sessionId}`);\n }\n try {\n const hsApi = new HomeServerApi({\n homeserver: sessionInfo.homeServer,\n accessToken: sessionInfo.accessToken,\n request: this._platform.request\n });\n await hsApi.logout({log}).response();\n } catch (err) {}\n await this.deleteSession(log);\n });\n }\n\n startForcedLogout(sessionId) {\n return this._platform.logger.run(\"forced-logout\", async log => {\n this._sessionId = sessionId;\n log.set(\"id\", this._sessionId);\n await this.deleteSession(log);\n });\n }\n\n dispose() {\n if (this._reconnectSubscription) {\n this._reconnectSubscription();\n this._reconnectSubscription = null;\n }\n this._reconnector = null;\n if (this._requestScheduler) {\n this._requestScheduler.stop();\n this._requestScheduler = null;\n }\n if (this._sync) {\n this._sync.stop();\n this._sync = null;\n }\n if (this._session) {\n this._session.dispose();\n this._session = null;\n }\n if (this._waitForFirstSyncHandle) {\n this._waitForFirstSyncHandle.dispose();\n this._waitForFirstSyncHandle = null;\n }\n if (this._storage) {\n this._storage.close();\n this._storage = null;\n }\n }\n\n async deleteSession(log) {\n if (this._sessionId) {\n // need to dispose first, so the storage is closed,\n // and also first sync finishing won't call Session.start anymore,\n // which assumes that the storage works.\n this.dispose();\n // if one fails, don't block the other from trying\n // also, run in parallel\n await Promise.all([\n log.wrap(\"storageFactory\", () => this._platform.storageFactory.delete(this._sessionId)),\n log.wrap(\"sessionInfoStorage\", () => this._platform.sessionInfoStorage.delete(this._sessionId)),\n ]);\n this._sessionId = null;\n }\n }\n\n _resetStatus() {\n this._status.set(LoadStatus.NotLoading);\n this._error = null;\n this._loginFailure = null;\n }\n}\n\nclass AccountSetup {\n constructor(encryptedDehydratedDevice, finishStage) {\n this._encryptedDehydratedDevice = encryptedDehydratedDevice;\n this._dehydratedDevice = undefined;\n this._finishStage = finishStage;\n }\n\n get encryptedDehydratedDevice() {\n return this._encryptedDehydratedDevice;\n }\n\n finish(dehydratedDevice) {\n this._dehydratedDevice = dehydratedDevice;\n this._finishStage();\n }\n}\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2022 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n// ViewModel should just be an eventemitter, not an ObservableValue\n// as in some cases it would really be more convenient to have multiple events (like telling the timeline to scroll down)\n// we do need to return a disposable from EventEmitter.on, or at least have a method here to easily track a subscription to an EventEmitter\n\nimport {EventEmitter} from \"../utils/EventEmitter\";\nimport {Disposables} from \"../utils/Disposables\";\n\nimport type {Disposable} from \"../utils/Disposables\";\nimport type {Platform} from \"../platform/web/Platform\";\nimport type {Clock} from \"../platform/web/dom/Clock\";\nimport type {ILogger} from \"../logging/types\";\nimport type {Navigation} from \"./navigation/Navigation\";\nimport type {SegmentType} from \"./navigation/index\";\nimport type {IURLRouter} from \"./navigation/URLRouter\";\nimport type { ITimeFormatter } from \"../platform/types/types\";\nimport type { FeatureSet } from \"../features\";\n\nexport type Options = {\n platform: Platform;\n logger: ILogger;\n urlRouter: IURLRouter;\n navigation: Navigation;\n emitChange?: (params: any) => void;\n features: FeatureSet\n}\n\n\nexport class ViewModel = Options> extends EventEmitter<{change: never}> {\n private disposables?: Disposables;\n private _isDisposed = false;\n private _options: Readonly;\n\n constructor(options: Readonly) {\n super();\n this._options = options;\n }\n\n childOptions(explicitOptions: T): T & O {\n return Object.assign({}, this._options, explicitOptions);\n }\n\n get options(): Readonly { return this._options; }\n\n // makes it easier to pass through dependencies of a sub-view model\n getOption(name: N): O[N] {\n return this._options[name];\n }\n\n observeNavigation(type: T, onChange: (value: N[T], type: T) => void): void {\n const segmentObservable = this.navigation.observe(type);\n const unsubscribe = segmentObservable.subscribe((value: N[T]) => {\n onChange(value, type);\n });\n this.track(unsubscribe);\n }\n\n track(disposable: D): D {\n if (!this.disposables) {\n this.disposables = new Disposables();\n }\n return this.disposables.track(disposable);\n }\n\n untrack(disposable: Disposable): undefined {\n if (this.disposables) {\n return this.disposables.untrack(disposable);\n }\n return undefined;\n }\n\n dispose(): void {\n if (this.disposables) {\n this.disposables.dispose();\n }\n this._isDisposed = true;\n }\n\n get isDisposed(): boolean {\n return this._isDisposed;\n }\n\n disposeTracked(disposable: Disposable | undefined): undefined {\n if (this.disposables) {\n return this.disposables.disposeTracked(disposable);\n }\n return undefined;\n }\n\n // TODO: this will need to support binding\n // if any of the expr is a function, assume the function is a binding, and return a binding function ourselves\n //\n // translated string should probably always be bindings, unless we're fine with a refresh when changing the language?\n // we probably are, if we're using routing with a url, we could just refresh.\n i18n(parts: TemplateStringsArray, ...expr: any[]): string {\n // just concat for now\n let result = \"\";\n for (let i = 0; i < parts.length; ++i) {\n result = result + parts[i];\n if (i < expr.length) {\n result = result + expr[i];\n }\n }\n return result;\n }\n\n emitChange(changedProps?: any): void {\n if (this._options.emitChange) {\n this._options.emitChange(changedProps);\n } else {\n this.emit(\"change\", changedProps);\n }\n }\n\n get platform(): Platform {\n return this._options.platform;\n }\n\n get clock(): Clock {\n return this._options.platform.clock;\n }\n\n get logger(): ILogger {\n return this.platform.logger;\n }\n\n get urlRouter(): IURLRouter {\n return this._options.urlRouter;\n }\n\n get features(): FeatureSet {\n return this._options.features;\n }\n\n get navigation(): Navigation {\n // typescript needs a little help here\n return this._options.navigation as unknown as Navigation;\n }\n\n get timeFormatter(): ITimeFormatter {\n return this._options.platform.timeFormatter;\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { Platform } from \"../platform/web/Platform\";\nimport { MediaRepository } from \"../matrix/net/MediaRepository\";\n\nexport function avatarInitials(name: string): string {\n let firstChar = name.charAt(0);\n if (firstChar === \"!\" || firstChar === \"@\" || firstChar === \"#\") {\n firstChar = name.charAt(1);\n }\n return firstChar.toUpperCase();\n}\n\n/**\n * calculates a numeric hash for a given string\n *\n * @param {string} str string to hash\n *\n * @return {number}\n */\nfunction hashCode(str: string): number {\n let hash = 0;\n let i: number;\n let chr: number;\n if (str.length === 0) {\n return hash;\n }\n for (i = 0; i < str.length; i++) {\n chr = str.charCodeAt(i);\n hash = ((hash << 5) - hash) + chr;\n hash |= 0;\n }\n return Math.abs(hash);\n}\n\nexport function getIdentifierColorNumber(id: string): number {\n return (hashCode(id) % 8) + 1;\n}\n\nexport function getAvatarHttpUrl(avatarUrl: string | undefined, cssSize: number, platform: Platform, mediaRepository: MediaRepository): string | undefined {\n if (avatarUrl) {\n const imageSize = cssSize * platform.devicePixelRatio;\n return mediaRepository.mxcUrlThumbnail(avatarUrl, imageSize, imageSize, \"crop\");\n }\n return undefined;\n}\n\n// move to AvatarView.js when converting to typescript\nexport interface IAvatarContract {\n avatarLetter: string;\n avatarColorNumber: number;\n avatarUrl: (size: number) => string | undefined;\n avatarTitle: string;\n}\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2020, 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {avatarInitials, getIdentifierColorNumber, getAvatarHttpUrl} from \"../../avatar\";\nimport {ViewModel} from \"../../ViewModel\";\n\nconst KIND_ORDER = [\"roomBeingCreated\", \"invite\", \"room\"];\n\nexport class BaseTileViewModel extends ViewModel {\n constructor(options) {\n super(options);\n this._isOpen = false;\n this._hidden = false;\n }\n\n get hidden() {\n return this._hidden;\n }\n\n set hidden(value) {\n if (value !== this._hidden) {\n this._hidden = value;\n this.emitChange(\"hidden\");\n }\n }\n\n close() {\n if (this._isOpen) {\n this._isOpen = false;\n this.emitChange(\"isOpen\");\n }\n }\n\n open() {\n if (!this._isOpen) {\n this._isOpen = true;\n this.emitChange(\"isOpen\");\n }\n }\n\n get isOpen() {\n return this._isOpen;\n }\n\n compare(other) {\n if (other.kind !== this.kind) {\n return KIND_ORDER.indexOf(this.kind) - KIND_ORDER.indexOf(other.kind);\n }\n return 0;\n }\n\n // Avatar view model contract\n get avatarLetter() {\n return avatarInitials(this.name);\n }\n\n get avatarColorNumber() {\n return getIdentifierColorNumber(this._avatarSource.avatarColorId);\n }\n\n avatarUrl(size) {\n return getAvatarHttpUrl(this._avatarSource.avatarUrl, size, this.platform, this._avatarSource.mediaRepository);\n }\n\n get avatarTitle() {\n return this.name;\n }\n}\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {BaseTileViewModel} from \"./BaseTileViewModel.js\";\n\nexport class RoomTileViewModel extends BaseTileViewModel {\n constructor(options) {\n super(options);\n const {room} = options;\n this._room = room;\n this._url = this.urlRouter.openRoomActionUrl(this._room.id);\n }\n\n get kind() {\n return \"room\";\n }\n\n get url() {\n return this._url;\n }\n\n /** very important that sorting order is stable and that comparing\n * to itself always returns 0, otherwise SortedMapList will\n * remove the wrong children, etc ... */\n compare(other) {\n const parentComparison = super.compare(other);\n if (parentComparison !== 0) {\n return parentComparison;\n }\n /*\n put unread rooms first\n then put rooms with a timestamp first, and sort by name\n then sort by name for rooms without a timestamp\n */\n const myRoom = this._room;\n const theirRoom = other._room;\n\n if (myRoom.isLowPriority !== theirRoom.isLowPriority) {\n if (myRoom.isLowPriority) {\n return 1;\n }\n return -1;\n }\n const myTimestamp = myRoom.lastMessageTimestamp;\n const theirTimestamp = theirRoom.lastMessageTimestamp;\n const myTimestampValid = Number.isSafeInteger(myTimestamp);\n const theirTimestampValid = Number.isSafeInteger(theirTimestamp);\n // if either does not have a timestamp, put the one with a timestamp first\n if (myTimestampValid !== theirTimestampValid) {\n if (!theirTimestampValid) {\n return -1;\n }\n return 1;\n }\n const timeDiff = theirTimestamp - myTimestamp;\n if (timeDiff === 0 || !theirTimestampValid || !myTimestampValid) {\n // sort alphabetically\n const nameCmp = this.name.localeCompare(other.name);\n if (nameCmp === 0) {\n return this._room.id.localeCompare(other._room.id);\n }\n return nameCmp;\n }\n return timeDiff;\n }\n\n get isUnread() {\n return this._room.isUnread;\n }\n\n get name() {\n return this._room.name || this.i18n`Empty Room`;\n }\n\n get badgeCount() {\n return this._room.notificationCount;\n }\n\n get isHighlighted() {\n return this._room.highlightCount !== 0;\n }\n\n get _avatarSource() {\n return this._room;\n }\n}\n","/*\nCopyright 2020, 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexport function comparePrimitive(a, b) {\n if (a === b) {\n return 0;\n } else {\n return a < b ? -1 : 1;\n }\n}\n","/*\nCopyright 2020, 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {BaseTileViewModel} from \"./BaseTileViewModel.js\";\nimport {comparePrimitive} from \"./common\";\n\nexport class InviteTileViewModel extends BaseTileViewModel {\n constructor(options) {\n super(options);\n const {invite} = options;\n this._invite = invite;\n this._url = this.urlRouter.openRoomActionUrl(this._invite.id);\n }\n\n get busy() { return this._invite.accepting || this._invite.rejecting; }\n get kind() { return \"invite\"; }\n get url() { return this._url; }\n get name() { return this._invite.name; }\n get isHighlighted() { return true; }\n get isUnread() { return true; }\n get badgeCount() { return this.i18n`!`; }\n get _avatarSource() { return this._invite; }\n\n /** very important that sorting order is stable and that comparing\n * to itself always returns 0, otherwise SortedMapList will\n * remove the wrong children, etc ... */\n compare(other) {\n const parentComparison = super.compare(other);\n if (parentComparison !== 0) {\n return parentComparison;\n }\n const timeDiff = other._invite.timestamp - this._invite.timestamp;\n if (timeDiff !== 0) {\n return timeDiff;\n }\n return comparePrimitive(this._invite.id, other._invite.id);\n }\n}\n\nexport function tests() {\n return {\n \"test compare with timestamp\": assert => {\n const urlRouter = {openRoomActionUrl() { return \"\";}}\n const vm1 = new InviteTileViewModel({invite: {timestamp: 500, id: \"1\"}, urlRouter});\n const vm2 = new InviteTileViewModel({invite: {timestamp: 250, id: \"2\"}, urlRouter});\n assert(vm1.compare(vm2) < 0);\n assert(vm2.compare(vm1) > 0);\n assert.equal(vm1.compare(vm1), 0);\n },\n }\n}\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2020, 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {BaseTileViewModel} from \"./BaseTileViewModel.js\";\nimport {comparePrimitive} from \"./common\";\n\nexport class RoomBeingCreatedTileViewModel extends BaseTileViewModel {\n constructor(options) {\n super(options);\n const {roomBeingCreated} = options;\n this._roomBeingCreated = roomBeingCreated;\n this._url = this.urlRouter.openRoomActionUrl(this._roomBeingCreated.id);\n }\n\n get busy() { return !this._roomBeingCreated.error; }\n get kind() { return \"roomBeingCreated\"; }\n get isHighlighted() { return !this.busy; }\n get badgeCount() { return !this.busy && this.i18n`Failed`; }\n get url() { return this._url; }\n get name() { return this._roomBeingCreated.name; }\n get _avatarSource() { return this._roomBeingCreated; }\n\n /** very important that sorting order is stable and that comparing\n * to itself always returns 0, otherwise SortedMapList will\n * remove the wrong children, etc ... */\n compare(other) {\n const parentCmp = super.compare(other);\n if (parentCmp !== 0) {\n return parentCmp;\n }\n const nameCmp = comparePrimitive(this.name, other.name);\n if (nameCmp === 0) {\n return comparePrimitive(this._roomBeingCreated.id, other._roomBeingCreated.id);\n } else {\n return nameCmp;\n }\n }\n\n avatarUrl(size) {\n // allow blob url which doesn't need mxc => http resolution\n return this._roomBeingCreated.avatarBlobUrl ?? super.avatarUrl(size);\n }\n}\n\nexport function tests() {\n return {\n \"test compare with names\": assert => {\n const urlRouter = {openRoomActionUrl() { return \"\";}}\n const vm1 = new RoomBeingCreatedTileViewModel({roomBeingCreated: {name: \"A\", id: \"1\"}, urlRouter});\n const vm2 = new RoomBeingCreatedTileViewModel({roomBeingCreated: {name: \"B\", id: \"2\"}, urlRouter});\n assert(vm1.compare(vm2) < 0);\n assert(vm2.compare(vm1) > 0);\n assert.equal(vm1.compare(vm1), 0);\n },\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexport class RoomFilter {\n constructor(query) {\n this._parts = query.split(\" \").map(s => s.toLowerCase().trim());\n }\n\n matches(roomTileVM) {\n const name = roomTileVM.name.toLowerCase();\n return this._parts.every(p => name.includes(p));\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {BaseObservableValue, ObservableValue} from \"../../observable/value\";\n\ntype AllowsChild = (parent: Segment | undefined, child: Segment) => boolean;\n\n/**\n * OptionalValue is basically stating that if SegmentType[type] = true:\n * - Allow this type to be optional\n * - Give it a default value of undefined\n * - Also allow it to be true\n * This lets us do:\n * const s: Segment = new Segment(\"create-room\");\n * instead of\n * const s: Segment = new Segment(\"create-room\", undefined);\n */\nexport type OptionalValue = T extends true? [(undefined | true)?]: [T];\n\nexport class Navigation {\n private readonly _allowsChild: AllowsChild;\n private _path: Path;\n private readonly _observables: Map> = new Map();\n private readonly _pathObservable: ObservableValue>;\n\n constructor(allowsChild: AllowsChild) {\n this._allowsChild = allowsChild;\n this._path = new Path([], allowsChild);\n this._pathObservable = new ObservableValue(this._path);\n }\n\n get pathObservable(): ObservableValue> {\n return this._pathObservable;\n }\n\n get path(): Path {\n return this._path;\n }\n\n push(type: K, ...value: OptionalValue): void {\n const newPath = this.path.with(new Segment(type, ...value));\n if (newPath) {\n this.applyPath(newPath);\n }\n }\n\n applyPath(path: Path): void {\n // Path is not exported, so you can only create a Path through Navigation,\n // so we assume it respects the allowsChild rules\n const oldPath = this._path;\n this._path = path;\n // clear values not in the new path in reverse order of path\n for (let i = oldPath.segments.length - 1; i >= 0; i -= 1) {\n const segment = oldPath.segments[i];\n if (!this._path.get(segment.type)) {\n const observable = this._observables.get(segment.type);\n observable?.emitIfChanged();\n }\n }\n // change values in order of path\n for (const segment of this._path.segments) {\n const observable = this._observables.get(segment.type);\n observable?.emitIfChanged();\n }\n // to observe the whole path having changed\n // Since paths are immutable,\n // we can just use set here which will compare the references\n this._pathObservable.set(this._path);\n }\n\n observe(type: keyof T): SegmentObservable {\n let observable = this._observables.get(type);\n if (!observable) {\n observable = new SegmentObservable(this, type);\n this._observables.set(type, observable);\n }\n return observable;\n }\n\n pathFrom(segments: Segment[]): Path {\n let parent: Segment | undefined;\n let i: number;\n for (i = 0; i < segments.length; i += 1) {\n if (!this._allowsChild(parent, segments[i])) {\n return new Path(segments.slice(0, i), this._allowsChild);\n }\n parent = segments[i];\n }\n return new Path(segments, this._allowsChild);\n }\n\n segment(type: K, ...value: OptionalValue): Segment {\n return new Segment(type, ...value);\n }\n}\n\nfunction segmentValueEqual(a?: T[keyof T], b?: T[keyof T]): boolean {\n if (a === b) {\n return true;\n }\n // allow (sparse) arrays\n if (Array.isArray(a) && Array.isArray(b)) {\n const len = Math.max(a.length, b.length);\n for (let i = 0; i < len; i += 1) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n }\n return false;\n}\n\n\nexport class Segment {\n public value: T[K];\n\n constructor(public type: K, ...value: OptionalValue) {\n this.value = (value[0] === undefined ? true : value[0]) as unknown as T[K];\n }\n}\n\nclass Path {\n private readonly _segments: Segment[];\n private readonly _allowsChild: AllowsChild;\n\n constructor(segments: Segment[] = [], allowsChild: AllowsChild) {\n this._segments = segments;\n this._allowsChild = allowsChild;\n }\n\n clone(): Path {\n return new Path(this._segments.slice(), this._allowsChild);\n }\n\n with(segment: Segment): Path | undefined {\n let index = this._segments.length - 1;\n do {\n if (this._allowsChild(this._segments[index], segment)) {\n // pop the elements that didn't allow the new segment as a child\n const newSegments = this._segments.slice(0, index + 1);\n newSegments.push(segment);\n return new Path(newSegments, this._allowsChild);\n }\n index -= 1;\n } while(index >= -1);\n // allow -1 as well so we check if the segment is allowed as root\n return undefined;\n }\n\n until(type: keyof T): Path {\n const index = this._segments.findIndex(s => s.type === type);\n if (index !== -1) {\n return new Path(this._segments.slice(0, index + 1), this._allowsChild)\n }\n return new Path([], this._allowsChild);\n }\n\n get(type: keyof T): Segment | undefined {\n return this._segments.find(s => s.type === type);\n }\n\n replace(segment: Segment): Path | undefined {\n const index = this._segments.findIndex(s => s.type === segment.type);\n if (index !== -1) {\n const parent = this._segments[index - 1];\n if (this._allowsChild(parent, segment)) {\n const child = this._segments[index + 1];\n if (!child || this._allowsChild(segment, child)) {\n const newSegments = this._segments.slice();\n newSegments[index] = segment;\n return new Path(newSegments, this._allowsChild);\n }\n }\n }\n return undefined;\n }\n\n get segments(): Segment[] {\n return this._segments;\n }\n}\n\n/**\n * custom observable so it always returns what is in navigation.path, even if we haven't emitted the change yet.\n * This ensures that observers of a segment can also read the most recent value of other segments.\n */\nclass SegmentObservable extends BaseObservableValue {\n private readonly _navigation: Navigation;\n private _type: keyof T;\n private _lastSetValue?: T[keyof T];\n \n constructor(navigation: Navigation, type: keyof T) {\n super();\n this._navigation = navigation;\n this._type = type;\n this._lastSetValue = navigation.path.get(type)?.value;\n }\n\n get(): T[keyof T] | undefined {\n const path = this._navigation.path;\n const segment = path.get(this._type);\n const value = segment?.value;\n return value;\n }\n\n emitIfChanged(): void {\n const newValue = this.get();\n if (!segmentValueEqual(newValue, this._lastSetValue)) {\n this._lastSetValue = newValue;\n this.emit(newValue);\n }\n }\n}\n\nexport type {Path};\n\nexport function tests() {\n\n function createMockNavigation() {\n return new Navigation((parent, {type}) => {\n switch (parent?.type) {\n case undefined:\n return type === \"1\" || type === \"2\";\n case \"1\":\n return type === \"1.1\";\n case \"1.1\":\n return type === \"1.1.1\";\n case \"2\":\n return type === \"2.1\" || type === \"2.2\";\n default:\n return false;\n }\n });\n }\n\n function observeTypes(nav, types) {\n const changes: {type:string, value:any}[] = [];\n for (const type of types) {\n nav.observe(type).subscribe(value => {\n changes.push({type, value});\n });\n }\n return changes;\n }\n\n type SegmentType = {\n \"foo\": number;\n \"bar\": number;\n \"baz\": number;\n }\n\n return {\n \"applying a path emits an event on the observable\": assert => {\n const nav = createMockNavigation();\n const path = nav.pathFrom([\n new Segment(\"2\", 7),\n new Segment(\"2.2\", 8),\n ]);\n assert.equal(path.segments.length, 2);\n let changes = observeTypes(nav, [\"2\", \"2.2\"]);\n nav.applyPath(path);\n assert.equal(changes.length, 2);\n assert.equal(changes[0].type, \"2\");\n assert.equal(changes[0].value, 7);\n assert.equal(changes[1].type, \"2.2\");\n assert.equal(changes[1].value, 8);\n },\n \"path.get\": assert => {\n const path = new Path([new Segment(\"foo\", 5), new Segment(\"bar\", 6)], () => true);\n assert.equal(path.get(\"foo\")!.value, 5);\n assert.equal(path.get(\"bar\")!.value, 6);\n },\n \"path.replace success\": assert => {\n const path = new Path([new Segment(\"foo\", 5), new Segment(\"bar\", 6)], () => true);\n const newPath = path.replace(new Segment(\"foo\", 1));\n assert.equal(newPath!.get(\"foo\")!.value, 1);\n assert.equal(newPath!.get(\"bar\")!.value, 6);\n },\n \"path.replace not found\": assert => {\n const path = new Path([new Segment(\"foo\", 5), new Segment(\"bar\", 6)], () => true);\n const newPath = path.replace(new Segment(\"baz\", 1));\n assert.equal(newPath, null);\n }\n };\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport type {History} from \"../../platform/web/dom/History.js\";\nimport type {Navigation, Segment, Path, OptionalValue} from \"./Navigation\";\nimport type {SubscriptionHandle} from \"../../observable/BaseObservable\";\n\ntype ParseURLPath = (urlPath: string, currentNavPath: Path, defaultSessionId?: string) => Segment[];\ntype StringifyPath = (path: Path) => string;\n\nexport interface IURLRouter {\n attach(): void;\n dispose(): void;\n pushUrl(url: string): void;\n tryRestoreLastUrl(): boolean;\n urlForSegments(segments: Segment[]): string | undefined;\n urlForSegment(type: K, ...value: OptionalValue): string | undefined;\n urlUntilSegment(type: keyof T): string;\n urlForPath(path: Path): string;\n openRoomActionUrl(roomId: string): string;\n createSSOCallbackURL(): string;\n normalizeUrl(): void;\n}\n\nexport class URLRouter implements IURLRouter {\n private readonly _history: History;\n private readonly _navigation: Navigation;\n private readonly _parseUrlPath: ParseURLPath;\n private readonly _stringifyPath: StringifyPath;\n private _subscription?: SubscriptionHandle;\n private _pathSubscription?: SubscriptionHandle;\n private _isApplyingUrl: boolean = false;\n private _defaultSessionId?: string;\n\n constructor(history: History, navigation: Navigation, parseUrlPath: ParseURLPath, stringifyPath: StringifyPath) {\n this._history = history;\n this._navigation = navigation;\n this._parseUrlPath = parseUrlPath;\n this._stringifyPath = stringifyPath;\n this._defaultSessionId = this._getLastSessionId();\n }\n\n private _getLastSessionId(): string | undefined {\n const navPath = this._urlAsNavPath(this._history.getLastSessionUrl() || \"\");\n const sessionId = navPath.get(\"session\")?.value;\n if (typeof sessionId === \"string\") {\n return sessionId;\n }\n return undefined;\n }\n\n attach(): void {\n this._subscription = this._history.subscribe(url => this._applyUrl(url));\n // subscribe to path before applying initial url\n // so redirects in _applyNavPathToHistory are reflected in url bar\n this._pathSubscription = this._navigation.pathObservable.subscribe(path => this._applyNavPathToHistory(path));\n this._applyUrl(this._history.get());\n }\n\n dispose(): void {\n if (this._subscription) { this._subscription = this._subscription(); }\n if (this._pathSubscription) { this._pathSubscription = this._pathSubscription(); }\n }\n\n private _applyNavPathToHistory(path: Path): void {\n const url = this.urlForPath(path);\n if (url !== this._history.get()) {\n if (this._isApplyingUrl) {\n // redirect\n this._history.replaceUrlSilently(url);\n } else {\n this._history.pushUrlSilently(url);\n }\n }\n }\n\n private _applyNavPathToNavigation(navPath: Path): void {\n // this will cause _applyNavPathToHistory to be called,\n // so set a flag whether this request came from ourselves\n // (in which case it is a redirect if the url does not match the current one)\n this._isApplyingUrl = true;\n this._navigation.applyPath(navPath);\n this._isApplyingUrl = false;\n }\n\n private _urlAsNavPath(url: string): Path {\n const urlPath = this._history.urlAsPath(url);\n return this._navigation.pathFrom(this._parseUrlPath(urlPath, this._navigation.path, this._defaultSessionId));\n }\n\n private _applyUrl(url: string): void {\n const navPath = this._urlAsNavPath(url);\n this._applyNavPathToNavigation(navPath);\n }\n\n pushUrl(url: string): void {\n this._history.pushUrl(url);\n }\n\n tryRestoreLastUrl(): boolean {\n const lastNavPath = this._urlAsNavPath(this._history.getLastSessionUrl() || \"\");\n if (lastNavPath.segments.length !== 0) {\n this._applyNavPathToNavigation(lastNavPath);\n return true;\n }\n return false;\n }\n\n urlForSegments(segments: Segment[]): string | undefined {\n let path: Path | undefined = this._navigation.path;\n for (const segment of segments) {\n path = path.with(segment);\n if (!path) {\n return;\n }\n }\n return this.urlForPath(path);\n }\n\n urlForSegment(type: K, ...value: OptionalValue): string | undefined {\n return this.urlForSegments([this._navigation.segment(type, ...value)]);\n }\n\n urlUntilSegment(type: keyof T): string {\n return this.urlForPath(this._navigation.path.until(type));\n }\n\n urlForPath(path: Path): string {\n return this._history.pathAsUrl(this._stringifyPath(path));\n }\n\n openRoomActionUrl(roomId: string): string {\n // not a segment to navigation knowns about, so append it manually\n const urlPath = `${this._stringifyPath(this._navigation.path.until(\"session\"))}/open-room/${encodeURIComponent(roomId)}`;\n return this._history.pathAsUrl(urlPath);\n }\n\n createSSOCallbackURL(): string {\n return window.location.href;\n }\n\n normalizeUrl(): void {\n const url = new URL(window.location.href);\n\n // Remove the loginToken query parameter from the URL after SSO.\n url.searchParams.delete(\"loginToken\");\n\n this._history.replaceUrlSilently(url.toString());\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {Navigation, Segment} from \"./Navigation\";\nimport {URLRouter} from \"./URLRouter\";\nimport type {Path, OptionalValue} from \"./Navigation\";\n\nexport type SegmentType = {\n \"login\": true;\n \"session\": string | boolean;\n \"sso\": string;\n \"logout\": true;\n \"forced\": true;\n \"room\": string;\n \"rooms\": string[];\n \"settings\": true;\n \"create-room\": true;\n \"empty-grid-tile\": number;\n \"lightbox\": string;\n \"right-panel\": true;\n \"details\": true;\n \"members\": true;\n \"member\": string;\n \"invite\": true;\n \"device-verification\": string | boolean;\n \"verification\": string | boolean;\n \"join-room\": true;\n};\n\nexport function createNavigation(): Navigation {\n return new Navigation(allowsChild);\n}\n\nexport function createRouter({history, navigation}: {history: History, navigation: Navigation}): URLRouter {\n return new URLRouter(history, navigation, parseUrlPath, stringifyPath);\n}\n\nfunction allowsChild(parent: Segment | undefined, child: Segment): boolean {\n const {type} = child;\n switch (parent?.type) {\n case undefined:\n // allowed root segments\n return type === \"login\" || type === \"session\" || type === \"sso\" || type === \"logout\";\n case \"session\":\n return type === \"room\" || type === \"rooms\" || type === \"settings\" || type === \"create-room\" || type === \"join-room\" || type === \"device-verification\";\n case \"rooms\":\n // downside of the approach: both of these will control which tile is selected\n return type === \"room\" || type === \"empty-grid-tile\";\n case \"room\":\n return type === \"lightbox\" || type === \"right-panel\";\n case \"right-panel\":\n return type === \"details\"|| type === \"members\" || type === \"member\" || type === \"verification\" || type === \"invite\";\n case \"logout\":\n return type === \"forced\";\n default:\n return false;\n }\n}\n\nexport function removeRoomFromPath(path: Path, roomId: string): Path | undefined {\n let newPath: Path | undefined = path;\n const rooms = newPath.get(\"rooms\");\n let roomIdGridIndex = -1;\n // first delete from rooms segment\n if (rooms) {\n roomIdGridIndex = rooms.value.indexOf(roomId);\n if (roomIdGridIndex !== -1) {\n const idsWithoutRoom = rooms.value.slice();\n idsWithoutRoom[roomIdGridIndex] = \"\";\n newPath = newPath.replace(new Segment(\"rooms\", idsWithoutRoom));\n }\n }\n const room = newPath!.get(\"room\");\n // then from room (which occurs with or without rooms)\n if (room && room.value === roomId) {\n if (roomIdGridIndex !== -1) {\n newPath = newPath!.with(new Segment(\"empty-grid-tile\", roomIdGridIndex));\n } else {\n newPath = newPath!.until(\"session\");\n }\n }\n return newPath;\n}\n\nfunction roomsSegmentWithRoom(rooms: Segment, roomId: string, path: Path): Segment {\n if(!rooms.value.includes(roomId)) {\n const emptyGridTile = path.get(\"empty-grid-tile\");\n const oldRoom = path.get(\"room\");\n let index = 0;\n if (emptyGridTile) {\n index = emptyGridTile.value;\n } else if (oldRoom) {\n index = rooms.value.indexOf(oldRoom.value);\n }\n const roomIds = rooms.value.slice();\n roomIds[index] = roomId;\n return new Segment(\"rooms\", roomIds);\n } else {\n return rooms;\n }\n}\n\nfunction pushRightPanelSegment(array: Segment[], segment: T, ...value: OptionalValue): void {\n array.push(new Segment(\"right-panel\"));\n array.push(new Segment(segment, ...value));\n}\n\nexport function addPanelIfNeeded(navigation: Navigation, path: Path): Path {\n const segments = navigation.path.segments;\n const i = segments.findIndex(segment => segment.type === \"right-panel\");\n let _path = path;\n if (i !== -1) {\n _path = path.until(\"room\");\n _path = _path.with(segments[i])!;\n _path = _path.with(segments[i + 1])!;\n }\n return _path;\n}\n\nexport function parseUrlPath(urlPath: string, currentNavPath: Path, defaultSessionId?: string): Segment[] {\n // substring(1) to take of initial /\n const parts = urlPath.substring(1).split(\"/\");\n const iterator = parts[Symbol.iterator]();\n const segments: Segment[] = [];\n let next; \n while (!(next = iterator.next()).done) {\n const type = next.value;\n if (type === \"rooms\") {\n const roomsValue = iterator.next().value;\n if (roomsValue === undefined) { break; }\n const roomIds = roomsValue.split(\",\").map(id => decodeURIComponent(id));\n segments.push(new Segment(type, roomIds));\n const selectedIndex = parseInt(iterator.next().value || \"0\", 10);\n const roomId = roomIds[selectedIndex];\n if (roomId) {\n segments.push(new Segment(\"room\", roomId));\n } else {\n segments.push(new Segment(\"empty-grid-tile\", selectedIndex));\n }\n } else if (type === \"open-room\") {\n let roomId = iterator.next().value;\n if (!roomId) { break; }\n roomId = decodeURIComponent(roomId);\n const rooms = currentNavPath.get(\"rooms\");\n if (rooms) {\n segments.push(roomsSegmentWithRoom(rooms, roomId, currentNavPath));\n }\n segments.push(new Segment(\"room\", roomId));\n const openRoomPartIndex = parts.findIndex(part => part === \"open-room\");\n const hasOnlyRoomIdAfterPart = openRoomPartIndex >= parts.length - 2;\n if (hasOnlyRoomIdAfterPart) {\n // Copy right-panel segments from previous path only if there are no other parts after open-room\n // fixes memberlist -> member details closing/opening grid view\n const previousSegments = currentNavPath.segments;\n const i = previousSegments.findIndex(s => s.type === \"right-panel\");\n if (i !== -1) {\n segments.push(...previousSegments.slice(i));\n }\n }\n } else if (type === \"last-session\") {\n let sessionSegment = currentNavPath.get(\"session\");\n if (typeof sessionSegment?.value !== \"string\" && defaultSessionId) {\n sessionSegment = new Segment(\"session\", defaultSessionId);\n }\n if (sessionSegment) {\n segments.push(sessionSegment);\n }\n } else if (type === \"details\" || type === \"members\" || type === \"verification\" || type === \"invite\") {\n pushRightPanelSegment(segments, type);\n } else if (type === \"member\") {\n let userId = iterator.next().value;\n if (!userId) { break; }\n userId = decodeURIComponent(userId);\n pushRightPanelSegment(segments, type, userId);\n } else if (type.includes(\"loginToken\")) {\n // Special case for SSO-login with query parameter loginToken=\n const loginToken = type.split(\"=\").pop();\n segments.push(new Segment(\"sso\", loginToken));\n } else {\n // might be undefined, which will be turned into true by Segment \n let value = iterator.next().value;\n if (value) {\n // decode only if value isn't undefined!\n value = decodeURIComponent(value)\n }\n segments.push(new Segment(type, value));\n }\n }\n return segments;\n}\n\nexport function stringifyPath(path: Path): string {\n let urlPath = \"\";\n let prevSegment: Segment | undefined;\n for (const segment of path.segments) {\n const encodedSegmentValue = encodeSegmentValue(segment.value);\n switch (segment.type) {\n case \"rooms\":\n urlPath += `/rooms/${encodedSegmentValue}`;\n break;\n case \"empty-grid-tile\":\n urlPath += `/${encodedSegmentValue}`;\n break;\n case \"room\":\n if (prevSegment?.type === \"rooms\") {\n const index = prevSegment.value.indexOf(segment.value);\n urlPath += `/${index}`;\n } else {\n urlPath += `/${segment.type}/${encodedSegmentValue}`;\n }\n break;\n case \"right-panel\":\n case \"sso\":\n // Do not put these segments in URL\n continue;\n default:\n urlPath += `/${segment.type}`;\n if (encodedSegmentValue) {\n urlPath += `/${encodedSegmentValue}`;\n }\n }\n prevSegment = segment;\n }\n return urlPath;\n}\n\nfunction encodeSegmentValue(value: SegmentType[keyof SegmentType]): string {\n if (value === true) {\n // Nothing to encode for boolean\n return \"\";\n }\n else if (Array.isArray(value)) {\n return value.map(v => encodeURIComponent(v)).join(\",\");\n }\n else {\n return encodeURIComponent(value);\n }\n}\n\nexport function tests() {\n function createEmptyPath() {\n const nav: Navigation = new Navigation(allowsChild);\n const path = nav.pathFrom([]);\n return path;\n }\n\n return {\n \"stringify grid url with focused empty tile\": assert => {\n const nav: Navigation = new Navigation(allowsChild);\n const path = nav.pathFrom([\n new Segment(\"session\", 1),\n new Segment(\"rooms\", [\"a\", \"b\", \"c\"]),\n new Segment(\"empty-grid-tile\", 3)\n ]);\n const urlPath = stringifyPath(path);\n assert.equal(urlPath, \"/session/1/rooms/a,b,c/3\");\n },\n \"stringify grid url with focused room\": assert => {\n const nav: Navigation = new Navigation(allowsChild);\n const path = nav.pathFrom([\n new Segment(\"session\", 1),\n new Segment(\"rooms\", [\"a\", \"b\", \"c\"]),\n new Segment(\"room\", \"b\")\n ]);\n const urlPath = stringifyPath(path);\n assert.equal(urlPath, \"/session/1/rooms/a,b,c/1\");\n },\n \"stringify url with right-panel and details segment\": assert => {\n const nav: Navigation = new Navigation(allowsChild);\n const path = nav.pathFrom([\n new Segment(\"session\", 1),\n new Segment(\"rooms\", [\"a\", \"b\", \"c\"]),\n new Segment(\"room\", \"b\"),\n new Segment(\"right-panel\"),\n new Segment(\"details\")\n ]);\n const urlPath = stringifyPath(path);\n assert.equal(urlPath, \"/session/1/rooms/a,b,c/1/details\");\n },\n \"Parse loginToken query parameter into SSO segment\": assert => {\n const path = createEmptyPath();\n const segments = parseUrlPath(\"?loginToken=a1232aSD123\", path);\n assert.equal(segments.length, 1);\n assert.equal(segments[0].type, \"sso\");\n assert.equal(segments[0].value, \"a1232aSD123\");\n },\n \"parse grid url path with focused empty tile\": assert => {\n const path = createEmptyPath();\n const segments = parseUrlPath(\"/session/1/rooms/a,b,c/3\", path);\n assert.equal(segments.length, 3);\n assert.equal(segments[0].type, \"session\");\n assert.equal(segments[0].value, \"1\");\n assert.equal(segments[1].type, \"rooms\");\n assert.deepEqual(segments[1].value, [\"a\", \"b\", \"c\"]);\n assert.equal(segments[2].type, \"empty-grid-tile\");\n assert.equal(segments[2].value, 3);\n },\n \"parse grid url path with focused room\": assert => {\n const path = createEmptyPath();\n const segments = parseUrlPath(\"/session/1/rooms/a,b,c/1\", path);\n assert.equal(segments.length, 3);\n assert.equal(segments[0].type, \"session\");\n assert.equal(segments[0].value, \"1\");\n assert.equal(segments[1].type, \"rooms\");\n assert.deepEqual(segments[1].value, [\"a\", \"b\", \"c\"]);\n assert.equal(segments[2].type, \"room\");\n assert.equal(segments[2].value, \"b\");\n },\n \"parse empty grid url\": assert => {\n const path = createEmptyPath();\n const segments = parseUrlPath(\"/session/1/rooms/\", path);\n assert.equal(segments.length, 3);\n assert.equal(segments[0].type, \"session\");\n assert.equal(segments[0].value, \"1\");\n assert.equal(segments[1].type, \"rooms\");\n assert.deepEqual(segments[1].value, [\"\"]);\n assert.equal(segments[2].type, \"empty-grid-tile\");\n assert.equal(segments[2].value, 0);\n },\n \"parse empty grid url with focus\": assert => {\n const path = createEmptyPath();\n const segments = parseUrlPath(\"/session/1/rooms//1\", path);\n assert.equal(segments.length, 3);\n assert.equal(segments[0].type, \"session\");\n assert.equal(segments[0].value, \"1\");\n assert.equal(segments[1].type, \"rooms\");\n assert.deepEqual(segments[1].value, [\"\"]);\n assert.equal(segments[2].type, \"empty-grid-tile\");\n assert.equal(segments[2].value, 1);\n },\n \"parse open-room action replacing the current focused room\": assert => {\n const nav: Navigation = new Navigation(allowsChild);\n const path = nav.pathFrom([\n new Segment(\"session\", 1),\n new Segment(\"rooms\", [\"a\", \"b\", \"c\"]),\n new Segment(\"room\", \"b\")\n ]);\n const segments = parseUrlPath(\"/session/1/open-room/d\", path);\n assert.equal(segments.length, 3);\n assert.equal(segments[0].type, \"session\");\n assert.equal(segments[0].value, \"1\");\n assert.equal(segments[1].type, \"rooms\");\n assert.deepEqual(segments[1].value, [\"a\", \"d\", \"c\"]);\n assert.equal(segments[2].type, \"room\");\n assert.equal(segments[2].value, \"d\");\n },\n \"parse open-room action changing focus to an existing room\": assert => {\n const nav: Navigation = new Navigation(allowsChild);\n const path = nav.pathFrom([\n new Segment(\"session\", 1),\n new Segment(\"rooms\", [\"a\", \"b\", \"c\"]),\n new Segment(\"room\", \"b\")\n ]);\n const segments = parseUrlPath(\"/session/1/open-room/a\", path);\n assert.equal(segments.length, 3);\n assert.equal(segments[0].type, \"session\");\n assert.equal(segments[0].value, \"1\");\n assert.equal(segments[1].type, \"rooms\");\n assert.deepEqual(segments[1].value, [\"a\", \"b\", \"c\"]);\n assert.equal(segments[2].type, \"room\");\n assert.equal(segments[2].value, \"a\");\n },\n \"parse open-room action changing focus to an existing room with details open\": assert => {\n const nav: Navigation = new Navigation(allowsChild);\n const path = nav.pathFrom([\n new Segment(\"session\", 1),\n new Segment(\"rooms\", [\"a\", \"b\", \"c\"]),\n new Segment(\"room\", \"b\"),\n new Segment(\"right-panel\", true),\n new Segment(\"details\", true)\n ]);\n const segments = parseUrlPath(\"/session/1/open-room/a\", path);\n assert.equal(segments.length, 5);\n assert.equal(segments[0].type, \"session\");\n assert.equal(segments[0].value, \"1\");\n assert.equal(segments[1].type, \"rooms\");\n assert.deepEqual(segments[1].value, [\"a\", \"b\", \"c\"]);\n assert.equal(segments[2].type, \"room\");\n assert.equal(segments[2].value, \"a\");\n assert.equal(segments[3].type, \"right-panel\");\n assert.equal(segments[3].value, true);\n assert.equal(segments[4].type, \"details\");\n assert.equal(segments[4].value, true);\n },\n \"open-room action should only copy over previous segments if there are no parts after open-room\": assert => {\n const nav: Navigation = new Navigation(allowsChild);\n const path = nav.pathFrom([\n new Segment(\"session\", 1),\n new Segment(\"rooms\", [\"a\", \"b\", \"c\"]),\n new Segment(\"room\", \"b\"),\n new Segment(\"right-panel\", true),\n new Segment(\"members\", true)\n ]);\n const segments = parseUrlPath(\"/session/1/open-room/a/member/foo\", path);\n assert.equal(segments.length, 5);\n assert.equal(segments[0].type, \"session\");\n assert.equal(segments[0].value, \"1\");\n assert.equal(segments[1].type, \"rooms\");\n assert.deepEqual(segments[1].value, [\"a\", \"b\", \"c\"]);\n assert.equal(segments[2].type, \"room\");\n assert.equal(segments[2].value, \"a\");\n assert.equal(segments[3].type, \"right-panel\");\n assert.equal(segments[3].value, true);\n assert.equal(segments[4].type, \"member\");\n assert.equal(segments[4].value, \"foo\");\n },\n \"parse open-room action setting a room in an empty tile\": assert => {\n const nav: Navigation = new Navigation(allowsChild);\n const path = nav.pathFrom([\n new Segment(\"session\", 1),\n new Segment(\"rooms\", [\"a\", \"b\", \"c\"]),\n new Segment(\"empty-grid-tile\", 4)\n ]);\n const segments = parseUrlPath(\"/session/1/open-room/d\", path);\n assert.equal(segments.length, 3);\n assert.equal(segments[0].type, \"session\");\n assert.equal(segments[0].value, \"1\");\n assert.equal(segments[1].type, \"rooms\");\n assert.deepEqual(segments[1].value, [\"a\", \"b\", \"c\", , \"d\"]); //eslint-disable-line no-sparse-arrays\n assert.equal(segments[2].type, \"room\");\n assert.equal(segments[2].value, \"d\");\n },\n \"parse session url path without id\": assert => {\n const path = createEmptyPath();\n const segments = parseUrlPath(\"/session\", path);\n assert.equal(segments.length, 1);\n assert.equal(segments[0].type, \"session\");\n assert.strictEqual(segments[0].value, true);\n },\n \"remove active room from grid path turns it into empty tile\": assert => {\n const nav: Navigation = new Navigation(allowsChild);\n const path = nav.pathFrom([\n new Segment(\"session\", 1),\n new Segment(\"rooms\", [\"a\", \"b\", \"c\"]),\n new Segment(\"room\", \"b\")\n ]);\n const newPath = removeRoomFromPath(path, \"b\");\n assert.equal(newPath?.segments.length, 3);\n assert.equal(newPath?.segments[0].type, \"session\");\n assert.equal(newPath?.segments[0].value, 1);\n assert.equal(newPath?.segments[1].type, \"rooms\");\n assert.deepEqual(newPath?.segments[1].value, [\"a\", \"\", \"c\"]);\n assert.equal(newPath?.segments[2].type, \"empty-grid-tile\");\n assert.equal(newPath?.segments[2].value, 1);\n },\n \"remove inactive room from grid path\": assert => {\n const nav: Navigation = new Navigation(allowsChild);\n const path = nav.pathFrom([\n new Segment(\"session\", 1),\n new Segment(\"rooms\", [\"a\", \"b\", \"c\"]),\n new Segment(\"room\", \"b\")\n ]);\n const newPath = removeRoomFromPath(path, \"a\");\n assert.equal(newPath?.segments.length, 3);\n assert.equal(newPath?.segments[0].type, \"session\");\n assert.equal(newPath?.segments[0].value, 1);\n assert.equal(newPath?.segments[1].type, \"rooms\");\n assert.deepEqual(newPath?.segments[1].value, [\"\", \"b\", \"c\"]);\n assert.equal(newPath?.segments[2].type, \"room\");\n assert.equal(newPath?.segments[2].value, \"b\");\n },\n \"remove inactive room from grid path with empty tile\": assert => {\n const nav: Navigation = new Navigation(allowsChild);\n const path = nav.pathFrom([\n new Segment(\"session\", 1),\n new Segment(\"rooms\", [\"a\", \"b\", \"\"]),\n new Segment(\"empty-grid-tile\", 3)\n ]);\n const newPath = removeRoomFromPath(path, \"b\");\n assert.equal(newPath?.segments.length, 3);\n assert.equal(newPath?.segments[0].type, \"session\");\n assert.equal(newPath?.segments[0].value, 1);\n assert.equal(newPath?.segments[1].type, \"rooms\");\n assert.deepEqual(newPath?.segments[1].value, [\"a\", \"\", \"\"]);\n assert.equal(newPath?.segments[2].type, \"empty-grid-tile\");\n assert.equal(newPath?.segments[2].value, 3);\n },\n \"remove active room\": assert => {\n const nav: Navigation = new Navigation(allowsChild);\n const path = nav.pathFrom([\n new Segment(\"session\", 1),\n new Segment(\"room\", \"b\")\n ]);\n const newPath = removeRoomFromPath(path, \"b\");\n assert.equal(newPath?.segments.length, 1);\n assert.equal(newPath?.segments[0].type, \"session\");\n assert.equal(newPath?.segments[0].value, 1);\n },\n \"remove inactive room doesn't do anything\": assert => {\n const nav: Navigation = new Navigation(allowsChild);\n const path = nav.pathFrom([\n new Segment(\"session\", 1),\n new Segment(\"room\", \"b\")\n ]);\n const newPath = removeRoomFromPath(path, \"a\");\n assert.equal(newPath?.segments.length, 2);\n assert.equal(newPath?.segments[0].type, \"session\");\n assert.equal(newPath?.segments[0].value, 1);\n assert.equal(newPath?.segments[1].type, \"room\");\n assert.equal(newPath?.segments[1].value, \"b\");\n },\n \n }\n}\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {ViewModel} from \"../../ViewModel\";\nimport {RoomTileViewModel} from \"./RoomTileViewModel.js\";\nimport {InviteTileViewModel} from \"./InviteTileViewModel.js\";\nimport {RoomBeingCreatedTileViewModel} from \"./RoomBeingCreatedTileViewModel.js\";\nimport {RoomFilter} from \"./RoomFilter.js\";\nimport {ApplyMap} from \"../../../observable\";\nimport {addPanelIfNeeded} from \"../../navigation\";\n\nexport class LeftPanelViewModel extends ViewModel {\n constructor(options) {\n super(options);\n const {session} = options;\n this._tileViewModelsMap = this._mapTileViewModels(session.roomsBeingCreated, session.invites, session.rooms);\n this._tileViewModelsFilterMap = new ApplyMap(this._tileViewModelsMap);\n this._tileViewModels = this._tileViewModelsFilterMap.sortValues((a, b) => a.compare(b));\n this._currentTileVM = null;\n this._setupNavigation();\n this._closeUrl = this.urlRouter.urlForSegment(\"session\");\n this._settingsUrl = this.urlRouter.urlForSegment(\"settings\");\n }\n\n _mapTileViewModels(roomsBeingCreated, invites, rooms) {\n // join is not commutative, invites will take precedence over rooms\n const allTiles = invites.join(roomsBeingCreated, rooms).mapValues((item, emitChange) => {\n let vm;\n if (item.isBeingCreated) {\n vm = new RoomBeingCreatedTileViewModel(this.childOptions({roomBeingCreated: item, emitChange}));\n } else if (item.isInvite) {\n vm = new InviteTileViewModel(this.childOptions({invite: item, emitChange}));\n } else {\n vm = new RoomTileViewModel(this.childOptions({room: item, emitChange}));\n }\n const isOpen = this.navigation.path.get(\"room\")?.value === item.id;\n if (isOpen) {\n vm.open();\n this._updateCurrentVM(vm);\n }\n return vm;\n });\n return allTiles;\n }\n\n _updateCurrentVM(vm) {\n // need to also update the current vm here as\n // we can't call `_open` from the ctor as the map\n // is only populated when the view subscribes.\n this._currentTileVM?.close();\n this._currentTileVM = vm;\n }\n\n get closeUrl() {\n return this._closeUrl;\n }\n\n get settingsUrl() {\n return this._settingsUrl;\n }\n\n showCreateRoomView() {\n this.navigation.push(\"create-room\");\n }\n\n showJoinRoomView() {\n this.navigation.push(\"join-room\");\n }\n \n _setupNavigation() {\n const roomObservable = this.navigation.observe(\"room\");\n this.track(roomObservable.subscribe(roomId => this._open(roomId)));\n\n const gridObservable = this.navigation.observe(\"rooms\");\n this.gridEnabled = !!gridObservable.get();\n this.track(gridObservable.subscribe(roomIds => {\n const changed = this.gridEnabled ^ !!roomIds;\n this.gridEnabled = !!roomIds;\n if (changed) {\n this.emitChange(\"gridEnabled\");\n }\n }));\n }\n\n _open(roomId) {\n this._currentTileVM?.close();\n this._currentTileVM = null;\n if (roomId) {\n this._currentTileVM = this._tileViewModelsMap.get(roomId);\n this._currentTileVM?.open();\n }\n }\n\n toggleGrid() {\n const room = this.navigation.path.get(\"room\");\n let path = this.navigation.path.until(\"session\");\n if (this.gridEnabled) {\n if (room) {\n path = path.with(room);\n path = addPanelIfNeeded(this.navigation, path);\n }\n } else {\n if (room) {\n path = path.with(this.navigation.segment(\"rooms\", [room.value]));\n path = path.with(room);\n path = addPanelIfNeeded(this.navigation, path);\n } else {\n path = path.with(this.navigation.segment(\"rooms\", []));\n path = path.with(this.navigation.segment(\"empty-grid-tile\", 0));\n }\n }\n this.navigation.applyPath(path);\n }\n\n get tileViewModels() {\n return this._tileViewModels;\n }\n\n clearFilter() {\n this._tileViewModelsFilterMap.setApply(null);\n this._tileViewModelsFilterMap.applyOnce((roomId, vm) => vm.hidden = false);\n }\n\n setFilter(query) {\n query = query.trim();\n if (query.length === 0) {\n this.clearFilter();\n return false;\n } else {\n const startFiltering = !this._tileViewModelsFilterMap.hasApply();\n const filter = new RoomFilter(query);\n this._tileViewModelsFilterMap.setApply((roomId, vm) => {\n vm.hidden = !filter.matches(vm);\n });\n return startFiltering;\n }\n }\n}\n","import {UpdateAction} from \"../UpdateAction.js\";\nimport {BaseEntry} from \"../../../../../matrix/room/timeline/entries/BaseEntry\";\nimport {IDisposable} from \"../../../../../utils/Disposables\";\n\nexport type EmitUpdateFn = (tile: ITile, props: any) => void\n\nexport enum TileShape {\n Message = \"message\",\n MessageStatus = \"message-status\",\n Announcement = \"announcement\",\n File = \"file\",\n Gap = \"gap\",\n Image = \"image\",\n Location = \"location\",\n MissingAttachment = \"missing-attachment\",\n Redacted = \"redacted\",\n Video = \"video\",\n DateHeader = \"date-header\",\n Call = \"call\",\n Verification = \"verification\",\n}\n\n// TODO: should we imply inheriting from view model here?\nexport interface ITile extends IDisposable {\n setUpdateEmit(emitUpdate: EmitUpdateFn): void;\n get upperEntry(): E;\n get lowerEntry(): E;\n /** compare two tiles, returning:\n * - 0 if both tiles are considered equal\n * - a negative value if this tiles is sorted before the given tile\n * - a positive value if this tiles is sorted after the given tile\n **/\n compare(tile: ITile): number;\n /** Some tiles might need comparison mechanisms that are not commutative,\n * (e.g. `tileA.compare(tileB)` not being the same as `tileB.compare(tileA)`),\n * a property needed for reliably sorting the tiles in TilesCollection.\n * To counteract this, tiles can indicate this is not the case for them and\n * when any other tile is being compared to a tile where this flag is true,\n * it should delegate the comparison to the given tile.\n * E.g. one example where this flag is used is DateTile. */\n get comparisonIsNotCommutative(): boolean;\n compareEntry(entry: BaseEntry): number;\n // update received for already included (falls within sort keys) entry\n updateEntry(entry: BaseEntry, param: any): UpdateAction;\n // return whether the tile should be removed\n // as SimpleTile only has one entry, the tile should be removed\n removeEntry(entry: BaseEntry): boolean\n // SimpleTile can only contain 1 entry\n tryIncludeEntry(entry: BaseEntry): boolean;\n // let item know it has a new sibling\n updatePreviousSibling(prev: ITile | undefined): void;\n // let item know it has a new sibling\n updateNextSibling(next: ITile | undefined): void;\n notifyVisible(): void;\n get needsDateSeparator(): boolean;\n createDateSeparator(): ITile | undefined;\n get shape(): TileShape;\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexport class UpdateAction {\n constructor(remove, update, replace, updateParams) {\n this._remove = remove;\n this._update = update;\n this._replace = replace;\n this._updateParams = updateParams;\n }\n\n get shouldReplace() {\n return this._replace;\n }\n\n get shouldRemove() {\n return this._remove;\n }\n\n get shouldUpdate() {\n return this._update;\n }\n\n get updateParams() {\n return this._updateParams;\n }\n\n static Remove() {\n return new UpdateAction(true, false, false, null);\n }\n\n static Update(newParams) {\n return new UpdateAction(false, true, false, newParams);\n }\n\n static Nothing() {\n return new UpdateAction(false, false, false, null);\n }\n\n static Replace(params) {\n return new UpdateAction(false, false, true, params);\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {BaseObservableList} from \"../../../../observable/list/BaseObservableList\";\nimport {sortedIndex} from \"../../../../utils/sortedIndex\";\nimport {TileShape} from \"./tiles/ITile\";\n\n// maps 1..n entries to 0..1 tile. Entries are what is stored in the timeline, either an event or fragmentboundary\n// for now, tileClassForEntry should be stable in whether it returns a tile or not.\n// e.g. the decision to create a tile or not should be based on properties\n// not updated later on (e.g. event type)\n// also see big comment in onUpdate\nexport class TilesCollection extends BaseObservableList {\n constructor(entries, tileOptions) {\n super();\n this._entries = entries;\n this._tiles = null;\n this._entrySubscription = null;\n this._tileOptions = tileOptions;\n this._emitSpontanousUpdate = this._emitSpontanousUpdate.bind(this);\n }\n\n _createTile(entry) {\n const Tile = this._tileOptions.tileClassForEntry(entry, this._tileOptions);\n if (Tile) {\n return new Tile(entry, this._tileOptions);\n }\n }\n\n _emitSpontanousUpdate(tile, params) {\n const entry = tile.lowerEntry;\n const tileIdx = this._findTileIdx(entry);\n this.emitUpdate(tileIdx, tile, params);\n }\n\n onSubscribeFirst() {\n this._entrySubscription = this._entries.subscribe(this);\n this._populateTiles();\n }\n\n _populateTiles() {\n this._silent = true;\n this._tiles = [];\n let currentTile = null;\n for (let entry of this._entries) {\n if (!currentTile || !currentTile.tryIncludeEntry(entry)) {\n currentTile = this._createTile(entry);\n if (currentTile) {\n this._tiles.push(currentTile);\n }\n }\n }\n let prevTile = null;\n for (let tile of this._tiles) {\n if (prevTile) {\n prevTile.updateNextSibling(tile);\n }\n tile.updatePreviousSibling(prevTile);\n prevTile = tile;\n }\n if (prevTile) {\n prevTile.updateNextSibling(null);\n }\n // add date headers here\n for (let idx = 0; idx < this._tiles.length; idx += 1) {\n const tile = this._tiles[idx];\n if (tile.needsDateSeparator) {\n this._addTileAt(idx, tile.createDateSeparator(), true);\n idx += 1; // tile's index moved one up, don't process it again\n }\n }\n // now everything is wired up,\n // allow tiles to emit updates\n for (const tile of this._tiles) {\n tile.setUpdateEmit(this._emitSpontanousUpdate);\n }\n this._silent = false;\n }\n\n _findTileIdx(entry) {\n return sortedIndex(this._tiles, entry, (entry, tile) => {\n // negate result because we're switching the order of the params\n return -tile.compareEntry(entry);\n });\n }\n\n _findTileAtIdx(entry, idx) {\n const tile = this._getTileAtIdx(idx);\n if (tile && tile.compareEntry(entry) === 0) {\n return tile;\n }\n }\n\n _getTileAtIdx(tileIdx) {\n if (tileIdx >= 0 && tileIdx < this._tiles.length) {\n return this._tiles[tileIdx];\n }\n return null;\n }\n\n onUnsubscribeLast() {\n this._entrySubscription = this._entrySubscription();\n for(let i = 0; i < this._tiles.length; i+= 1) {\n this._tiles[i].dispose();\n }\n this._tiles = null;\n }\n\n onReset() {\n // if TileViewModel were disposable, dispose here, or is that for views to do? views I suppose ...\n this._buildInitialTiles();\n this.emitReset();\n }\n\n onAdd(index, entry) {\n const tileIdx = this._findTileIdx(entry);\n const prevTile = this._getTileAtIdx(tileIdx - 1);\n if (prevTile && prevTile.tryIncludeEntry(entry)) {\n this.emitUpdate(tileIdx - 1, prevTile);\n return;\n }\n // not + 1 because this entry hasn't been added yet\n const nextTile = this._getTileAtIdx(tileIdx);\n if (nextTile && nextTile.tryIncludeEntry(entry)) {\n this.emitUpdate(tileIdx, nextTile);\n return;\n }\n\n const newTile = this._createTile(entry);\n if (newTile) {\n this._addTileAt(tileIdx, newTile);\n this._evaluateDateHeaderAtIdx(tileIdx);\n }\n // find position by sort key\n // ask siblings to be included? both? yes, twice: a (insert c here) b, ask a(c), if yes ask b(a), else ask b(c)? if yes then b(a)?\n }\n\n _evaluateDateHeaderAtIdx(tileIdx) {\n // consider two tiles after the inserted tile, because\n // the first of the two tiles may be a DateTile in which case,\n // we remove it after looking at the needsDateSeparator prop of the\n // next next tile\n for (let i = 0; i < 3; i += 1) {\n const idx = tileIdx + i;\n if (idx >= this._tiles.length) {\n break;\n }\n const tile = this._tiles[idx];\n const prevTile = idx > 0 ? this._tiles[idx - 1] : undefined;\n const hasDateSeparator = prevTile?.shape === TileShape.DateHeader;\n if (tile.needsDateSeparator && !hasDateSeparator) {\n // adding a tile shift all the indices we need to consider\n // especially given we consider removals for the tile that\n // comes after a datetile\n tileIdx += 1;\n this._addTileAt(idx, tile.createDateSeparator());\n } else if (!tile.needsDateSeparator && hasDateSeparator) {\n // this is never triggered because needsDateSeparator is not cleared\n // when loading more items because we don't do anything once the\n // direct sibling is a DateTile\n this._removeTile(idx - 1, prevTile);\n }\n }\n }\n\n _addTileAt(idx, newTile, silent = false) {\n const prevTile = idx > 0 ? this._tiles[idx - 1] : undefined;\n const nextTile = this._tiles[idx];\n prevTile?.updateNextSibling(newTile);\n newTile.updatePreviousSibling(prevTile);\n newTile.updateNextSibling(nextTile);\n nextTile?.updatePreviousSibling(newTile);\n this._tiles.splice(idx, 0, newTile);\n if (!silent) {\n this.emitAdd(idx, newTile);\n }\n // add event is emitted, now the tile\n // can emit updates\n newTile.setUpdateEmit(this._emitSpontanousUpdate);\n }\n\n onUpdate(index, entry, params) {\n // if an update is emitted while calling source.subscribe() from onSubscribeFirst, ignore it\n if (!this._tiles) {\n return;\n }\n const tileIdx = this._findTileIdx(entry);\n const tile = this._findTileAtIdx(entry, tileIdx);\n if (tile) {\n const action = tile.updateEntry(entry, params);\n if (action.shouldReplace) {\n const newTile = this._createTile(entry);\n if (newTile) {\n this._replaceTile(tileIdx, tile, newTile, action.updateParams);\n newTile.setUpdateEmit(this._emitSpontanousUpdate);\n } else {\n this._removeTile(tileIdx, tile);\n }\n }\n if (action.shouldRemove) {\n this._removeTile(tileIdx, tile);\n }\n if (action.shouldUpdate) {\n this.emitUpdate(tileIdx, tile, action.updateParams);\n }\n }\n // technically we should handle adding a tile here as well\n // in case before we didn't have a tile for it but now we do\n // but in reality we don't have this use case as the type and msgtype\n // doesn't change. Decryption maybe is the exception?\n\n\n // outcomes here can be\n // tiles should be removed (got redacted and we don't want it in the timeline)\n // tile should be added where there was none before ... ?\n // entry should get it's own tile now\n // merge with neighbours? ... hard to imagine use case for this ...\n }\n\n _replaceTile(tileIdx, existingTile, newTile, updateParams) {\n existingTile.dispose();\n const prevTile = this._getTileAtIdx(tileIdx - 1);\n const nextTile = this._getTileAtIdx(tileIdx + 1);\n this._tiles[tileIdx] = newTile;\n prevTile?.updateNextSibling(newTile);\n newTile.updatePreviousSibling(prevTile);\n newTile.updateNextSibling(nextTile);\n nextTile?.updatePreviousSibling(newTile);\n this.emitUpdate(tileIdx, newTile, updateParams);\n }\n\n _removeTile(tileIdx, tile) {\n const prevTile = this._getTileAtIdx(tileIdx - 1);\n const nextTile = this._getTileAtIdx(tileIdx + 1);\n // applying and emitting the remove should happen\n // atomically, as updateNext/PreviousSibling might\n // emit an update with the wrong index otherwise \n this._tiles.splice(tileIdx, 1);\n tile.dispose();\n this.emitRemove(tileIdx, tile);\n prevTile?.updateNextSibling(nextTile);\n nextTile?.updatePreviousSibling(prevTile);\n\n if (prevTile && prevTile.shape === TileShape.DateHeader && (!nextTile || !nextTile.needsDateSeparator)) {\n this._removeTile(tileIdx - 1, prevTile);\n }\n }\n\n // would also be called when unloading a part of the timeline\n onRemove(index, entry) {\n const tileIdx = this._findTileIdx(entry);\n \n const tile = this._findTileAtIdx(entry, tileIdx);\n if (tile) {\n const removeTile = tile.removeEntry(entry);\n if (removeTile) {\n this._removeTile(tileIdx, tile);\n } else {\n this.emitUpdate(tileIdx, tile);\n }\n }\n }\n\n onMove(/*fromIdx, toIdx, value*/) {\n // this ... cannot happen in the timeline?\n // perhaps we can use this event to support a local echo (in a different fragment)\n // to be moved to the key of the remote echo, so we don't loose state ... ?\n }\n\n [Symbol.iterator]() {\n return this._tiles.values();\n }\n\n get length() {\n return this._tiles.length;\n }\n\n getFirst() {\n return this._tiles[0];\n }\n\n getTileIndex(searchTile) {\n const idx = sortedIndex(this._tiles, searchTile, (searchTile, tile) => {\n return searchTile.compare(tile);\n });\n const foundTile = this._tiles[idx];\n if (foundTile?.compare(searchTile) === 0) {\n return idx;\n }\n return -1;\n }\n\n sliceIterator(start, end) {\n return this._tiles.slice(start, end)[Symbol.iterator]();\n }\n}\n\nimport {ObservableArray} from \"../../../../observable/list/ObservableArray\";\nimport {UpdateAction} from \"./UpdateAction.js\";\n\nexport function tests() {\n class TestTile {\n constructor(entry) {\n this.entry = entry;\n this.update = null;\n this.needsDateSeparator = false;\n }\n setUpdateEmit(update) {\n this.update = update;\n }\n tryIncludeEntry() {\n return false;\n }\n compareEntry(b) {\n return this.entry.n - b.n;\n }\n removeEntry() {\n return true;\n }\n get upperEntry() {\n return this.entry;\n }\n\n get lowerEntry() {\n return this.entry;\n }\n updateNextSibling() {}\n updatePreviousSibling() {}\n updateEntry() {\n return UpdateAction.Nothing;\n }\n\n dispose() {}\n }\n\n class DateHeaderTile extends TestTile {\n get shape() { return TileShape.DateHeader; }\n updateNextSibling(next) {\n this.next = next;\n }\n updatePreviousSibling(prev) {\n this.next?.updatePreviousSibling(prev);\n }\n compareEntry(b) {\n // important that date tiles as sorted before their next item, but after their previous sibling\n return this.next.compareEntry(b) - 0.5;\n }\n }\n\n class MessageNeedingDateHeaderTile extends TestTile {\n get shape() { return TileShape.Message; }\n\n createDateSeparator() {\n return new DateHeaderTile(this.entry);\n }\n updatePreviousSibling(prev) {\n if (prev?.shape !== TileShape.DateHeader) {\n // 1 day is 10 \n this.needsDateSeparator = !prev || Math.floor(prev.entry.n / 10) !== Math.floor(this.entry.n / 10);\n }\n }\n }\n\n return {\n \"don't emit update before add\": assert => {\n class UpdateOnSiblingTile extends TestTile {\n updateNextSibling() {\n // this happens with isContinuation\n this.update && this.update(this, \"next\");\n }\n updatePreviousSibling() {\n // this happens with isContinuation\n this.update && this.update(this, \"previous\");\n }\n }\n const entries = new ObservableArray([{n: 5}, {n: 10}]);\n const tileOptions = {\n tileClassForEntry: () => UpdateOnSiblingTile,\n };\n const tiles = new TilesCollection(entries, tileOptions);\n let receivedAdd = false;\n tiles.subscribe({\n onAdd(idx, tile) {\n assert(tile.entry.n, 7);\n receivedAdd = true;\n },\n onUpdate(idx, tile) {\n if (tile.entry.n === 7) {\n assert(!receivedAdd, \"receiving update before add\");\n }\n }\n });\n entries.insert(1, {n: 7});\n assert(receivedAdd);\n },\n \"emit update with correct index in updatePreviousSibling during remove\": assert => {\n class UpdateOnSiblingTile extends TestTile {\n updatePreviousSibling() {\n this.update?.(this, \"previous\");\n }\n }\n const entries = new ObservableArray([{n: 5}, {n: 10}, {n: 15}]);\n const tileOptions = {\n tileClassForEntry: () => UpdateOnSiblingTile,\n };\n const tiles = new TilesCollection(entries, tileOptions);\n const events = [];\n tiles.subscribe({\n onUpdate(idx, tile) {\n assert.equal(idx, 1);\n assert.equal(tile.entry.n, 15);\n events.push(\"update\");\n },\n onRemove(idx, tile) {\n assert.equal(idx, 1);\n assert.equal(tile.entry.n, 10);\n events.push(\"remove\");\n }\n });\n entries.remove(1);\n assert.deepEqual(events, [\"remove\", \"update\"]);\n },\n \"date tile is added when needed when populating\": assert => {\n const entries = new ObservableArray([{n: 15}]);\n const tileOptions = {\n tileClassForEntry: () => MessageNeedingDateHeaderTile,\n };\n const tiles = new TilesCollection(entries, tileOptions);\n tiles.subscribe({});\n const tilesArray = Array.from(tiles);\n assert.equal(tilesArray.length, 2);\n assert.equal(tilesArray[0].shape, TileShape.DateHeader);\n assert.equal(tilesArray[1].shape, TileShape.Message);\n },\n \"date header is added when receiving addition\": assert => {\n const entries = new ObservableArray([{n: 15}]);\n const tileOptions = {\n tileClassForEntry: () => MessageNeedingDateHeaderTile,\n };\n const tiles = new TilesCollection(entries, tileOptions);\n tiles.subscribe({\n onAdd() {},\n onRemove() {}\n });\n entries.insert(0, {n: 5});\n const tilesArray = Array.from(tiles);\n assert.equal(tilesArray[0].shape, TileShape.DateHeader);\n assert.equal(tilesArray[1].shape, TileShape.Message);\n assert.equal(tilesArray[2].shape, TileShape.DateHeader);\n assert.equal(tilesArray[3].shape, TileShape.Message);\n assert.equal(tilesArray.length, 4);\n },\n \"date header is removed and added when loading more messages for the same day\": assert => {\n const entries = new ObservableArray([{n: 15}]);\n const tileOptions = {\n tileClassForEntry: () => MessageNeedingDateHeaderTile,\n };\n const tiles = new TilesCollection(entries, tileOptions);\n tiles.subscribe({\n onAdd() {},\n onRemove() {}\n });\n entries.insert(0, {n: 12});\n const tilesArray = Array.from(tiles);\n assert.equal(tilesArray[0].shape, TileShape.DateHeader);\n assert.equal(tilesArray[1].shape, TileShape.Message);\n assert.equal(tilesArray[2].shape, TileShape.Message);\n assert.equal(tilesArray.length, 3);\n },\n \"date header is removed at the end of the timeline\": assert => {\n const entries = new ObservableArray([{n: 5}, {n: 15}]);\n const tileOptions = {\n tileClassForEntry: () => MessageNeedingDateHeaderTile,\n };\n const tiles = new TilesCollection(entries, tileOptions);\n let removals = 0;\n tiles.subscribe({\n onAdd() {},\n onRemove() {\n removals += 1;\n }\n });\n entries.remove(1);\n const tilesArray = Array.from(tiles);\n assert.equal(tilesArray[0].shape, TileShape.DateHeader);\n assert.equal(tilesArray[1].shape, TileShape.Message);\n assert.equal(tilesArray.length, 2);\n assert.equal(removals, 2);\n }\n }\n}\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/*\nneed better naming, but\nentry = event or gap from matrix layer\ntile = item on visual timeline like event, date separator?, group of joined events\n\n\nshall we put date separators as marker in EventViewItem or separate item? binary search will be complicated ...\n\n\npagination ...\n\non the timeline viewmodel (containing the TilesCollection?) we'll have a method to (un)load a tail or head of\nthe timeline (counted in tiles), which results to a range in sortKeys we want on the screen. We pass that range\nto the room timeline, which unload entries from memory.\nwhen loading, it just reads events from a sortkey backwards or forwards...\n*/\nimport {TilesCollection} from \"./TilesCollection.js\";\nimport {ViewModel} from \"../../../ViewModel\";\n\nexport class TimelineViewModel extends ViewModel {\n constructor(options) {\n super(options);\n const {timeline, tileOptions} = options;\n this._timeline = this.track(timeline);\n this._tiles = new TilesCollection(timeline.entries, tileOptions);\n this._startTile = null;\n this._endTile = null;\n this._topLoadingPromise = null;\n this._requestedStartTile = null;\n this._requestedEndTile = null;\n this._requestScheduled = false;\n this._showJumpDown = false;\n }\n\n /** if this.tiles is empty, call this with undefined for both startTile and endTile */\n setVisibleTileRange(startTile, endTile) {\n // don't clear these once done as they are used to check\n // for more tiles once loadAtTop finishes\n this._requestedStartTile = startTile;\n this._requestedEndTile = endTile;\n if (!this._requestScheduled) {\n Promise.resolve().then(() => {\n this._setVisibleTileRange(this._requestedStartTile, this._requestedEndTile);\n this._requestScheduled = false;\n });\n this._requestScheduled = true;\n }\n }\n\n _setVisibleTileRange(startTile, endTile) {\n let loadTop;\n if (startTile && endTile) {\n // old tiles could have been removed from tilescollection once we support unloading\n this._startTile = startTile;\n this._endTile = endTile;\n const startIndex = this._tiles.getTileIndex(this._startTile);\n const endIndex = this._tiles.getTileIndex(this._endTile);\n for (const tile of this._tiles.sliceIterator(startIndex, endIndex + 1)) {\n tile.notifyVisible();\n }\n loadTop = startIndex < 10;\n this._setShowJumpDown(endIndex < (this._tiles.length - 1));\n } else {\n // tiles collection is empty, load more at top\n loadTop = true;\n this._setShowJumpDown(false);\n }\n\n if (loadTop && !this._topLoadingPromise) {\n this._topLoadingPromise = this._timeline.loadAtTop(10).then(hasReachedEnd => {\n this._topLoadingPromise = null;\n if (!hasReachedEnd) {\n // check if more items need to be loaded by recursing\n // use the requested start / end tile,\n // so we don't end up overwriting a newly requested visible range here\n this.setVisibleTileRange(this._requestedStartTile, this._requestedEndTile);\n }\n });\n }\n }\n\n get tiles() {\n return this._tiles;\n }\n\n _setShowJumpDown(show) {\n if (this._showJumpDown !== show) {\n this._showJumpDown = show;\n this.emitChange(\"showJumpDown\");\n }\n }\n\n get showJumpDown() {\n return this._showJumpDown;\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {ViewModel} from \"../../ViewModel\";\n\nexport class ComposerViewModel extends ViewModel {\n constructor(roomVM) {\n super(roomVM.options);\n this._roomVM = roomVM;\n this._isEmpty = true;\n this._replyVM = null;\n }\n\n setReplyingTo(entry) {\n const changed = new Boolean(entry) !== new Boolean(this._replyVM) || !this._replyVM?.id.equals(entry.asEventKey());\n if (changed) {\n this._replyVM = this.disposeTracked(this._replyVM);\n if (entry) {\n this._replyVM = this.track(this._roomVM._createTile(entry));\n this._replyVM.notifyVisible();\n }\n this.emitChange(\"replyViewModel\");\n this.emit(\"focus\");\n }\n }\n\n clearReplyingTo() {\n this.setReplyingTo(null);\n }\n\n get replyViewModel() {\n return this._replyVM;\n }\n\n get isEncrypted() {\n return this._roomVM.isEncrypted;\n }\n\n async sendMessage(message) {\n const success = await this._roomVM._sendMessage(message, this._replyVM);\n if (success) {\n this._isEmpty = true;\n this.emitChange(\"canSend\");\n this.clearReplyingTo();\n }\n return success;\n }\n\n sendPicture() {\n this._roomVM._pickAndSendPicture();\n }\n\n sendFile() {\n this._roomVM._pickAndSendFile();\n }\n\n sendVideo() {\n this._roomVM._pickAndSendVideo();\n }\n\n get canSend() {\n return !this._isEmpty;\n }\n\n async setInput(text) {\n const wasEmpty = this._isEmpty;\n this._isEmpty = text.length === 0;\n if (wasEmpty && !this._isEmpty) {\n this._roomVM._room.ensureMessageKeyIsShared();\n }\n if (wasEmpty !== this._isEmpty) {\n this.emitChange(\"canSend\");\n }\n }\n\n get kind() {\n return \"composer\";\n }\n}\n","/*\nCopyright 2022 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport type {BlobHandle} from \"../platform/web/dom/BlobHandle\";\nimport type {RequestFunction} from \"../platform/types/types\";\nimport type {Platform} from \"../platform/web/Platform\";\nimport type {ILogger} from \"../logging/types\";\nimport type { IDBLogPersister } from \"../logging/IDBLogPersister\";\nimport type { Session } from \"../matrix/Session\";\n\n// see https://github.com/matrix-org/rageshake#readme\ntype RageshakeData = {\n // A textual description of the problem. Included in the details.log.gz file.\n text?: string;\n // Application user-agent. Included in the details.log.gz file.\n userAgent: string;\n // Identifier for the application (eg 'riot-web'). Should correspond to a mapping configured in the configuration file for github issue reporting to work.\n app: string;\n // Application version. Included in the details.log.gz file.\n version: string;\n // Label to attach to the github issue, and include in the details file.\n label?: string;\n};\n\nexport async function submitLogsToRageshakeServer(data: RageshakeData, logsBlob: BlobHandle, submitUrl: string, request: RequestFunction): Promise {\n const formData = new Map();\n if (data.text) {\n formData.set(\"text\", data.text);\n }\n formData.set(\"user_agent\", data.userAgent);\n formData.set(\"app\", data.app);\n formData.set(\"version\", data.version);\n if (data.label) {\n formData.set(\"label\", data.label);\n }\n formData.set(\"file\", {name: \"logs.json\", blob: logsBlob});\n const headers: Map = new Map();\n headers.set(\"Accept\", \"application/json\");\n const result = request(submitUrl, {\n method: \"POST\",\n body: formData,\n headers\n });\n let response;\n try {\n response = await result.response();\n } catch (err) {\n throw new Error(`Could not submit logs to ${submitUrl}, got error ${err.message}`);\n }\n const {status, body} = response;\n if (status < 200 || status >= 300) {\n throw new Error(`Could not submit logs to ${submitUrl}, got status code ${status} with body ${body}`);\n }\n // we don't bother with reading report_url from the body as the rageshake server doesn't always return it\n // and would have to have CORS setup properly for us to be able to read it.\n}\n\n/** @throws {Error} */\nexport async function submitLogsFromSessionToDefaultServer(session: Session, platform: Platform): Promise {\n const {bugReportEndpointUrl} = platform.config;\n if (!bugReportEndpointUrl) {\n throw new Error(\"no server configured to submit logs\");\n }\n const logReporters = (platform.logger as ILogger).reporters;\n const exportReporter = logReporters.find(r => !!r[\"export\"]) as IDBLogPersister | undefined;\n if (!exportReporter) {\n throw new Error(\"No logger that can export configured\");\n }\n const logExport = await exportReporter.export();\n await submitLogsToRageshakeServer(\n {\n app: \"hydrogen\",\n userAgent: platform.description,\n version: platform.version,\n text: `Submit logs from settings for user ${session.userId} on device ${session.deviceId}`,\n },\n logExport.asBlob(),\n bugReportEndpointUrl,\n platform.request\n );\n}\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { ViewModel, Options as BaseOptions } from \"./ViewModel\";\nimport {submitLogsFromSessionToDefaultServer} from \"./rageshake\";\nimport type { Session } from \"../matrix/Session\";\nimport type {SegmentType} from \"./navigation/index\";\n\ntype Options = {\n error: Error\n session: Session,\n onClose: () => void\n} & BaseOptions;\n\nexport class ErrorViewModel = Options> extends ViewModel {\n get message(): string {\n return this.error.message;\n }\n\n get error(): Error {\n return this.getOption(\"error\");\n }\n\n close() {\n this.getOption(\"onClose\")();\n }\n\n async submitLogs(): Promise {\n try {\n await submitLogsFromSessionToDefaultServer(this.getOption(\"session\"), this.platform);\n return true;\n } catch (err) {\n return false;\n }\n }\n}\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { ViewModel } from \"./ViewModel\";\nimport type { Options as BaseOptions } from \"./ViewModel\";\nimport type { Session } from \"../matrix/Session\";\nimport { ErrorViewModel } from \"./ErrorViewModel\";\nimport type { LogCallback, LabelOrValues } from \"../logging/types\";\n\nexport type Options = BaseOptions & {\n session: Session\n};\n\n/** Base class for view models that need to report errors to the UI. */\nexport class ErrorReportViewModel = Options> extends ViewModel {\n private _errorViewModel?: ErrorViewModel;\n\n get errorViewModel(): ErrorViewModel | undefined {\n return this._errorViewModel;\n }\n\n /** Typically you'd want to use `logAndCatch` when implementing a view model method.\n * Use `reportError` when showing errors on your model that were set by\n * background processes using `ErrorBoundary` or you have some other\n * special low-level need to write your try/catch yourself. */\n protected reportError(error: Error) {\n if (this._errorViewModel?.error === error) {\n return;\n }\n this.disposeTracked(this._errorViewModel);\n this._errorViewModel = this.track(new ErrorViewModel(this.childOptions({\n error,\n onClose: () => {\n this._errorViewModel = this.disposeTracked(this._errorViewModel);\n this.emitChange(\"errorViewModel\");\n }\n })));\n this.emitChange(\"errorViewModel\");\n }\n\n /** Combines logging and error reporting in one method.\n * Wrap the implementation of public view model methods\n * with this to ensure errors are logged and reported.*/\n protected logAndCatch(labelOrValues: LabelOrValues, callback: LogCallback, errorValue: T = undefined as unknown as T): T {\n try {\n let result = this.logger.run(labelOrValues, callback);\n if (result instanceof Promise) {\n result = result.catch(err => {\n this.reportError(err);\n return errorValue;\n }) as unknown as T;\n }\n return result;\n } catch (err) {\n this.reportError(err);\n return errorValue;\n }\n }\n}\n","/*\nCopyright 2022 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {AvatarSource} from \"../../AvatarSource\";\nimport type {ViewModel} from \"../../ViewModel\";\nimport {ErrorReportViewModel, Options as BaseOptions} from \"../../ErrorReportViewModel\";\nimport {getStreamVideoTrack, getStreamAudioTrack} from \"../../../matrix/calls/common\";\nimport {avatarInitials, getIdentifierColorNumber, getAvatarHttpUrl} from \"../../avatar\";\nimport {EventObservableValue} from \"../../../observable/value\";\nimport {ObservableValueMap, BaseObservableMap} from \"../../../observable/map\";\nimport {ErrorViewModel} from \"../../ErrorViewModel\";\nimport type {Room} from \"../../../matrix/room/Room\";\nimport type {GroupCall} from \"../../../matrix/calls/group/GroupCall\";\nimport type {Member} from \"../../../matrix/calls/group/Member\";\nimport type {RoomMember} from \"../../../matrix/room/members/RoomMember\";\nimport type {BaseObservableList} from \"../../../observable/list/BaseObservableList\";\nimport type {BaseObservableValue} from \"../../../observable/value\";\nimport type {Stream} from \"../../../platform/types/MediaDevices\";\nimport type {MediaRepository} from \"../../../matrix/net/MediaRepository\";\nimport type {Session} from \"../../../matrix/Session\";\nimport type {SegmentType} from \"../../navigation\";\n\ntype Options = BaseOptions & {\n call: GroupCall,\n room: Room,\n};\n\nexport class CallViewModel extends ErrorReportViewModel> {\n public readonly memberViewModels: BaseObservableList;\n\n constructor(options: Options) {\n super(options);\n const callObservable = new EventObservableValue(this.call, \"change\");\n this.track(callObservable.subscribe(() => this.onUpdate()));\n const ownMemberViewModelMap = new ObservableValueMap(\"self\", callObservable)\n .mapValues((call, emitChange) => new OwnMemberViewModel(this.childOptions({call, emitChange})), () => {});\n const otherMemberViewModels = this.call.members\n .filterValues(member => member.isConnected)\n .mapValues(\n (member, emitChange) => new CallMemberViewModel(this.childOptions({\n member,\n emitChange,\n mediaRepository: this.getOption(\"room\").mediaRepository\n })),\n (param, vm) => vm?.onUpdate(),\n ) as BaseObservableMap; \n this.memberViewModels = otherMemberViewModels\n .join(ownMemberViewModelMap)\n .sortValues((a, b) => a.compare(b));\n this.track(this.memberViewModels.subscribe({\n onRemove: () => {\n this.emitChange(); // update memberCount\n },\n onAdd: () => {\n this.emitChange(); // update memberCount\n },\n onUpdate: () => {},\n onReset: () => {},\n onMove: () => {}\n }))\n }\n\n get isCameraMuted(): boolean {\n return this.call.muteSettings?.camera ?? true;\n }\n\n get isMicrophoneMuted(): boolean {\n return this.call.muteSettings?.microphone ?? true;\n }\n\n get memberCount(): number {\n return this.memberViewModels.length;\n }\n\n get name(): string {\n return this.call.name;\n }\n\n get id(): string {\n return this.call.id;\n }\n\n private get call(): GroupCall {\n return this.getOption(\"call\");\n }\n\n private onUpdate() {\n if (this.call.error) {\n this.reportError(this.call.error);\n }\n }\n\n async hangup() {\n this.logAndCatch(\"CallViewModel.hangup\", async log => {\n if (this.call.hasJoined) {\n await this.call.leave(log);\n }\n });\n }\n\n async toggleCamera() {\n this.logAndCatch(\"Call.toggleCamera\", async log => {\n const {localMedia, muteSettings} = this.call;\n if (muteSettings && localMedia) {\n // unmute but no track?\n if (muteSettings.camera && !getStreamVideoTrack(localMedia.userMedia)) {\n const stream = await this.platform.mediaDevices.getMediaTracks(!muteSettings.microphone, true);\n await this.call.setMedia(localMedia.withUserMedia(stream));\n } else {\n await this.call.setMuted(muteSettings.toggleCamera());\n }\n this.emitChange();\n }\n });\n }\n\n async toggleMicrophone() {\n this.logAndCatch(\"Call.toggleMicrophone\", async log => {\n const {localMedia, muteSettings} = this.call;\n if (muteSettings && localMedia) {\n // unmute but no track?\n if (muteSettings.microphone && !getStreamAudioTrack(localMedia.userMedia)) {\n const stream = await this.platform.mediaDevices.getMediaTracks(true, !muteSettings.camera);\n await this.call.setMedia(localMedia.withUserMedia(stream));\n } else {\n await this.call.setMuted(muteSettings.toggleMicrophone());\n }\n this.emitChange();\n }\n });\n }\n}\n\nclass OwnMemberViewModel extends ErrorReportViewModel> implements IStreamViewModel {\n private memberObservable: undefined | BaseObservableValue;\n \n constructor(options: Options) {\n super(options);\n this.init();\n }\n\n async init() {\n const room = this.getOption(\"room\");\n this.memberObservable = await room.observeMember(room.user.id);\n this.track(this.memberObservable!.subscribe(() => {\n this.emitChange(undefined);\n }));\n }\n\n get errorViewModel(): ErrorViewModel | undefined {\n return undefined;\n }\n\n get stream(): Stream | undefined {\n return this.call.localPreviewMedia?.userMedia;\n }\n\n private get call(): GroupCall {\n return this.getOption(\"call\");\n }\n\n get isCameraMuted(): boolean {\n return this.call.muteSettings?.camera ?? true;\n }\n\n get isMicrophoneMuted(): boolean {\n return this.call.muteSettings?.microphone ?? true;\n }\n\n get avatarLetter(): string {\n const member = this.memberObservable?.get();\n if (member) {\n return avatarInitials(member.name);\n } else {\n return this.getOption(\"room\").user.id;\n }\n }\n\n get avatarColorNumber(): number {\n return getIdentifierColorNumber(this.getOption(\"room\").user.id);\n }\n\n avatarUrl(size: number): string | undefined {\n const member = this.memberObservable?.get();\n if (member) {\n return getAvatarHttpUrl(member.avatarUrl, size, this.platform, this.getOption(\"room\").mediaRepository);\n }\n }\n\n get avatarTitle(): string {\n const member = this.memberObservable?.get();\n if (member) {\n return member.name;\n } else {\n return this.getOption(\"room\").user.id;\n }\n }\n\n compare(other: IStreamViewModel): number {\n // I always come first.\n return -1;\n }\n}\n\ntype MemberOptions = BaseOptions & {\n member: Member,\n mediaRepository: MediaRepository,\n};\n\nexport class CallMemberViewModel extends ErrorReportViewModel> implements IStreamViewModel {\n get stream(): Stream | undefined {\n return this.member.remoteMedia?.userMedia;\n }\n\n private get member(): Member {\n return this.getOption(\"member\");\n }\n\n get isCameraMuted(): boolean {\n return this.member.remoteMuteSettings?.camera ?? true;\n }\n\n get isMicrophoneMuted(): boolean {\n return this.member.remoteMuteSettings?.microphone ?? true;\n }\n\n get avatarLetter(): string {\n return avatarInitials(this.member.member.name);\n }\n\n get avatarColorNumber(): number {\n return getIdentifierColorNumber(this.member.userId);\n }\n\n avatarUrl(size: number): string | undefined {\n const {avatarUrl} = this.member.member;\n const mediaRepository = this.getOption(\"mediaRepository\");\n return getAvatarHttpUrl(avatarUrl, size, this.platform, mediaRepository);\n }\n\n get avatarTitle(): string {\n return this.member.member.name;\n }\n\n onUpdate() {\n this.mapMemberSyncErrorIfNeeded();\n }\n\n private mapMemberSyncErrorIfNeeded() {\n if (this.member.error) {\n this.reportError(this.member.error);\n }\n }\n\n compare(other: IStreamViewModel): number {\n if (other instanceof CallMemberViewModel) {\n const myUserId = this.member.member.userId;\n const otherUserId = other.member.member.userId;\n if(myUserId === otherUserId) {\n return 0;\n }\n return myUserId < otherUserId ? -1 : 1;\n } else {\n return -other.compare(this);\n }\n }\n}\n\nexport interface IStreamViewModel extends AvatarSource, ViewModel {\n get stream(): Stream | undefined;\n get isCameraMuted(): boolean;\n get isMicrophoneMuted(): boolean;\n get errorViewModel(): ErrorViewModel | undefined;\n compare(other: IStreamViewModel): number;\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexport function imageToInfo(image) {\n return {\n w: image.width,\n h: image.height,\n mimetype: image.blob.mimeType,\n size: image.blob.size\n };\n}\n","/*\nCopyright 2022 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {SDPStreamMetadataPurpose} from \"./callEventTypes\";\nimport {Stream} from \"../../platform/types/MediaDevices\";\nimport {SDPStreamMetadata} from \"./callEventTypes\";\nimport {getStreamVideoTrack, getStreamAudioTrack} from \"./common\";\n\nexport class LocalMedia {\n\n constructor(\n public readonly userMedia?: Stream,\n public readonly screenShare?: Stream,\n public readonly dataChannelOptions?: RTCDataChannelInit,\n ) {}\n\n withUserMedia(stream: Stream) {\n return new LocalMedia(stream, this.screenShare?.clone(), this.dataChannelOptions);\n }\n\n withScreenShare(stream: Stream) {\n return new LocalMedia(this.userMedia?.clone(), stream, this.dataChannelOptions);\n }\n\n withDataChannel(options: RTCDataChannelInit): LocalMedia {\n return new LocalMedia(this.userMedia?.clone(), this.screenShare?.clone(), options);\n }\n\n /**\n * Create an instance of LocalMedia without audio track (for user preview)\n */\n asPreview(): LocalMedia {\n const media = this.clone();\n const userMedia = media.userMedia;\n if (userMedia && userMedia.getVideoTracks().length > 0) {\n const audioTrack = getStreamAudioTrack(userMedia);\n if (audioTrack) {\n audioTrack.stop();\n userMedia.removeTrack(audioTrack);\n }\n }\n return media;\n }\n\n /** @internal */\n replaceClone(oldClone: LocalMedia | undefined, oldOriginal: LocalMedia | undefined): LocalMedia {\n const cloneOrAdoptStream = (oldOriginalStream: Stream | undefined, oldCloneStream: Stream | undefined, newStream: Stream | undefined): Stream | undefined => {\n let stream;\n if (oldOriginalStream?.id === newStream?.id) {\n return oldCloneStream;\n } else {\n return newStream?.clone();\n }\n }\n return new LocalMedia(\n cloneOrAdoptStream(oldOriginal?.userMedia, oldClone?.userMedia, this.userMedia),\n cloneOrAdoptStream(oldOriginal?.screenShare, oldClone?.screenShare, this.screenShare),\n this.dataChannelOptions\n );\n }\n\n /** @internal */\n clone(): LocalMedia {\n return new LocalMedia(this.userMedia?.clone(),this.screenShare?.clone(), this.dataChannelOptions);\n }\n \n dispose() {\n getStreamAudioTrack(this.userMedia)?.stop();\n getStreamVideoTrack(this.userMedia)?.stop();\n getStreamVideoTrack(this.screenShare)?.stop();\n }\n}\n","import {ITile, TileShape, EmitUpdateFn} from \"./ITile\";\nimport {UpdateAction} from \"../UpdateAction\";\nimport {BaseEntry} from \"../../../../../matrix/room/timeline/entries/BaseEntry\";\nimport {BaseEventEntry} from \"../../../../../matrix/room/timeline/entries/BaseEventEntry\";\nimport {ViewModel} from \"../../../../ViewModel\";\nimport type {SegmentType} from \"../../../../navigation\";\nimport type {Options} from \"../../../../ViewModel\";\n\n/**\n * edge cases:\n * - be able to remove the tile in response to the sibling changing,\n * probably by letting updateNextSibling/updatePreviousSibling\n * return an UpdateAction and change TilesCollection accordingly.\n * this is relevant when next becomes undefined there when\n * a pending event is removed on remote echo.\n * */\n\nexport class DateTile extends ViewModel> implements ITile {\n private _emitUpdate?: EmitUpdateFn;\n private _dateString?: string;\n private _machineReadableString?: string;\n \n constructor(private _firstTileInDay: ITile, options: Options) {\n super(options);\n }\n\n setUpdateEmit(emitUpdate: EmitUpdateFn): void {\n this._emitUpdate = emitUpdate;\n }\n\n get upperEntry(): BaseEventEntry {\n return this.refEntry;\n }\n\n get lowerEntry(): BaseEventEntry {\n return this.refEntry;\n }\n\n /** the entry reference by this datetile, e.g. the entry of the first tile for this day */\n private get refEntry(): BaseEventEntry {\n // lowerEntry is the first entry... i think?\n // so given the date header always comes before,\n // this is our closest entry.\n return this._firstTileInDay.lowerEntry;\n }\n\n compare(tile: ITile): number {\n return this.compareEntry(tile.upperEntry);\n }\n\n get relativeDate(): string {\n if (!this._dateString) {\n this._dateString = this.timeFormatter.formatRelativeDate(new Date(this.refEntry.timestamp));\n }\n return this._dateString;\n }\n\n get machineReadableDate(): string {\n if (!this._machineReadableString) {\n this._machineReadableString = this.timeFormatter.formatMachineReadableDate(new Date(this.refEntry.timestamp));\n }\n return this._machineReadableString;\n }\n\n get shape(): TileShape {\n return TileShape.DateHeader;\n }\n\n get needsDateSeparator(): boolean {\n return false;\n }\n\n createDateSeparator(): undefined {\n return undefined;\n }\n\n/**\n * _findTileIdx in TilesCollection should never return\n * the index of a DateTile as that is mainly used\n * for mapping incoming event indices coming from the Timeline\n * to the tile index to propage the event.\n * This is not a path that is relevant to date headers as they\n * are added as a side-effect of adding other tiles and are generally\n * not updated (only removed in some cases). _findTileIdx is also\n * used for emitting spontanous updates, but that should also not be\n * needed for a DateTile.\n * The problem is basically that _findTileIdx maps an entry to\n * a tile, and DateTile adopts the entry of it's sibling tile (_firstTileInDay)\n * so now we have the entry pointing to two tiles. So we should avoid\n * returning the DateTile itself from the compare method.\n * We will always return -1 or 1 from here to signal an entry comes before or after us,\n * never 0\n * */\n compareEntry(entry: BaseEntry): number {\n const result = this.refEntry.compare(entry);\n if (result === 0) {\n // if it's a match for the reference entry (e.g. _firstTileInDay),\n // say it comes after us as the date tile always comes at the top\n // of the day.\n return -1;\n }\n // otherwise, assume the given entry is never for ourselves\n // as we don't have our own entry, we only borrow one from _firstTileInDay\n return result;\n }\n\n // update received for already included (falls within sort keys) entry\n updateEntry(entry, param): UpdateAction {\n return UpdateAction.Nothing();\n }\n\n // return whether the tile should be removed\n // as SimpleTile only has one entry, the tile should be removed\n removeEntry(entry: BaseEntry): boolean {\n return false;\n }\n\n // SimpleTile can only contain 1 entry\n tryIncludeEntry(): boolean {\n return false;\n }\n\n /**\n * This tile needs to do the comparison between tiles, as it uses the entry\n * from another tile to determine its sorting order.\n * */\n get comparisonIsNotCommutative(): boolean {\n return true;\n }\n\n // let item know it has a new sibling\n updatePreviousSibling(prev: ITile | undefined): void {\n // forward the sibling update to our next tile, so it is informed\n // about it's previous sibling beyond the date header (which is it's direct previous sibling)\n // so it can recalculate whether it still needs a date header\n this._firstTileInDay.updatePreviousSibling(prev);\n }\n\n // let item know it has a new sibling\n updateNextSibling(next: ITile | undefined): UpdateAction {\n if(!next) {\n // If we are the DateTile for the last tile in the timeline,\n // and that tile gets removed, next would be undefined\n // and this DateTile would be removed as well,\n // so do nothing\n return;\n }\n this._firstTileInDay = next;\n const prevDateString = this._dateString;\n this._dateString = undefined;\n this._machineReadableString = undefined;\n if (prevDateString && prevDateString !== this.relativeDate) {\n this._emitUpdate?.(this, \"relativeDate\");\n }\n }\n\n notifyVisible(): void {\n // trigger sticky logic here?\n }\n\n dispose(): void {\n\n }\n}\n\nimport { EventEntry } from \"../../../../../matrix/room/timeline/entries/EventEntry.js\";\nimport { SimpleTile } from \"./SimpleTile\";\n\nexport function tests() {\n return {\n \"date tile sorts before reference tile\": assert => {\n //@ts-ignore\n const a = new SimpleTile(new EventEntry({\n event: {},\n eventIndex: 2,\n fragmentId: 1\n }, undefined), {});\n //@ts-ignore\n const b = new SimpleTile(new EventEntry({\n event: {},\n eventIndex: 3,\n fragmentId: 1\n }, undefined), {});\n const d = new DateTile(b, {} as any);\n const tiles = [d, b, a];\n tiles.sort((a, b) => a.compare(b));\n assert.equal(tiles[0], a);\n assert.equal(tiles[1], d);\n assert.equal(tiles[2], b);\n }\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {UpdateAction} from \"../UpdateAction.js\";\nimport {ErrorReportViewModel} from \"../../../../ErrorReportViewModel\";\nimport {ITile, TileShape} from \"./ITile\";\nimport {SendStatus} from \"../../../../../matrix/room/sending/PendingEvent.js\";\nimport {DateTile} from \"./DateTile\";\nimport {Options as BaseOptions} from \"../../../../ErrorReportViewModel\";\nimport {EventEntry} from \"../../../../../matrix/room/timeline/entries/EventEntry.js\";\nimport type {RoomViewModel} from \"../../RoomViewModel.js\";\nimport type {Timeline} from \"../../../../../matrix/room/timeline/Timeline.js\";\nimport type {SegmentType} from \"../../../../navigation/index.js\";\n\nexport type Options = {\n roomVM: RoomViewModel; \n timeline: Timeline;\n} & BaseOptions;\n\ntype EmitUpdate = (tile: SimpleTile, params: any) => void; \n\n\nexport abstract class SimpleTile extends ErrorReportViewModel> implements ITile {\n private _entry: EventEntry;\n private _date?: Date;\n private _needsDateSeparator: boolean = false;\n private _emitUpdate?: EmitUpdate;\n \n constructor(entry: EventEntry, options: Options) {\n super(options);\n this._entry = entry;\n this._date = this._entry.timestamp ? new Date(this._entry.timestamp) : undefined;\n }\n // view model props for all subclasses\n // hmmm, could also do instanceof ... ?\n // \"gap\" | \"message\" | \"image\" | ... ?\n abstract get shape(): TileShape;\n\n // don't show display name / avatar\n // probably only for BaseMessageTiles of some sort?\n get isContinuation() {\n return false;\n }\n\n get needsDateSeparator() {\n return this._needsDateSeparator;\n }\n\n createDateSeparator() {\n return new DateTile(this, this.childOptions({}));\n }\n\n _updateDateSeparator(prev: SimpleTile) {\n if (prev && prev._date && this._date) {\n this._needsDateSeparator = prev._date.getFullYear() !== this._date.getFullYear() ||\n prev._date.getMonth() !== this._date.getMonth() ||\n prev._date.getDate() !== this._date.getDate();\n } else {\n this._needsDateSeparator = !!this._date;\n }\n }\n\n get id() {\n return this._entry.asEventKey();\n }\n\n get eventId() {\n return this._entry.id;\n }\n\n get isPending() {\n return this._entry.isPending;\n }\n\n get isUnsent() {\n return this._entry.isPending && this._entry.pendingEvent.status !== SendStatus.Sent;\n }\n\n get canAbortSending() {\n return this._entry.isPending &&\n !this._entry.pendingEvent.hasStartedSending;\n }\n\n async abortSending(): Promise {\n await this._entry.pendingEvent?.abort();\n }\n\n // TilesCollection contract below\n setUpdateEmit(emitUpdate?: EmitUpdate) {\n this._emitUpdate = emitUpdate;\n }\n\n /** overrides the emitChange in ViewModel to also emit the update over the tiles collection */\n emitChange(changedProps) {\n if (this._emitUpdate) {\n // it can happen that after some network call\n // we switched away from the room and the response\n // comes in, triggering an emitChange in a tile that\n // has been disposed already (and hence the change\n // callback has been cleared by dispose) We should just ignore this.\n this._emitUpdate(this, changedProps);\n }\n super.emitChange(changedProps);\n }\n\n get upperEntry() {\n return this._entry;\n }\n\n get lowerEntry() {\n return this._entry;\n }\n\n get comparisonIsNotCommutative() {\n return false;\n }\n\n compare(tile: SimpleTile) {\n if (tile.comparisonIsNotCommutative) {\n return -tile.compare(this);\n } else {\n return this.upperEntry.compare(tile.upperEntry);\n }\n }\n\n compareEntry(entry: EventEntry) {\n return this._entry.compare(entry);\n }\n\n // update received for already included (falls within sort keys) entry\n updateEntry(entry, param) {\n const renderedAsRedacted = this.shape === \"redacted\";\n if (!entry.isGap && entry.isRedacted !== renderedAsRedacted) {\n // recreate the tile if the entry becomes redacted\n return UpdateAction.Replace(\"shape\");\n } else {\n this._entry = entry;\n return UpdateAction.Update(param);\n }\n }\n\n // return whether the tile should be removed\n // as SimpleTile only has one entry, the tile should be removed\n removeEntry(/*entry*/) {\n return true;\n }\n\n // SimpleTile can only contain 1 entry\n tryIncludeEntry() {\n return false;\n }\n // let item know it has a new sibling\n updatePreviousSibling(prev) {\n if (prev?.shape !== TileShape.DateHeader) {\n this._updateDateSeparator(prev);\n }\n }\n\n // let item know it has a new sibling\n updateNextSibling(/*next*/) {\n \n }\n\n notifyVisible() {}\n\n dispose() {\n this.setUpdateEmit(undefined);\n super.dispose();\n }\n // TilesCollection contract above\n\n get _room() {\n return this._roomVM.room;\n }\n\n get _roomVM() {\n return this.options.roomVM;\n }\n\n get _timeline() {\n return this.options.timeline;\n }\n\n get _powerLevels() {\n return this._timeline.powerLevels;\n }\n\n get _ownMember() {\n return this.options.timeline.me;\n }\n\n get displayName() {\n return this._entry.displayName || this.sender;\n }\n\n get sender() {\n return this._entry.sender;\n }\n}\n\n\nexport function tests() {\n return {\n \"needsDateSeparator is false when previous sibling is for same date\": assert => {\n const fridayEntry = new EventEntry({\n event: {\n origin_server_ts: 1669376446222,\n type: \"m.room.message\",\n content: {}\n }\n }, undefined);\n const thursdayEntry = new EventEntry({\n event: {\n origin_server_ts: fridayEntry.timestamp - (60 * 60 * 8 * 1000),\n type: \"m.room.message\",\n content: {}\n }\n }, undefined);\n //@ts-ignore\n const fridayTile = new SimpleTile(fridayEntry, {});\n //@ts-ignore\n const thursdayTile = new SimpleTile(thursdayEntry, {});\n assert.equal(fridayTile.needsDateSeparator, false);\n fridayTile.updatePreviousSibling(thursdayTile);\n assert.equal(fridayTile.needsDateSeparator, false);\n },\n \"needsDateSeparator is true when previous sibling is for different date\": assert => {\n const fridayEntry = new EventEntry({\n event: {\n origin_server_ts: 1669376446222,\n type: \"m.room.message\",\n content: {}\n }\n }, undefined);\n const thursdayEntry = new EventEntry({\n event: {\n origin_server_ts: fridayEntry.timestamp - (60 * 60 * 24 * 1000),\n type: \"m.room.message\",\n content: {}\n }\n }, undefined);\n //@ts-ignore\n const fridayTile = new SimpleTile(fridayEntry, {});\n //@ts-ignore\n const thursdayTile = new SimpleTile(thursdayEntry, {});\n assert.equal(fridayTile.needsDateSeparator, false);\n fridayTile.updatePreviousSibling(thursdayTile);\n assert.equal(fridayTile.needsDateSeparator, true);\n },\n \"needsDateSeparator is true when previous sibling is undefined\": assert => {\n const fridayEntry = new EventEntry({\n event: {\n origin_server_ts: 1669376446222,\n type: \"m.room.message\",\n content: {}\n }\n }, undefined);\n //@ts-ignore\n const fridayTile = new SimpleTile(fridayEntry, {});\n assert.equal(fridayTile.needsDateSeparator, false);\n fridayTile.updatePreviousSibling(undefined);\n assert.equal(fridayTile.needsDateSeparator, true);\n },\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {SimpleTile} from \"./SimpleTile\";\nimport {UpdateAction} from \"../UpdateAction.js\";\nimport {ConnectionError} from \"../../../../../matrix/error.js\";\nimport {ConnectionStatus} from \"../../../../../matrix/net/Reconnector\";\n\n// TODO: should this become an ITile and SimpleTile become EventTile?\nexport class GapTile extends SimpleTile {\n constructor(entry, options) {\n super(entry, options);\n this._loading = false;\n this._waitingForConnection = false;\n this._isAtTop = true;\n this._siblingChanged = false;\n }\n\n get needsDateSeparator() {\n return false;\n }\n\n async fill(isRetrying = false) {\n if (!this._loading && !this._entry.edgeReached) {\n this._loading = true;\n this.emitChange(\"isLoading\");\n try {\n await this._room.fillGap(this._entry, 10);\n } catch (err) {\n if (err instanceof ConnectionError) {\n await this._waitForReconnection();\n if (!isRetrying) {\n // retry after the connection comes back\n // if this wasn't already a retry after coming back online\n return await this.fill(true);\n } else {\n return false;\n }\n } else {\n this.reportError(err);\n return false;\n }\n } finally {\n this._loading = false;\n this.emitChange(\"isLoading\");\n }\n return true;\n }\n return false;\n }\n\n async notifyVisible() {\n // if any error happened before (apart from being offline),\n // let the user dismiss the error before trying to backfill\n // again so we don't try to do backfill the don't succeed\n // in quick succession\n if (this.errorViewModel) {\n return;\n }\n // we do (up to 10) backfills while no new tiles have been added to the timeline\n // because notifyVisible won't be called again until something gets added to the timeline\n let depth = 0;\n let canFillMore;\n this._siblingChanged = false;\n do {\n canFillMore = await this.fill();\n depth = depth + 1;\n } while (depth < 10 && !this._siblingChanged && canFillMore && !this.isDisposed);\n }\n\n get isAtTop() {\n return this._isAtTop;\n }\n\n updatePreviousSibling(prev) {\n super.updatePreviousSibling(prev);\n const isAtTop = !prev;\n if (this._isAtTop !== isAtTop) {\n this._isAtTop = isAtTop;\n this.emitChange(\"isAtTop\");\n }\n this._siblingChanged = true;\n }\n\n updateNextSibling() {\n // if the sibling of the gap changed while calling room.fill(),\n // we intepret this as at least one new tile has been added to\n // the timeline. See notifyVisible why this is important.\n this._siblingChanged = true;\n }\n\n updateEntry(entry, params) {\n super.updateEntry(entry, params);\n if (!entry.isGap) {\n return UpdateAction.Remove();\n } else {\n return UpdateAction.Nothing();\n }\n }\n\n async _waitForReconnection() {\n this._waitingForConnection = true;\n this.emitUpdate(\"status\");\n await this.options.client.reconnector.connectionStatus.waitFor(status => status === ConnectionStatus.Online).promise;\n this._waitingForConnection = false;\n this.emitUpdate(\"status\");\n }\n\n get shape() {\n return \"gap\";\n }\n\n get isLoading() {\n return this._loading;\n }\n\n get showSpinner() {\n return this.isLoading || this._waitingForConnection;\n }\n\n get status() {\n const dir = this._entry.prev_batch ? \"previous\" : \"next\";\n if (this._waitingForConnection) {\n return \"Waiting for connection…\";\n } else if (this.errorViewModel) {\n return `Could not load ${dir} messages`;\n } else if (this.isLoading) {\n return \"Loading more messages…\";\n } else {\n return \"Gave up loading more messages\";\n }\n }\n}\n\nimport {FragmentBoundaryEntry} from \"../../../../../matrix/room/timeline/entries/FragmentBoundaryEntry.js\";\nexport function tests() {\n return {\n \"uses updated token to fill\": async assert => {\n let currentToken = 5;\n const fragment = {\n id: 0,\n previousToken: currentToken,\n roomId: \"!abc\"\n };\n const room = {\n async fillGap(entry) {\n assert.equal(entry.token, currentToken);\n currentToken += 1;\n const newEntry = entry.withUpdatedFragment(Object.assign({}, fragment, {previousToken: currentToken}));\n tile.updateEntry(newEntry);\n }\n };\n const tile = new GapTile(new FragmentBoundaryEntry(fragment, true), {roomVM: {room}});\n await tile.fill();\n await tile.fill();\n await tile.fill();\n assert.equal(currentToken, 8);\n }\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nimport {ObservableMap} from \"../../../../observable\";\n\nexport class ReactionsViewModel {\n constructor(parentTile) {\n this._parentTile = parentTile;\n this._map = new ObservableMap();\n this._reactions = this._map.sortValues((a, b) => a._compare(b));\n }\n\n /** @package */\n update(annotations, pendingAnnotations) {\n if (annotations) {\n for (const key in annotations) {\n if (annotations.hasOwnProperty(key)) {\n const annotation = annotations[key];\n const reaction = this._map.get(key);\n if (reaction) {\n if (reaction._tryUpdate(annotation)) {\n this._map.update(key);\n }\n } else {\n this._map.add(key, new ReactionViewModel(key, annotation, null, this._parentTile));\n }\n }\n }\n }\n if (pendingAnnotations) {\n for (const [key, annotation] of pendingAnnotations.entries()) {\n const reaction = this._map.get(key);\n if (reaction) {\n reaction._tryUpdatePending(annotation);\n this._map.update(key);\n } else {\n this._map.add(key, new ReactionViewModel(key, null, annotation, this._parentTile));\n }\n }\n }\n for (const existingKey of this._map.keys()) {\n const hasPending = pendingAnnotations?.has(existingKey);\n const hasRemote = annotations?.hasOwnProperty(existingKey);\n if (!hasRemote && !hasPending) {\n this._map.remove(existingKey);\n } else if (!hasRemote) {\n if (this._map.get(existingKey)._tryUpdate(null)) {\n this._map.update(existingKey);\n }\n } else if (!hasPending) {\n if (this._map.get(existingKey)._tryUpdatePending(null)) {\n this._map.update(existingKey);\n }\n }\n }\n }\n\n get reactions() {\n return this._reactions;\n }\n\n getReaction(key) {\n return this._map.get(key);\n }\n}\n\nclass ReactionViewModel {\n constructor(key, annotation, pending, parentTile) {\n this._key = key;\n this._annotation = annotation;\n this._pending = pending;\n this._parentTile = parentTile;\n this._isToggling = false;\n }\n\n _tryUpdate(annotation) {\n const oneSetAndOtherNot = !!this._annotation !== !!annotation;\n const bothSet = this._annotation && annotation;\n const areDifferent = bothSet && (\n annotation.me !== this._annotation.me ||\n annotation.count !== this._annotation.count ||\n annotation.firstTimestamp !== this._annotation.firstTimestamp\n );\n if (oneSetAndOtherNot || areDifferent) {\n this._annotation = annotation;\n return true;\n }\n return false;\n }\n\n _tryUpdatePending(pending) {\n if (!pending && !this._pending) {\n return false;\n }\n this._pending = pending;\n return true;\n }\n\n get key() {\n return this._key;\n }\n\n get count() {\n return (this._pending?.count || 0) + (this._annotation?.count || 0);\n }\n\n get isPending() {\n return this._pending !== null;\n }\n\n /** @returns {boolean} true if the user has a (pending) reaction\n * already for this key, or they have a pending redaction for\n * the reaction, false if there is nothing pending and\n * the user has not reacted yet. */\n get isActive() {\n return this._annotation?.me || this.isPending;\n }\n\n get firstTimestamp() {\n let ts = Number.MAX_SAFE_INTEGER;\n if (this._annotation) {\n ts = Math.min(ts, this._annotation.firstTimestamp);\n }\n if (this._pending) {\n ts = Math.min(ts, this._pending.firstTimestamp);\n }\n return ts;\n }\n\n _compare(other) {\n // the comparator is also used to test for equality by sortValues, if the comparison returns 0\n // given that the firstTimestamp isn't set anymore when the last reaction is removed,\n // the remove event wouldn't be able to find the correct index anymore. So special case equality.\n if (other === this) {\n return 0;\n }\n if (this.count !== other.count) {\n return other.count - this.count;\n } else {\n const cmp = this.firstTimestamp - other.firstTimestamp;\n if (cmp === 0) {\n return this.key < other.key ? -1 : 1;\n }\n return cmp;\n }\n }\n\n async toggle(log = null) {\n if (this._isToggling) {\n console.log(\"busy toggling reaction already\");\n return;\n }\n this._isToggling = true;\n try {\n await this._parentTile.toggleReaction(this.key, log);\n } finally {\n this._isToggling = false;\n }\n }\n}\n\n// matrix classes uses in the integration test below\nimport {User} from \"../../../../matrix/User.js\";\nimport {SendQueue} from \"../../../../matrix/room/sending/SendQueue.js\";\nimport {Timeline} from \"../../../../matrix/room/timeline/Timeline.js\";\nimport {EventEntry} from \"../../../../matrix/room/timeline/entries/EventEntry.js\";\nimport {RelationWriter} from \"../../../../matrix/room/timeline/persistence/RelationWriter.js\";\nimport {FragmentIdComparer} from \"../../../../matrix/room/timeline/FragmentIdComparer.js\";\nimport {createAnnotation} from \"../../../../matrix/room/timeline/relations.js\";\n// mocks\nimport {Clock as MockClock} from \"../../../../mocks/Clock.js\";\nimport {createMockStorage} from \"../../../../mocks/Storage\";\nimport {ListObserver} from \"../../../../mocks/ListObserver.js\";\nimport {createEvent, withTextBody, withContent} from \"../../../../mocks/event.js\";\nimport {NullLogItem, NullLogger} from \"../../../../logging/NullLogger\";\nimport {HomeServer as MockHomeServer} from \"../../../../mocks/HomeServer.js\";\n// other imports\nimport {BaseMessageTile} from \"./tiles/BaseMessageTile.js\";\nimport {MappedList} from \"../../../../observable/list/MappedList\";\nimport {ObservableValue} from \"../../../../observable/value\";\nimport {PowerLevels} from \"../../../../matrix/room/PowerLevels.js\";\n\nexport function tests() {\n const fragmentIdComparer = new FragmentIdComparer([]);\n const roomId = \"$abc\";\n const alice = \"@alice:hs.tld\";\n const bob = \"@bob:hs.tld\";\n const logger = new NullLogger();\n\n function findInIterarable(it, predicate) {\n let i = 0;\n for (const item of it) {\n if (predicate(item, i)) {\n return item;\n }\n i += 1;\n }\n throw new Error(\"not found\");\n }\n\n function mapMessageEntriesToBaseMessageTile(timeline, queue) {\n const room = {\n id: roomId,\n sendEvent(eventType, content, attachments, log) {\n return queue.enqueueEvent(eventType, content, attachments, log);\n },\n sendRedaction(eventIdOrTxnId, reason, log) {\n return queue.enqueueRedaction(eventIdOrTxnId, reason, log);\n }\n };\n const tiles = new MappedList(timeline.entries, entry => {\n if (entry.eventType === \"m.room.message\") {\n return new BaseMessageTile(entry, {roomVM: {room}, timeline, platform: {logger}});\n }\n return null;\n }, (tile, params, entry) => tile?.updateEntry(entry, params, function () {}));\n return tiles;\n }\n\n return {\n // these are more an integration test than unit tests,\n // but fully test the local echo when toggling and\n // the correct send queue modifications happen\n \"toggling reaction with own remote reaction\": async assert => {\n // 1. put message and reaction in storage\n const messageEvent = withTextBody(\"Dogs > Cats\", createEvent(\"m.room.message\", \"!abc\", bob));\n const myReactionEvent = withContent(createAnnotation(messageEvent.event_id, \"🐶\"), createEvent(\"m.reaction\", \"!def\", alice));\n myReactionEvent.origin_server_ts = 5;\n const myReactionEntry = new EventEntry({event: myReactionEvent, roomId}, fragmentIdComparer);\n const relationWriter = new RelationWriter({roomId, ownUserId: alice, fragmentIdComparer});\n const storage = await createMockStorage();\n const txn = await storage.readWriteTxn([\n storage.storeNames.timelineEvents,\n storage.storeNames.timelineRelations,\n storage.storeNames.timelineFragments\n ]);\n txn.timelineFragments.add({id: 1, roomId});\n txn.timelineEvents.tryInsert({fragmentId: 1, eventIndex: 2, event: messageEvent, roomId}, new NullLogItem());\n txn.timelineEvents.tryInsert({fragmentId: 1, eventIndex: 3, event: myReactionEvent, roomId}, new NullLogItem());\n await relationWriter.writeRelation(myReactionEntry, txn, new NullLogItem());\n await txn.complete();\n // 2. setup queue & timeline\n const queue = new SendQueue({roomId, storage, hsApi: new MockHomeServer().api});\n const powerLevelsObservable = new ObservableValue(new PowerLevels({ ownUserId: alice, membership: \"join\" }));\n const timeline = new Timeline({\n roomId,\n storage,\n fragmentIdComparer,\n clock: new MockClock(),\n pendingEvents: queue.pendingEvents,\n powerLevelsObservable\n });\n // 3. load the timeline, which will load the message with the reaction\n await timeline.load(new User(alice), \"join\", new NullLogItem());\n const tiles = mapMessageEntriesToBaseMessageTile(timeline, queue);\n // 4. subscribe to the queue to observe, and the tiles (so we can safely iterate)\n const queueObserver = new ListObserver();\n queue.pendingEvents.subscribe(queueObserver);\n tiles.subscribe(new ListObserver());\n const messageTile = findInIterarable(tiles, e => !!e); // the other entries are mapped to null\n const reactionVM = messageTile.reactions.getReaction(\"🐶\");\n // 5. test toggling\n // make sure the preexisting reaction is counted\n assert.equal(reactionVM.count, 1);\n // 5.1. unset reaction, should redact the pre-existing reaction\n await reactionVM.toggle();\n {\n assert.equal(reactionVM.count, 0);\n const {value: redaction, type} = await queueObserver.next();\n assert.equal(\"add\", type);\n assert.equal(redaction.eventType, \"m.room.redaction\");\n assert.equal(redaction.relatedEventId, myReactionEntry.id);\n // SendQueue puts redaction in sending status, as it is first in the queue\n assert.equal(\"update\", (await queueObserver.next()).type);\n }\n // 5.2. set reaction, should send a new reaction as the redaction is already sending\n await reactionVM.toggle();\n let reactionIndex;\n {\n assert.equal(reactionVM.count, 1);\n const {value: reaction, type, index} = await queueObserver.next();\n assert.equal(\"add\", type);\n assert.equal(reaction.eventType, \"m.reaction\");\n assert.equal(reaction.relatedEventId, messageEvent.event_id);\n reactionIndex = index;\n }\n // 5.3. unset reaction, should abort the previous pending reaction as it hasn't started sending yet\n await reactionVM.toggle();\n {\n assert.equal(reactionVM.count, 0);\n const {index, type} = await queueObserver.next();\n assert.equal(\"remove\", type);\n assert.equal(reactionIndex, index);\n }\n },\n \"toggling reaction without own remote reaction\": async assert => {\n // 1. put message in storage\n const messageEvent = withTextBody(\"Dogs > Cats\", createEvent(\"m.room.message\", \"!abc\", bob));\n const storage = await createMockStorage();\n\n const txn = await storage.readWriteTxn([\n storage.storeNames.timelineEvents,\n storage.storeNames.timelineFragments\n ]);\n txn.timelineFragments.add({id: 1, roomId});\n txn.timelineEvents.tryInsert({fragmentId: 1, eventIndex: 2, event: messageEvent, roomId}, new NullLogItem());\n await txn.complete();\n // 2. setup queue & timeline\n const queue = new SendQueue({roomId, storage, hsApi: new MockHomeServer().api});\n const powerLevelsObservable = new ObservableValue(new PowerLevels({ ownUserId: alice, membership: \"join\" }));\n const timeline = new Timeline({roomId, storage, fragmentIdComparer,\n clock: new MockClock(), pendingEvents: queue.pendingEvents, powerLevelsObservable});\n\n // 3. load the timeline, which will load the message with the reaction\n await timeline.load(new User(alice), \"join\", new NullLogItem());\n const tiles = mapMessageEntriesToBaseMessageTile(timeline, queue);\n // 4. subscribe to the queue to observe, and the tiles (so we can safely iterate)\n const queueObserver = new ListObserver();\n queue.pendingEvents.subscribe(queueObserver);\n tiles.subscribe(new ListObserver());\n const messageTile = findInIterarable(tiles, e => !!e); // the other entries are mapped to null\n // 5. test toggling\n assert.equal(messageTile.reactions, null);\n // 5.1. set reaction, should send a new reaction as there is none yet\n await messageTile.react(\"🐶\");\n // now there should be a reactions view model\n const reactionVM = messageTile.reactions.getReaction(\"🐶\");\n let reactionTxnId;\n {\n assert.equal(reactionVM.count, 1);\n const {value: reaction, type} = await queueObserver.next();\n assert.equal(\"add\", type);\n assert.equal(reaction.eventType, \"m.reaction\");\n assert.equal(reaction.relatedEventId, messageEvent.event_id);\n // SendQueue puts reaction in sending status, as it is first in the queue\n assert.equal(\"update\", (await queueObserver.next()).type);\n reactionTxnId = reaction.txnId;\n }\n // 5.2. unset reaction, should redact the previous pending reaction as it has started sending already\n let redactionIndex;\n await reactionVM.toggle();\n {\n assert.equal(reactionVM.count, 0);\n const {value: redaction, type, index} = await queueObserver.next();\n assert.equal(\"add\", type);\n assert.equal(redaction.eventType, \"m.room.redaction\");\n assert.equal(redaction.relatedTxnId, reactionTxnId);\n redactionIndex = index;\n }\n // 5.3. set reaction, should abort the previous pending redaction as it hasn't started sending yet\n await reactionVM.toggle();\n {\n assert.equal(reactionVM.count, 1);\n const {index, type} = await queueObserver.next();\n assert.equal(\"remove\", type);\n assert.equal(redactionIndex, index);\n redactionIndex = index;\n }\n },\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {SimpleTile} from \"./SimpleTile\";\nimport {ReactionsViewModel} from \"../ReactionsViewModel.js\";\nimport {getIdentifierColorNumber, avatarInitials, getAvatarHttpUrl} from \"../../../../avatar\";\n\n\nexport class BaseMessageTile extends SimpleTile {\n constructor(entry, options) {\n super(entry, options);\n this._isContinuation = false;\n this._reactions = null;\n this._replyTile = null;\n if (this._entry.annotations || this._entry.pendingAnnotations) {\n this._updateReactions();\n }\n this._updateReplyTileIfNeeded(undefined);\n }\n\n notifyVisible() {\n super.notifyVisible();\n this._replyTile?.notifyVisible();\n }\n\n\n get _mediaRepository() {\n return this._room.mediaRepository;\n }\n\n get permaLink() {\n return `https://matrix.to/#/${encodeURIComponent(this._room.id)}/${encodeURIComponent(this._entry.id)}`;\n }\n\n copyPermalink() {\n this.platform.copyPlaintext(this.permaLink);\n }\n\n get senderProfileLink() {\n return `https://matrix.to/#/${encodeURIComponent(this.sender)}`;\n }\n\n get memberPanelLink() {\n return `${this.urlRouter.urlUntilSegment(\"room\")}/member/${this.sender}`;\n }\n\n // Avatar view model contract\n get avatarColorNumber() {\n return getIdentifierColorNumber(this._entry.sender);\n }\n\n avatarUrl(size) {\n return getAvatarHttpUrl(this._entry.avatarUrl, size, this.platform, this._mediaRepository);\n }\n\n get avatarLetter() {\n return avatarInitials(this.sender);\n }\n\n get avatarTitle() {\n return this.sender;\n }\n\n get time() {\n return this._date && this.timeFormatter.formatTime(this._date);\n }\n\n get isOwn() {\n return this._entry.sender === this._ownMember.userId;\n }\n\n get isContinuation() {\n return this._isContinuation;\n }\n\n get isUnverified() {\n return this._entry.isUnverified;\n }\n\n get isReply() {\n return this._entry.isReply;\n }\n\n _getContent() {\n return this._entry.content;\n }\n\n updatePreviousSibling(prev) {\n super.updatePreviousSibling(prev);\n let isContinuation = false;\n if (prev && prev instanceof BaseMessageTile && prev.sender === this.sender) {\n // timestamp is null for pending events\n const myTimestamp = this._entry.timestamp;\n const otherTimestamp = prev._entry.timestamp;\n // other message was sent less than 5min ago\n isContinuation = (myTimestamp - otherTimestamp) < (5 * 60 * 1000);\n }\n if (isContinuation !== this._isContinuation) {\n this._isContinuation = isContinuation;\n this.emitChange(\"isContinuation\");\n }\n }\n\n updateEntry(entry, param) {\n const action = super.updateEntry(entry, param);\n if (action.shouldUpdate) {\n this._updateReactions();\n }\n this._updateReplyTileIfNeeded(param);\n return action;\n }\n\n _updateReplyTileIfNeeded(param) {\n const replyEntry = this._entry.contextEntry;\n if (replyEntry) {\n // this is an update to contextEntry used for replyPreview\n const action = this._replyTile?.updateEntry(replyEntry, param);\n if (action?.shouldReplace || !this._replyTile) {\n this.disposeTracked(this._replyTile);\n const tileClassForEntry = this._options.tileClassForEntry;\n const ReplyTile = tileClassForEntry(replyEntry, this._options);\n if (ReplyTile) {\n this._replyTile = new ReplyTile(replyEntry, this._options);\n }\n }\n if(action?.shouldUpdate) {\n this._replyTile?.emitChange();\n }\n }\n }\n\n startReply() {\n this._roomVM.startReply(this._entry);\n }\n\n createReplyContent(msgtype, body) {\n return this._entry.createReplyContent(msgtype, body);\n }\n\n redact(reason, log) {\n return this._room.sendRedaction(this._entry.id, reason, log);\n }\n\n get canRedact() {\n return this._powerLevels.canRedactFromSender(this._entry.sender);\n }\n\n get reactions() {\n if (this.shape !== \"redacted\") {\n return this._reactions;\n }\n return null;\n }\n\n get canReact() {\n return this._powerLevels.canSendType(\"m.reaction\");\n }\n\n react(key, log = null) {\n return this.logger.wrapOrRun(log, \"react\", async log => {\n if (!this.canReact) {\n log.set(\"powerlevel_lacking\", true);\n return;\n }\n if (this._entry.haveAnnotation(key)) {\n log.set(\"already_reacted\", true);\n return;\n }\n const redaction = this._entry.pendingAnnotations?.get(key)?.redactionEntry;\n if (redaction && !redaction.pendingEvent.hasStartedSending) {\n log.set(\"abort_redaction\", true);\n await redaction.pendingEvent.abort();\n } else {\n await this._room.sendEvent(\"m.reaction\", this._entry.annotate(key), null, log);\n }\n });\n }\n\n redactReaction(key, log = null) {\n return this.logger.wrapOrRun(log, \"redactReaction\", async log => {\n if (!this._powerLevels.canRedactFromSender(this._ownMember.userId)) {\n log.set(\"powerlevel_lacking\", true);\n return;\n }\n if (!this._entry.haveAnnotation(key)) {\n log.set(\"not_yet_reacted\", true);\n return;\n }\n let entry = this._entry.pendingAnnotations?.get(key)?.annotationEntry;\n if (!entry) {\n entry = await this._timeline.getOwnAnnotationEntry(this._entry.id, key);\n }\n if (entry) {\n await this._room.sendRedaction(entry.id, null, log);\n } else {\n log.set(\"no_reaction\", true);\n }\n });\n }\n\n toggleReaction(key, log = null) {\n return this.logger.wrapOrRun(log, \"toggleReaction\", async log => {\n if (this._entry.haveAnnotation(key)) {\n await this.redactReaction(key, log);\n } else {\n await this.react(key, log);\n }\n });\n }\n\n _updateReactions() {\n const {annotations, pendingAnnotations} = this._entry;\n if (!annotations && !pendingAnnotations) {\n if (this._reactions) {\n this._reactions = null;\n }\n } else {\n if (!this._reactions) {\n this._reactions = new ReactionsViewModel(this);\n }\n this._reactions.update(annotations, pendingAnnotations);\n }\n }\n\n get replyTile() {\n if (!this._entry.contextEventId) {\n return null;\n }\n return this._replyTile;\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/*\nThe regex is split into component strings;\nmeaning that any escapes (\\) must also\nbe escaped.\n*/\nconst scheme = \"(?:https|http|ftp):\\\\/\\\\/\";\nconst noSpaceNorPunctuation = \"[^\\\\s.,?!)]\";\nconst hostCharacter = \"[a-zA-Z0-9:.\\\\[\\\\]-]\";\n\n/*\nUsing non-consuming group here to combine two criteria for the last character.\nSee point 1 below.\n*/\nconst host = `${hostCharacter}*(?=${hostCharacter})${noSpaceNorPunctuation}`;\n\n/*\nUse sub groups so we accept just / or #; but if anything comes after it,\nit should not end with punctuation or space.\n*/\nconst pathOrFragment = `(?:[\\\\/#](?:[^\\\\s]*${noSpaceNorPunctuation})?)`;\n\n/*\nThings to keep in mind:\n1. URL must not contain non-ascii characters in host but may contain\n them in path or fragment components.\n https://matrix.org/ - valid\n https://matrix.org - invalid\n2. Do not treat punctuation at the end as a part of the URL (.,?!)\n3. Path/fragment is optional.\n*/\nconst urlRegex = `${scheme}${host}${pathOrFragment}?`;\n\nexport const regex = new RegExp(urlRegex, \"gi\");\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { regex } from \"./regex.js\";\n\n/**\n * Splits text into links and non-links.\n * For each such separated token, callback is called\n * with the token and a boolean passed as argument.\n * The boolean indicates whether the token is a link or not.\n */\nexport function linkify(text: string, callback: (token: string, isLink: boolean) => void): void {\n const matches = text.matchAll(regex);\n let curr = 0;\n for (let match of matches) {\n const precedingText = text.slice(curr, match.index);\n callback(precedingText, false);\n callback(match[0], true);\n const len = match[0].length;\n curr = match.index! + len;\n }\n const remainingText = text.slice(curr);\n callback(remainingText, false);\n}\n\nexport function tests(): any {\n\n class MockCallback {\n result: { type: \"link\" | \"text\", text: string }[];\n\n mockCallback(text: string, isLink: boolean): void {\n if (!text.length) {\n return;\n }\n if (!this.result) {\n this.result = [];\n }\n const type = isLink ? \"link\" : \"text\";\n this.result.push({ type: type, text: text });\n }\n }\n\n function test(assert, input, output): void {\n const m = new MockCallback;\n linkify(input, m.mockCallback.bind(m));\n assert.deepEqual(output, m.result);\n }\n\n function testLink(assert, link, expectFail = false): void {\n const input = link;\n const output = expectFail ? [{ type: \"text\", text: input }] :\n [{ type: \"link\", text: input }];\n test(assert, input, output);\n }\n\n return {\n \"Link with host\": (assert): void => {\n testLink(assert, \"https://matrix.org\");\n },\n\n \"Link with host & path\": (assert): void => {\n testLink(assert, \"https://matrix.org/docs/develop\");\n },\n\n \"Link with host & fragment\": (assert): void => {\n testLink(assert, \"https://matrix.org#test\");\n },\n\n \"Link with host & query\": (assert): void => {\n testLink(assert, \"https://matrix.org/?foo=bar\");\n },\n\n \"Complex link\": (assert): void => {\n const link = \"https://www.foobar.com/url?sa=t&rct=j&q=&esrc=s&source\" +\n \"=web&cd=&cad=rja&uact=8&ved=2ahUKEwjyu7DJ-LHwAhUQyzgGHc\" +\n \"OKA70QFjAAegQIBBAD&url=https%3A%2F%2Fmatrix.org%2Fdocs%\" +\n \"2Fprojects%2Fclient%2Felement%2F&usg=AOvVaw0xpENrPHv_R-\" +\n \"ERkyacR2Bd\";\n testLink(assert, link);\n },\n\n \"Localhost link\": (assert): void => {\n testLink(assert, \"http://localhost\");\n testLink(assert, \"http://localhost:3000\");\n },\n\n \"IPV4 link\": (assert): void => {\n testLink(assert, \"https://192.0.0.1\");\n testLink(assert, \"https://250.123.67.23:5924\");\n },\n\n \"IPV6 link\": (assert): void => {\n testLink(assert, \"http://[2001:0db8:85a3:0000:0000:8a2e:0370:7334]\");\n testLink(assert, \"http://[2001:0db8:85a3:0000:0000:8a2e:0370:7334]:7000\");\n },\n\n \"Missing scheme must not linkify\": (assert): void => {\n testLink(assert, \"matrix.org/foo/bar\", true);\n },\n\n \"Punctuation at end of link must not linkify\": (assert): void => {\n const link = \"https://foo.bar/?nenjil=lal810\";\n const end = \".,? \";\n for (const char of end) {\n const out = [{ type: \"link\", text: link }, { type: \"text\", text: char }];\n test(assert, link + char, out);\n }\n },\n\n \"Link doesn't adopt closing parenthesis\": (assert): void => {\n const link = \"(https://matrix.org)\";\n const out = [{ type: \"text\", text: \"(\" }, { type: \"link\", text: \"https://matrix.org\" }, { type: \"text\", text: \")\" }];\n test(assert, link, out);\n },\n\n \"Unicode in hostname must not linkify\": (assert): void => {\n const link = \"https://foo.bar\\uD83D\\uDE03.com\";\n const out = [{ type: \"link\", text: \"https://foo.bar\" },\n { type: \"text\", text: \"\\uD83D\\uDE03.com\" }];\n test(assert, link, out);\n },\n\n \"Link with unicode only after / must linkify\": (assert): void => {\n testLink(assert, \"https://foo.bar.com/\\uD83D\\uDE03\");\n },\n\n \"Link with unicode after fragment without path must linkify\": (assert): void => {\n testLink(assert, \"https://foo.bar.com#\\uD83D\\uDE03\");\n },\n\n \"Link ends with <\": (assert): void => {\n const link = \"https://matrix.org<\";\n const out = [{ type: \"link\", text: \"https://matrix.org\" }, { type: \"text\", text: \"<\" }];\n test(assert, link, out);\n }\n };\n}\n","import { linkify } from \"./linkify/linkify\";\nimport { getIdentifierColorNumber, avatarInitials } from \"../../../avatar\";\n\n/**\n * Parse text into parts such as newline, links and text.\n * @param {string} body A string to parse into parts\n * @returns {MessageBody} Parsed result\n */\nexport function parsePlainBody(body) {\n const parts = [];\n const lines = body.split(\"\\n\");\n\n // create callback outside of loop\n const linkifyCallback = (text, isLink) => {\n if (isLink) {\n parts.push(new LinkPart(text, [new TextPart(text)]));\n } else {\n parts.push(new TextPart(text));\n }\n };\n\n for (let i = 0; i < lines.length; i += 1) {\n const line = lines[i];\n if (line.length) {\n linkify(line, linkifyCallback);\n }\n const isLastLine = i >= (lines.length - 1);\n if (!isLastLine) {\n parts.push(new NewLinePart());\n }\n }\n\n return new MessageBody(body, parts);\n}\n\nexport function stringAsBody(body) {\n return new MessageBody(body, [new TextPart(body)]);\n}\n\nexport class HeaderBlock {\n constructor(level, inlines) {\n this.level = level;\n this.inlines = inlines;\n }\n\n get type() { return \"header\"; }\n}\n\nexport class CodeBlock {\n constructor(language, text) {\n this.language = language;\n this.text = text;\n }\n\n get type() { return \"codeblock\"; }\n}\n\nexport class ListBlock {\n constructor(startOffset, items) {\n this.items = items;\n this.startOffset = startOffset;\n }\n\n get type() { return \"list\"; }\n}\n\nexport class TableBlock {\n constructor(head, body) {\n this.head = head;\n this.body = body;\n }\n\n get type() { return \"table\"; }\n}\n\nexport class RulePart {\n get type() { return \"rule\"; }\n}\n\nexport class NewLinePart {\n get type() { return \"newline\"; }\n}\n\nexport class FormatPart {\n constructor(format, children) {\n this.format = format.toLowerCase();\n this.children = children;\n }\n\n get type() { return \"format\"; }\n}\n\nexport class ImagePart {\n constructor(src, width, height, alt, title) {\n this.src = src;\n this.width = width;\n this.height = height;\n this.alt = alt;\n this.title = title;\n }\n\n get type() { return \"image\"; }\n}\n\nexport class PillPart {\n constructor(id, href, children) {\n this.id = id;\n this.href = href;\n this.children = children;\n }\n\n get type() { return \"pill\"; }\n\n get avatarColorNumber() {\n return getIdentifierColorNumber(this.id);\n }\n\n get avatarInitials() {\n return avatarInitials(this.id);\n }\n}\n\nexport class LinkPart {\n constructor(url, inlines) {\n this.url = url;\n this.inlines = inlines;\n }\n\n get type() { return \"link\"; }\n}\n\nexport class TextPart {\n constructor(text) {\n this.text = text;\n }\n\n get type() { return \"text\"; }\n}\n\nfunction isBlockquote(part){\n return part.type === \"format\" && part.format === \"blockquote\";\n}\n\nexport class MessageBody {\n constructor(sourceString, parts) {\n this.sourceString = sourceString;\n this.parts = parts;\n }\n\n insertEmote(string) {\n // We want to skip quotes introduced by replies when emoting.\n // We assume that such quotes are not TextParts, because replies\n // must have a formatted body.\n let i = 0;\n for (; i < this.parts.length && isBlockquote(this.parts[i]); i++);\n this.parts.splice(i, 0, new TextPart(string));\n }\n}\n\nexport function tests() {\n\n function test(assert, input, output) {\n assert.deepEqual(parsePlainBody(input), new MessageBody(input, output));\n }\n\n return {\n // Tests for text\n \"Text only\": assert => {\n const input = \"This is a sentence\";\n const output = [new TextPart(input)];\n test(assert, input, output);\n },\n\n \"Text with newline\": assert => {\n const input = \"This is a sentence.\\nThis is another sentence.\";\n const output = [\n new TextPart(\"This is a sentence.\"),\n new NewLinePart(),\n new TextPart(\"This is another sentence.\")\n ];\n test(assert, input, output);\n },\n\n \"Text with newline & trailing newline\": assert => {\n const input = \"This is a sentence.\\nThis is another sentence.\\n\";\n const output = [\n new TextPart(\"This is a sentence.\"),\n new NewLinePart(),\n new TextPart(\"This is another sentence.\"),\n new NewLinePart()\n ];\n test(assert, input, output);\n }\n };\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {BaseMessageTile} from \"./BaseMessageTile.js\";\nimport {stringAsBody} from \"../MessageBody.js\";\nimport {createEnum} from \"../../../../../utils/enum\";\n\nexport const BodyFormat = createEnum(\"Plain\", \"Html\");\n\nexport class BaseTextTile extends BaseMessageTile {\n constructor(entry, options) {\n super(entry, options);\n this._messageBody = null;\n this._format = null\n }\n\n get shape() {\n return \"message\";\n }\n\n _parseBody(body) {\n return stringAsBody(body);\n }\n\n _getBodyFormat() {\n return BodyFormat.Plain;\n }\n\n get body() {\n const body = this._getBody();\n const format = this._getBodyFormat();\n // body is a string, so we can check for difference by just\n // doing an equality check\n // Even if the body hasn't changed, but the format has, we need\n // to re-fill our cache.\n if (!this._messageBody || this._messageBody.sourceString !== body || this._format !== format) {\n // body with markup is an array of parts,\n // so we should not recreate it for the same body string,\n // or else the equality check in the binding will always fail.\n // So cache it here.\n this._messageBody = this._parseBody(body, format);\n this._format = format;\n }\n return this._messageBody;\n }\n\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { MessageBody, HeaderBlock, TableBlock, ListBlock, CodeBlock, PillPart, FormatPart, NewLinePart, RulePart, TextPart, LinkPart, ImagePart } from \"./MessageBody.js\"\nimport {linkify} from \"./linkify/linkify\";\n\n/* At the time of writing (Jul 1 2021), Matrix Spec recommends\n * allowing the following HTML tags:\n * font, del, h1, h2, h3, h4, h5, h6, blockquote, p, a, ul, ol, sup, sub, li, b, i, u,\n * strong, em, strike, code, hr, br, div, table, thead, tbody, tr, th, td, caption, pre, span, img\n */\n\n/**\n * Nodes that don't have any properties to them other than their tag.\n * While has `href`, and has `src`, these have... themselves.\n */\nconst basicInline = [\"EM\", \"STRONG\", \"CODE\", \"DEL\", \"SPAN\" ];\nconst basicBlock = [\"DIV\", \"BLOCKQUOTE\"];\nconst safeSchemas = [\"https\", \"http\", \"ftp\", \"mailto\", \"magnet\"].map(name => `${name}://`);\nconst baseUrl = 'https://matrix.to';\nconst linkPrefix = `${baseUrl}/#/`;\n\nclass Deserializer {\n constructor(result, mediaRepository) {\n this.result = result;\n this.mediaRepository = mediaRepository;\n }\n\n parsePillLink(link) {\n if (!link.startsWith(linkPrefix)) {\n return null;\n }\n const contents = link.substring(linkPrefix.length);\n if (contents[0] === '@') {\n return contents;\n }\n return null;\n }\n\n parseLink(node, children) {\n const href = this.result.getAttributeValue(node, \"href\");\n const lcUrl = href?.toLowerCase();\n // urls should be absolute and with a safe schema, as listed in the spec\n if (!lcUrl || !safeSchemas.some(schema => lcUrl.startsWith(schema))) {\n return new FormatPart(\"span\", children);\n }\n const pillId = this.parsePillLink(href);\n if (pillId) {\n return new PillPart(pillId, href, children);\n }\n return new LinkPart(href, children);\n }\n\n parseList(node) {\n const result = this.result;\n let start = null;\n if (result.getNodeElementName(node) === \"OL\") {\n // Will return 1 for, say, '1A', which may not be intended?\n start = parseInt(result.getAttributeValue(node, \"start\")) || 1;\n }\n const items = [];\n for (const child of result.getChildNodes(node)) {\n if (result.getNodeElementName(child) !== \"LI\") {\n continue;\n }\n const item = this.parseAnyNodes(result.getChildNodes(child));\n items.push(item);\n }\n return new ListBlock(start, items);\n }\n\n _ensureElement(node, tag) {\n return node &&\n this.result.isElementNode(node) &&\n this.result.getNodeElementName(node) === tag;\n }\n\n parseCodeBlock(node) {\n const result = this.result;\n let codeNode;\n for (const child of result.getChildNodes(node)) {\n codeNode = child;\n break;\n }\n let language = null;\n if (!this._ensureElement(codeNode, \"CODE\")) {\n return new CodeBlock(language, this.result.getNodeText(node));\n }\n const cl = result.getAttributeValue(codeNode, \"class\") || \"\"\n for (const clname of cl.split(\" \")) {\n if (clname.startsWith(\"language-\") && !clname.startsWith(\"language-_\")) {\n language = clname.substring(9) // \"language-\".length\n break;\n }\n }\n return new CodeBlock(language, this.result.getNodeText(codeNode));\n }\n\n parseImage(node) {\n const result = this.result;\n const src = result.getAttributeValue(node, \"src\") || \"\";\n const url = this.mediaRepository.mxcUrl(src);\n // We just ignore non-mxc `src` attributes.\n if (!url) {\n return null;\n }\n const width = parseInt(result.getAttributeValue(node, \"width\")) || null;\n const height = parseInt(result.getAttributeValue(node, \"height\")) || null;\n const alt = result.getAttributeValue(node, \"alt\");\n const title = result.getAttributeValue(node, \"title\");\n return new ImagePart(url, width, height, alt, title);\n }\n\n parseTableRow(row, tag) {\n const cells = [];\n for (const node of this.result.getChildNodes(row)) {\n if(!this._ensureElement(node, tag)) {\n continue;\n }\n const children = this.result.getChildNodes(node);\n const inlines = this.parseInlineNodes(children);\n cells.push(inlines);\n }\n return cells;\n }\n\n parseTableHead(head) {\n let headRow = null;\n for (const node of this.result.getChildNodes(head)) {\n headRow = node;\n break;\n }\n if (this._ensureElement(headRow, \"TR\")) {\n return this.parseTableRow(headRow, \"TH\");\n }\n return null;\n }\n\n parseTableBody(body) {\n const rows = [];\n for (const node of this.result.getChildNodes(body)) {\n if(!this._ensureElement(node, \"TR\")) {\n continue;\n }\n rows.push(this.parseTableRow(node, \"TD\"));\n }\n return rows;\n }\n\n parseTable(node) {\n // We are only assuming iterable, so convert to arrary for indexing.\n const children = Array.from(this.result.getChildNodes(node));\n let head, body;\n if (this._ensureElement(children[0], \"THEAD\") && this._ensureElement(children[1], \"TBODY\")) {\n head = this.parseTableHead(children[0]);\n body = this.parseTableBody(children[1]);\n } else if (this._ensureElement(children[0], \"TBODY\")) {\n head = null;\n body = this.parseTableBody(children[0]);\n }\n return new TableBlock(head, body);\n }\n\n /** Once a node is known to be an element,\n * attempt to interpret it as an inline element.\n *\n * @returns the inline message part, or null if the element\n * is not inline or not allowed.\n */\n parseInlineElement(node) {\n const result = this.result;\n const tag = result.getNodeElementName(node);\n const children = result.getChildNodes(node);\n switch (tag) {\n case \"A\": {\n const inlines = this.parseInlineNodes(children);\n return this.parseLink(node, inlines);\n }\n case \"BR\":\n return new NewLinePart();\n default: {\n if (!basicInline.includes(tag)) {\n return null;\n }\n const inlines = this.parseInlineNodes(children);\n return new FormatPart(tag, inlines);\n }\n }\n }\n\n /** Attempt to interpret a node as inline.\n *\n * @returns the inline message part, or null if the\n * element is not inline or not allowed.\n */\n parseInlineNode(node) {\n if (this.result.isElementNode(node)) {\n return this.parseInlineElement(node);\n }\n return null;\n }\n\n /** Once a node is known to be an element, attempt\n * to interpret it as a block element.\n *\n * @returns the block message part, or null of the\n * element is not a block or not allowed.\n */\n parseBlockElement(node) {\n const result = this.result;\n const tag = result.getNodeElementName(node);\n const children = result.getChildNodes(node);\n switch (tag) {\n case \"H1\":\n case \"H2\":\n case \"H3\":\n case \"H4\":\n case \"H5\":\n case \"H6\": {\n const inlines = this.parseInlineNodes(children);\n return new HeaderBlock(parseInt(tag[1]), inlines)\n }\n case \"UL\":\n case \"OL\":\n return this.parseList(node);\n case \"PRE\":\n return this.parseCodeBlock(node);\n case \"HR\":\n return new RulePart();\n case \"IMG\":\n return this.parseImage(node);\n case \"P\": {\n const inlines = this.parseInlineNodes(children);\n return new FormatPart(tag, inlines);\n }\n case \"TABLE\":\n return this.parseTable(node);\n default: {\n if (!basicBlock.includes(tag)) {\n return null;\n }\n const blocks = this.parseAnyNodes(children);\n return new FormatPart(tag, blocks);\n }\n }\n }\n\n /** Attempt to parse a node as a block.\n *\n * @return the block message part, or null if the node\n * is not a block element.\n */\n parseBlockNode(node) {\n if (this.result.isElementNode(node)) {\n return this.parseBlockElement(node);\n }\n return null;\n }\n\n _parseTextParts(node, into) {\n if(!this.result.isTextNode(node)) {\n return false;\n }\n\n // XXX pretty much identical to `MessageBody`'s.\n const linkifyCallback = (text, isLink) => {\n if (isLink) {\n into.push(new LinkPart(text, [new TextPart(text)]));\n } else {\n into.push(new TextPart(text));\n }\n };\n linkify(this.result.getNodeText(node), linkifyCallback);\n return true;\n }\n\n _isAllowedNode(node) {\n return !this._ensureElement(node, \"MX-REPLY\");\n }\n\n _parseInlineNodes(nodes, into) {\n for (const htmlNode of nodes) {\n if (this._parseTextParts(htmlNode, into)) {\n // This was a text node, and we already\n // dumped its parts into our list.\n continue;\n }\n const node = this.parseInlineNode(htmlNode);\n if (node) {\n into.push(node);\n continue;\n }\n // Node is either block or unrecognized. In\n // both cases, just move on to its children.\n if (this._isAllowedNode(htmlNode)) {\n this._parseInlineNodes(this.result.getChildNodes(htmlNode), into);\n }\n }\n }\n\n parseInlineNodes(nodes) {\n const into = [];\n this._parseInlineNodes(nodes, into);\n return into;\n }\n\n // XXX very similar to `_parseInlineNodes`.\n _parseAnyNodes(nodes, into) {\n for (const htmlNode of nodes) {\n if (this._parseTextParts(htmlNode, into)) {\n // This was a text node, and we already\n // dumped its parts into our list.\n continue;\n }\n const node = this.parseInlineNode(htmlNode) || this.parseBlockNode(htmlNode);\n if (node) {\n into.push(node);\n continue;\n }\n // Node is unrecognized. Just move on to its children.\n if (this._isAllowedNode(htmlNode)) {\n this._parseAnyNodes(this.result.getChildNodes(htmlNode), into);\n }\n }\n }\n\n parseAnyNodes(nodes) {\n const into = [];\n this._parseAnyNodes(nodes, into);\n return into;\n }\n}\n\nexport function parseHTMLBody(platform, mediaRepository, html) {\n const parseResult = platform.parseHTML(html);\n const deserializer = new Deserializer(parseResult, mediaRepository);\n const parts = deserializer.parseAnyNodes(parseResult.rootNodes);\n return new MessageBody(html, parts);\n}\n\n\nexport async function tests() {\n // don't import node-html-parser until it's safe to assume we're actually in a unit test,\n // as this is a devDependency\n const nodeHtmlParser = await import(\"node-html-parser\");\n const {parse} = nodeHtmlParser.default;\n\n class HTMLParseResult {\n constructor(bodyNode) {\n this._bodyNode = bodyNode;\n }\n\n get rootNodes() {\n return this._bodyNode.childNodes;\n }\n\n getChildNodes(node) {\n return node.childNodes;\n }\n\n getAttributeNames(node) {\n return node.getAttributeNames();\n }\n\n getAttributeValue(node, attr) {\n return node.getAttribute(attr);\n }\n\n isTextNode(node) {\n return !node.tagName;\n }\n\n getNodeText(node) {\n return node.text;\n }\n\n isElementNode(node) {\n return !!node.tagName;\n }\n\n getNodeElementName(node) {\n return node.tagName;\n }\n }\n\n const platform = {\n parseHTML: (html) => new HTMLParseResult(parse(html))\n };\n\n function test(assert, input, output) {\n assert.deepEqual(parseHTMLBody(platform, null, input), new MessageBody(input, output));\n }\n\n return {\n \"Text only\": assert => {\n const input = \"This is a sentence\";\n const output = [new TextPart(input)];\n test(assert, input, output);\n },\n \"Text with inline code format\": assert => {\n const input = \"Here's some code!\";\n const output = [\n new TextPart(\"Here's \"),\n new FormatPart(\"em\", [new TextPart(\"some\")]),\n new TextPart(\" \"),\n new FormatPart(\"code\", [new TextPart(\"code\")]),\n new TextPart(\"!\")\n ];\n test(assert, input, output);\n },\n \"Text with ordered list with no attributes\": assert => {\n const input = \"
    1. Lorem
    2. Ipsum
    \";\n const output = [\n new ListBlock(1, [\n [ new TextPart(\"Lorem\") ],\n [ new TextPart(\"Ipsum\") ]\n ])\n ];\n test(assert, input, output);\n },\n \"Text with ordered list starting at 3\": assert => {\n const input = '
    1. Lorem
    2. Ipsum
    ';\n const output = [\n new ListBlock(3, [\n [ new TextPart(\"Lorem\") ],\n [ new TextPart(\"Ipsum\") ]\n ])\n ];\n test(assert, input, output);\n },\n \"Text with unordered list\": assert => {\n const input = '
    • Lorem
    • Ipsum
    ';\n const output = [\n new ListBlock(null, [\n [ new TextPart(\"Lorem\") ],\n [ new TextPart(\"Ipsum\") ]\n ])\n ];\n test(assert, input, output);\n },\n \"Auto-closed tags\": assert => {\n const input = '

    hello

    world

    ';\n const output = [\n new FormatPart(\"p\", [new TextPart(\"hello\")]),\n new FormatPart(\"p\", [new TextPart(\"world\")])\n ];\n test(assert, input, output);\n },\n \"Block elements ignored inside inline elements\": assert => {\n const input = '

    Hello

    ';\n const output = [\n new FormatPart(\"span\", [new FormatPart(\"code\", [new TextPart(\"Hello\")])])\n ];\n test(assert, input, output);\n },\n \"Unknown tags are ignored, but their children are kept\": assert => {\n const input = 'Hello
    World
    ';\n const output = [\n new FormatPart(\"span\", [\n new FormatPart(\"code\", [new TextPart(\"Hello\")]),\n new FormatPart(\"em\", [new TextPart(\"World\")])\n ])\n ];\n test(assert, input, output);\n },\n \"Unknown and invalid attributes are stripped\": assert => {\n const input = 'Hello';\n const output = [\n new FormatPart(\"em\", [new TextPart(\"Hello\")])\n ];\n test(assert, input, output);\n },\n \"Text with code block but no tag\": assert => {\n const code = 'main :: IO ()\\nmain = putStrLn \"Hello\"'\n const input = `
    ${code}
    `;\n const output = [\n new CodeBlock(null, code)\n ];\n test(assert, input, output);\n },\n \"Text with code block and 'unsupported' tag\": assert => {\n const code = 'Hello, world'\n const input = `
    ${code}
    `;\n const output = [\n new CodeBlock(null, code)\n ];\n test(assert, input, output);\n },\n \"Reply fallback is always stripped\": assert => {\n const input = 'Hello, World!';\n const output = [\n new TextPart('Hello, '),\n new FormatPart(\"em\", []),\n new TextPart('!'),\n ];\n assert.deepEqual(parseHTMLBody(platform, null, input), new MessageBody(input, output));\n }\n /* Doesnt work: HTML library doesn't handle
     properly.\n        \"Text with code block\": assert => {\n            const code = 'main :: IO ()\\nmain = putStrLn \"Hello\"'\n            const input = `
    ${code}
    `;\n const output = [\n new CodeBlock(null, code)\n ];\n test(assert, input, output);\n }\n */\n };\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {BaseTextTile, BodyFormat} from \"./BaseTextTile.js\";\nimport {parsePlainBody} from \"../MessageBody.js\";\nimport {parseHTMLBody} from \"../deserialize.js\";\n\nexport class TextTile extends BaseTextTile {\n _getContentString(key) {\n return this._getContent()?.[key] || \"\";\n }\n\n _getPlainBody() {\n return this._getContentString(\"body\");\n }\n\n _getFormattedBody() {\n return this._getContentString(\"formatted_body\");\n }\n\n _getBody() {\n if (this._getBodyFormat() === BodyFormat.Html) {\n return this._getFormattedBody();\n } else {\n return this._getPlainBody();\n }\n }\n\n _getBodyFormat() {\n if (this._getContent()?.format === \"org.matrix.custom.html\") {\n return BodyFormat.Html;\n } else {\n return BodyFormat.Plain;\n }\n }\n\n _parseBody(body, format) {\n let messageBody;\n if (format === BodyFormat.Html) {\n messageBody = parseHTMLBody(this.platform, this._mediaRepository, body);\n } else {\n messageBody = parsePlainBody(body);\n }\n if (this._getContent()?.msgtype === \"m.emote\") {\n messageBody.insertEmote(`* ${this.displayName} `);\n }\n return messageBody;\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {BaseMessageTile} from \"./BaseMessageTile.js\";\n\nexport class RedactedTile extends BaseMessageTile {\n get shape() {\n return \"redacted\";\n }\n\n get description() {\n const {redactionReason} = this._entry;\n if (this.isRedacting) {\n if (redactionReason) {\n return this.i18n`This message is being deleted (${redactionReason})…`;\n } else {\n return this.i18n`This message is being deleted…`;\n }\n } else {\n if (redactionReason) {\n return this.i18n`This message has been deleted (${redactionReason}).`;\n } else {\n return this.i18n`This message has been deleted.`;\n }\n }\n }\n\n get isRedacting() {\n return this._entry.isRedacting;\n }\n \n /** override parent property to disable redacting, even if still pending */\n get canRedact() {\n return false;\n }\n\n abortPendingRedaction() {\n return this._entry.abortPendingRedaction();\n }\n}\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {BaseMessageTile} from \"./BaseMessageTile.js\";\nimport {SendStatus} from \"../../../../../matrix/room/sending/PendingEvent.js\";\nconst MAX_HEIGHT = 300;\nconst MAX_WIDTH = 400;\n\nexport class BaseMediaTile extends BaseMessageTile {\n constructor(entry, options) {\n super(entry, options);\n this._decryptedThumbnail = null;\n this._decryptedFile = null;\n this._isVisible = false;\n this._error = null;\n this._downloading = false;\n this._downloadError = null;\n }\n\n async downloadMedia() {\n if (this._downloading || this.isPending) {\n return;\n }\n const content = this._getContent();\n const filename = content.body;\n this._downloading = true;\n this.emitChange(\"status\");\n let blob;\n try {\n blob = await this._mediaRepository.downloadAttachment(content);\n this.platform.saveFileAs(blob, filename);\n } catch (err) {\n this._downloadError = err;\n } finally {\n blob?.dispose();\n this._downloading = false;\n }\n this.emitChange(\"status\");\n }\n\n get isUploading() {\n return this.isPending && this._entry.pendingEvent.status === SendStatus.UploadingAttachments;\n }\n\n get uploadPercentage() {\n const {pendingEvent} = this._entry;\n return pendingEvent && Math.round((pendingEvent.attachmentsSentBytes / pendingEvent.attachmentsTotalBytes) * 100);\n }\n\n get status() {\n const {pendingEvent} = this._entry;\n switch (pendingEvent?.status) {\n case SendStatus.Waiting:\n return this.i18n`Waiting…`;\n case SendStatus.EncryptingAttachments:\n case SendStatus.Encrypting:\n return this.i18n`Encrypting…`;\n case SendStatus.UploadingAttachments:\n return this.i18n`Uploading…`;\n case SendStatus.Sending:\n return this.i18n`Sending…`;\n case SendStatus.Error:\n return this.i18n`Error: ${pendingEvent.error.message}`;\n default:\n if (this._downloadError) {\n return `Download failed`;\n }\n if (this._downloading) {\n return this.i18n`Downloading…`;\n }\n return \"\";\n }\n }\n\n get thumbnailUrl() {\n if (!this._isVisible) {\n return \"\";\n }\n if (this._decryptedThumbnail) {\n return this._decryptedThumbnail.url;\n } else {\n const thumbnailMxc = this._getContent().info?.thumbnail_url;\n if (thumbnailMxc) {\n return this._mediaRepository.mxcUrlThumbnail(thumbnailMxc, this.width, this.height, \"scale\");\n }\n }\n if (this._entry.isPending) {\n const attachment = this._entry.pendingEvent.getAttachment(\"info.thumbnail_url\");\n return attachment && attachment.localPreview.url;\n }\n if (this._isMainResourceImage()) {\n if (this._decryptedFile) {\n return this._decryptedFile.url;\n } else {\n const mxcUrl = this._getContent()?.url;\n if (typeof mxcUrl === \"string\") {\n return this._mediaRepository.mxcUrlThumbnail(mxcUrl, this.width, this.height, \"scale\");\n }\n }\n }\n return \"\";\n }\n\n notifyVisible() {\n super.notifyVisible();\n this._isVisible = true;\n this.emitChange(\"thumbnailUrl\");\n if (!this.isPending) {\n this._tryLoadEncryptedThumbnail();\n }\n }\n\n get width() {\n const info = this._getContent()?.info;\n return Math.round(info?.w * this._scaleFactor());\n }\n\n get height() {\n const info = this._getContent()?.info;\n return Math.round(info?.h * this._scaleFactor());\n }\n\n get mimeType() {\n const info = this._getContent()?.info;\n return info?.mimetype;\n }\n\n get label() {\n return this._getContent().body;\n }\n\n get error() {\n if (this._error) {\n return `Could not load media: ${this._error.message}`;\n }\n return null;\n }\n\n setViewError(err) {\n this._error = err;\n this.emitChange(\"error\");\n }\n\n async _loadEncryptedFile(file) {\n const blob = await this._mediaRepository.downloadEncryptedFile(file, true);\n if (this.isDisposed) {\n blob.dispose();\n return;\n }\n return this.track(blob);\n }\n\n async _tryLoadEncryptedThumbnail() {\n try {\n const thumbnailFile = this._getContent().info?.thumbnail_file;\n const file = this._getContent().file;\n if (thumbnailFile) {\n this._decryptedThumbnail = await this._loadEncryptedFile(thumbnailFile);\n this.emitChange(\"thumbnailUrl\");\n } else if (file && this._isMainResourceImage()) { // is the main resource an image? then try that for a thumbnail\n this._decryptedFile = await this._loadEncryptedFile(file);\n this.emitChange(\"thumbnailUrl\");\n }\n } catch (err) {\n this._error = err;\n this.emitChange(\"error\");\n }\n }\n\n _scaleFactor() {\n const info = this._getContent()?.info;\n const scaleHeightFactor = MAX_HEIGHT / info?.h;\n const scaleWidthFactor = MAX_WIDTH / info?.w;\n // take the smallest scale factor, to respect all constraints\n // we should not upscale images, so limit scale factor to 1 upwards\n return Math.min(scaleWidthFactor, scaleHeightFactor, 1);\n }\n\n _isMainResourceImage() {\n return true; // overwritten in VideoTile\n }\n}\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {BaseMediaTile} from \"./BaseMediaTile.js\";\n\nexport class ImageTile extends BaseMediaTile {\n constructor(entry, options) {\n super(entry, options);\n this._lightboxUrl = this.urlRouter.urlForSegments([\n // ensure the right room is active if in grid view\n this.navigation.segment(\"room\", this._room.id),\n this.navigation.segment(\"lightbox\", this._entry.id)\n ]);\n }\n\n get lightboxUrl() {\n if (!this.isPending) {\n return this._lightboxUrl;\n }\n return \"\";\n }\n\n get shape() {\n return \"image\";\n }\n}\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {BaseMediaTile} from \"./BaseMediaTile.js\";\n\nexport class VideoTile extends BaseMediaTile {\n async loadVideo() {\n const file = this._getContent().file;\n if (file && !this._decryptedFile) {\n this._decryptedFile = await this._loadEncryptedFile(file);\n this.emitChange(\"videoUrl\");\n }\n }\n\n get videoUrl() {\n if (this._decryptedFile) {\n return this._decryptedFile.url;\n }\n const mxcUrl = this._getContent()?.url;\n if (typeof mxcUrl === \"string\") {\n return this._mediaRepository.mxcUrl(mxcUrl);\n }\n return \"\";\n }\n\n get shape() {\n return \"video\";\n }\n\n _isMainResourceImage() {\n return false;\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n\nexport function formatSize(size: number, decimals: number = 2): string {\n if (Number.isSafeInteger(size)) {\n const base = Math.min(3, Math.floor(Math.log(size) / Math.log(1024)));\n const formattedSize = Math.round(size / Math.pow(1024, base)).toFixed(decimals);\n switch (base) {\n case 0: return `${formattedSize} bytes`;\n case 1: return `${formattedSize} KB`;\n case 2: return `${formattedSize} MB`;\n case 3: return `${formattedSize} GB`;\n }\n }\n return \"\";\n}\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {BaseMessageTile} from \"./BaseMessageTile.js\";\nimport {formatSize} from \"../../../../../utils/formatSize\";\nimport {SendStatus} from \"../../../../../matrix/room/sending/PendingEvent.js\";\n\nexport class FileTile extends BaseMessageTile {\n constructor(entry, options) {\n super(entry, options);\n this._downloadError = null;\n this._downloading = false;\n }\n\n async download() {\n if (this._downloading || this.isPending) {\n return;\n }\n const content = this._getContent();\n const filename = content.body;\n this._downloading = true;\n this.emitChange(\"label\");\n let blob;\n try {\n blob = await this._mediaRepository.downloadAttachment(content);\n this.platform.saveFileAs(blob, filename);\n } catch (err) {\n this._downloadError = err;\n } finally {\n blob?.dispose();\n this._downloading = false;\n }\n this.emitChange(\"label\");\n }\n\n get label() {\n if (this._downloadError) {\n return `Could not download file: ${this._downloadError.message}`;\n }\n const content = this._getContent();\n const filename = content.body;\n\n if (this._entry.isPending) {\n const {pendingEvent} = this._entry;\n switch (pendingEvent?.status) {\n case SendStatus.Waiting:\n return this.i18n`Waiting to send ${filename}…`;\n case SendStatus.EncryptingAttachments:\n case SendStatus.Encrypting:\n return this.i18n`Encrypting ${filename}…`;\n case SendStatus.UploadingAttachments:{\n const percent = Math.round((pendingEvent.attachmentsSentBytes / pendingEvent.attachmentsTotalBytes) * 100);\n return this.i18n`Uploading ${filename}: ${percent}%`;\n }\n case SendStatus.Sending:\n case SendStatus.Sent:\n return this.i18n`Sending ${filename}…`;\n case SendStatus.Error:\n return this.i18n`Error: could not send ${filename}: ${pendingEvent.error.message}`;\n default:\n return `Unknown send status for ${filename}`;\n }\n } else {\n const size = formatSize(this._getContent().info?.size);\n if (this._downloading) {\n return this.i18n`Downloading ${filename} (${size})…`;\n } else {\n return this.i18n`Download ${filename} (${size})`;\n } \n }\n }\n\n get shape() {\n return \"file\";\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {BaseMessageTile} from \"./BaseMessageTile.js\";\n\nexport class LocationTile extends BaseMessageTile {\n get shape() {\n return \"location\";\n }\n\n get mapsLink() {\n try {\n const url = new URL(this._getContent().geo_uri);\n if (url.protocol !== \"geo:\") {\n return \"\";\n }\n const [locationStr, ...namedParams] = url.pathname.split(\";\");\n const [latStr, longStr] = locationStr.split(\",\");\n const lat = parseFloat(latStr);\n const long = parseFloat(longStr);\n let uncertainty;\n for (const namedParam of namedParams) {\n const [name, value] = namedParam.split(\"=\");\n if (name === \"u\") {\n uncertainty = parseFloat(value);\n }\n }\n if (this.platform.isIOS) {\n return `http://maps.apple.com/?ll=${lat},${long}`;\n } else {\n let uri = `geo:${lat},${long}`;\n if (uncertainty) {\n uri = uri + `;u=${uncertainty}`;\n }\n return uri;\n }\n } catch {\n return \"\";\n }\n }\n\n get label() {\n return this.i18n`${this.displayName} sent their location`;\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {SimpleTile} from \"./SimpleTile\";\n\nexport class RoomNameTile extends SimpleTile {\n \n get shape() {\n return \"announcement\";\n }\n\n get announcement() {\n const content = this._entry.content;\n return `${this._entry.displayName || this._entry.sender} named the room \"${content?.name}\"`\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {SimpleTile} from \"./SimpleTile\";\n\nexport class RoomMemberTile extends SimpleTile {\n\n get shape() {\n return \"announcement\";\n }\n\n get announcement() {\n const {sender, content, prevContent, stateKey} = this._entry;\n const senderName = this._entry.displayName || sender;\n const targetName = sender === stateKey ? senderName : (this._entry.content?.displayname || stateKey);\n const membership = content && content.membership;\n const prevMembership = prevContent && prevContent.membership;\n\n if (prevMembership === \"join\" && membership === \"join\") {\n if (content.avatar_url !== prevContent.avatar_url) {\n return `${senderName} changed their avatar`; \n } else if (content.displayname !== prevContent.displayname) {\n if (!content.displayname) {\n return `${stateKey} removed their name (${prevContent.displayname})`;\n }\n return `${prevContent.displayname ?? stateKey} changed their name to ${content.displayname}`; \n }\n } else if (membership === \"join\") {\n return `${targetName} joined the room`;\n } else if (membership === \"invite\") {\n return `${targetName} was invited to the room by ${senderName}`;\n } else if (prevMembership === \"invite\") {\n if (membership === \"join\") {\n return `${targetName} accepted the invitation to join the room`;\n } else if (membership === \"leave\") {\n return `${targetName} declined the invitation to join the room`;\n }\n } else if (membership === \"leave\") {\n if (stateKey === sender) {\n return `${targetName} left the room`;\n } else {\n const reason = content.reason;\n return `${targetName} was kicked from the room by ${senderName}${reason ? `: ${reason}` : \"\"}`;\n }\n } else if (membership === \"ban\") {\n return `${targetName} was banned from the room by ${senderName}`;\n }\n \n return `${sender} membership changed to ${content.membership}`;\n }\n}\n\nexport function tests() {\n return {\n \"user removes display name\": (assert) => {\n const tile = new RoomMemberTile(\n {\n prevContent: {displayname: \"foo\", membership: \"join\"},\n content: {membership: \"join\"},\n stateKey: \"foo@bar.com\",\n },\n {}\n );\n assert.strictEqual(tile.announcement, \"foo@bar.com removed their name (foo)\");\n },\n \"user without display name sets a new display name\": (assert) => {\n const tile = new RoomMemberTile(\n {\n prevContent: {membership: \"join\"},\n content: {displayname: \"foo\", membership: \"join\" },\n stateKey: \"foo@bar.com\",\n },\n {}\n );\n assert.strictEqual(tile.announcement, \"foo@bar.com changed their name to foo\");\n },\n };\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {BaseTextTile} from \"./BaseTextTile.js\";\nimport {UpdateAction} from \"../UpdateAction.js\";\n\nexport class EncryptedEventTile extends BaseTextTile {\n updateEntry(entry, params) {\n const parentResult = super.updateEntry(entry, params);\n // event got decrypted, recreate the tile and replace this one with it\n if (entry.eventType !== \"m.room.encrypted\") {\n // the \"shape\" parameter trigger tile recreation in TimelineView\n return UpdateAction.Replace(\"shape\");\n } else {\n return parentResult;\n }\n }\n\n get shape() {\n return \"message-status\"\n }\n\n _getBody() {\n const decryptionError = this._entry.decryptionError;\n const code = decryptionError?.code;\n let string;\n if (code === \"MEGOLM_NO_SESSION\") {\n string = this.i18n`The sender hasn't sent us the key for this message yet.`;\n } else {\n string = decryptionError?.message || this.i18n`Could not decrypt message because of unknown reason.`;\n }\n return string;\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {SimpleTile} from \"./SimpleTile\";\n\nexport class EncryptionEnabledTile extends SimpleTile {\n get shape() {\n return \"announcement\";\n }\n\n get announcement() {\n const senderName = this._entry.displayName || this._entry.sender;\n return this.i18n`${senderName} has enabled end-to-end encryption`;\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {BaseMessageTile} from \"./BaseMessageTile.js\";\n\nexport class MissingAttachmentTile extends BaseMessageTile {\n get shape() {\n return \"missing-attachment\"\n }\n\n get label() {\n const name = this._getContent().body;\n const msgtype = this._getContent().msgtype;\n if (msgtype === \"m.image\") {\n return this.i18n`The image ${name} wasn't fully sent previously and could not be recovered.`;\n } else {\n return this.i18n`The file ${name} wasn't fully sent previously and could not be recovered.`;\n }\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {SimpleTile} from \"./SimpleTile\";\nimport {ViewModel} from \"../../../../ViewModel\";\nimport {LocalMedia} from \"../../../../../matrix/calls/LocalMedia\";\nimport {CallType} from \"../../../../../matrix/calls/callEventTypes\";\nimport {avatarInitials, getIdentifierColorNumber, getAvatarHttpUrl} from \"../../../../avatar\";\n\n// TODO: timeline entries for state events with the same state key and type\n// should also update previous entries in the timeline, so we can update the name of the call, whether it is terminated, etc ...\n\n// alternatively, we could just subscribe to the GroupCall and spontanously emit an update when it updates\n\nexport class CallTile extends SimpleTile {\n constructor(entry, options) {\n super(entry, options);\n const calls = this.getOption(\"session\").callHandler.calls;\n this._callSubscription = undefined;\n this._memberSizeSubscription = undefined;\n const call = calls.get(this._entry.stateKey);\n if (call && !call.isTerminated) {\n this._call = call;\n this.memberViewModels = this._setupMembersList(this._call);\n this._callSubscription = this.track(this._call.disposableOn(\"change\", () => {\n this._onCallUpdate();\n }));\n this._memberSizeSubscription = this.track(this._call.members.observeSize().subscribe(() => {\n this.emitChange(\"memberCount\");\n }));\n this._onCallUpdate();\n }\n }\n\n _onCallUpdate() {\n // unsubscribe when terminated\n if (this._call.isTerminated) {\n this._durationInterval = this.disposeTracked(this._durationInterval);\n this._callSubscription = this.disposeTracked(this._callSubscription);\n this._call = undefined;\n } else if (!this._durationInterval) {\n this._durationInterval = this.track(this.platform.clock.createInterval(() => {\n this.emitChange(\"duration\");\n }, 1000));\n }\n this.emitChange();\n }\n\n _setupMembersList(call) {\n return call.members.mapValues(\n (member, emitChange) => new MemberAvatarViewModel(this.childOptions({\n member,\n emitChange,\n mediaRepository: this.getOption(\"room\").mediaRepository\n })),\n ).sortValues((a, b) => a.userId.localeCompare(b.userId));\n }\n\n get memberCount() {\n // TODO: emit updates for this property\n if (this._call) {\n return this._call.members.size;\n }\n return 0;\n }\n\n get confId() {\n return this._entry.stateKey;\n }\n\n get duration() {\n if (this._call && this._call.duration) {\n return this.timeFormatter.formatDuration(this._call.duration);\n } else {\n return \"\";\n }\n }\n \n get shape() {\n return \"call\";\n }\n\n get canJoin() {\n return this._call && !this._call.hasJoined && !this._call.usesFoci;\n }\n\n get canLeave() {\n return this._call && this._call.hasJoined;\n }\n\n get title() {\n if (this._call) {\n if (this.type === CallType.Video) {\n return `${this.displayName} started a video call`;\n } else {\n return `${this.displayName} started a voice call`;\n }\n } else {\n if (this.type === CallType.Video) {\n return `Video call ended`;\n } else {\n return `Voice call ended`;\n }\n }\n }\n\n get typeLabel() {\n if (this._call && this._call.usesFoci) {\n return `This call uses a stream-forwarding unit, which isn't supported yet, so you can't join this call.`;\n }\n if (this.type === CallType.Video) {\n return `Video call`;\n } else {\n return `Voice call`;\n }\n }\n\n get type() {\n return this._entry.event.content[\"m.type\"];\n }\n\n async join() {\n await this.logAndCatch(\"CallTile.join\", async log => {\n if (this.canJoin) {\n const stream = await this.platform.mediaDevices.getMediaTracks(false, true);\n const localMedia = new LocalMedia().withUserMedia(stream);\n await this._call.join(localMedia, log);\n }\n });\n }\n\n async leave() {\n await this.logAndCatch(\"CallTile.leave\", async log => {\n if (this.canLeave) {\n await this._call.leave(log);\n }\n });\n }\n}\n\nclass MemberAvatarViewModel extends ViewModel {\n get _member() {\n return this.getOption(\"member\");\n }\n\n get userId() {\n return this._member.userId;\n }\n\n get avatarLetter() {\n return avatarInitials(this._member.member.name);\n }\n\n get avatarColorNumber() {\n return getIdentifierColorNumber(this._member.userId);\n }\n\n avatarUrl(size) {\n const {avatarUrl} = this._member.member;\n const mediaRepository = this.getOption(\"mediaRepository\");\n return getAvatarHttpUrl(avatarUrl, size, this.platform, mediaRepository);\n }\n\n get avatarTitle() {\n return this._member.member.name;\n }\n}\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {SASRequest} from \"../../../../../matrix/verification/SAS/SASRequest\";\nimport {TileShape} from \"./ITile\";\nimport {SimpleTile} from \"./SimpleTile\";\nimport {UpdateAction} from \"../UpdateAction.js\"\nimport {VerificationEventType} from \"../../../../../matrix/verification/SAS/channel/types\";\nimport type {EventEntry} from \"../../../../../matrix/room/timeline/entries/EventEntry.js\";\nimport type {Options} from \"./SimpleTile\";\n\nexport const enum Status {\n Ready,\n InProgress,\n Completed,\n Cancelled,\n};\n\nexport class VerificationTile extends SimpleTile {\n private request: SASRequest;\n public isCancelledByUs: boolean;\n public status: Status = Status.Ready;\n\n constructor(entry: EventEntry, options: Options) {\n super(entry, options);\n this.request = new SASRequest(this.lowerEntry);\n // Calculate status based on available context-for entries\n // Needed so that tiles reflect their final status when\n // events are loaded from storage i.e after a reload.\n this.updateStatusFromAvailableContextForEntries();\n }\n\n get shape(): TileShape {\n return TileShape.Verification;\n }\n\n get description(): string {\n return this.i18n`${this.sender} wants to verify`;\n }\n\n accept(): void {\n const crossSigning = this.getOption(\"session\").crossSigning.get();\n crossSigning.receivedSASVerifications.set(this.eventId, this.request);\n this.openVerificationPanel(this.eventId);\n }\n\n async reject(): Promise {\n await this.logAndCatch(\"VerificationTile.reject\", async (log) => {\n const crossSigning = this.getOption(\"session\").crossSigning.get();\n await this.request.reject(crossSigning, this._room, log);\n });\n }\n\n private openVerificationPanel(eventId: string): void {\n let path = this.navigation.path.until(\"room\");\n path = path.with(this.navigation.segment(\"right-panel\", true))!;\n path = path.with(this.navigation.segment(\"verification\", eventId))!;\n this.navigation.applyPath(path);\n }\n\n updateEntry(entry: EventEntry, param: any) {\n if (param === \"context-added\") {\n /**\n * We received a new contextForEntry, maybe it tells us that\n * this request was cancelled or that the verification is completed?\n * Let's check.\n */\n if (this.updateStatusFromAvailableContextForEntries()) {\n return UpdateAction.Update(param);\n }\n return UpdateAction.Nothing();\n } \n return super.updateEntry(entry, param);\n }\n\n private updateStatusFromAvailableContextForEntries(): boolean {\n let needsUpdate = false;\n for (const e of this.lowerEntry.contextForEntries ?? []) {\n switch (e.eventType) {\n case VerificationEventType.Cancel:\n this.status = Status.Cancelled;\n this.isCancelledByUs = e.sender === this.getOption(\"session\").userId;\n return true;\n case VerificationEventType.Done:\n this.status = Status.Completed;\n return true;\n default:\n this.status = Status.InProgress;\n needsUpdate = true;\n }\n }\n return needsUpdate;\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {GapTile} from \"./GapTile.js\";\nimport {TextTile} from \"./TextTile.js\";\nimport {RedactedTile} from \"./RedactedTile.js\";\nimport {ImageTile} from \"./ImageTile.js\";\nimport {VideoTile} from \"./VideoTile.js\";\nimport {FileTile} from \"./FileTile.js\";\nimport {LocationTile} from \"./LocationTile.js\";\nimport {RoomNameTile} from \"./RoomNameTile.js\";\nimport {RoomMemberTile} from \"./RoomMemberTile.js\";\nimport {EncryptedEventTile} from \"./EncryptedEventTile.js\";\nimport {EncryptionEnabledTile} from \"./EncryptionEnabledTile.js\";\nimport {MissingAttachmentTile} from \"./MissingAttachmentTile.js\";\nimport {CallTile} from \"./CallTile.js\";\nimport {VerificationTile} from \"./VerificationTile.js\";\n\nimport type {ITile, TileShape} from \"./ITile\";\nimport type {Room} from \"../../../../../matrix/room/Room\";\nimport type {Session} from \"../../../../../matrix/Session\";\nimport type {Timeline} from \"../../../../../matrix/room/timeline/Timeline\";\nimport type {FragmentBoundaryEntry} from \"../../../../../matrix/room/timeline/entries/FragmentBoundaryEntry\";\nimport type {EventEntry} from \"../../../../../matrix/room/timeline/entries/EventEntry\";\nimport type {PendingEventEntry} from \"../../../../../matrix/room/timeline/entries/PendingEventEntry\";\nimport type {Options as ViewModelOptions} from \"../../../../ViewModel\";\n\nexport type TimelineEntry = FragmentBoundaryEntry | EventEntry | PendingEventEntry;\nexport type TileClassForEntryFn = (entry: TimelineEntry) => TileConstructor | undefined;\nexport type Options = ViewModelOptions & {\n session: Session,\n room: Room,\n timeline: Timeline\n tileClassForEntry: TileClassForEntryFn;\n};\nexport type TileConstructor = new (entry: TimelineEntry, options: Options) => ITile;\n\nexport function tileClassForEntry(entry: TimelineEntry, options: Options): TileConstructor | undefined {\n if (entry.isGap) {\n return GapTile;\n } else if (entry.isPending && entry.pendingEvent.isMissingAttachments) {\n return MissingAttachmentTile;\n } else if (entry.eventType) {\n switch (entry.eventType) {\n case \"m.room.message\": {\n if (entry.isRedacted) {\n return RedactedTile;\n }\n const content = entry.content;\n const msgtype = content && content.msgtype;\n switch (msgtype) {\n case \"m.text\":\n case \"m.notice\":\n case \"m.emote\":\n return TextTile;\n case \"m.image\":\n return ImageTile;\n case \"m.video\":\n return VideoTile;\n case \"m.file\":\n return FileTile;\n case \"m.location\":\n return LocationTile;\n case \"m.key.verification.request\":\n const isCrossSigningDisabled = !options.session.features.crossSigning;\n const userId = options.session.userId;\n if (isCrossSigningDisabled || entry.sender === userId) {\n return undefined;\n }\n return VerificationTile as unknown as TileConstructor;\n default:\n // unknown msgtype not rendered\n return undefined;\n }\n }\n case \"m.room.name\":\n return RoomNameTile;\n case \"m.room.member\":\n return RoomMemberTile;\n case \"m.room.encrypted\":\n if (entry.isRedacted) {\n return RedactedTile;\n }\n return EncryptedEventTile;\n case \"m.room.encryption\":\n return EncryptionEnabledTile;\n case \"org.matrix.msc3401.call\": {\n // if prevContent is present, it's an update to a call event, which we don't render\n // as the original event is updated through the call object which receive state event updates\n if (options.features.calls && entry.stateKey && !entry.prevContent) {\n return CallTile;\n }\n return undefined;\n }\n default:\n // unknown type not rendered\n return undefined;\n }\n }\n}\n","/*\nCopyright 2022 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nimport type {Session} from \"../Session.js\";\nimport {RoomStatus} from \"./common\";\n\n/**\n * Join a room and wait for it to arrive in the next sync\n * @param roomId The id of the room to join\n * @param session A session instance\n */\nexport async function joinRoom(roomId: string, session: Session): Promise {\n try {\n const internalRoomId = await session.joinRoom(roomId);\n const roomStatusObservable = await session.observeRoomStatus(internalRoomId);\n await roomStatusObservable.waitFor((status: RoomStatus) => status === RoomStatus.Joined);\n return internalRoomId;\n }\n catch (e) {\n if ((e.statusCode ?? e.status) === 400) {\n throw new Error(`'${roomId}' is not a legal room ID or alias`);\n } else if ((e.statusCode ?? e.status) === 404 || (e.statusCode ?? e.status) === 502 || e.message == \"Internal Server eor\") {\n throw new Error(`Room '${roomId}' could not be found`);\n } else if ((e.statusCode ?? e.status) === 403) {\n throw new Error(`You are not invited to join '${roomId}'`);\n } else {\n throw e;\n }\n }\n}\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {TimelineViewModel} from \"./timeline/TimelineViewModel.js\";\nimport {ComposerViewModel} from \"./ComposerViewModel.js\"\nimport {CallViewModel} from \"./CallViewModel\"\nimport {PickMapObservableValue} from \"../../../observable/value\";\nimport {avatarInitials, getIdentifierColorNumber, getAvatarHttpUrl} from \"../../avatar\";\nimport {ErrorReportViewModel} from \"../../ErrorReportViewModel\";\nimport {ViewModel} from \"../../ViewModel\";\nimport {imageToInfo} from \"../common.js\";\nimport {LocalMedia} from \"../../../matrix/calls/LocalMedia\";\n// TODO: remove fallback so default isn't included in bundle for SDK users that have their custom tileClassForEntry\n// this is a breaking SDK change though to make this option mandatory\nimport {tileClassForEntry as defaultTileClassForEntry} from \"./timeline/tiles/index\";\nimport {joinRoom} from \"../../../matrix/room/joinRoom\";\n\nexport class RoomViewModel extends ErrorReportViewModel {\n constructor(options) {\n super(options);\n const {room, tileClassForEntry} = options;\n this._sendReadReceipt = options.sendReadReceipt ?? true;\n this._room = room;\n this._timelineVM = null;\n this._tileClassForEntry = tileClassForEntry ?? defaultTileClassForEntry;\n this._tileOptions = undefined;\n this._onRoomChange = this._onRoomChange.bind(this);\n this._composerVM = null;\n if (room.isArchived) {\n this._composerVM = this.track(new ArchivedViewModel(this.childOptions({archivedRoom: room})));\n } else {\n this._recreateComposerOnPowerLevelChange();\n }\n this._clearUnreadTimout = null;\n this._closeUrl = this.urlRouter.urlUntilSegment(\"session\");\n this._setupCallViewModel();\n }\n\n _setupCallViewModel() {\n if (!this.features.calls) {\n return;\n }\n // pick call for this room with lowest key\n const calls = this.getOption(\"session\").callHandler.calls;\n this._callObservable = new PickMapObservableValue(calls.filterValues(c => {\n return c.roomId === this._room.id && c.hasJoined;\n }));\n this._callViewModel = undefined;\n this.track(this._callObservable.subscribe(call => {\n if (call && this._callViewModel && call.id === this._callViewModel.id) {\n return;\n }\n this._callViewModel = this.disposeTracked(this._callViewModel);\n if (call) {\n this._callViewModel = this.track(new CallViewModel(this.childOptions({call, room: this._room})));\n }\n this.emitChange(\"callViewModel\");\n }));\n const call = this._callObservable.get();\n // TODO: cleanup this duplication to create CallViewModel\n if (call) {\n this._callViewModel = this.track(new CallViewModel(this.childOptions({call, room: this._room})));\n }\n }\n\n async load() {\n await this.logAndCatch(\"RoomViewModel.load\", async log => {\n this._room.on(\"change\", this._onRoomChange);\n const timeline = await this._room.openTimeline(log);\n this.track(() => timeline.release());\n this._tileOptions = this.childOptions({\n session: this.getOption(\"session\"),\n roomVM: this,\n timeline,\n tileClassForEntry: this._tileClassForEntry,\n });\n this._timelineVM = this.track(new TimelineViewModel(this.childOptions({\n tileOptions: this._tileOptions,\n timeline,\n })));\n this.emitChange(\"timelineViewModel\");\n await this._clearUnreadAfterDelay(log);\n });\n }\n\n async _recreateComposerOnPowerLevelChange() {\n const powerLevelObservable = await this._room.observePowerLevels();\n const canSendMessage = () => powerLevelObservable.get().canSendType(\"m.room.message\");\n let oldCanSendMessage = canSendMessage();\n const recreateComposer = newCanSendMessage => {\n this._composerVM = this.disposeTracked(this._composerVM);\n if (newCanSendMessage) {\n this._composerVM = this.track(new ComposerViewModel(this));\n }\n else {\n this._composerVM = this.track(new LowerPowerLevelViewModel(this.childOptions()));\n }\n this.emitChange(\"powerLevelObservable\")\n };\n this.track(powerLevelObservable.subscribe(() => {\n const newCanSendMessage = canSendMessage();\n if (oldCanSendMessage !== newCanSendMessage) {\n recreateComposer(newCanSendMessage);\n oldCanSendMessage = newCanSendMessage;\n }\n }));\n recreateComposer(oldCanSendMessage);\n }\n\n async _clearUnreadAfterDelay(log) {\n if (this._room.isArchived || this._clearUnreadTimout) {\n return;\n }\n this._clearUnreadTimout = this.clock.createTimeout(2000);\n try {\n await this._clearUnreadTimout.elapsed();\n await this._room.clearUnread(log, this._sendReadReceipt);\n this._clearUnreadTimout = null;\n } catch (err) {\n if (err.name === \"AbortError\") {\n log.set(\"clearUnreadCancelled\", true);\n } else {\n throw err;\n }\n }\n }\n\n focus() {\n this.logAndCatch(\"RoomViewModel.focus\", async log => {\n this._clearUnreadAfterDelay(log);\n });\n }\n\n dispose() {\n super.dispose();\n this._room.off(\"change\", this._onRoomChange);\n if (this._room.isArchived) {\n this._room.release();\n }\n if (this._clearUnreadTimout) {\n this._clearUnreadTimout.abort();\n this._clearUnreadTimout = null;\n }\n }\n\n // room doesn't tell us yet which fields changed,\n // so emit all fields originating from summary\n _onRoomChange() {\n // propagate the update to the child view models so it's bindings can update based on room changes\n this._composerVM?.emitChange();\n this.emitChange();\n }\n\n get kind() { return \"room\"; }\n get closeUrl() { return this._closeUrl; }\n get name() { return this._room.name || this.i18n`Empty Room`; }\n get id() { return this._room.id; }\n get timelineViewModel() { return this._timelineVM; }\n get isEncrypted() { return this._room.isEncrypted; }\n\n get avatarLetter() {\n return avatarInitials(this.name);\n }\n\n get avatarColorNumber() {\n return getIdentifierColorNumber(this._room.avatarColorId)\n }\n\n avatarUrl(size) {\n return getAvatarHttpUrl(this._room.avatarUrl, size, this.platform, this._room.mediaRepository);\n }\n\n get avatarTitle() {\n return this.name;\n }\n\n get canLeave() {\n return this._room.isJoined;\n }\n\n leaveRoom() {\n this._room.leave();\n }\n\n get canForget() {\n return this._room.isArchived;\n }\n\n forgetRoom() {\n this._room.forget();\n }\n\n get canRejoin() {\n return this._room.isArchived;\n }\n\n rejoinRoom() {\n this._room.join();\n }\n\n _createTile(entry) {\n if (this._tileOptions) {\n const Tile = this._tileOptions.tileClassForEntry(entry, this._tileOptions);\n if (Tile) {\n return new Tile(entry, this._tileOptions);\n }\n }\n }\n \n _sendMessage(message, replyingTo) {\n return this.logAndCatch(\"RoomViewModel.sendMessage\", async log => {\n let success = false;\n if (!this._room.isArchived && message) {\n let msgtype = \"m.text\";\n if (message.startsWith(\"//\")) {\n message = message.substring(1).trim();\n } else if (message.startsWith(\"/\")) {\n const result = await this._processCommand(message);\n msgtype = result.msgtype;\n message = result.message;\n }\n let content;\n if (replyingTo) {\n log.set(\"replyingTo\", replyingTo.eventId);\n content = await replyingTo.createReplyContent(msgtype, message);\n } else {\n content = {msgtype, body: message};\n }\n await this._room.sendEvent(\"m.room.message\", content, undefined, log);\n success = true;\n }\n log.set(\"success\", success);\n return success;\n }, false);\n }\n\n async _processCommandJoin(roomName) {\n try {\n const session = this._options.client.session;\n const roomId = await joinRoom(roomName, session);\n this.navigation.push(\"room\", roomId);\n } catch (err) {\n this.reportError(err);\n }\n } \n\n async _processCommand(message) {\n let msgtype;\n const [commandName, ...args] = message.substring(1).split(\" \");\n switch (commandName) {\n case \"me\":\n message = args.join(\" \");\n msgtype = \"m.emote\";\n break;\n case \"join\":\n if (args.length === 1) {\n const roomName = args[0];\n await this._processCommandJoin(roomName);\n } else {\n this.reportError(new Error(\"join syntax: /join \"));\n }\n break;\n case \"invite\":\n if (args.length === 1) {\n const userId = args[0];\n await this._room.inviteUser(userId);\n } else {\n this.reportError(new Error(\"invite syntax: /invite \"));\n }\n break;\n case \"shrug\":\n message = \"¯\\\\_(ツ)_/¯ \" + args.join(\" \");\n msgtype = \"m.text\";\n break;\n case \"tableflip\":\n message = \"(╯°□°)╯︵ ┻━┻ \" + args.join(\" \");\n msgtype = \"m.text\";\n break;\n case \"unflip\":\n message = \"┬──┬ ノ( ゜-゜ノ) \" + args.join(\" \");\n msgtype = \"m.text\";\n break;\n case \"lenny\":\n message = \"( ͡° ͜ʖ ͡°) \" + args.join(\" \");\n msgtype = \"m.text\";\n break;\n default:\n this.reportError(new Error(`no command name \"${commandName}\". To send the message instead of executing, please type \"/${message}\"`));\n message = undefined;\n }\n return {msgtype, message: message};\n }\n\n _pickAndSendFile() {\n return this.logAndCatch(\"RoomViewModel.sendFile\", async log => {\n const file = await this.platform.openFile();\n if (!file) {\n log.set(\"cancelled\", true);\n return;\n }\n return this._sendFile(file, log);\n });\n }\n\n async _sendFile(file, log) {\n const content = {\n body: file.name,\n msgtype: \"m.file\"\n };\n await this._room.sendEvent(\"m.room.message\", content, {\n \"url\": this._room.createAttachment(file.blob, file.name)\n }, log);\n }\n\n _pickAndSendVideo() {\n return this.logAndCatch(\"RoomViewModel.sendVideo\", async log => {\n if (!this.platform.hasReadPixelPermission()) {\n throw new Error(\"Please allow canvas image data access, so we can scale your images down.\");\n }\n const file = await this.platform.openFile(\"video/*\");\n if (!file) {\n return;\n }\n if (!file.blob.mimeType.startsWith(\"video/\")) {\n return this._sendFile(file, log);\n }\n let video;\n try {\n video = await this.platform.loadVideo(file.blob);\n } catch (err) {\n // TODO: extract platform dependent code from view model\n if (err instanceof window.MediaError && err.code === 4) {\n throw new Error(`this browser does not support videos of type ${file?.blob.mimeType}.`);\n } else {\n throw err;\n }\n }\n const content = {\n body: file.name,\n msgtype: \"m.video\",\n info: videoToInfo(video)\n };\n const attachments = {\n \"url\": this._room.createAttachment(video.blob, file.name),\n };\n\n const limit = await this.platform.settingsStorage.getInt(\"sentImageSizeLimit\");\n const maxDimension = limit || Math.min(video.maxDimension, 800);\n const thumbnail = await video.scale(maxDimension);\n content.info.thumbnail_info = imageToInfo(thumbnail);\n attachments[\"info.thumbnail_url\"] = \n this._room.createAttachment(thumbnail.blob, file.name);\n await this._room.sendEvent(\"m.room.message\", content, attachments, log);\n });\n }\n\n async _pickAndSendPicture() {\n this.logAndCatch(\"RoomViewModel.sendPicture\", async log => {\n if (!this.platform.hasReadPixelPermission()) {\n alert(\"Please allow canvas image data access, so we can scale your images down.\");\n return;\n }\n const file = await this.platform.openFile(\"image/*\");\n if (!file) {\n log.set(\"cancelled\", true);\n return;\n }\n if (!file.blob.mimeType.startsWith(\"image/\")) {\n return this._sendFile(file, log);\n }\n let image = await this.platform.loadImage(file.blob);\n const limit = await this.platform.settingsStorage.getInt(\"sentImageSizeLimit\");\n if (limit && image.maxDimension > limit) {\n const scaledImage = await image.scale(limit);\n image.dispose();\n image = scaledImage;\n }\n const content = {\n body: file.name,\n msgtype: \"m.image\",\n info: imageToInfo(image)\n };\n const attachments = {\n \"url\": this._room.createAttachment(image.blob, file.name),\n };\n if (image.maxDimension > 600) {\n const thumbnail = await image.scale(400);\n content.info.thumbnail_info = imageToInfo(thumbnail);\n attachments[\"info.thumbnail_url\"] = \n this._room.createAttachment(thumbnail.blob, file.name);\n }\n await this._room.sendEvent(\"m.room.message\", content, attachments, log);\n });\n }\n\n get room() {\n return this._room;\n }\n\n get composerViewModel() {\n return this._composerVM;\n }\n\n get callViewModel() {\n return this._callViewModel;\n }\n\n openDetailsPanel() {\n let path = this.navigation.path.until(\"room\");\n path = path.with(this.navigation.segment(\"right-panel\", true));\n path = path.with(this.navigation.segment(\"details\", true));\n this.navigation.applyPath(path);\n }\n\n startReply(entry) {\n if (!this._room.isArchived) {\n this._composerVM.setReplyingTo(entry);\n }\n }\n\n startCall() {\n return this.logAndCatch(\"RoomViewModel.startCall\", async log => {\n if (!this.features.calls) {\n log.set(\"feature_disbled\", true);\n return;\n }\n log.set(\"roomId\", this._room.id);\n let localMedia;\n try {\n const stream = await this.platform.mediaDevices.getMediaTracks(false, true);\n localMedia = new LocalMedia().withUserMedia(stream);\n } catch (err) {\n throw new Error(`Could not get local audio and/or video stream: ${err.message}`);\n }\n const session = this.getOption(\"session\");\n let call;\n try {\n // this will set the callViewModel above as a call will be added to callHandler.calls\n call = await session.callHandler.createCall(\n this._room.id,\n \"m.video\",\n \"A call \" + Math.round(this.platform.random() * 100),\n undefined,\n log\n );\n } catch (err) {\n throw new Error(`Could not create call: ${err.message}`);\n }\n try {\n await call.join(localMedia, log);\n } catch (err) {\n throw new Error(`Could not join call: ${err.message}`);\n }\n });\n }\n}\n\nfunction videoToInfo(video) {\n const info = imageToInfo(video);\n info.duration = video.duration;\n return info;\n}\n\nclass ArchivedViewModel extends ViewModel {\n constructor(options) {\n super(options);\n this._archivedRoom = options.archivedRoom;\n }\n\n get description() {\n if (this._archivedRoom.isKicked) {\n if (this._archivedRoom.kickReason) {\n return this.i18n`You were kicked from the room by ${this._archivedRoom.kickedBy.name} because: ${this._archivedRoom.kickReason}`;\n } else {\n return this.i18n`You were kicked from the room by ${this._archivedRoom.kickedBy.name}.`;\n }\n } else if (this._archivedRoom.isBanned) {\n if (this._archivedRoom.kickReason) {\n return this.i18n`You were banned from the room by ${this._archivedRoom.kickedBy.name} because: ${this._archivedRoom.kickReason}`;\n } else {\n return this.i18n`You were banned from the room by ${this._archivedRoom.kickedBy.name}.`;\n }\n } else {\n return this.i18n`You left this room`;\n }\n }\n\n get kind() {\n return \"disabled\";\n }\n}\n\nclass LowerPowerLevelViewModel extends ViewModel {\n get description() {\n return this.i18n`You do not have the powerlevel necessary to send messages`;\n }\n\n get kind() {\n return \"disabled\";\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {ViewModel} from \"../../ViewModel\";\n\nexport class UnknownRoomViewModel extends ViewModel {\n constructor(options) {\n super(options);\n const {roomIdOrAlias, session} = options;\n this._session = session;\n this.roomIdOrAlias = roomIdOrAlias;\n this._error = null;\n this._busy = false;\n this._closeUrl = this.urlRouter.urlUntilSegment(\"session\");\n }\n\n get closeUrl() {\n return this._closeUrl;\n }\n\n get error() {\n return this._error?.message;\n }\n\n async join() {\n this._busy = true;\n this.emitChange(\"busy\");\n try {\n const roomId = await this._session.joinRoom(this.roomIdOrAlias);\n // navigate to roomId if we were at the alias\n // so we're subscribed to the right room status\n // and we'll switch to the room view model once\n // the join is synced\n this.navigation.push(\"room\", roomId);\n // keep busy on true while waiting for the join to sync\n } catch (err) {\n this._error = err;\n this._busy = false;\n this.emitChange(\"error\");\n }\n }\n\n get busy() {\n return this._busy;\n }\n\n get kind() {\n return \"unknown\";\n }\n}\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2020, 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {avatarInitials, getIdentifierColorNumber, getAvatarHttpUrl} from \"../../avatar\";\nimport {ViewModel} from \"../../ViewModel\";\n\nexport class InviteViewModel extends ViewModel {\n constructor(options) {\n super(options);\n const {invite, mediaRepository} = options;\n this._invite = invite;\n this._mediaRepository = mediaRepository;\n this._onInviteChange = this._onInviteChange.bind(this);\n this._error = null;\n this._closeUrl = this.urlRouter.urlUntilSegment(\"session\");\n this._invite.on(\"change\", this._onInviteChange);\n this._inviter = null;\n if (this._invite.inviter) {\n this._inviter = new RoomMemberViewModel(this._invite.inviter, mediaRepository, this.platform);\n }\n this._roomDescription = this._createRoomDescription();\n }\n\n get kind() { return \"invite\"; }\n get closeUrl() { return this._closeUrl; }\n get name() { return this._invite.name; }\n get id() { return this._invite.id; }\n get isEncrypted() { return this._invite.isEncrypted; }\n get isDirectMessage() { return this._invite.isDirectMessage; }\n get inviter() { return this._inviter; }\n get busy() { return this._invite.accepting || this._invite.rejecting; }\n\n get error() {\n if (this._error) {\n return `Something went wrong: ${this._error.message}`;\n }\n return \"\";\n }\n\n get avatarLetter() {\n return avatarInitials(this.name);\n }\n\n get avatarColorNumber() {\n return getIdentifierColorNumber(this._invite.avatarColorId)\n }\n\n avatarUrl(size) {\n return getAvatarHttpUrl(this._invite.avatarUrl, size, this.platform, this._mediaRepository);\n }\n\n _createRoomDescription() {\n const parts = [];\n if (this._invite.isPublic) {\n parts.push(\"Public room\");\n } else {\n parts.push(\"Private room\");\n }\n\n if (this._invite.canonicalAlias) {\n parts.push(this._invite.canonicalAlias);\n }\n return parts.join(\" • \")\n }\n\n get roomDescription() {\n return this._roomDescription;\n }\n\n get avatarTitle() {\n return this.name;\n }\n\n focus() {}\n\n async accept() {\n try {\n await this._invite.accept();\n } catch (err) {\n this._error = err;\n this.emitChange(\"error\");\n }\n }\n\n async reject() {\n try {\n await this._invite.reject();\n } catch (err) {\n this._error = err;\n this.emitChange(\"error\");\n }\n }\n\n _onInviteChange() {\n this.emitChange();\n }\n\n dispose() {\n super.dispose();\n this._invite.off(\"change\", this._onInviteChange);\n }\n}\n\nclass RoomMemberViewModel {\n constructor(member, mediaRepository, platform) {\n this._member = member;\n this._mediaRepository = mediaRepository;\n this._platform = platform;\n }\n\n get id() {\n return this._member.userId;\n }\n\n get name() {\n return this._member.name;\n }\n\n get avatarLetter() {\n return avatarInitials(this.name);\n }\n\n get avatarColorNumber() {\n return getIdentifierColorNumber(this._member.userId);\n }\n\n avatarUrl(size) {\n return getAvatarHttpUrl(this._member.avatarUrl, size, this._platform, this._mediaRepository);\n }\n\n get avatarTitle() {\n return this.name;\n }\n}\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2020, 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {avatarInitials, getIdentifierColorNumber, getAvatarHttpUrl} from \"../../avatar\";\nimport {ViewModel} from \"../../ViewModel\";\n\nexport class RoomBeingCreatedViewModel extends ViewModel {\n constructor(options) {\n super(options);\n const {roomBeingCreated, mediaRepository} = options;\n this._roomBeingCreated = roomBeingCreated;\n this._mediaRepository = mediaRepository;\n this._onRoomChange = this._onRoomChange.bind(this);\n this._closeUrl = this.urlRouter.urlUntilSegment(\"session\");\n this._roomBeingCreated.on(\"change\", this._onRoomChange);\n }\n\n get kind() { return \"roomBeingCreated\"; }\n get closeUrl() { return this._closeUrl; }\n get name() { return this._roomBeingCreated.name; }\n get id() { return this._roomBeingCreated.id; }\n get isEncrypted() { return this._roomBeingCreated.isEncrypted; }\n get error() {\n const {error} = this._roomBeingCreated;\n if (error) {\n if (error.name === \"ConnectionError\") {\n return this.i18n`You seem to be offline`;\n } else {\n return error.message;\n }\n }\n return \"\";\n }\n get avatarLetter() { return avatarInitials(this.name); }\n get avatarColorNumber() { return getIdentifierColorNumber(this._roomBeingCreated.avatarColorId); }\n get avatarTitle() { return this.name; }\n\n avatarUrl(size) {\n // allow blob url which doesn't need mxc => http resolution\n return this._roomBeingCreated.avatarBlobUrl ??\n getAvatarHttpUrl(this._roomBeingCreated.avatarUrl, size, this.platform, this._mediaRepository);\n }\n\n focus() {}\n\n _onRoomChange() {\n this.emitChange();\n }\n\n cancel() {\n this._roomBeingCreated.cancel();\n // navigate away from the room\n this.navigation.applyPath(this.navigation.path.until(\"session\"));\n }\n\n dispose() {\n super.dispose();\n this._roomBeingCreated.off(\"change\", this._onRoomChange);\n }\n}\n\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {ViewModel} from \"../../ViewModel\";\n\nexport class LightboxViewModel extends ViewModel {\n constructor(options) {\n super(options);\n this._eventId = options.eventId;\n this._unencryptedImageUrl = null;\n this._decryptedImage = null;\n this._closeUrl = this.urlRouter.urlUntilSegment(\"room\");\n this._date = null;\n this._subscribeToEvent(options.room, options.eventId);\n }\n\n _subscribeToEvent(room, eventId) {\n const eventObservable = room.observeEvent(eventId);\n this.track(eventObservable.subscribe(eventEntry => {\n this._loadEvent(room, eventEntry);\n }));\n this._loadEvent(room, eventObservable.get());\n }\n\n async _loadEvent(room, eventEntry) {\n if (!eventEntry) {\n return;\n }\n const {mediaRepository} = room;\n this._eventEntry = eventEntry;\n const {content} = this._eventEntry;\n this._date = this._eventEntry.timestamp ? new Date(this._eventEntry.timestamp) : null;\n if (content.url) {\n this._unencryptedImageUrl = mediaRepository.mxcUrl(content.url);\n this.emitChange(\"imageUrl\");\n } else if (content.file) {\n this._decryptedImage = this.track(await mediaRepository.downloadEncryptedFile(content.file));\n this.emitChange(\"imageUrl\");\n }\n }\n\n get imageWidth() {\n return this._eventEntry?.content?.info?.w;\n }\n\n get imageHeight() {\n return this._eventEntry?.content?.info?.h;\n }\n\n get name() {\n return this._eventEntry?.content?.body;\n }\n\n get sender() {\n return this._eventEntry?.displayName;\n }\n\n get imageUrl() {\n if (this._decryptedImage) {\n return this._decryptedImage.url;\n } else if (this._unencryptedImageUrl) {\n return this._unencryptedImageUrl;\n } else {\n return \"\";\n }\n }\n\n get date() {\n return this._date && this._date.toLocaleDateString({}, { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' });\n }\n\n get time() {\n return this._date && this._date.toLocaleTimeString({}, {hour: \"numeric\", minute: \"2-digit\"});\n }\n\n get closeUrl() {\n return this._closeUrl;\n }\n\n close() {\n this.platform.history.pushUrl(this.closeUrl);\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {ViewModel} from \"../ViewModel\";\nimport {createEnum} from \"../../utils/enum\";\nimport {ConnectionStatus} from \"../../matrix/net/Reconnector\";\nimport {SyncStatus} from \"../../matrix/Sync.js\";\n\nconst SessionStatus = createEnum(\n \"Disconnected\",\n \"Connecting\",\n \"FirstSync\",\n \"Sending\",\n \"Syncing\",\n \"SyncError\"\n);\n\nexport class SessionStatusViewModel extends ViewModel {\n constructor(options) {\n super(options);\n const {sync, reconnector, session} = options;\n this._sync = sync;\n this._reconnector = reconnector;\n this._status = this._calculateState(reconnector.connectionStatus.get(), sync.status.get());\n this._session = session;\n this._setupKeyBackupUrl = this.urlRouter.urlForSegment(\"settings\");\n this._dismissSecretStorage = false;\n }\n\n start() {\n const update = () => this._updateStatus();\n this.track(this._sync.status.subscribe(update));\n this.track(this._reconnector.connectionStatus.subscribe(update));\n this.track(this._session.needsKeyBackup.subscribe(() => {\n this.emitChange();\n }));\n }\n\n get setupKeyBackupUrl () {\n return this._setupKeyBackupUrl;\n }\n\n get isShown() {\n return (this._session.needsKeyBackup.get() && !this._dismissSecretStorage) || this._status !== SessionStatus.Syncing;\n }\n\n get statusLabel() {\n switch (this._status) {\n case SessionStatus.Disconnected:{\n const retryIn = Math.round(this._reconnector.retryIn / 1000);\n return this.i18n`Disconnected, trying to reconnect in ${retryIn}s…`;\n }\n case SessionStatus.Connecting:\n return this.i18n`Trying to reconnect now…`;\n case SessionStatus.FirstSync:\n return this.i18n`Catching up with your conversations…`;\n case SessionStatus.SyncError:\n return this.i18n`Sync failed because of ${this._sync.error}`;\n }\n if (this._session.needsKeyBackup.get()) {\n return this.i18n`Set up session backup to decrypt older messages.`;\n }\n return \"\";\n }\n\n get isWaiting() {\n switch (this._status) {\n case SessionStatus.Connecting:\n case SessionStatus.FirstSync:\n return true;\n default:\n return false;\n }\n }\n\n _updateStatus() {\n const newStatus = this._calculateState(\n this._reconnector.connectionStatus.get(),\n this._sync.status.get()\n );\n if (newStatus !== this._status) {\n if (newStatus === SessionStatus.Disconnected) {\n this._retryTimer = this.track(this.clock.createInterval(() => {\n this.emitChange(\"statusLabel\");\n }, 1000));\n } else {\n this._retryTimer = this.disposeTracked(this._retryTimer);\n }\n this._status = newStatus;\n this.emitChange();\n }\n }\n\n _calculateState(connectionStatus, syncStatus) {\n if (connectionStatus !== ConnectionStatus.Online) {\n switch (connectionStatus) {\n case ConnectionStatus.Reconnecting:\n return SessionStatus.Connecting;\n case ConnectionStatus.Waiting:\n return SessionStatus.Disconnected;\n }\n } else if (syncStatus !== SyncStatus.Syncing) {\n switch (syncStatus) {\n // InitialSync should be awaited in the SessionLoadViewModel,\n // but include it here anyway\n case SyncStatus.InitialSync:\n case SyncStatus.CatchupSync:\n return SessionStatus.FirstSync;\n case SyncStatus.Stopped:\n return SessionStatus.SyncError;\n }\n } /* else if (session.pendingMessageCount) {\n return SessionStatus.Sending;\n } */ else {\n return SessionStatus.Syncing;\n }\n }\n\n get isConnectNowShown() {\n return this._status === SessionStatus.Disconnected;\n }\n\n get isSecretStorageShown() {\n // TODO: we need a model here where we can have multiple messages queued up and their buttons don't bleed into each other.\n return this._status === SessionStatus.Syncing && this._session.needsKeyBackup.get() && !this._dismissSecretStorage;\n }\n\n get canDismiss() {\n return this.isSecretStorageShown;\n }\n\n dismiss() {\n if (this.isSecretStorageShown) {\n this._dismissSecretStorage = true;\n this.emitChange();\n }\n }\n\n connectNow() {\n if (this.isConnectNowShown) {\n this._reconnector.tryNow();\n }\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {ViewModel} from \"../ViewModel\";\nimport {addPanelIfNeeded} from \"../navigation/index\";\n\nfunction dedupeSparse(roomIds) {\n return roomIds.map((id, idx) => {\n if (roomIds.slice(0, idx).includes(id)) {\n return undefined;\n } else {\n return id;\n }\n });\n}\n\nexport class RoomGridViewModel extends ViewModel {\n constructor(options) {\n super(options);\n\n this._width = options.width;\n this._height = options.height;\n this._createRoomViewModelObservable = options.createRoomViewModelObservable;\n this._selectedIndex = 0;\n this._viewModelsObservables = [];\n this._setupNavigation();\n }\n\n _setupNavigation() {\n const focusTileIndex = this.navigation.observe(\"empty-grid-tile\");\n this.track(focusTileIndex.subscribe(index => {\n if (typeof index === \"number\") {\n this._setFocusIndex(index);\n }\n }));\n if (typeof focusTileIndex.get() === \"number\") {\n this._selectedIndex = focusTileIndex.get();\n }\n\n const focusedRoom = this.navigation.observe(\"room\");\n this.track(focusedRoom.subscribe(roomId => {\n if (roomId) {\n // as the room will be in the \"rooms\" observable\n // (monitored by the parent vmo) as well,\n // we only change the focus here and trust\n // setRoomIds to have created the vmo already\n this._setFocusRoom(roomId);\n }\n }));\n // initial focus for a room is set by initializeRoomIdsAndTransferVM\n }\n\n roomViewModelAt(i) {\n return this._viewModelsObservables[i]?.get();\n }\n\n get focusIndex() {\n return this._selectedIndex;\n }\n\n get width() {\n return this._width;\n }\n\n get height() {\n return this._height;\n }\n\n _switchToRoom(roomId) {\n let path = this.navigation.path.until(\"rooms\");\n path = path.with(this.navigation.segment(\"room\", roomId));\n path = addPanelIfNeeded(this.navigation, path);\n this.navigation.applyPath(path);\n }\n\n focusTile(index) {\n if (index === this._selectedIndex) {\n return;\n }\n const vmo = this._viewModelsObservables[index];\n if (vmo) {\n this._switchToRoom(vmo.id);\n } else {\n this.navigation.push(\"empty-grid-tile\", index);\n }\n }\n\n /** called from SessionViewModel */\n initializeRoomIdsAndTransferVM(roomIds, existingRoomVM) {\n roomIds = dedupeSparse(roomIds);\n let transfered = false;\n if (existingRoomVM) {\n const index = roomIds.indexOf(existingRoomVM.id);\n if (index !== -1) {\n this._viewModelsObservables[index] = this.track(existingRoomVM);\n existingRoomVM.subscribe(viewModel => this._refreshRoomViewModel(viewModel));\n transfered = true;\n }\n }\n this.setRoomIds(roomIds);\n // now all view models exist, set the focus to the selected room\n const focusedRoom = this.navigation.path.get(\"room\");\n if (focusedRoom) {\n const index = this._viewModelsObservables.findIndex(vmo => vmo && vmo.id === focusedRoom.value);\n if (index !== -1) {\n this._selectedIndex = index;\n }\n }\n return transfered;\n }\n\n /** called from SessionViewModel */\n setRoomIds(roomIds) {\n roomIds = dedupeSparse(roomIds);\n let changed = false;\n const len = this._height * this._width;\n for (let i = 0; i < len; i += 1) {\n const newId = roomIds[i];\n const vmo = this._viewModelsObservables[i];\n // did anything change?\n if ((!vmo && newId) || (vmo && vmo.id !== newId)) {\n if (vmo) {\n this._viewModelsObservables[i] = this.disposeTracked(vmo);\n }\n if (newId) {\n const vmo = this._createRoomViewModelObservable(newId);\n this._viewModelsObservables[i] = this.track(vmo);\n vmo.subscribe(viewModel => this._refreshRoomViewModel(viewModel));\n vmo.initialize();\n }\n changed = true;\n }\n }\n if (changed) {\n this.emitChange();\n }\n return changed;\n }\n\n _refreshRoomViewModel(viewModel) {\n this.emitChange();\n viewModel?.focus();\n }\n\n /** called from SessionViewModel */\n releaseRoomViewModel(roomId) {\n const index = this._viewModelsObservables.findIndex(vmo => vmo && vmo.id === roomId);\n if (index !== -1) {\n const vmo = this._viewModelsObservables[index];\n this.untrack(vmo);\n vmo.unsubscribeAll();\n this._viewModelsObservables[index] = null;\n return vmo;\n }\n }\n\n _setFocusIndex(idx) {\n if (idx === this._selectedIndex || idx >= (this._width * this._height)) {\n return;\n }\n this._selectedIndex = idx;\n const vmo = this._viewModelsObservables[this._selectedIndex];\n vmo?.get()?.focus();\n this.emitChange(\"focusIndex\");\n }\n\n _setFocusRoom(roomId) {\n const index = this._viewModelsObservables.findIndex(vmo => vmo?.id === roomId);\n if (index >= 0) {\n this._setFocusIndex(index);\n }\n }\n}\n\nimport {createNavigation} from \"../navigation/index\";\nimport {ObservableValue} from \"../../observable/value\";\n\nexport function tests() { \n class RoomVMMock {\n constructor(id) {\n this.id = id;\n this.disposed = false;\n this.focused = false;\n }\n dispose() {\n this.disposed = true;\n }\n focus() {\n this.focused = true;\n }\n }\n\n class RoomViewModelObservableMock extends ObservableValue {\n async initialize() {}\n dispose() { this.get()?.dispose(); }\n get id() { return this.get()?.id; }\n }\n\n function createNavigationForRoom(rooms, room) {\n const navigation = createNavigation();\n navigation.applyPath(navigation.pathFrom([\n navigation.segment(\"session\", \"1\"),\n navigation.segment(\"rooms\", rooms),\n navigation.segment(\"room\", room),\n ]));\n return navigation;\n }\n\n function createNavigationForEmptyTile(rooms, idx) {\n const navigation = createNavigation();\n navigation.applyPath(navigation.pathFrom([\n navigation.segment(\"session\", \"1\"),\n navigation.segment(\"rooms\", rooms),\n navigation.segment(\"empty-grid-tile\", idx),\n ]));\n return navigation;\n }\n\n return {\n \"initialize with duplicate set of rooms\": assert => {\n const navigation = createNavigationForRoom([\"c\", \"a\", \"b\", undefined, \"a\"], \"a\");\n const gridVM = new RoomGridViewModel({\n createRoomViewModelObservable: id => new RoomViewModelObservableMock(new RoomVMMock(id)),\n navigation,\n width: 3,\n height: 2,\n });\n gridVM.initializeRoomIdsAndTransferVM(navigation.path.get(\"rooms\").value);\n assert.equal(gridVM.focusIndex, 1);\n assert.equal(gridVM.roomViewModelAt(0).id, \"c\");\n assert.equal(gridVM.roomViewModelAt(1).id, \"a\");\n assert.equal(gridVM.roomViewModelAt(2).id, \"b\");\n assert.equal(gridVM.roomViewModelAt(3), undefined);\n assert.equal(gridVM.roomViewModelAt(4), undefined);\n assert.equal(gridVM.roomViewModelAt(5), undefined);\n },\n \"transfer room view model\": assert => {\n const navigation = createNavigationForRoom([\"a\"], \"a\");\n const gridVM = new RoomGridViewModel({\n createRoomViewModelObservable: () => assert.fail(\"no vms should be created\"),\n navigation,\n width: 3,\n height: 2,\n });\n const existingRoomVM = new RoomViewModelObservableMock(new RoomVMMock(\"a\"));\n const transfered = gridVM.initializeRoomIdsAndTransferVM(navigation.path.get(\"rooms\").value, existingRoomVM);\n assert.equal(transfered, true);\n assert.equal(gridVM.focusIndex, 0);\n assert.equal(gridVM.roomViewModelAt(0).id, \"a\");\n },\n \"reject transfer for non-matching room view model\": assert => {\n const navigation = createNavigationForRoom([\"a\"], \"a\");\n const gridVM = new RoomGridViewModel({\n createRoomViewModelObservable: id => new RoomViewModelObservableMock(new RoomVMMock(id)),\n navigation,\n width: 3,\n height: 2,\n });\n const existingRoomVM = new RoomViewModelObservableMock(new RoomVMMock(\"f\"));\n const transfered = gridVM.initializeRoomIdsAndTransferVM(navigation.path.get(\"rooms\").value, existingRoomVM);\n assert.equal(transfered, false);\n assert.equal(gridVM.focusIndex, 0);\n assert.equal(gridVM.roomViewModelAt(0).id, \"a\");\n },\n \"created & released room view model is not disposed\": assert => {\n const navigation = createNavigationForRoom([\"a\"], \"a\");\n const gridVM = new RoomGridViewModel({\n createRoomViewModelObservable: id => new RoomViewModelObservableMock(new RoomVMMock(id)),\n navigation,\n width: 3,\n height: 2,\n });\n const transfered = gridVM.initializeRoomIdsAndTransferVM(navigation.path.get(\"rooms\").value);\n assert.equal(transfered, false);\n const releasedVM = gridVM.releaseRoomViewModel(\"a\");\n gridVM.dispose();\n assert.equal(releasedVM.get().disposed, false);\n },\n \"transfered & released room view model is not disposed\": assert => {\n const navigation = createNavigationForRoom([undefined, \"a\"], \"a\");\n const gridVM = new RoomGridViewModel({\n createRoomViewModelObservable: () => assert.fail(\"no vms should be created\"),\n navigation,\n width: 3,\n height: 2,\n });\n const existingRoomVM = new RoomViewModelObservableMock(new RoomVMMock(\"a\"));\n const transfered = gridVM.initializeRoomIdsAndTransferVM(navigation.path.get(\"rooms\").value, existingRoomVM);\n assert.equal(transfered, true);\n const releasedVM = gridVM.releaseRoomViewModel(\"a\");\n gridVM.dispose();\n assert.equal(releasedVM.get().disposed, false);\n },\n \"try release non-existing room view model is\": assert => {\n const navigation = createNavigationForEmptyTile([undefined, \"b\"], 3);\n const gridVM = new RoomGridViewModel({\n createRoomViewModelObservable: id => new RoomViewModelObservableMock(new RoomVMMock(id)),\n navigation,\n width: 3,\n height: 2,\n });\n gridVM.initializeRoomIdsAndTransferVM(navigation.path.get(\"rooms\").value);\n const releasedVM = gridVM.releaseRoomViewModel(\"c\");\n assert(!releasedVM);\n },\n \"initial focus is set to empty tile\": assert => {\n const navigation = createNavigationForEmptyTile([\"a\"], 1);\n const gridVM = new RoomGridViewModel({\n createRoomViewModelObservable: id => new RoomViewModelObservableMock(new RoomVMMock(id)),\n navigation,\n width: 3,\n height: 2,\n });\n gridVM.initializeRoomIdsAndTransferVM(navigation.path.get(\"rooms\").value);\n assert.equal(gridVM.focusIndex, 1);\n assert.equal(gridVM.roomViewModelAt(0).id, \"a\");\n },\n \"change room ids after creation\": assert => {\n const navigation = createNavigationForRoom([\"a\", \"b\"], \"a\");\n const gridVM = new RoomGridViewModel({\n createRoomViewModelObservable: id => new RoomViewModelObservableMock(new RoomVMMock(id)),\n navigation,\n width: 3,\n height: 2,\n });\n navigation.observe(\"rooms\").subscribe(roomIds => {\n gridVM.setRoomIds(roomIds);\n });\n gridVM.initializeRoomIdsAndTransferVM(navigation.path.get(\"rooms\").value);\n const oldA = gridVM.roomViewModelAt(0);\n const oldB = gridVM.roomViewModelAt(1);\n assert.equal(oldA.id, \"a\");\n assert.equal(oldB.id, \"b\");\n navigation.applyPath(navigation.path\n .with(navigation.segment(\"rooms\", [\"b\", \"c\", \"b\"]))\n .with(navigation.segment(\"room\", \"c\"))\n );\n assert.equal(oldA.disposed, true);\n assert.equal(oldB.disposed, true);\n assert.equal(gridVM.focusIndex, 1);\n assert.equal(gridVM.roomViewModelAt(0).id, \"b\");\n assert.equal(gridVM.roomViewModelAt(0).disposed, false);\n assert.equal(gridVM.roomViewModelAt(1).id, \"c\");\n assert.equal(gridVM.roomViewModelAt(1).focused, true);\n assert.equal(gridVM.roomViewModelAt(2), undefined);\n }\n };\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {ViewModel} from \"../../ViewModel\";\nimport {SegmentType} from \"../../navigation/index\";\nimport {KeyType} from \"../../../matrix/ssss/index\";\n\nimport type {Options as BaseOptions} from \"../../ViewModel\";\nimport type {Session} from \"../../../matrix/Session\";\nimport type {Disposable} from \"../../../utils/Disposables\";\nimport type {KeyBackup, Progress} from \"../../../matrix/e2ee/megolm/keybackup/KeyBackup\";\nimport type {CrossSigning} from \"../../../matrix/verification/CrossSigning\";\n\nexport enum Status {\n Enabled,\n SetupWithPassphrase,\n SetupWithRecoveryKey,\n Pending,\n NewVersionAvailable\n};\n\nexport enum BackupWriteStatus {\n Writing,\n Stopped,\n Done,\n Pending\n};\n\ntype Options = {\n session: Session,\n} & BaseOptions;\n\nexport class KeyBackupViewModel extends ViewModel {\n private _error?: Error = undefined;\n private _isBusy = false;\n private _dehydratedDeviceId?: string = undefined;\n private _status = Status.Pending;\n private _backupOperationSubscription?: Disposable = undefined;\n private _keyBackupSubscription?: Disposable = undefined;\n private _progress?: Progress = undefined;\n private _setupKeyType = KeyType.RecoveryKey;\n\n constructor(options) {\n super(options);\n const onKeyBackupSet = (keyBackup: KeyBackup | undefined) => {\n if (keyBackup && !this._keyBackupSubscription) {\n this._keyBackupSubscription = this.track(this._session.keyBackup.get().disposableOn(\"change\", () => {\n this._onKeyBackupChange();\n }));\n } else if (!keyBackup && this._keyBackupSubscription) {\n this._keyBackupSubscription = this.disposeTracked(this._keyBackupSubscription);\n }\n this._onKeyBackupChange(); // update status\n };\n this.track(this._session.keyBackup.subscribe(onKeyBackupSet));\n this.track(this._session.crossSigning.subscribe(() => {\n this.emitChange(\"crossSigning\");\n }));\n onKeyBackupSet(this._keyBackup);\n }\n\n private get _session(): Session {\n return this.getOption(\"session\");\n }\n\n private get _keyBackup(): KeyBackup | undefined {\n return this._session.keyBackup.get();\n }\n\n private get _crossSigning(): CrossSigning | undefined {\n return this._session.crossSigning.get();\n }\n\n private _onKeyBackupChange() {\n const keyBackup = this._keyBackup;\n if (keyBackup) {\n const {operationInProgress} = keyBackup;\n if (operationInProgress && !this._backupOperationSubscription) {\n this._backupOperationSubscription = this.track(operationInProgress.disposableOn(\"change\", () => {\n this._progress = operationInProgress.progress;\n this.emitChange(\"backupPercentage\");\n }));\n } else if (this._backupOperationSubscription && !operationInProgress) {\n this._backupOperationSubscription = this.disposeTracked(this._backupOperationSubscription);\n this._progress = undefined;\n }\n }\n this.emitChange(\"status\");\n }\n\n get status(): Status {\n const keyBackup = this._keyBackup;\n if (keyBackup) {\n if (keyBackup.needsNewKey) {\n return Status.NewVersionAvailable;\n } else if (keyBackup.version === undefined) {\n return Status.Pending;\n } else {\n return keyBackup.needsNewKey ? Status.NewVersionAvailable : Status.Enabled;\n }\n } else {\n switch (this._setupKeyType) {\n case KeyType.RecoveryKey: return Status.SetupWithRecoveryKey;\n case KeyType.Passphrase: return Status.SetupWithPassphrase;\n }\n }\n }\n\n get decryptAction(): string {\n return this.i18n`Set up`;\n }\n\n get purpose(): string {\n return this.i18n`set up key backup`;\n }\n\n offerDehydratedDeviceSetup(): boolean {\n return true;\n }\n\n get dehydratedDeviceId(): string | undefined {\n return this._dehydratedDeviceId;\n }\n \n get isBusy(): boolean {\n return this._isBusy;\n }\n\n get backupVersion(): string {\n return this._keyBackup?.version ?? \"\";\n }\n\n get isMasterKeyTrusted(): boolean {\n return this._crossSigning?.isMasterKeyTrusted ?? false;\n }\n\n get canSignOwnDevice(): boolean {\n return !!this._crossSigning;\n }\n\n private async _signOwnDevice(): Promise {\n const crossSigning = this._crossSigning;\n if (crossSigning) {\n await this.logger.run(\"KeyBackupViewModel.signOwnDevice\", async log => {\n await crossSigning.signOwnDevice(log);\n });\n }\n }\n\n navigateToVerification(): void {\n this.navigation.push(\"device-verification\", true);\n }\n\n get backupWriteStatus(): BackupWriteStatus {\n const keyBackup = this._keyBackup;\n if (!keyBackup || keyBackup.version === undefined) {\n return BackupWriteStatus.Pending;\n } else if (keyBackup.hasStopped) {\n return BackupWriteStatus.Stopped;\n }\n const operation = keyBackup.operationInProgress;\n if (operation) {\n return BackupWriteStatus.Writing;\n } else if (keyBackup.hasBackedUpAllKeys) {\n return BackupWriteStatus.Done;\n } else {\n return BackupWriteStatus.Pending;\n }\n }\n\n get backupError(): string | undefined {\n return this._keyBackup?.error?.message;\n }\n\n get error(): string | undefined {\n return this._error?.message;\n }\n\n showPhraseSetup(): void {\n this._setupKeyType = KeyType.Passphrase;\n this.emitChange(\"status\");\n }\n\n showKeySetup(): void {\n this._setupKeyType = KeyType.RecoveryKey;\n this.emitChange(\"status\");\n }\n\n private async _enterCredentials(keyType, credential, setupDehydratedDevice): Promise {\n if (credential) {\n try {\n this._isBusy = true;\n this.emitChange(\"isBusy\");\n const key = await this._session.enableSecretStorage(keyType, credential);\n if (setupDehydratedDevice) {\n this._dehydratedDeviceId = await this._session.setupDehydratedDevice(key);\n }\n await this._signOwnDevice();\n } catch (err) {\n console.error(err);\n this._error = err;\n this.emitChange(\"error\");\n } finally {\n this._isBusy = false;\n this.emitChange();\n }\n }\n }\n\n enterSecurityPhrase(passphrase, setupDehydratedDevice): Promise {\n return this._enterCredentials(KeyType.Passphrase, passphrase, setupDehydratedDevice);\n }\n\n enterSecurityKey(securityKey, setupDehydratedDevice): Promise {\n return this._enterCredentials(KeyType.RecoveryKey, securityKey, setupDehydratedDevice);\n }\n\n async disable(): Promise {\n try {\n this._isBusy = true;\n this.emitChange(\"isBusy\");\n await this._session.disableSecretStorage();\n } catch (err) {\n console.error(err);\n this._error = err;\n this.emitChange(\"error\");\n } finally {\n this._isBusy = false;\n this.emitChange();\n }\n }\n\n get isBackingUp(): boolean {\n return this._keyBackup?.operationInProgress !== undefined;\n }\n\n get backupPercentage(): number {\n if (this._progress) {\n return Math.round((this._progress.finished / this._progress.total) * 100);\n }\n return 0;\n }\n\n get backupInProgressLabel(): string {\n if (this._progress) {\n return this.i18n`${this._progress.finished} of ${this._progress.total}`;\n }\n return this.i18n`…`;\n }\n\n cancelBackup(): void {\n this._keyBackup?.operationInProgress?.abort();\n }\n\n startBackup(): void {\n this.logger.run(\"KeyBackupViewModel.startBackup\", log => {\n this._keyBackup?.flush(log);\n });\n }\n}\n\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {ViewModel} from \"../../ViewModel\";\nimport type {Options as BaseOptions} from \"../../ViewModel\";\nimport {FeatureFlag, FeatureSet} from \"../../../features\";\nimport type {SegmentType} from \"../../navigation/index\";\n\nexport class FeaturesViewModel extends ViewModel {\n public readonly featureViewModels: ReadonlyArray;\n\n constructor(options) {\n super(options);\n this.featureViewModels = [\n new FeatureViewModel(this.childOptions({\n name: this.i18n`Audio/video calls`,\n description: this.i18n`Allows starting and participating in A/V calls compatible with Element Call (MSC3401). Look for the start call option in the room menu ((...) in the right corner) to start a call.`,\n feature: FeatureFlag.Calls\n })),\n new FeatureViewModel(this.childOptions({\n name: this.i18n`Cross-Signing`,\n description: this.i18n`Allows verifying the identity of people you chat with. This feature is still evolving constantly, expect things to break.`,\n feature: FeatureFlag.CrossSigning\n })),\n ];\n }\n}\n\ntype FeatureOptions = BaseOptions & {\n feature: FeatureFlag,\n description: string,\n name: string\n};\n\nexport class FeatureViewModel extends ViewModel {\n get enabled(): boolean {\n return this.features.isFeatureEnabled(this.getOption(\"feature\"));\n }\n\n async enableFeature(enabled: boolean): Promise {\n let newFeatures;\n if (enabled) {\n newFeatures = this.features.withFeature(this.getOption(\"feature\"));\n } else {\n newFeatures = this.features.withoutFeature(this.getOption(\"feature\"));\n }\n await newFeatures.store(this.platform.settingsStorage);\n this.platform.restart();\n }\n\n get id(): string {\n return `${this.getOption(\"feature\")}`;\n }\n\n get name(): string {\n return this.getOption(\"name\");\n }\n\n get description(): string {\n return this.getOption(\"description\");\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {ViewModel} from \"../../ViewModel\";\nimport {KeyBackupViewModel} from \"./KeyBackupViewModel\";\nimport {FeaturesViewModel} from \"./FeaturesViewModel\";\nimport {submitLogsFromSessionToDefaultServer} from \"../../../domain/rageshake\";\n\nclass PushNotificationStatus {\n constructor() {\n this.supported = null;\n this.enabled = false;\n this.updating = false;\n this.enabledOnServer = null;\n this.serverError = null;\n }\n}\n\nfunction formatKey(key) {\n const partLength = 4;\n const partCount = Math.ceil(key.length / partLength);\n let formattedKey = \"\";\n for (let i = 0; i < partCount; i += 1) {\n formattedKey += (formattedKey.length ? \" \" : \"\") + key.slice(i * partLength, (i + 1) * partLength);\n }\n return formattedKey;\n}\n\nexport class SettingsViewModel extends ViewModel {\n constructor(options) {\n super(options);\n this._updateService = options.updateService;\n const {client} = options;\n this._client = client;\n this._keyBackupViewModel = this.track(new KeyBackupViewModel(this.childOptions({session: this._session})));\n this._closeUrl = this.urlRouter.urlUntilSegment(\"session\");\n this._estimate = null;\n this.sentImageSizeLimit = null;\n this.minSentImageSizeLimit = 400;\n this.maxSentImageSizeLimit = 4000;\n this.pushNotifications = new PushNotificationStatus();\n this._activeTheme = undefined;\n this._logsFeedbackMessage = undefined;\n this._featuresViewModel = new FeaturesViewModel(this.childOptions());\n }\n\n get _session() {\n return this._client.session;\n }\n\n async logout() {\n this.navigation.push(\"logout\", this._client.sessionId);\n }\n\n setSentImageSizeLimit(size) {\n if (size > this.maxSentImageSizeLimit || size < this.minSentImageSizeLimit) {\n this.sentImageSizeLimit = null;\n this.platform.settingsStorage.remove(\"sentImageSizeLimit\");\n } else {\n this.sentImageSizeLimit = Math.round(size);\n this.platform.settingsStorage.setInt(\"sentImageSizeLimit\", size);\n }\n this.emitChange(\"sentImageSizeLimit\");\n }\n\n async load() {\n this._estimate = await this.platform.estimateStorageUsage();\n this.sentImageSizeLimit = await this.platform.settingsStorage.getInt(\"sentImageSizeLimit\");\n this.pushNotifications.supported = await this.platform.notificationService.supportsPush();\n this.pushNotifications.enabled = await this._session.arePushNotificationsEnabled();\n if (!import.meta.env.DEV) {\n this._activeTheme = await this.platform.themeLoader.getActiveTheme();\n }\n this.emitChange(\"\");\n }\n\n get closeUrl() {\n return this._closeUrl;\n }\n\n get fingerprintKey() {\n const key = this._session.fingerprintKey;\n if (!key) {\n return null;\n }\n return formatKey(key);\n }\n\n get deviceId() {\n return this._session.deviceId;\n }\n\n get userId() {\n return this._session.userId;\n }\n\n get version() {\n const {updateService} = this.platform; \n if (updateService) {\n return `${updateService.version} (${updateService.buildHash})`;\n }\n return this.i18n`development version`;\n }\n\n checkForUpdate() {\n this.platform.updateService?.checkForUpdate();\n }\n\n get showUpdateButton() {\n return !!this.platform.updateService;\n }\n\n get keyBackupViewModel() {\n return this._keyBackupViewModel;\n }\n\n get featuresViewModel() {\n return this._featuresViewModel;\n }\n\n get storageQuota() {\n return this._formatBytes(this._estimate?.quota);\n }\n\n get storageUsage() {\n return this._formatBytes(this._estimate?.usage);\n }\n\n get themeMapping() {\n return this.platform.themeLoader.themeMapping;\n }\n\n get activeTheme() {\n return this._activeTheme;\n }\n\n _formatBytes(n) {\n if (typeof n === \"number\") {\n return Math.round(n / (1024 * 1024)).toFixed(1) + \" MB\";\n } else {\n return this.i18n`unknown`;\n }\n }\n\n async exportLogs() {\n const logs = await this.exportLogsBlob();\n this.platform.saveFileAs(logs, `hydrogen-logs-${this.platform.clock.now()}.json`);\n }\n\n async exportLogsBlob() {\n const persister = this.logger.reporters.find(r => typeof r.export === \"function\");\n const logExport = await persister.export();\n return logExport.asBlob();\n }\n\n get canSendLogsToServer() {\n return !!this.platform.config.bugReportEndpointUrl;\n }\n\n get logsServer() {\n const {bugReportEndpointUrl} = this.platform.config;\n try {\n if (bugReportEndpointUrl) {\n return new URL(bugReportEndpointUrl).hostname;\n }\n } catch (e) {}\n return \"\";\n }\n\n async sendLogsToServer() {\n this._logsFeedbackMessage = this.i18n`Sending logs…`;\n try {\n await submitLogsFromSessionToDefaultServer(this._session, this.platform);\n this._logsFeedbackMessage = this.i18n`Logs sent succesfully!`;\n } catch (err) {\n this._logsFeedbackMessage = err.message;\n this.emitChange();\n }\n }\n\n get logsFeedbackMessage() {\n return this._logsFeedbackMessage;\n }\n\n async togglePushNotifications() {\n this.pushNotifications.updating = true;\n this.pushNotifications.enabledOnServer = null;\n this.pushNotifications.serverError = null;\n this.emitChange(\"pushNotifications.updating\");\n try {\n if (await this._session.enablePushNotifications(!this.pushNotifications.enabled)) {\n this.pushNotifications.enabled = !this.pushNotifications.enabled;\n if (this.pushNotifications.enabled) {\n this.platform.notificationService.showNotification(this.i18n`Push notifications are now enabled`);\n }\n }\n } finally {\n this.pushNotifications.updating = false;\n this.emitChange(\"pushNotifications.updating\");\n }\n }\n\n async checkPushEnabledOnServer() {\n this.pushNotifications.enabledOnServer = null;\n this.pushNotifications.serverError = null;\n try {\n this.pushNotifications.enabledOnServer = await this._session.checkPusherEnabledOnHomeserver();\n this.emitChange(\"pushNotifications.enabledOnServer\");\n } catch (err) {\n this.pushNotifications.serverError = err;\n this.emitChange(\"pushNotifications.serverError\");\n }\n }\n\n changeThemeOption(themeName, themeVariant) {\n this.platform.themeLoader.setTheme(themeName, themeVariant);\n // emit so that radio-buttons become displayed/hidden\n this.emitChange(\"themeOption\");\n }\n}\n\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {ViewModel} from \"../ViewModel\";\nimport {imageToInfo} from \"./common.js\";\nimport {RoomType} from \"../../matrix/room/common\";\n\nexport class CreateRoomViewModel extends ViewModel {\n constructor(options) {\n super(options);\n const {session} = options;\n this._session = session;\n this._name = undefined;\n this._topic = undefined;\n this._roomAlias = undefined;\n this._isPublic = false;\n this._isEncrypted = true;\n this._isAdvancedShown = false;\n this._isFederationDisabled = false;\n this._avatarScaledBlob = undefined;\n this._avatarFileName = undefined;\n this._avatarInfo = undefined;\n this._closeUrl = this.urlRouter.urlUntilSegment(\"session\");\n }\n\n get isPublic() { return this._isPublic; }\n get isEncrypted() { return this._isEncrypted; }\n get canCreate() { return !!this._name; }\n avatarUrl() { return this._avatarScaledBlob.url; }\n get avatarTitle() { return this._name; }\n get avatarLetter() { return \"\"; }\n get avatarColorNumber() { return 0; }\n get hasAvatar() { return !!this._avatarScaledBlob; }\n get isFederationDisabled() { return this._isFederationDisabled; }\n get isAdvancedShown() { return this._isAdvancedShown; }\n get closeUrl() { return this._closeUrl; }\n\n setName(name) {\n this._name = name;\n this.emitChange(\"canCreate\");\n }\n\n setRoomAlias(roomAlias) {\n this._roomAlias = roomAlias;\n }\n\n setTopic(topic) {\n this._topic = topic;\n }\n\n setPublic(isPublic) {\n this._isPublic = isPublic;\n this.emitChange(\"isPublic\");\n }\n\n setEncrypted(isEncrypted) {\n this._isEncrypted = isEncrypted;\n this.emitChange(\"isEncrypted\");\n }\n\n setFederationDisabled(disable) {\n this._isFederationDisabled = disable;\n this.emitChange(\"isFederationDisabled\");\n }\n\n toggleAdvancedShown() {\n this._isAdvancedShown = !this._isAdvancedShown;\n this.emitChange(\"isAdvancedShown\");\n }\n\n create() {\n let avatar;\n if (this._avatarScaledBlob) {\n avatar = {\n info: this._avatarInfo,\n name: this._avatarFileName,\n blob: this._avatarScaledBlob\n }\n }\n const roomBeingCreated = this._session.createRoom({\n type: this.isPublic ? RoomType.Public : RoomType.Private,\n name: this._name ?? undefined,\n topic: this._topic ?? undefined,\n isEncrypted: !this.isPublic && this._isEncrypted,\n isFederationDisabled: this._isFederationDisabled,\n alias: this.isPublic ? ensureAliasIsLocalPart(this._roomAlias) : undefined,\n avatar,\n });\n this.navigation.push(\"room\", roomBeingCreated.id);\n }\n\n async selectAvatar() {\n if (!this.platform.hasReadPixelPermission()) {\n alert(\"Please allow canvas image data access, so we can scale your images down.\");\n return;\n }\n if (this._avatarScaledBlob) {\n this._avatarScaledBlob.dispose();\n }\n this._avatarScaledBlob = undefined;\n this._avatarFileName = undefined;\n this._avatarInfo = undefined;\n\n const file = await this.platform.openFile(\"image/*\");\n if (!file || !file.blob.mimeType.startsWith(\"image/\")) {\n // allow to clear the avatar by not selecting an image\n this.emitChange(\"hasAvatar\");\n return;\n }\n let image = await this.platform.loadImage(file.blob);\n const limit = 800;\n if (image.maxDimension > limit) {\n const scaledImage = await image.scale(limit);\n image.dispose();\n image = scaledImage;\n }\n this._avatarScaledBlob = image.blob;\n this._avatarInfo = imageToInfo(image);\n this._avatarFileName = file.name;\n this.emitChange(\"hasAvatar\");\n }\n}\n\nfunction ensureAliasIsLocalPart(roomAliasLocalPart) {\n if (roomAliasLocalPart.startsWith(\"#\")) {\n roomAliasLocalPart = roomAliasLocalPart.substr(1);\n }\n const colonIdx = roomAliasLocalPart.indexOf(\":\");\n if (colonIdx !== -1) {\n roomAliasLocalPart = roomAliasLocalPart.substr(0, colonIdx);\n }\n return roomAliasLocalPart;\n}\n","/*\nCopyright 2022 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {ViewModel, Options as BaseOptions} from \"../ViewModel\";\nimport {SegmentType} from \"../navigation/index\";\nimport type {Session} from \"../../matrix/Session.js\";\nimport {joinRoom} from \"../../matrix/room/joinRoom\";\n\ntype Options = BaseOptions & {\n session: Session;\n};\n\nexport class JoinRoomViewModel extends ViewModel {\n private _session: Session;\n private _joinInProgress: boolean = false;\n private _error: Error | undefined;\n private _closeUrl: string;\n\n constructor(options: Readonly) {\n super(options);\n this._session = options.session;\n this._closeUrl = this.urlRouter.urlUntilSegment(\"session\");\n }\n\n get closeUrl(): string { return this._closeUrl; }\n\n async join(roomId: string): Promise {\n this._error = undefined;\n this._joinInProgress = true;\n this.emitChange(\"joinInProgress\");\n try {\n const id = await joinRoom(roomId, this._session);\n this.navigation.push(\"room\", id);\n }\n catch (e) {\n this._error = e;\n this._joinInProgress = false;\n this.emitChange(\"error\");\n }\n }\n\n get joinInProgress(): boolean {\n return this._joinInProgress;\n }\n\n get status(): string | undefined {\n if (this._error) {\n return this._error.message;\n } \n else if(this._joinInProgress){\n return \"Joining room\";\n }\n }\n}\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {ViewModel, Options as BaseOptions} from \"../../../ViewModel\";\nimport {SegmentType} from \"../../../navigation/index\";\nimport type {SASVerification} from \"../../../../matrix/verification/SAS/SASVerification\";\n\ntype Options = BaseOptions & {\n sas: SASVerification;\n};\n\nexport class WaitingForOtherUserViewModel extends ViewModel {\n async cancel() {\n await this.options.sas.abort();\n }\n\n get title() {\n const message = this.getOption(\"sas\").isCrossSigningAnotherUser\n ? \"Waiting for the other user to accept the verification request\"\n : \"Waiting for any of your device to accept the verification request\";\n return this.i18n`${message}`;\n }\n\n get description() {\n const message = this.getOption(\"sas\").isCrossSigningAnotherUser\n ? \"Ask the other user to accept the request from their client!\"\n : \"Accept the request from the device you wish to verify!\";\n return this.i18n`${message}`;\n }\n\n get kind(): string {\n return \"waiting-for-user\";\n }\n}\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {SegmentType} from \"../../../navigation/index\";\nimport {ErrorReportViewModel} from \"../../../ErrorReportViewModel\";\nimport type {Options as BaseOptions} from \"../../../ViewModel\";\nimport type {Session} from \"../../../../matrix/Session.js\";\nimport type {SASVerification} from \"../../../../matrix/verification/SAS/SASVerification\";\n\ntype Options = BaseOptions & {\n sas: SASVerification;\n session: Session;\n};\n\nexport abstract class DismissibleVerificationViewModel extends ErrorReportViewModel {\n dismiss(): void {\n /**\n * If we're cross-signing another user, redirect to the room (which will just close the right panel).\n * If we're verifying a device, redirect to settings.\n */\n if (this.getOption(\"sas\").isCrossSigningAnotherUser) {\n const path = this.navigation.path.until(\"room\");\n this.navigation.applyPath(path);\n } else {\n this.navigation.push(\"settings\", true);\n }\n }\n}\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {Options as BaseOptions} from \"../../../ViewModel\";\nimport {DismissibleVerificationViewModel} from \"./DismissibleVerificationViewModel\";\nimport {CancelReason} from \"../../../../matrix/verification/SAS/channel/types\";\nimport type {Session} from \"../../../../matrix/Session.js\";\nimport type {IChannel} from \"../../../../matrix/verification/SAS/channel/IChannel\";\nimport type {SASVerification} from \"../../../../matrix/verification/SAS/SASVerification\";\n\ntype Options = BaseOptions & {\n cancellation: IChannel[\"cancellation\"];\n session: Session;\n sas: SASVerification; \n};\n\nexport class VerificationCancelledViewModel extends DismissibleVerificationViewModel {\n get cancelCode(): CancelReason {\n return this.options.cancellation!.code;\n }\n\n get isCancelledByUs(): boolean {\n return this.options.cancellation!.cancelledByUs;\n }\n\n get kind(): string {\n return \"verification-cancelled\";\n }\n\n get title(): string {\n if (this.isCancelledByUs) {\n return this.i18n`You cancelled the verification!`;\n }\n if (this.getOption(\"sas\").isCrossSigningAnotherUser) {\n return this.i18n`The other user cancelled the verification!`;\n }\n else {\n return this.i18n`The other device cancelled the verification!`;\n }\n }\n\n get description(): string {\n const descriptionsWhenWeCancelledForDeviceVerification = {\n [CancelReason.InvalidMessage]: \"Your other device sent an invalid message.\",\n [CancelReason.KeyMismatch]: \"The key could not be verified.\",\n [CancelReason.TimedOut]: \"The verification process timed out.\",\n [CancelReason.UnexpectedMessage]: \"Your other device sent an unexpected message.\",\n [CancelReason.UnknownMethod]: \"Your other device is using an unknown method for verification.\",\n [CancelReason.UnknownTransaction]: \"Your other device sent a message with an unknown transaction id.\",\n [CancelReason.UserMismatch]: \"The expected user did not match the user verified.\",\n [CancelReason.MismatchedCommitment]: \"The hash commitment does not match.\",\n [CancelReason.MismatchedSAS]: \"The emoji/decimal did not match.\",\n }\n const descriptionsWhenTheyCancelledForDeviceVerification = {\n [CancelReason.UserCancelled]: \"Your other device cancelled the verification!\",\n [CancelReason.InvalidMessage]: \"Invalid message sent to the other device.\",\n [CancelReason.KeyMismatch]: \"The other device could not verify our keys\",\n [CancelReason.TimedOut]: \"The verification process timed out.\",\n [CancelReason.UnexpectedMessage]: \"Unexpected message sent to the other device.\",\n [CancelReason.UnknownMethod]: \"Your other device does not understand the method you chose\",\n [CancelReason.UnknownTransaction]: \"Your other device rejected our message.\",\n [CancelReason.UserMismatch]: \"The expected user did not match the user verified.\",\n [CancelReason.MismatchedCommitment]: \"Your other device was not able to verify the hash commitment\",\n [CancelReason.MismatchedSAS]: \"The emoji/decimal did not match.\",\n }\n const descriptionsWhenWeCancelledForCrossSigning = {\n [CancelReason.InvalidMessage]: \"The other user sent an invalid message.\",\n [CancelReason.KeyMismatch]: \"The key could not be verified.\",\n [CancelReason.TimedOut]: \"The verification process timed out.\",\n [CancelReason.UnexpectedMessage]: \"The other user sent an unexpected message.\",\n [CancelReason.UnknownMethod]: \"The other user is using an unknown method for verification.\",\n [CancelReason.UnknownTransaction]: \"The other user sent a message with an unknown transaction id.\",\n [CancelReason.UserMismatch]: \"The expected user did not match the user verified.\",\n [CancelReason.MismatchedCommitment]: \"The hash commitment does not match.\",\n [CancelReason.MismatchedSAS]: \"The emoji/decimal did not match.\",\n }\n const descriptionsWhenTheyCancelledForCrossSigning = {\n [CancelReason.UserCancelled]: \"The other user cancelled the verification!\",\n [CancelReason.InvalidMessage]: \"Invalid message sent to the other user.\",\n [CancelReason.KeyMismatch]: \"The other user could not verify our keys\",\n [CancelReason.TimedOut]: \"The verification process timed out.\",\n [CancelReason.UnexpectedMessage]: \"Unexpected message sent to the other user.\",\n [CancelReason.UnknownMethod]: \"The other user does not understand the method you chose\",\n [CancelReason.UnknownTransaction]: \"The other user rejected our message.\",\n [CancelReason.UserMismatch]: \"The expected user did not match the user verified.\",\n [CancelReason.MismatchedCommitment]: \"The other user was not able to verify the hash commitment\",\n [CancelReason.MismatchedSAS]: \"The emoji/decimal did not match.\",\n }\n let map;\n if (this.getOption(\"sas\").isCrossSigningAnotherUser) {\n map = this.isCancelledByUs ? descriptionsWhenWeCancelledForCrossSigning : descriptionsWhenTheyCancelledForCrossSigning;\n } else {\n map = this.isCancelledByUs ? descriptionsWhenWeCancelledForDeviceVerification : descriptionsWhenTheyCancelledForDeviceVerification;\n }\n const description = map[this.cancelCode] ?? \"\"\n return this.i18n`${description}`;\n \n }\n}\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {SegmentType} from \"../../../navigation/index\";\nimport {ErrorReportViewModel} from \"../../../ErrorReportViewModel\";\nimport type {Options as BaseOptions} from \"../../../ViewModel\";\nimport type {Session} from \"../../../../matrix/Session.js\";\nimport type {SASVerification} from \"../../../../matrix/verification/SAS/SASVerification\";\nimport type {SelectVerificationMethodStage} from \"../../../../matrix/verification/SAS/stages/SelectVerificationMethodStage\";\n\ntype Options = BaseOptions & {\n sas: SASVerification;\n stage: SelectVerificationMethodStage;\n session: Session;\n};\n\nexport class SelectMethodViewModel extends ErrorReportViewModel {\n public hasProceeded: boolean = false;\n\n async proceed() {\n await this.logAndCatch(\"SelectMethodViewModel.proceed\", async (log) => {\n await this.options.stage.selectEmojiMethod(log);\n this.hasProceeded = true;\n this.emitChange(\"hasProceeded\");\n });\n }\n\n async cancel() {\n await this.logAndCatch(\"SelectMethodViewModel.cancel\", async () => {\n await this.options.sas.abort();\n });\n }\n\n get deviceName() {\n return this.options.stage.otherDeviceName;\n }\n\n get otherUserId() {\n return this.getOption(\"sas\").otherUserId;\n }\n\n get kind(): string {\n return \"select-method\";\n }\n\n get isCrossSigningAnotherUser(): boolean {\n return this.getOption(\"sas\").isCrossSigningAnotherUser;\n }\n}\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {SegmentType} from \"../../../navigation/index\";\nimport {ErrorReportViewModel} from \"../../../ErrorReportViewModel\";\nimport type {Options as BaseOptions} from \"../../../ViewModel\";\nimport type {Session} from \"../../../../matrix/Session.js\";\nimport type {CalculateSASStage} from \"../../../../matrix/verification/SAS/stages/CalculateSASStage\";\n\ntype Options = BaseOptions & {\n stage: CalculateSASStage;\n session: Session;\n};\n\nexport class VerifyEmojisViewModel extends ErrorReportViewModel {\n private _isWaiting: boolean = false;\n\n async setEmojiMatch(match: boolean) {\n await this.logAndCatch(\"VerifyEmojisViewModel.setEmojiMatch\", async () => {\n await this.options.stage.setEmojiMatch(match);\n this._isWaiting = true;\n this.emitChange(\"isWaiting\");\n });\n }\n\n get emojis() {\n return this.options.stage.emoji;\n }\n\n get kind(): string {\n return \"verify-emojis\";\n }\n\n get isWaiting(): boolean {\n return this._isWaiting;\n }\n}\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {DismissibleVerificationViewModel} from \"./DismissibleVerificationViewModel\";\nimport type {Options as BaseOptions} from \"../../../ViewModel\";\nimport type {Session} from \"../../../../matrix/Session.js\";\nimport type {SASVerification} from \"../../../../matrix/verification/SAS/SASVerification\";\n\ntype Options = BaseOptions & {\n deviceId: string;\n session: Session;\n sas: SASVerification;\n};\n\nexport class VerificationCompleteViewModel extends DismissibleVerificationViewModel {\n get otherDeviceId(): string {\n return this.options.deviceId;\n }\n\n get otherUsername(): string {\n return this.getOption(\"sas\").otherUserId;\n }\n\n get kind(): string {\n return \"verification-completed\";\n }\n\n get verificationSuccessfulMessage(): string {\n if (this.getOption(\"sas\").isCrossSigningAnotherUser) {\n return this.i18n`You successfully verified user ${this.otherUsername}`;\n }\n else {\n return this.i18n`You successfully verified device ${this.otherDeviceId}`;\n }\n }\n}\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {ViewModel, Options} from \"../../../ViewModel\";\nimport type {SegmentType} from \"../../../navigation/index\";\n\nexport class MissingKeysViewModel extends ViewModel {\n gotoSettings() {\n this.navigation.push(\"settings\", true);\n }\n\n get kind(): string {\n return \"keys-missing\";\n }\n}\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {Options as BaseOptions} from \"../../ViewModel\";\nimport {SegmentType} from \"../../navigation/index\";\nimport {ErrorReportViewModel} from \"../../ErrorReportViewModel\";\nimport {WaitingForOtherUserViewModel} from \"./stages/WaitingForOtherUserViewModel\";\nimport {VerificationCancelledViewModel} from \"./stages/VerificationCancelledViewModel\";\nimport {SelectMethodViewModel} from \"./stages/SelectMethodViewModel\";\nimport {VerifyEmojisViewModel} from \"./stages/VerifyEmojisViewModel\";\nimport {VerificationCompleteViewModel} from \"./stages/VerificationCompleteViewModel\";\nimport {MissingKeysViewModel} from \"./stages/MissingKeysViewModel\";\nimport type {Session} from \"../../../matrix/Session.js\";\nimport type {SASVerification} from \"../../../matrix/verification/SAS/SASVerification\";\nimport type {SASRequest} from \"../../../matrix/verification/SAS/SASRequest\";\nimport type {CrossSigning} from \"../../../matrix/verification/CrossSigning\";\nimport type {ILogItem} from \"../../../logging/types\";\nimport type {Room} from \"../../../matrix/room/Room.js\";\n\ntype Options = BaseOptions & {\n session: Session;\n request?: SASRequest;\n room?: Room;\n userId?: string;\n};\n\nconst neededSecrets = [\n \"m.cross_signing.master\",\n \"m.cross_signing.self_signing\",\n \"m.cross_signing.user_signing\",\n];\n\nexport class DeviceVerificationViewModel extends ErrorReportViewModel {\n private sas: SASVerification;\n private _currentStageViewModel: any;\n private _needsToRequestSecret: boolean;\n\n constructor(options: Readonly) {\n super(options);\n this.start(options);\n }\n\n private async start(options: Options): Promise {\n const room = options.room;\n let requestOrUserId: SASRequest | string;\n requestOrUserId =\n options.request ??\n options.userId ??\n this.getOption(\"session\").userId;\n await this.startVerification(requestOrUserId, room);\n }\n\n private async startVerification(requestOrUserId: SASRequest | string, room?: Room) {\n await this.logAndCatch(\"DeviceVerificationViewModel.startVerification\", async (log) => {\n const crossSigningObservable = this.getOption(\"session\").crossSigning;\n const crossSigning = await crossSigningObservable.waitFor(c => !!c).promise;\n this.sas = crossSigning.startVerification(requestOrUserId, room, log);\n if (!this.sas) {\n throw new Error(\"CrossSigning.startVerification did not return a sas object!\");\n }\n if (!await this.performPreVerificationChecks(crossSigning, requestOrUserId, log)) {\n return;\n }\n this.addEventListeners();\n if (typeof requestOrUserId === \"string\") {\n this.updateCurrentStageViewModel(new WaitingForOtherUserViewModel(this.childOptions({ sas: this.sas })));\n }\n if (this.sas.isCrossSigningAnotherUser) {\n return crossSigning.signUser(this.sas, log);\n }\n else {\n return crossSigning.signDevice(this.sas, log);\n }\n });\n }\n\n private async performPreVerificationChecks(crossSigning: CrossSigning, requestOrUserId: SASRequest | string, log: ILogItem): Promise {\n return await log.wrap(\"DeviceVerificationViewModel.performPreVerificationChecks\", async (_log) => {\n const areWeVerified = await crossSigning.areWeVerified(log);\n // If we're not verified, we'll need to ask the other device for secrets later\n const otherUserId = typeof requestOrUserId === \"string\" ? requestOrUserId : requestOrUserId.sender;\n const isDeviceVerification = otherUserId === this.getOption(\"session\").userId;\n this._needsToRequestSecret = isDeviceVerification && !areWeVerified;\n if (this._needsToRequestSecret) {\n return true;\n }\n /**\n * It's possible that we are verified but don't have access\n * to the private cross-signing keys. In this case we really\n * can't verify the other device because we need these keys\n * to sign their device. \n * \n * If this happens, we'll simply ask the user to enable key-backup\n * (and secret storage) and try again later.\n */\n const session = this.getOption(\"session\");\n const promises = neededSecrets.map(s => session.secretFetcher.getSecret(s));\n const secrets = await Promise.all(promises)\n for (const secret of secrets) {\n if (!secret) {\n // We really can't proceed!\n this.updateCurrentStageViewModel(new MissingKeysViewModel(this.childOptions({})));\n return false;\n }\n }\n return true;\n });\n }\n \n private addEventListeners() {\n this.track(this.sas.disposableOn(\"SelectVerificationStage\", (stage) => {\n this.updateCurrentStageViewModel(\n new SelectMethodViewModel(this.childOptions({ sas: this.sas, stage: stage!, }))\n );\n }));\n this.track(this.sas.disposableOn(\"EmojiGenerated\", (stage) => {\n this.updateCurrentStageViewModel(\n new VerifyEmojisViewModel(this.childOptions({ stage: stage!, }))\n );\n }));\n this.track(this.sas.disposableOn(\"VerificationCancelled\", (cancellation) => {\n this.updateCurrentStageViewModel(\n new VerificationCancelledViewModel(\n this.childOptions({ cancellation: cancellation!, sas: this.sas })\n )\n );\n }));\n this.track(this.sas.disposableOn(\"VerificationCompleted\", (deviceId) => {\n this.updateCurrentStageViewModel(\n new VerificationCompleteViewModel(this.childOptions({ deviceId: deviceId!, sas: this.sas }))\n );\n this.requestSecrets();\n }));\n }\n\n private async requestSecrets() {\n await this.platform.logger.run(\"DeviceVerificationViewModel.requestSecrets\", async (log) => {\n if (this._needsToRequestSecret) {\n const secretSharing = this.getOption(\"session\").secretSharing;\n const requestPromises = neededSecrets.map((secret) => secretSharing.requestSecret(secret, log));\n const secretRequests = await Promise.all(requestPromises);\n const receivedSecretPromises = secretRequests.map(r => r.waitForResponse());\n await Promise.all(receivedSecretPromises);\n const crossSigning = this.getOption(\"session\").crossSigning.get();\n crossSigning.start(log);\n }\n });\n }\n\n private updateCurrentStageViewModel(vm) {\n this._currentStageViewModel = this.disposeTracked(this._currentStageViewModel);\n this._currentStageViewModel = this.track(vm);\n this.emitChange(\"currentStageViewModel\");\n }\n\n dispose(): void {\n if (this.sas && !this.sas.finished) {\n this.sas.abort().catch((e) => { console.error(e); });\n }\n super.dispose();\n }\n\n get currentStageViewModel() {\n return this._currentStageViewModel;\n }\n\n get type(): string { \n return \"verification\";\n }\n\n get isHappeningInRoom(): boolean {\n return !!this.navigation.path.get(\"room\");\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {ObservableValue} from \"../../observable/value\";\nimport {RoomStatus} from \"../../matrix/room/common\";\n\n/**\nDepending on the status of a room (invited, joined, archived, or none),\nwe want to show a different view with a different view model\nwhen showing a room. Furthermore, this logic is needed both in the \nsingle room view and in the grid view. So this logic is extracted here,\nand this observable updates with the right view model as the status for\na room changes.\n\nTo not have to track the subscription manually in the SessionViewModel and\nthe RoomGridViewModel, all subscriptions are removed in the dispose method.\nOnly when transferring a RoomViewModelObservable between the SessionViewModel\nand RoomGridViewModel, unsubscribeAll should be called prior to doing\nthe transfer, so either parent view model don't keep getting updates for\nthe now transferred child view model.\n\nThis is also why there is an explicit initialize method, see comment there.\n*/\nexport class RoomViewModelObservable extends ObservableValue {\n constructor(sessionViewModel, roomIdOrLocalId) {\n super(null);\n this._statusSubscription = null;\n this._sessionViewModel = sessionViewModel;\n this.id = roomIdOrLocalId;\n }\n\n /**\n Separate initialize method rather than doing this onSubscribeFirst because \n we don't want to run this again when transferring this value between\n SessionViewModel and RoomGridViewModel, as onUnsubscribeLast and onSubscribeFirst\n are called in that case.\n */\n async initialize() {\n const {session} = this._sessionViewModel._client;\n const statusObservable = await session.observeRoomStatus(this.id);\n this.set(await this._statusToViewModel(statusObservable.get()));\n this._statusSubscription = statusObservable.subscribe(async status => {\n // first dispose existing VM, if any\n this.get()?.dispose();\n this.set(await this._statusToViewModel(status));\n });\n }\n\n async _statusToViewModel(status) {\n if (status & RoomStatus.Replaced) {\n if (status & RoomStatus.BeingCreated) {\n const {session} = this._sessionViewModel._client;\n const roomBeingCreated = session.roomsBeingCreated.get(this.id);\n this._sessionViewModel.notifyRoomReplaced(roomBeingCreated.id, roomBeingCreated.roomId);\n } else {\n throw new Error(\"Don't know how to replace a room with this status: \" + (status ^ RoomStatus.Replaced));\n }\n } else if (status & RoomStatus.BeingCreated) {\n return this._sessionViewModel._createRoomBeingCreatedViewModel(this.id);\n } else if (status & RoomStatus.Invited) {\n return this._sessionViewModel._createInviteViewModel(this.id);\n } else if (status & RoomStatus.Joined) {\n return this._sessionViewModel._createRoomViewModelInstance(this.id);\n } else if (status & RoomStatus.Archived) {\n return await this._sessionViewModel._createArchivedRoomViewModel(this.id);\n } else {\n return this._sessionViewModel._createUnknownRoomViewModel(this.id);\n }\n }\n\n dispose() {\n if (this._statusSubscription) {\n this._statusSubscription = this._statusSubscription();\n }\n this.unsubscribeAll();\n this.get()?.dispose();\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {ViewModel} from \"../../ViewModel\";\nimport {avatarInitials, getIdentifierColorNumber, getAvatarHttpUrl} from \"../../avatar\";\n\nexport class RoomDetailsViewModel extends ViewModel {\n constructor(options) {\n super(options);\n this._room = options.room;\n this._onRoomChange = this._onRoomChange.bind(this);\n this._room.on(\"change\", this._onRoomChange);\n }\n\n get type() {\n return \"room-details\";\n }\n\n get shouldShowBackButton() {\n return false;\n }\n\n get previousSegmentName() {\n return false;\n }\n\n get roomId() {\n return this._room.id;\n }\n\n get canonicalAlias() {\n return this._room.canonicalAlias;\n }\n\n get name() {\n return this._room.name;\n }\n\n get isEncrypted() {\n return !!this._room.isEncrypted;\n }\n\n get memberCount() {\n return this._room.joinedMemberCount;\n }\n\n get avatarLetter() {\n return avatarInitials(this.name);\n }\n\n get avatarColorNumber() {\n return getIdentifierColorNumber(this._room.avatarColorId)\n }\n\n avatarUrl(size) {\n return getAvatarHttpUrl(this._room.avatarUrl, size, this.platform, this._room.mediaRepository);\n }\n\n get avatarTitle() {\n return this.name;\n }\n\n _onRoomChange() {\n this.emitChange();\n }\n\n dispose() {\n super.dispose();\n this._room.off(\"change\", this._onRoomChange);\n }\n\n openPanel(segment) {\n let path = this.navigation.path.until(\"room\");\n path = path.with(this.navigation.segment(\"right-panel\", true));\n path = path.with(this.navigation.segment(segment, true));\n this.navigation.applyPath(path);\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {ViewModel} from \"../../ViewModel\";\nimport {avatarInitials, getIdentifierColorNumber, getAvatarHttpUrl} from \"../../avatar\";\n\nexport class MemberTileViewModel extends ViewModel {\n constructor(options) {\n super(options);\n this._member = this._options.member;\n this._mediaRepository = options.mediaRepository\n this._previousName = null;\n this._nameChanged = true;\n }\n\n get name() {\n return `${this._member.name}${this._disambiguationPart}`;\n }\n\n get _disambiguationPart() {\n return this._disambiguate ? ` (${this.userId})` : \"\";\n }\n\n get userId() {\n return this._member.userId;\n }\n\n get previousName() {\n return this._previousName;\n }\n\n get nameChanged() {\n return this._nameChanged;\n }\n\n get detailsUrl() {\n const roomId = this.navigation.path.get(\"room\").value;\n return `${this.urlRouter.openRoomActionUrl(roomId)}/member/${encodeURIComponent(this._member.userId)}`;\n }\n\n _updatePreviousName(newName) {\n const currentName = this._member.name;\n if (currentName !== newName) {\n this._previousName = currentName;\n this._nameChanged = true;\n } else {\n this._nameChanged = false;\n }\n }\n\n setDisambiguation(status) {\n this._disambiguate = status;\n this.emitChange();\n }\n\n updateFrom(newMember) {\n this._updatePreviousName(newMember.name);\n this._member = newMember;\n }\n\n get avatarLetter() {\n return avatarInitials(this.name);\n }\n\n get avatarColorNumber() {\n return getIdentifierColorNumber(this.userId)\n }\n\n avatarUrl(size) {\n return getAvatarHttpUrl(this._member.avatarUrl, size, this.platform, this._mediaRepository);\n }\n\n get avatarTitle() {\n return this.name;\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {PowerLevels} from \"../../../../matrix/room/PowerLevels.js\";\n\nexport function createMemberComparator(powerLevels) {\n const collator = new Intl.Collator();\n const removeCharacter = string => string.charAt(0) === \"@\"? string.slice(1) : string;\n\n return function comparator(member, otherMember) {\n const p1 = powerLevels.getUserLevel(member.userId);\n const p2 = powerLevels.getUserLevel(otherMember.userId);\n if (p1 !== p2) { return p2 - p1; }\n const name = removeCharacter(member.name);\n const otherName = removeCharacter(otherMember.name);\n return collator.compare(name, otherName);\n };\n}\n\nexport function tests() {\n\n function createComparatorWithPowerLevel(map) {\n let users = {};\n for (const prop in map) {\n Object.assign(users, {[prop]: map[prop]});\n }\n const powerLevelEvent = {\n content: {users, users_default: 0}\n };\n return createMemberComparator(new PowerLevels({powerLevelEvent}));\n }\n\n return {\n \"power_level(member1) > power_level(member2) returns value <= 0\": assert => {\n const fn = createComparatorWithPowerLevel({\"@alice:hs.tld\": 50});\n const member1 = {userId: \"@alice:hs.tld\", name: \"alice\"};\n const member2 = {userId: \"@bob:hs.tld\", name: \"bob\"};\n assert.strictEqual(fn(member1, member2) <= 0, true);\n },\n\n \"power_level(member1) < power_level(member2) returns value > 0\": assert => {\n const fn = createComparatorWithPowerLevel({\"@alice:hs.tld\": 50});\n const member1 = {userId: \"@bob:hs.tld\", name: \"bob\"};\n const member2 = {userId: \"@alice:hs.tld\", name: \"alice\"};\n assert.strictEqual(fn(member1, member2) > 0, true);\n },\n\n \"alphabetic compare on name\": assert => {\n const fn = createComparatorWithPowerLevel();\n const member1 = {userId: \"@bob:hs.tld\", name: \"bob\"};\n const member2 = {userId: \"@alice:hs.tld\", name: \"alice\"};\n assert.strictEqual(fn(member1, member2) > 0, true);\n assert.strictEqual(fn(member2, member1) <= 0, true);\n },\n\n \"alphabetic compare with case (alice comes before Bob)\": assert => {\n const fn = createComparatorWithPowerLevel();\n const member1 = {userId: \"@bob:hs.tld\", name: \"Bob\"};\n const member2 = {userId: \"@alice:hs.tld\", name: \"alice\"};\n assert.strictEqual(fn(member1, member2) > 0, true);\n assert.strictEqual(fn(member2, member1) <= 0, true);\n },\n\n \"equal powerlevel and same names returns 0\": assert => {\n const fn = createComparatorWithPowerLevel({\"@bobby:hs.tld\": 50, \"@bob:hs.tld\": 50});\n const member1 = {userId: \"@bob:hs.tld\", name: \"bob\"};\n const member2 = {userId: \"@bobby:hs.tld\", name: \"bob\"};\n assert.strictEqual(fn(member1, member2), 0);\n assert.strictEqual(fn(member2, member1), 0);\n },\n\n \"(both_negative_powerlevel) power_level(member1) < power_level(member2) returns value > 0\": assert => {\n const fn = createComparatorWithPowerLevel({\"@alice:hs.tld\": -100, \"@bob:hs.tld\": -50});\n const member1 = {userId: \"@alice:hs.tld\", name: \"alice\"};\n const member2 = {userId: \"@bob:hs.tld\", name: \"bob\"};\n assert.strictEqual(fn(member1, member2) > 0, true);\n },\n\n \"(both_negative_powerlevel) power_level(member1) > power_level(member2) returns value <= 0\": assert => {\n const fn = createComparatorWithPowerLevel({\"@alice:hs.tld\": -50, \"@bob:hs.tld\": -100});\n const member1 = {userId: \"@alice:hs.tld\", name: \"alice\"};\n const member2 = {userId: \"@bob:hs.tld\", name: \"bob\"};\n assert.strictEqual(fn(member1, member2) <= 0, true);\n },\n\n \"(one_negative_powerlevel) power_level(member1) > power_level(member2) returns value <= 0\": assert => {\n const fn = createComparatorWithPowerLevel({\"@alice:hs.tld\": 50, \"@bob:hs.tld\": -100});\n const member1 = {userId: \"@alice:hs.tld\", name: \"alice\"};\n const member2 = {userId: \"@bob:hs.tld\", name: \"bob\"};\n assert.strictEqual(fn(member1, member2) <= 0, true);\n },\n\n \"(one_negative_powerlevel) power_level(member1) < power_level(member2) returns value > 0\": assert => {\n const fn = createComparatorWithPowerLevel({\"@alice:hs.tld\": -100, \"@bob:hs.tld\": 50});\n const member1 = {userId: \"@alice:hs.tld\", name: \"alice\"};\n const member2 = {userId: \"@bob:hs.tld\", name: \"bob\"};\n assert.strictEqual(fn(member1, member2) > 0, true);\n },\n };\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexport class Disambiguator {\n constructor() {\n this._map = new Map();\n }\n\n _unDisambiguate(vm, array) {\n const idx = array.indexOf(vm);\n if (idx !== -1) {\n const [removed] = array.splice(idx, 1);\n removed.setDisambiguation(false);\n }\n }\n\n _handlePreviousName(vm) {\n const previousName = vm.previousName;\n if (typeof previousName !== \"string\") { return; }\n const value = this._map.get(previousName);\n if (Array.isArray(value)) {\n this._unDisambiguate(vm, value);\n if (value.length === 1) {\n const vm = value[0];\n vm.setDisambiguation(false);\n this._map.set(previousName, vm);\n }\n } else {\n this._map.delete(previousName);\n }\n }\n\n _updateMap(vm) {\n const name = vm.name;\n const value = this._map.get(name);\n if (value) {\n if (Array.isArray(value)) {\n if (value.findIndex(member => member.userId === vm.userId) !== -1) { return; }\n value.push(vm);\n return value;\n } else if(vm.userId !== value.userId) {\n const array = [value, vm]\n this._map.set(name, array);\n return array;\n }\n } else {\n this._map.set(name, vm);\n }\n }\n\n disambiguate(vm) {\n if (!vm.nameChanged) { return; }\n this._handlePreviousName(vm);\n const value = this._updateMap(vm);\n value?.forEach((vm) => vm.setDisambiguation(true));\n }\n}\n\nexport function tests(){\n\n class MockViewModel {\n constructor(name, userId) {\n this.name = name;\n this.disambiguate = false;\n this.userId = userId;\n this.nameChanged = true;\n }\n \n updateName(newName) {\n if (this.name !== newName) {\n this.previousName = this.name;\n this.nameChanged = true;\n }\n else {\n this.nameChanged = false;\n }\n this.name = newName;\n }\n\n setDisambiguation(status) {\n this.disambiguate = status;\n }\n }\n\n function createVmAndDisambiguator(nameList) {\n const d = new Disambiguator();\n const array = nameList.map(([name, id]) => new MockViewModel(name, id));\n return [...array, d];\n }\n\n return {\n \"Unique names\": assert => {\n const [vm1, vm2, d] = createVmAndDisambiguator([[\"foo\", \"a\"], [\"bar\", \"b\"]]);\n d.disambiguate(vm1);\n d.disambiguate(vm2);\n assert.strictEqual(vm1.disambiguate, false);\n assert.strictEqual(vm2.disambiguate, false);\n },\n\n \"Same names are disambiguated\": assert => {\n const [vm1, vm2, vm3, d] = createVmAndDisambiguator([[\"foo\", \"a\"], [\"foo\", \"b\"], [\"foo\", \"c\"]]);\n d.disambiguate(vm1);\n d.disambiguate(vm2);\n d.disambiguate(vm3);\n assert.strictEqual(vm1.disambiguate, true);\n assert.strictEqual(vm2.disambiguate, true);\n assert.strictEqual(vm3.disambiguate, true);\n },\n\n \"Name updates disambiguate\": assert => {\n const [vm1, vm2, vm3, d] = createVmAndDisambiguator([[\"foo\", \"a\"], [\"bar\", \"b\"], [\"jar\", \"c\"]]);\n d.disambiguate(vm1);\n d.disambiguate(vm2);\n d.disambiguate(vm3);\n \n vm2.updateName(\"foo\");\n d.disambiguate(vm2);\n assert.strictEqual(vm1.disambiguate, true);\n assert.strictEqual(vm2.disambiguate, true);\n\n vm1.updateName(\"bar\");\n d.disambiguate(vm1);\n assert.strictEqual(vm1.disambiguate, false);\n assert.strictEqual(vm2.disambiguate, false);\n\n vm3.updateName(\"foo\");\n d.disambiguate(vm3);\n vm1.updateName(\"foo\");\n d.disambiguate(vm1);\n assert.strictEqual(vm1.disambiguate, true);\n assert.strictEqual(vm2.disambiguate, true);\n assert.strictEqual(vm3.disambiguate, true);\n\n vm2.updateName(\"bar\");\n d.disambiguate(vm2);\n assert.strictEqual(vm1.disambiguate, true);\n assert.strictEqual(vm2.disambiguate, false);\n assert.strictEqual(vm3.disambiguate, true);\n },\n\n \"Multiple disambiguate events\": assert => {\n const [vm1, d] = createVmAndDisambiguator([[\"foo\", \"a\"]]);\n d.disambiguate(vm1);\n vm1.updateName(vm1.name);\n d.disambiguate(vm1);\n assert.strictEqual(vm1.disambiguate, false);\n },\n\n \"Empty names must un-disambiguate\": assert => {\n const [vm1, vm2, d] = createVmAndDisambiguator([[\"\", \"a\"], [\"\", \"b\"]]);\n d.disambiguate(vm1);\n d.disambiguate(vm2);\n vm1.updateName(\"foo\");\n d.disambiguate(vm1);\n assert.strictEqual(vm1.disambiguate, false);\n assert.strictEqual(vm2.disambiguate, false);\n }\n };\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {ViewModel} from \"../../ViewModel\";\nimport {MemberTileViewModel} from \"./MemberTileViewModel.js\";\nimport {createMemberComparator} from \"./members/comparator.js\";\nimport {Disambiguator} from \"./members/disambiguator.js\";\n\nexport class MemberListViewModel extends ViewModel {\n constructor(options) {\n super(options);\n const list = options.members;\n\n const powerLevelsObservable = options.powerLevelsObservable;\n this.track(powerLevelsObservable.subscribe(() => { /*resort based on new power levels here*/ }));\n\n const powerLevels = powerLevelsObservable.get();\n this.memberTileViewModels = this._mapTileViewModels(list.members.filterValues(member => member.membership === \"join\"))\n .sortValues(createMemberComparator(powerLevels));\n this.nameDisambiguator = new Disambiguator();\n this.mediaRepository = options.mediaRepository;\n }\n\n get type() { return \"member-list\"; }\n\n get shouldShowBackButton() { return true; }\n\n get previousSegmentName() { return \"details\"; }\n\n _mapTileViewModels(members) {\n const mapper = (member, emitChange) => {\n const mediaRepository = this.mediaRepository;\n const vm = new MemberTileViewModel(this.childOptions({member, emitChange, mediaRepository}));\n this.nameDisambiguator.disambiguate(vm);\n return vm;\n };\n const updater = (params, vm, newMember) => {\n vm.updateFrom(newMember);\n this.nameDisambiguator.disambiguate(vm);\n };\n return members.mapValues(mapper, updater);\n }\n\n openInvitePanel() {\n let path = this.navigation.path.until(\"room\");\n path = path.with(this.navigation.segment(\"right-panel\", true));\n path = path.with(this.navigation.segment(\"invite\", true));\n this.navigation.applyPath(path);\n }\n\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {ViewModel} from \"../../ViewModel\";\nimport {RoomType} from \"../../../matrix/room/common\";\nimport {avatarInitials, getIdentifierColorNumber, getAvatarHttpUrl} from \"../../avatar\";\nimport {UserTrust} from \"../../../matrix/verification/CrossSigning\";\nimport {RoomStatus} from \"../../../matrix/room/common\";\n\nexport class MemberDetailsViewModel extends ViewModel {\n constructor(options) {\n super(options);\n this._observableMember = options.observableMember;\n this._mediaRepository = options.mediaRepository;\n this._member = this._observableMember.get();\n this._isEncrypted = options.isEncrypted;\n this._powerLevelsObservable = options.powerLevelsObservable;\n this._session = options.session;\n this.track(this._powerLevelsObservable.subscribe(() => this._onPowerLevelsChange()));\n this.track(this._observableMember.subscribe( () => this._onMemberChange()));\n this._userTrust = undefined;\n this._userTrustSubscription = undefined;\n if (this.features.crossSigning) {\n this.track(this._session.crossSigning.subscribe(() => {\n this._onCrossSigningChange();\n }));\n }\n this._onCrossSigningChange();\n }\n\n get name() { return this._member.name; }\n \n get userId() { return this._member.userId; }\n\n get canVerifyUser() { return this._member.userId !== this._session.userId; }\n \n get trustDescription() {\n switch (this._userTrust?.get()) {\n case UserTrust.Trusted: return this.i18n`You have verified this user. This user has verified all of their sessions.`;\n case UserTrust.UserNotSigned: return this.i18n`You have not verified this user.`;\n case UserTrust.UserSignatureMismatch: return this.i18n`You appear to have signed this user, but the signature is invalid.`;\n case UserTrust.UserDeviceNotSigned: return this.i18n`You have verified this user, but they have one or more unverified sessions.`;\n case UserTrust.UserDeviceSignatureMismatch: return this.i18n`This user has a session signature that is invalid.`;\n case UserTrust.UserSetupError: return this.i18n`This user hasn't set up cross-signing correctly`;\n case UserTrust.OwnSetupError: return this.i18n`Cross-signing wasn't set up correctly on your side.`;\n case undefined:\n default: // adding default as well because jslint can't check for switch exhaustiveness\n return this.i18n`Please wait…`;\n }\n }\n\n get trustShieldColor() {\n if (!this._isEncrypted) {\n return \"\";\n }\n switch (this._userTrust?.get()) {\n case undefined:\n case UserTrust.OwnSetupError:\n return \"\";\n case UserTrust.Trusted:\n return \"green\";\n case UserTrust.UserNotSigned:\n return \"black\";\n default:\n return \"red\";\n }\n }\n\n get type() { return \"member-details\"; }\n \n get shouldShowBackButton() { return true; }\n \n get previousSegmentName() { return \"members\"; }\n \n get role() {\n if (this.powerLevel >= 100) { return this.i18n`Admin`; }\n else if (this.powerLevel >= 50) { return this.i18n`Moderator`; }\n else if (this.powerLevel === 0) { return this.i18n`Default`; }\n else { return this.i18n`Custom (${this.powerLevel})`; }\n }\n\n _onMemberChange() {\n this._member = this._observableMember.get();\n this.emitChange(\"member\");\n }\n\n _onPowerLevelsChange() {\n this.emitChange(\"role\");\n }\n\n async signUser() {\n const crossSigning = this._session.crossSigning.get();\n if (crossSigning) {\n await this.logger.run(\"MemberDetailsViewModel.signUser\", async log => {\n await crossSigning.signUser(this.userId, log);\n });\n }\n }\n\n async verifyUser() {\n await this.logger.run(\"MemberDetailsViewModel.verifyUser\", async () => {\n const room = this._session.findDirectMessageForUserId(this.userId);\n let roomId = room?.id;\n if (!roomId) {\n const roomBeingCreated = await this._session.createRoom({\n type: RoomType.DirectMessage,\n invites: [this.userId]\n });\n roomId = roomBeingCreated.roomId;\n }\n const observable = await this._session.observeRoomStatus(roomId);\n await observable.waitFor(s => s === RoomStatus.Joined).promise;\n let path = this.navigation.path.until(\"session\");\n path = path.with(this.navigation.segment(\"room\", roomId));\n path = path.with(this.navigation.segment(\"right-panel\", true));\n path = path.with(this.navigation.segment(\"verification\", this.userId));\n this.navigation.applyPath(path);\n });\n }\n\n get avatarLetter() {\n return avatarInitials(this.name);\n }\n\n get avatarColorNumber() {\n return getIdentifierColorNumber(this.userId)\n }\n\n avatarUrl(size) {\n return getAvatarHttpUrl(this._member.avatarUrl, size, this.platform, this._mediaRepository);\n }\n\n get avatarTitle() {\n return this.name;\n }\n\n get isEncrypted() {\n return this._isEncrypted;\n }\n\n get powerLevel() {\n return this._powerLevelsObservable.get()?.getUserLevel(this._member.userId);\n }\n\n get linkToUser() {\n return `https://matrix.to/#/${encodeURIComponent(this._member.userId)}`;\n }\n\n async openDirectMessage() {\n const room = this._session.findDirectMessageForUserId(this.userId);\n let roomId = room?.id;\n if (!roomId) {\n const roomBeingCreated = await this._session.createRoom({\n type: RoomType.DirectMessage,\n invites: [this.userId]\n });\n roomId = roomBeingCreated.id;\n }\n this.navigation.push(\"room\", roomId);\n }\n\n _onCrossSigningChange() {\n const crossSigning = this._session.crossSigning.get();\n this._userTrustSubscription = this.disposeTracked(this._userTrustSubscription);\n this._userTrust = undefined;\n if (crossSigning) {\n this.logger.run(\"MemberDetailsViewModel.observeUserTrust\", log => {\n this._userTrust = crossSigning.observeUserTrust(this.userId, log);\n this._userTrustSubscription = this.track(this._userTrust.subscribe(() => {\n this.emitChange(\"trustShieldColor\");\n }));\n });\n }\n this.emitChange(\"trustShieldColor\");\n }\n}\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {ErrorReportViewModel} from \"../../ErrorReportViewModel\";\nimport type {Options as BaseOptions} from \"../../ViewModel\";\nimport type {SegmentType} from \"../../navigation\";\nimport type {Room} from \"../../../matrix/room/Room.js\";\nimport type {Session} from \"../../../matrix/Session.js\";\n\ntype Options = { room: Room, session: Session } & BaseOptions;\n\nexport class InvitePanelViewModel extends ErrorReportViewModel {\n constructor(options: Options) {\n super(options);\n }\n\n get type() {\n return \"invite\";\n }\n\n get shouldShowBackButton() {\n return true;\n }\n\n get previousSegmentName() {\n return \"members\";\n }\n\n get roomName() {\n return this.getOption(\"room\").name;\n }\n\n async invite(userId: string) {\n await this.logAndCatch(\"InvitePanelViewModel.invite\", async () => {\n const room = this.getOption(\"room\");\n await room.inviteUser(userId);\n const path = this.navigation.path.until(\"room\");\n this.navigation.applyPath(path);\n });\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {ViewModel} from \"../../ViewModel\";\nimport {RoomDetailsViewModel} from \"./RoomDetailsViewModel.js\";\nimport {MemberListViewModel} from \"./MemberListViewModel.js\";\nimport {MemberDetailsViewModel} from \"./MemberDetailsViewModel.js\";\nimport {InvitePanelViewModel} from \"./InvitePanelViewModel\";\nimport {DeviceVerificationViewModel} from \"../verification/DeviceVerificationViewModel\";\n\nexport class RightPanelViewModel extends ViewModel {\n constructor(options) {\n super(options);\n this._room = options.room;\n this._session = options.session;\n this._members = null;\n this._setupNavigation();\n }\n\n get activeViewModel() { return this._activeViewModel; }\n\n async _getMemberListArguments() {\n if (!this._members) {\n this._members = await this._room.loadMemberList();\n this.track(() => this._members.release());\n }\n const room = this._room;\n const powerLevelsObservable = await this._room.observePowerLevels();\n return {members: this._members, powerLevelsObservable, mediaRepository: room.mediaRepository};\n }\n\n async _getMemberDetailsArguments() {\n const segment = this.navigation.path.get(\"member\"); \n const userId = segment.value;\n const observableMember = await this._room.observeMember(userId);\n if (!observableMember) {\n return false;\n }\n const isEncrypted = this._room.isEncrypted;\n const powerLevelsObservable = await this._room.observePowerLevels();\n return {\n observableMember,\n isEncrypted,\n powerLevelsObservable,\n mediaRepository: this._room.mediaRepository,\n session: this._session\n };\n }\n\n _setupNavigation() {\n this._hookUpdaterToSegment(\"details\", RoomDetailsViewModel, () => { return {room: this._room}; });\n this._hookUpdaterToSegment(\"invite\", InvitePanelViewModel, () => { return {room: this._room}; });\n this._hookUpdaterToSegment(\"members\", MemberListViewModel, () => this._getMemberListArguments());\n this._hookUpdaterToSegment(\"member\", MemberDetailsViewModel, () => this._getMemberDetailsArguments(),\n () => {\n // If we fail to create the member details panel, fallback to memberlist\n const url = `${this.urlRouter.urlUntilSegment(\"room\")}/members`;\n this.urlRouter.pushUrl(url);\n }\n );\n this._hookUpdaterToSegment(\"verification\", DeviceVerificationViewModel, () => {\n const options = {\n session: this._session,\n room: this._room,\n };\n const id = this.navigation.path.get(\"verification\").value; \n if (typeof id === \"string\") {\n /**\n * Here id is:\n * 1. id of the request when we receive a sas verification request\n * 2. id of the user we are trying to verify when we initiate the verification process\n */\n const request = this._session?.crossSigning.get()?.receivedSASVerifications.get(id);\n const extraOptions = request ? { request } : { userId: id };\n Object.assign(options, extraOptions);\n }\n return options;\n });\n }\n\n async _hookUpdaterToSegment(segment, ViewModel, argCreator, failCallback) {\n const observable = this.navigation.observe(segment);\n const updater = await this._setupUpdater(segment, ViewModel, argCreator, failCallback);\n this.track(observable.subscribe(updater));\n }\n\n async _setupUpdater(segment, ViewModel, argCreator, failCallback) {\n const updater = async (skipDispose = false) => {\n if (this._activeViewModel instanceof ViewModel) {\n return;\n }\n if (!skipDispose) {\n this._activeViewModel = this.disposeTracked(this._activeViewModel);\n }\n const enable = !!this.navigation.path.get(segment)?.value;\n if (enable) {\n const args = await argCreator();\n if (!args && failCallback) {\n failCallback();\n return;\n }\n this._activeViewModel = this.track(new ViewModel(this.childOptions(args)));\n }\n this.emitChange(\"activeViewModel\");\n };\n await updater(true);\n return updater;\n }\n\n closePanel() {\n const path = this.navigation.path.until(\"room\");\n this.navigation.applyPath(path);\n }\n\n showPreviousPanel() {\n const segmentName = this.activeViewModel.previousSegmentName;\n if (segmentName) {\n let path = this.navigation.path.until(\"room\");\n path = path.with(this.navigation.segment(\"right-panel\", true));\n path = path.with(this.navigation.segment(segmentName, true));\n this.navigation.applyPath(path);\n }\n }\n}\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {ErrorReportViewModel} from \"../../ErrorReportViewModel\";\nimport {Options as BaseOptions} from \"../../ViewModel\";\nimport type {Session} from \"../../../matrix/Session.js\";\nimport {SegmentType} from \"../../navigation\";\n\nexport type BaseClassOptions = {\n dismiss: () => void;\n session: Session;\n} & BaseOptions;\n\nexport abstract class BaseToastNotificationViewModel = BaseClassOptions> extends ErrorReportViewModel {\n constructor(options: O) {\n super(options);\n }\n\n dismiss(): void {\n this.getOption(\"dismiss\")();\n }\n\n abstract get kind(): string;\n}\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nimport type {GroupCall} from \"../../../../matrix/calls/group/GroupCall\";\nimport type {Room} from \"../../../../matrix/room/Room.js\";\nimport {IAvatarContract, avatarInitials, getIdentifierColorNumber, getAvatarHttpUrl} from \"../../../avatar\"; \nimport {LocalMedia} from \"../../../../matrix/calls/LocalMedia\";\nimport {BaseClassOptions, BaseToastNotificationViewModel} from \".././BaseToastNotificationViewModel\";\nimport {SegmentType} from \"../../../navigation\";\n\ntype Options = {\n call: GroupCall;\n room: Room;\n} & BaseClassOptions;\n\n// Since we access the room segment below, the segment type\n// needs to at least contain the room segment!\ntype MinimumNeededSegmentType = {\n \"room\": string;\n};\n\nexport class CallToastNotificationViewModel = Options> extends BaseToastNotificationViewModel implements IAvatarContract {\n constructor(options: O) {\n super(options);\n this.track(this.call.members.observeSize().subscribe(() => {\n this.emitChange(\"memberCount\");\n }));\n // Dismiss the toast if the room is opened manually\n this.track(\n this.navigation.observe(\"room\").subscribe((roomId) => {\n if ((roomId as unknown as string) === this.call.roomId) {\n this.dismiss();\n }\n }));\n }\n\n get kind(): \"calls\" {\n return \"calls\";\n }\n\n async join(): Promise {\n await this.logAndCatch(\"CallToastNotificationViewModel.join\", async (log) => {\n const stream = await this.platform.mediaDevices.getMediaTracks(false, true);\n const localMedia = new LocalMedia().withUserMedia(stream);\n await this.call.join(localMedia, log);\n const url = this.urlRouter.openRoomActionUrl(this.call.roomId);\n this.urlRouter.pushUrl(url);\n });\n }\n\n get call(): GroupCall {\n return this.getOption(\"call\");\n }\n\n private get room(): Room {\n return this.getOption(\"room\");\n } \n\n get roomName(): string {\n return this.room.name;\n }\n\n get memberCount(): number {\n return this.call.members.size;\n }\n\n get avatarLetter(): string {\n return avatarInitials(this.roomName);\n }\n\n get avatarColorNumber(): number {\n return getIdentifierColorNumber(this.room.avatarColorId);\n }\n\n avatarUrl(size: number): string | undefined {\n return getAvatarHttpUrl(this.room.avatarUrl, size, this.platform, this.room.mediaRepository);\n }\n\n get avatarTitle(): string {\n return this.roomName;\n }\n}\n\n\n","\n/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {CallToastNotificationViewModel} from \"./CallToastNotificationViewModel\";\nimport {ObservableArray} from \"../../../../observable\";\nimport {ViewModel, Options as BaseOptions} from \"../../../ViewModel\";\nimport {RoomStatus} from \"../../../../matrix/room/common\";\nimport type {GroupCall} from \"../../../../matrix/calls/group/GroupCall\";\nimport type {Room} from \"../../../../matrix/room/Room.js\";\nimport type {Session} from \"../../../../matrix/Session.js\";\nimport type {SegmentType} from \"../../../navigation\";\nimport type {IToastCollection} from \"../IToastCollection\";\n\ntype Options = {\n session: Session;\n} & BaseOptions;\n\n\nexport class CallToastCollectionViewModel extends ViewModel implements IToastCollection {\n public readonly toastViewModels: ObservableArray = new ObservableArray();\n\n constructor(options: Options) {\n super(options);\n const session = this.getOption(\"session\");\n if (this.features.calls) {\n const callsObservableMap = session.callHandler.calls;\n this.track(callsObservableMap.subscribe(this));\n }\n }\n\n async onAdd(_, call: GroupCall) {\n if (this._shouldShowNotification(call)) {\n const room = await this._findRoomForCall(call);\n const dismiss = () => {\n const idx = this.toastViewModels.array.findIndex(vm => vm.call === call);\n if (idx !== -1) {\n this.toastViewModels.remove(idx);\n }\n };\n this.toastViewModels.append(\n new CallToastNotificationViewModel(this.childOptions({ call, room, dismiss }))\n );\n }\n }\n\n onRemove(_, call: GroupCall) {\n const idx = this.toastViewModels.array.findIndex(vm => vm.call === call);\n if (idx !== -1) {\n this.toastViewModels.remove(idx);\n }\n }\n\n onUpdate(_, call: GroupCall) {\n const idx = this.toastViewModels.array.findIndex(vm => vm.call === call);\n if (idx !== -1) {\n this.toastViewModels.update(idx, this.toastViewModels.at(idx)!);\n }\n }\n\n onReset() {\n for (let i = 0; i < this.toastViewModels.length; ++i) {\n this.toastViewModels.remove(i);\n }\n }\n\n private async _findRoomForCall(call: GroupCall): Promise {\n const id = call.roomId;\n const session = this.getOption(\"session\");\n const rooms = session.rooms;\n // Make sure that we know of this room, \n // otherwise wait for it to come through sync\n const observable = await session.observeRoomStatus(id);\n await observable.waitFor(s => s === RoomStatus.Joined).promise;\n const room = rooms.get(id);\n return room;\n }\n \n private _shouldShowNotification(call: GroupCall): boolean {\n const currentlyOpenedRoomId = this.navigation.path.get(\"room\")?.value;\n if (!call.isLoadedFromStorage && call.roomId !== currentlyOpenedRoomId && !call.usesFoci) {\n return true;\n }\n return false;\n }\n}\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nimport {BaseClassOptions, BaseToastNotificationViewModel} from \".././BaseToastNotificationViewModel\";\nimport {SegmentType} from \"../../../navigation\";\nimport {SASRequest} from \"../../../../matrix/verification/SAS/SASRequest\";\n\ntype Options = {\n request: SASRequest;\n} & BaseClassOptions;\n\ntype MinimumNeededSegmentType = {\n \"device-verification\": string | boolean;\n};\n\nexport class VerificationToastNotificationViewModel = Options> extends BaseToastNotificationViewModel {\n constructor(options: O) {\n super(options);\n }\n\n get kind(): \"verification\" {\n return \"verification\";\n }\n\n get request(): SASRequest {\n return this.getOption(\"request\");\n }\n\n get otherDeviceId(): string {\n return this.request.deviceId;\n }\n\n accept() {\n // @ts-ignore\n this.navigation.push(\"device-verification\", this.request.id);\n this.dismiss();\n }\n\n}\n\n\n","\n/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {VerificationToastNotificationViewModel} from \"./VerificationToastNotificationViewModel\";\nimport {ObservableArray} from \"../../../../observable\";\nimport {ViewModel, Options as BaseOptions} from \"../../../ViewModel\";\nimport type {Session} from \"../../../../matrix/Session.js\";\nimport type {SegmentType} from \"../../../navigation\";\nimport type {IToastCollection} from \"../IToastCollection\";\nimport type {SASRequest} from \"../../../../matrix/verification/SAS/SASRequest\";\n\ntype Options = {\n session: Session;\n} & BaseOptions;\n\nexport class VerificationToastCollectionViewModel extends ViewModel implements IToastCollection {\n public readonly toastViewModels: ObservableArray = new ObservableArray();\n\n constructor(options: Options) {\n super(options);\n this.subscribeToSASRequests();\n }\n\n private async subscribeToSASRequests() {\n await this.getOption(\"session\").crossSigning.waitFor(v => !!v).promise; \n const crossSigning = this.getOption(\"session\").crossSigning.get();\n this.track(crossSigning.receivedSASVerifications.subscribe(this));\n }\n\n\n async onAdd(_, request: SASRequest) {\n if (request.sender !== this.getOption(\"session\").userId) {\n // Don't show toast for cross-signing other users\n return;\n }\n const dismiss = () => {\n const idx = this.toastViewModels.array.findIndex(vm => vm.request.id === request.id);\n if (idx !== -1) {\n this.toastViewModels.remove(idx);\n }\n };\n this.toastViewModels.append(\n this.track(new VerificationToastNotificationViewModel(this.childOptions({ request, dismiss })))\n );\n }\n\n onRemove(_, request: SASRequest) {\n const idx = this.toastViewModels.array.findIndex(vm => vm.request.id === request.id);\n if (idx !== -1) {\n this.toastViewModels.remove(idx);\n }\n }\n\n onUpdate(_, request: SASRequest) {\n const idx = this.toastViewModels.array.findIndex(vm => vm.request.id === request.id);\n if (idx !== -1) {\n this.toastViewModels.update(idx, this.toastViewModels.at(idx)!);\n }\n }\n\n onReset() {\n for (let i = 0; i < this.toastViewModels.length; ++i) {\n this.toastViewModels.remove(i);\n }\n }\n}\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {ConcatList} from \"../../../observable\";\nimport {ViewModel, Options as BaseOptions} from \"../../ViewModel\";\nimport {CallToastCollectionViewModel} from \"./calls/CallsToastCollectionViewModel\";\nimport {VerificationToastCollectionViewModel} from \"./verification/VerificationToastCollectionViewModel\";\nimport type {Session} from \"../../../matrix/Session.js\";\nimport type {SegmentType} from \"../../navigation\";\nimport type {BaseToastNotificationViewModel} from \"./BaseToastNotificationViewModel\";\nimport type {IToastCollection} from \"./IToastCollection\";\n\ntype Options = {\n session: Session;\n} & BaseOptions;\n\nexport class ToastCollectionViewModel extends ViewModel {\n public readonly toastViewModels: ConcatList;\n\n constructor(options: Options) {\n super(options);\n const session = this.getOption(\"session\");\n const collectionVms: IToastCollection[] = [];\n if (this.features.calls) {\n collectionVms.push(this.track(new CallToastCollectionViewModel(this.childOptions({ session }))));\n }\n if (this.features.crossSigning) {\n collectionVms.push(this.track(new VerificationToastCollectionViewModel(this.childOptions({ session }))));\n }\n const vms: IToastCollection[\"toastViewModels\"][] = collectionVms.map(vm => vm.toastViewModels);\n if (vms.length !== 0) {\n this.toastViewModels = new ConcatList(...vms);\n }\n }\n}\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {LeftPanelViewModel} from \"./leftpanel/LeftPanelViewModel.js\";\nimport {RoomViewModel} from \"./room/RoomViewModel.js\";\nimport {UnknownRoomViewModel} from \"./room/UnknownRoomViewModel.js\";\nimport {InviteViewModel} from \"./room/InviteViewModel.js\";\nimport {RoomBeingCreatedViewModel} from \"./room/RoomBeingCreatedViewModel.js\";\nimport {LightboxViewModel} from \"./room/LightboxViewModel.js\";\nimport {SessionStatusViewModel} from \"./SessionStatusViewModel.js\";\nimport {RoomGridViewModel} from \"./RoomGridViewModel.js\";\nimport {SettingsViewModel} from \"./settings/SettingsViewModel.js\";\nimport {CreateRoomViewModel} from \"./CreateRoomViewModel.js\";\nimport {JoinRoomViewModel} from \"./JoinRoomViewModel\";\nimport {DeviceVerificationViewModel} from \"./verification/DeviceVerificationViewModel\";\nimport {ViewModel} from \"../ViewModel\";\nimport {RoomViewModelObservable} from \"./RoomViewModelObservable.js\";\nimport {RightPanelViewModel} from \"./rightpanel/RightPanelViewModel.js\";\nimport {SyncStatus} from \"../../matrix/Sync.js\";\nimport {ToastCollectionViewModel} from \"./toast/ToastCollectionViewModel\";\n\nexport class SessionViewModel extends ViewModel {\n constructor(options) {\n super(options);\n const {client} = options;\n this._client = this.track(client);\n this._sessionStatusViewModel = this.track(new SessionStatusViewModel(this.childOptions({\n sync: client.sync,\n reconnector: client.reconnector,\n session: client.session,\n })));\n this._leftPanelViewModel = this.track(new LeftPanelViewModel(this.childOptions({session: this._client.session})));\n this._settingsViewModel = null;\n this._roomViewModelObservable = null;\n this._gridViewModel = null;\n this._createRoomViewModel = null;\n this._joinRoomViewModel = null;\n this._verificationViewModel = null;\n this._toastCollectionViewModel = this.track(new ToastCollectionViewModel(this.childOptions({\n session: this._client.session,\n })));\n this._setupNavigation();\n this._setupForcedLogoutOnAccessTokenInvalidation();\n }\n\n _setupNavigation() {\n const gridRooms = this.navigation.observe(\"rooms\");\n // this gives us a set of room ids in the grid\n this.track(gridRooms.subscribe(roomIds => {\n this._updateGrid(roomIds);\n }));\n if (gridRooms.get()) {\n this._updateGrid(gridRooms.get());\n }\n\n const currentRoomId = this.navigation.observe(\"room\");\n // this gives us the active room\n this.track(currentRoomId.subscribe(roomId => {\n if (!this._gridViewModel) {\n this._updateRoom(roomId);\n }\n this._updateRightPanel();\n }));\n if (!this._gridViewModel) {\n this._updateRoom(currentRoomId.get());\n }\n\n const settings = this.navigation.observe(\"settings\");\n this.track(settings.subscribe(settingsOpen => {\n this._updateSettings(settingsOpen);\n }));\n this._updateSettings(settings.get());\n\n const createRoom = this.navigation.observe(\"create-room\");\n this.track(createRoom.subscribe(createRoomOpen => {\n this._updateCreateRoom(createRoomOpen);\n }));\n this._updateCreateRoom(createRoom.get());\n\n const joinRoom = this.navigation.observe(\"join-room\");\n this.track(joinRoom.subscribe((joinRoomOpen) => {\n this._updateJoinRoom(joinRoomOpen);\n }));\n this._updateJoinRoom(joinRoom.get());\n\n if (this.features.crossSigning) {\n const verification = this.navigation.observe(\"device-verification\");\n this.track(verification.subscribe((txnId) => {\n this._updateVerification(txnId);\n }));\n this._updateVerification(verification.get());\n }\n\n const lightbox = this.navigation.observe(\"lightbox\");\n this.track(lightbox.subscribe(eventId => {\n this._updateLightbox(eventId);\n }));\n this._updateLightbox(lightbox.get());\n\n\n const rightpanel = this.navigation.observe(\"right-panel\");\n this.track(rightpanel.subscribe(() => this._updateRightPanel()));\n this._updateRightPanel();\n }\n\n _setupForcedLogoutOnAccessTokenInvalidation() {\n this.track(this._client.sync.status.subscribe(status => {\n if (status === SyncStatus.Stopped) {\n const error = this._client.sync.error;\n if (error?.errcode === \"M_UNKNOWN_TOKEN\") {\n // Access token is no longer valid, so force the user to log out\n const segments = [\n this.navigation.segment(\"logout\", this.id),\n this.navigation.segment(\"forced\", true),\n ];\n const path = this.navigation.pathFrom(segments);\n this.navigation.applyPath(path);\n }\n }\n }));\n }\n\n get id() {\n return this._client.sessionId;\n }\n\n start() {\n this._sessionStatusViewModel.start();\n if (this.features.calls) {\n this._client.session.callHandler.loadCalls(\"m.ring\");\n // TODO: only do this when opening the room\n this._client.session.callHandler.loadCalls(\"m.prompt\");\n }\n }\n\n get activeMiddleViewModel() {\n return (\n this._roomViewModelObservable?.get() ||\n this._gridViewModel ||\n this._settingsViewModel ||\n this._createRoomViewModel ||\n this._joinRoomViewModel ||\n this._verificationViewModel\n );\n }\n\n get roomGridViewModel() {\n return this._gridViewModel;\n }\n\n get leftPanelViewModel() {\n return this._leftPanelViewModel;\n }\n\n get sessionStatusViewModel() {\n return this._sessionStatusViewModel;\n }\n\n get settingsViewModel() {\n return this._settingsViewModel;\n }\n\n get currentRoomViewModel() {\n return this._roomViewModelObservable?.get();\n }\n\n get rightPanelViewModel() {\n return this._rightPanelViewModel;\n }\n\n get createRoomViewModel() {\n return this._createRoomViewModel;\n }\n\n get joinRoomViewModel() {\n return this._joinRoomViewModel;\n }\n\n get verificationViewModel() {\n return this._verificationViewModel;\n }\n\n get toastCollectionViewModel() {\n return this._toastCollectionViewModel;\n }\n\n _updateGrid(roomIds) {\n const changed = !(this._gridViewModel && roomIds);\n const currentRoomId = this.navigation.path.get(\"room\");\n if (roomIds) {\n if (!this._gridViewModel) {\n this._gridViewModel = this.track(new RoomGridViewModel(this.childOptions({\n width: 3,\n height: 2,\n createRoomViewModelObservable: roomId => new RoomViewModelObservable(this, roomId),\n })));\n // try to transfer the current room view model, so we don't have to reload the timeline\n this._roomViewModelObservable?.unsubscribeAll();\n if (this._gridViewModel.initializeRoomIdsAndTransferVM(roomIds, this._roomViewModelObservable)) {\n this._roomViewModelObservable = this.untrack(this._roomViewModelObservable);\n } else if (this._roomViewModelObservable) {\n this._roomViewModelObservable = this.disposeTracked(this._roomViewModelObservable);\n }\n } else {\n this._gridViewModel.setRoomIds(roomIds);\n }\n } else if (this._gridViewModel && !roomIds) {\n // closing grid, try to show focused room in grid\n if (currentRoomId) {\n const vmo = this._gridViewModel.releaseRoomViewModel(currentRoomId.value);\n if (vmo) {\n this._roomViewModelObservable = this.track(vmo);\n this._roomViewModelObservable.subscribe(() => {\n this.emitChange(\"activeMiddleViewModel\");\n });\n }\n }\n this._gridViewModel = this.disposeTracked(this._gridViewModel);\n }\n if (changed) {\n this.emitChange(\"activeMiddleViewModel\");\n }\n }\n\n _createRoomViewModelInstance(roomId) {\n const room = this._client.session.rooms.get(roomId);\n if (room) {\n const roomVM = new RoomViewModel(this.childOptions({room, session: this._client.session}));\n roomVM.load();\n return roomVM;\n }\n return null;\n }\n\n _createUnknownRoomViewModel(roomIdOrAlias) {\n return new UnknownRoomViewModel(this.childOptions({\n roomIdOrAlias,\n session: this._client.session,\n }));\n }\n\n async _createArchivedRoomViewModel(roomId) {\n const room = await this._client.session.loadArchivedRoom(roomId);\n if (room) {\n const roomVM = new RoomViewModel(this.childOptions({room, session: this._client.session}));\n roomVM.load();\n return roomVM;\n }\n return null;\n }\n\n _createInviteViewModel(roomId) {\n const invite = this._client.session.invites.get(roomId);\n if (invite) {\n return new InviteViewModel(this.childOptions({\n invite,\n mediaRepository: this._client.session.mediaRepository,\n }));\n }\n return null;\n }\n\n _createRoomBeingCreatedViewModel(localId) {\n const roomBeingCreated = this._client.session.roomsBeingCreated.get(localId);\n if (roomBeingCreated) {\n return new RoomBeingCreatedViewModel(this.childOptions({\n roomBeingCreated,\n mediaRepository: this._client.session.mediaRepository,\n }));\n }\n return null;\n }\n\n _updateRoom(roomId) {\n // opening a room and already open?\n if (this._roomViewModelObservable?.id === roomId) {\n return;\n }\n // close if needed\n if (this._roomViewModelObservable) {\n this._roomViewModelObservable = this.disposeTracked(this._roomViewModelObservable);\n }\n if (!roomId) {\n // if clearing the activeMiddleViewModel rather than changing to a different one,\n // emit so the view picks it up and show the placeholder\n this.emitChange(\"activeMiddleViewModel\");\n return;\n }\n const vmo = new RoomViewModelObservable(this, roomId);\n this._roomViewModelObservable = this.track(vmo);\n // subscription is unsubscribed in RoomViewModelObservable.dispose, and thus handled by track\n this._roomViewModelObservable.subscribe(() => {\n this.emitChange(\"activeMiddleViewModel\");\n });\n vmo.initialize();\n }\n\n _updateSettings(settingsOpen) {\n if (this._settingsViewModel) {\n this._settingsViewModel = this.disposeTracked(this._settingsViewModel);\n }\n if (settingsOpen) {\n this._settingsViewModel = this.track(new SettingsViewModel(this.childOptions({\n client: this._client,\n })));\n this._settingsViewModel.load();\n }\n this.emitChange(\"activeMiddleViewModel\");\n }\n\n _updateCreateRoom(createRoomOpen) {\n if (this._createRoomViewModel) {\n this._createRoomViewModel = this.disposeTracked(this._createRoomViewModel);\n }\n if (createRoomOpen) {\n this._createRoomViewModel = this.track(new CreateRoomViewModel(this.childOptions({session: this._client.session})));\n }\n this.emitChange(\"activeMiddleViewModel\");\n }\n\n _updateJoinRoom(joinRoomOpen) {\n if (this._joinRoomViewModel) {\n this._joinRoomViewModel = this.disposeTracked(this._joinRoomViewModel);\n }\n if (joinRoomOpen) {\n this._joinRoomViewModel = this.track(new JoinRoomViewModel(this.childOptions({session: this._client.session})));\n }\n this.emitChange(\"activeMiddleViewModel\");\n }\n\n _updateVerification(txnId) {\n if (this._verificationViewModel) {\n this._verificationViewModel = this.disposeTracked(this._verificationViewModel);\n }\n if (txnId) {\n const request = this._client.session.crossSigning.get()?.receivedSASVerifications.get(txnId);\n this._verificationViewModel = this.track(new DeviceVerificationViewModel(this.childOptions({ session: this._client.session, request })));\n }\n this.emitChange(\"activeMiddleViewModel\");\n }\n\n _updateLightbox(eventId) {\n if (this._lightboxViewModel) {\n this._lightboxViewModel = this.disposeTracked(this._lightboxViewModel);\n }\n if (eventId) {\n const room = this._roomFromNavigation();\n this._lightboxViewModel = this.track(new LightboxViewModel(this.childOptions({eventId, room})));\n }\n this.emitChange(\"lightboxViewModel\");\n }\n\n get lightboxViewModel() {\n return this._lightboxViewModel;\n }\n\n _roomFromNavigation() {\n const roomId = this.navigation.path.get(\"room\")?.value;\n const room = this._client.session.rooms.get(roomId);\n return room;\n }\n\n _updateRightPanel() {\n this._rightPanelViewModel = this.disposeTracked(this._rightPanelViewModel);\n const enable = !!this.navigation.path.get(\"right-panel\")?.value;\n if (enable) {\n const room = this._roomFromNavigation();\n this._rightPanelViewModel = this.track(new RightPanelViewModel(this.childOptions({room, session: this._client.session})));\n }\n this.emitChange(\"rightPanelViewModel\");\n }\n\n notifyRoomReplaced(oldId, newId) {\n this.navigation.push(\"room\", newId);\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {ViewModel} from \"./ViewModel\";\nimport {KeyType} from \"../matrix/ssss/index\";\nimport {Status} from \"./session/settings/KeyBackupViewModel\";\n\nexport class AccountSetupViewModel extends ViewModel {\n constructor(options) {\n super(options);\n this._accountSetup = options.accountSetup;\n this._dehydratedDevice = undefined;\n this._decryptDehydratedDeviceViewModel = undefined;\n if (this._accountSetup.encryptedDehydratedDevice) {\n this._decryptDehydratedDeviceViewModel = new DecryptDehydratedDeviceViewModel(this, dehydratedDevice => {\n this._dehydratedDevice = dehydratedDevice;\n this._decryptDehydratedDeviceViewModel = undefined;\n this.emitChange(\"deviceDecrypted\");\n });\n }\n }\n\n get decryptDehydratedDeviceViewModel() {\n return this._decryptDehydratedDeviceViewModel;\n }\n\n get deviceDecrypted() {\n return !!this._dehydratedDevice;\n }\n\n get dehydratedDeviceId() {\n return this._accountSetup.encryptedDehydratedDevice.deviceId;\n }\n\n finish() {\n this._accountSetup.finish(this._dehydratedDevice);\n }\n}\n\n// this vm adopts the same shape as KeyBackupViewModel so the same view can be reused.\nclass DecryptDehydratedDeviceViewModel extends ViewModel {\n constructor(accountSetupViewModel, decryptedCallback) {\n super(accountSetupViewModel.options);\n this._accountSetupViewModel = accountSetupViewModel;\n this._isBusy = false;\n this._status = Status.SetupWithRecoveryKey;\n this._error = undefined;\n this._decryptedCallback = decryptedCallback;\n }\n\n get decryptAction() {\n return this.i18n`Restore`;\n }\n\n get purpose() {\n return this.i18n`claim your dehydrated device`;\n }\n\n get offerDehydratedDeviceSetup() {\n return false;\n }\n\n get dehydratedDeviceId() {\n return this._accountSetupViewModel._dehydratedDevice?.deviceId;\n }\n \n get isBusy() {\n return this._isBusy;\n }\n\n get backupVersion() { return 0; }\n\n get status() {\n return this._status;\n }\n\n get error() {\n return this._error?.message;\n }\n\n showPhraseSetup() {\n if (this._status === Status.SetupWithRecoveryKey) {\n this._status = Status.SetupWithPassphrase;\n this.emitChange(\"status\");\n }\n }\n\n showKeySetup() {\n if (this._status === Status.SetupWithPassphrase) {\n this._status = Status.SetupWithRecoveryKey;\n this.emitChange(\"status\");\n }\n }\n\n async _enterCredentials(keyType, credential) {\n if (credential) {\n try {\n this._isBusy = true;\n this.emitChange(\"isBusy\");\n const {encryptedDehydratedDevice} = this._accountSetupViewModel._accountSetup;\n const dehydratedDevice = await encryptedDehydratedDevice.decrypt(keyType, credential);\n this._decryptedCallback(dehydratedDevice);\n } catch (err) {\n console.error(err);\n this._error = err;\n this.emitChange(\"error\");\n } finally {\n this._isBusy = false;\n this.emitChange(\"\");\n }\n }\n }\n\n enterSecurityPhrase(passphrase) {\n this._enterCredentials(KeyType.Passphrase, passphrase);\n }\n\n enterSecurityKey(securityKey) {\n this._enterCredentials(KeyType.RecoveryKey, securityKey);\n }\n\n disable() {}\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {AccountSetupViewModel} from \"./AccountSetupViewModel.js\";\nimport {LoadStatus} from \"../matrix/Client.js\";\nimport {SyncStatus} from \"../matrix/Sync.js\";\nimport {ViewModel} from \"./ViewModel\";\n\nexport class SessionLoadViewModel extends ViewModel {\n constructor(options) {\n super(options);\n const {client, ready, homeserver, deleteSessionOnCancel} = options;\n this._client = client;\n this._ready = ready;\n this._homeserver = homeserver;\n this._deleteSessionOnCancel = deleteSessionOnCancel;\n this._loading = false;\n this._error = null;\n this.backUrl = this.urlRouter.urlForSegment(\"session\", true);\n this._accountSetupViewModel = undefined;\n\n }\n\n async start() {\n if (this._loading) {\n return;\n }\n try {\n this._loading = true;\n this.emitChange(\"loading\");\n this._waitHandle = this._client.loadStatus.waitFor(s => {\n if (s === LoadStatus.AccountSetup) {\n this._accountSetupViewModel = new AccountSetupViewModel(this.childOptions({accountSetup: this._client.accountSetup}));\n } else {\n this._accountSetupViewModel = undefined;\n }\n this.emitChange(\"loadLabel\");\n // wait for initial sync, but not catchup sync\n const isCatchupSync = s === LoadStatus.FirstSync &&\n this._client.sync.status.get() === SyncStatus.CatchupSync;\n return isCatchupSync ||\n s === LoadStatus.LoginFailed ||\n s === LoadStatus.Error ||\n s === LoadStatus.Ready;\n });\n try {\n await this._waitHandle.promise;\n } catch (err) {\n return; // aborted by goBack\n }\n // TODO: should we deal with no connection during initial sync \n // and we're retrying as well here?\n // e.g. show in the label what is going on wrt connectionstatus\n // much like we will once you are in the app. Probably a good idea\n\n // did it finish or get stuck at LoginFailed or Error?\n const loadStatus = this._client.loadStatus.get();\n const loadError = this._client.loadError;\n if (loadStatus === LoadStatus.FirstSync || loadStatus === LoadStatus.Ready) {\n const client = this._client;\n // session container is ready,\n // don't dispose it anymore when \n // we get disposed\n this._client = null;\n this._ready(client);\n }\n if (loadError) {\n console.error(\"session load error\", loadError.stack);\n }\n } catch (err) {\n this._error = err;\n console.error(\"error thrown during session load\", err.stack);\n } finally {\n this._loading = false;\n // loadLabel in case of client.loadError also gets updated through this\n this.emitChange(\"loading\");\n }\n }\n\n\n dispose() {\n if (this._client) {\n this._client.dispose();\n this._client = null;\n }\n if (this._waitHandle) {\n // rejects with AbortError\n this._waitHandle.dispose();\n this._waitHandle = null;\n }\n }\n\n // to show a spinner or not\n get loading() {\n const client = this._client;\n if (client && client.loadStatus.get() === LoadStatus.AccountSetup) {\n return false;\n }\n return this._loading;\n }\n\n get loadLabel() {\n const client = this._client;\n const error = this._getError();\n if (error || (client && client.loadStatus.get() === LoadStatus.Error)) {\n return `Something went wrong: ${error && error.message}.`;\n }\n\n // Statuses related to login are handled by respective login view models\n if (client) {\n switch (client.loadStatus.get()) {\n case LoadStatus.QueryAccount:\n return `Querying account encryption setup…`;\n case LoadStatus.AccountSetup:\n return \"\"; // we'll show a header ing AccountSetupView\n case LoadStatus.SessionSetup:\n return `Setting up your encryption keys…`;\n case LoadStatus.Loading:\n return `Loading your conversations…`;\n case LoadStatus.FirstSync:\n return `Getting your conversations from the server…`;\n default:\n return this._client.loadStatus.get();\n }\n }\n\n return `Preparing…`;\n }\n\n _getError() {\n return this._error || this._client?.loadError; \n }\n\n get hasError() {\n return !!this._getError();\n }\n\n async exportLogs() {\n const logExport = await this.logger.export();\n this.platform.saveFileAs(logExport.asBlob(), `hydrogen-logs-${this.platform.clock.now()}.json`);\n }\n\n async logout() {\n await this._client.startLogout(this.navigation.path.get(\"session\").value);\n this.navigation.push(\"session\", true);\n }\n\n get accountSetupViewModel() {\n return this._accountSetupViewModel;\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {LoginFailure} from \"../../matrix/Client.js\";\nimport type {PasswordLoginMethod} from \"../../matrix/login\";\nimport {Options as BaseOptions, ViewModel} from \"../ViewModel\";\nimport type {LoginOptions} from \"./LoginViewModel\";\n\ntype Options = {\n loginOptions: LoginOptions | undefined;\n attemptLogin: (loginMethod: PasswordLoginMethod) => Promise;\n} & BaseOptions\n\nexport class PasswordLoginViewModel extends ViewModel {\n private _loginOptions?: LoginOptions;\n private _attemptLogin: (loginMethod: PasswordLoginMethod) => Promise;\n private _isBusy = false;\n private _errorMessage = \"\";\n\n constructor(options: Options) {\n super(options);\n const {loginOptions, attemptLogin} = options;\n this._loginOptions = loginOptions;\n this._attemptLogin = attemptLogin;\n }\n\n get isBusy(): boolean { return this._isBusy; }\n get errorMessage(): string { return this._errorMessage; }\n\n setBusy(status: boolean): void {\n this._isBusy = status;\n this.emitChange(\"isBusy\");\n }\n\n _showError(message: string): void {\n this._errorMessage = message;\n this.emitChange(\"errorMessage\");\n }\n\n async login(username: string, password: string): Promise{\n this._errorMessage = \"\";\n this.emitChange(\"errorMessage\");\n const status = await this._attemptLogin(this._loginOptions!.password!(username, password));\n let error = \"\";\n switch (status) {\n case LoginFailure.Credentials:\n error = this.i18n`Your username and/or password don't seem to be correct.`;\n break;\n case LoginFailure.Connection:\n error = this.i18n`Can't connect to ${this._loginOptions!.homeserver}.`;\n break;\n case LoginFailure.Unknown:\n error = this.i18n`Something went wrong while checking your login and password.`;\n break;\n }\n if (error) {\n this._showError(error);\n }\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport type {SSOLoginHelper} from \"../../matrix/login\";\nimport {Options as BaseOptions, ViewModel} from \"../ViewModel\";\nimport type {LoginOptions} from \"./LoginViewModel\";\n\n\ntype Options = {\n loginOptions: LoginOptions | undefined;\n} & BaseOptions;\n\nexport class StartSSOLoginViewModel extends ViewModel{\n private _sso?: SSOLoginHelper;\n private _isBusy = false;\n\n constructor(options: Options) {\n super(options);\n this._sso = options.loginOptions!.sso;\n this._isBusy = false;\n }\n\n get isBusy(): boolean { return this._isBusy; }\n\n setBusy(status: boolean): void {\n this._isBusy = status;\n this.emitChange(\"isBusy\");\n }\n\n async startSSOLogin(): Promise {\n await this.platform.settingsStorage.setString(\"sso_ongoing_login_homeserver\", this._sso!.homeserver);\n const link = this._sso!.createSSORedirectURL(this.urlRouter.createSSOCallbackURL());\n this.platform.openUrl(link);\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {Options as BaseOptions, ViewModel} from \"../ViewModel\";\nimport {LoginFailure} from \"../../matrix/Client.js\";\nimport type {TokenLoginMethod} from \"../../matrix/login\";\nimport { Client } from \"../../matrix/Client.js\";\n\ntype Options = {\n client: Client;\n attemptLogin: (loginMethod: TokenLoginMethod) => Promise;\n loginToken: string;\n} & BaseOptions\n\nexport class CompleteSSOLoginViewModel extends ViewModel {\n private _loginToken: string;\n private _client: Client;\n private _attemptLogin: (loginMethod: TokenLoginMethod) => Promise;\n private _errorMessage = \"\";\n\n constructor(options: Options) {\n super(options);\n const {\n loginToken,\n client,\n attemptLogin,\n } = options;\n this._loginToken = loginToken;\n this._client = client;\n this._attemptLogin = attemptLogin;\n this._errorMessage = \"\";\n void this.performSSOLoginCompletion();\n }\n\n get errorMessage(): string { return this._errorMessage; }\n\n _showError(message: string): void {\n this._errorMessage = message;\n this.emitChange(\"errorMessage\");\n }\n\n async performSSOLoginCompletion(): Promise {\n if (!this._loginToken) {\n return;\n }\n const homeserver = await this.platform.settingsStorage.getString(\"sso_ongoing_login_homeserver\");\n let loginOptions: { token?: (loginToken: string) => TokenLoginMethod; };\n try {\n loginOptions = await this._client.queryLogin(homeserver).result;\n }\n catch (err) {\n this._showError(err.message);\n return;\n }\n if (!loginOptions.token) {\n this.navigation.push(\"session\");\n return;\n }\n const status = await this._attemptLogin(loginOptions.token(this._loginToken));\n let error = \"\";\n switch (status) {\n case LoginFailure.Credentials:\n error = this.i18n`Your login token is invalid.`;\n break;\n case LoginFailure.Connection:\n error = this.i18n`Can't connect to ${homeserver}.`;\n break;\n case LoginFailure.Unknown:\n error = this.i18n`Something went wrong while checking your login token.`;\n break;\n }\n if (error) {\n this._showError(error);\n }\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {Client} from \"../../matrix/Client.js\";\nimport {Options as BaseOptions, ViewModel} from \"../ViewModel\";\nimport {PasswordLoginViewModel} from \"./PasswordLoginViewModel\";\nimport {StartSSOLoginViewModel} from \"./StartSSOLoginViewModel\";\nimport {CompleteSSOLoginViewModel} from \"./CompleteSSOLoginViewModel\";\nimport {LoadStatus} from \"../../matrix/Client.js\";\nimport {SessionLoadViewModel} from \"../SessionLoadViewModel.js\";\nimport {SegmentType} from \"../navigation/index\";\n\nimport type {PasswordLoginMethod, SSOLoginHelper, TokenLoginMethod, ILoginMethod} from \"../../matrix/login\";\n\ntype Options = {\n defaultHomeserver: string;\n ready: ReadyFn;\n loginToken?: string;\n} & BaseOptions;\n\nexport class LoginViewModel extends ViewModel {\n private _ready: ReadyFn;\n private _loginToken?: string;\n private _client: Client;\n private _loginOptions?: LoginOptions;\n private _passwordLoginViewModel?: PasswordLoginViewModel;\n private _startSSOLoginViewModel?: StartSSOLoginViewModel;\n private _completeSSOLoginViewModel?: CompleteSSOLoginViewModel;\n private _loadViewModel?: SessionLoadViewModel;\n private _loadViewModelSubscription?: () => void;\n private _homeserver: string;\n private _queriedHomeserver?: string;\n private _abortHomeserverQueryTimeout?: () => void;\n private _abortQueryOperation?: () => void;\n\n private _hideHomeserver: boolean = false;\n private _isBusy: boolean = false;\n private _errorMessage: string = \"\";\n\n constructor(options: Readonly) {\n super(options);\n const {ready, defaultHomeserver, loginToken} = options;\n this._ready = ready;\n this._loginToken = loginToken;\n this._client = new Client(this.platform, this.features);\n this._homeserver = defaultHomeserver;\n this._initViewModels();\n }\n\n get passwordLoginViewModel(): PasswordLoginViewModel | undefined {\n return this._passwordLoginViewModel;\n }\n\n get startSSOLoginViewModel(): StartSSOLoginViewModel | undefined {\n return this._startSSOLoginViewModel;\n }\n\n get completeSSOLoginViewModel(): CompleteSSOLoginViewModel | undefined {\n return this._completeSSOLoginViewModel;\n }\n\n get homeserver(): string {\n return this._homeserver;\n }\n\n get resolvedHomeserver(): string | undefined {\n return this._loginOptions?.homeserver;\n }\n\n get errorMessage(): string {\n return this._errorMessage;\n }\n\n get showHomeserver(): boolean {\n return !this._hideHomeserver;\n }\n\n get loadViewModel(): SessionLoadViewModel {\n return this._loadViewModel;\n }\n\n get isBusy(): boolean {\n return this._isBusy;\n }\n\n get isFetchingLoginOptions(): boolean {\n return !!this._abortQueryOperation;\n }\n\n goBack(): void {\n this.navigation.push(\"session\");\n }\n\n private _initViewModels(): void {\n if (this._loginToken) {\n this._hideHomeserver = true;\n this._completeSSOLoginViewModel = this.track(new CompleteSSOLoginViewModel(\n this.childOptions(\n {\n client: this._client,\n attemptLogin: (loginMethod: TokenLoginMethod) => this.attemptLogin(loginMethod),\n loginToken: this._loginToken\n })));\n this.emitChange(\"completeSSOLoginViewModel\");\n }\n else {\n void this.queryHomeserver();\n }\n }\n\n private _showPasswordLogin(): void {\n this._passwordLoginViewModel = this.track(new PasswordLoginViewModel(\n this.childOptions({\n loginOptions: this._loginOptions,\n attemptLogin: (loginMethod: PasswordLoginMethod) => this.attemptLogin(loginMethod)\n })));\n this.emitChange(\"passwordLoginViewModel\");\n }\n\n private _showSSOLogin(): void {\n this._startSSOLoginViewModel = this.track(\n new StartSSOLoginViewModel(this.childOptions({loginOptions: this._loginOptions}))\n );\n this.emitChange(\"startSSOLoginViewModel\");\n }\n\n private _showError(message: string): void {\n this._errorMessage = message;\n this.emitChange(\"errorMessage\");\n }\n\n private _setBusy(status: boolean): void {\n this._isBusy = status;\n this._passwordLoginViewModel?.setBusy(status);\n this._startSSOLoginViewModel?.setBusy(status);\n this.emitChange(\"isBusy\");\n }\n\n async attemptLogin(loginMethod: ILoginMethod): Promise {\n this._setBusy(true);\n void this._client.startWithLogin(loginMethod, {inspectAccountSetup: true});\n const loadStatus = this._client.loadStatus;\n const handle = loadStatus.waitFor((status: LoadStatus) => status !== LoadStatus.Login);\n await handle.promise;\n this._setBusy(false);\n const status = loadStatus.get();\n if (status === LoadStatus.LoginFailed) {\n return this._client.loginFailure;\n }\n this._hideHomeserver = true;\n this.emitChange(\"hideHomeserver\");\n this._disposeViewModels();\n void this._createLoadViewModel();\n return null;\n }\n\n private _createLoadViewModel(): void {\n this._loadViewModelSubscription = this.disposeTracked(this._loadViewModelSubscription);\n this._loadViewModel = this.disposeTracked(this._loadViewModel);\n this._loadViewModel = this.track(\n new SessionLoadViewModel(\n this.childOptions({\n ready: (client) => {\n // make sure we don't delete the session in dispose when navigating away\n this._client = null;\n this._ready(client);\n },\n client: this._client,\n homeserver: this._homeserver\n })\n )\n );\n void this._loadViewModel.start();\n this.emitChange(\"loadViewModel\");\n this._loadViewModelSubscription = this.track(\n this._loadViewModel.disposableOn(\"change\", () => {\n if (!this._loadViewModel.loading) {\n this._loadViewModelSubscription = this.disposeTracked(this._loadViewModelSubscription);\n }\n this._setBusy(false);\n })\n );\n }\n\n private _disposeViewModels(): void {\n this._startSSOLoginViewModel = this.disposeTracked(this._startSSOLoginViewModel);\n this._passwordLoginViewModel = this.disposeTracked(this._passwordLoginViewModel);\n this._completeSSOLoginViewModel = this.disposeTracked(this._completeSSOLoginViewModel);\n this.emitChange(\"disposeViewModels\");\n }\n\n async setHomeserver(newHomeserver: string): Promise {\n this._homeserver = newHomeserver;\n // clear everything set by queryHomeserver\n this._loginOptions = undefined;\n this._queriedHomeserver = undefined;\n this._showError(\"\");\n this._disposeViewModels();\n this._abortQueryOperation = this.disposeTracked(this._abortQueryOperation);\n this.emitChange(\"loginViewModels\"); // multiple fields changing\n // also clear the timeout if it is still running\n this.disposeTracked(this._abortHomeserverQueryTimeout);\n const timeout = this.clock.createTimeout(1000);\n this._abortHomeserverQueryTimeout = this.track(() => timeout.abort());\n try {\n await timeout.elapsed();\n } catch (err) {\n if (err.name === \"AbortError\") {\n return; // still typing, don't query\n } else {\n throw err;\n }\n }\n this._abortHomeserverQueryTimeout = this.disposeTracked(this._abortHomeserverQueryTimeout);\n void this.queryHomeserver();\n }\n\n async queryHomeserver(): Promise {\n // don't repeat a query we've just done\n if (this._homeserver === this._queriedHomeserver || this._homeserver === \"\") {\n return;\n }\n this._queriedHomeserver = this._homeserver;\n // given that setHomeserver already clears everything set here,\n // and that is the only way to change the homeserver,\n // we don't need to reset things again here.\n // However, clear things set by setHomeserver:\n // if query is called before the typing timeout hits (e.g. field lost focus),\n // cancel the timeout so we don't query again.\n this._abortHomeserverQueryTimeout = this.disposeTracked(this._abortHomeserverQueryTimeout);\n // cancel ongoing query operation, if any\n this._abortQueryOperation = this.disposeTracked(this._abortQueryOperation);\n try {\n const queryOperation = this._client.queryLogin(this._homeserver);\n this._abortQueryOperation = this.track(() => queryOperation.abort());\n this.emitChange(\"isFetchingLoginOptions\");\n this._loginOptions = await queryOperation.result;\n this.emitChange(\"resolvedHomeserver\");\n }\n catch (e) {\n if (e.name === \"AbortError\") {\n return; //aborted, bail out\n } else {\n this._loginOptions = undefined;\n }\n } finally {\n this._abortQueryOperation = this.disposeTracked(this._abortQueryOperation);\n this.emitChange(\"isFetchingLoginOptions\");\n }\n if (this._loginOptions) {\n if (this._loginOptions.sso) { this._showSSOLogin(); }\n if (this._loginOptions.password) { this._showPasswordLogin(); }\n if (!this._loginOptions.sso && !this._loginOptions.password) {\n this._showError(\"This homeserver supports neither SSO nor password based login flows\");\n }\n }\n else {\n this._showError(`Could not query login methods supported by ${this.homeserver}`);\n }\n }\n\n dispose(): void {\n super.dispose();\n if (this._client) {\n // if we move away before we're done with initial sync\n // delete the session\n void this._client.deleteSession();\n }\n }\n}\n\ntype ReadyFn = (client: Client) => void;\n\n// TODO: move to Client.js when its converted to typescript.\nexport type LoginOptions = {\n homeserver: string;\n password?: (username: string, password: string) => PasswordLoginMethod;\n sso?: SSOLoginHelper;\n token?: (loginToken: string) => TokenLoginMethod;\n};\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {Options as BaseOptions, ViewModel} from \"./ViewModel\";\nimport {Client} from \"../matrix/Client.js\";\nimport {SegmentType} from \"./navigation/index\";\n\ntype Options = { sessionId: string; } & BaseOptions;\n\nexport class LogoutViewModel extends ViewModel {\n private _sessionId: string;\n private _busy: boolean;\n private _showConfirm: boolean;\n private _error?: Error;\n\n constructor(options: Options) {\n super(options);\n this._sessionId = options.sessionId;\n this._busy = false;\n this._showConfirm = true;\n this._error = undefined;\n }\n\n get showConfirm(): boolean {\n return this._showConfirm;\n }\n\n get busy(): boolean {\n return this._busy;\n }\n\n get cancelUrl(): string | undefined {\n return this.urlRouter.urlForSegment(\"session\", true);\n }\n\n async logout(): Promise {\n this._busy = true;\n this._showConfirm = false;\n this.emitChange(\"busy\");\n try {\n const client = new Client(this.platform);\n await client.startLogout(this._sessionId);\n this.navigation.push(\"session\", true);\n } catch (err) {\n this._error = err;\n this._busy = false;\n this.emitChange(\"busy\");\n }\n }\n\n get status(): string {\n if (this._error) {\n return this.i18n`Could not log out of device: ${this._error.message}`;\n } else {\n return this.i18n`Logging out… Please don't close the app.`;\n }\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {Options as BaseOptions, ViewModel} from \"./ViewModel\";\nimport {Client} from \"../matrix/Client.js\";\nimport {SegmentType} from \"./navigation/index\";\n\ntype Options = { sessionId: string; } & BaseOptions;\n\nexport class ForcedLogoutViewModel extends ViewModel {\n private _sessionId: string;\n private _error?: Error;\n private _logoutPromise: Promise;\n private _showStatus: boolean = false;\n private _showSpinner: boolean = false;\n\n constructor(options: Options) {\n super(options);\n this._sessionId = options.sessionId;\n // Start the logout process immediately without any user interaction\n this._logoutPromise = this.forceLogout();\n }\n\n async forceLogout(): Promise {\n try {\n const client = new Client(this.platform);\n await client.startForcedLogout(this._sessionId);\n }\n catch (err) {\n this._error = err;\n // Show the error in the UI \n this._showSpinner = false;\n this._showStatus = true;\n this.emitChange(\"error\");\n }\n }\n\n async proceed(): Promise {\n /**\n * The logout should already be completed because we started it from the ctor.\n * In case the logout is still proceeding, we will show a message with a spinner. \n */\n this._showSpinner = true;\n this._showStatus = true;\n this.emitChange(\"showStatus\");\n await this._logoutPromise;\n // At this point, the logout is completed for sure.\n if (!this._error) {\n this.navigation.push(\"login\", true);\n }\n }\n\n get status(): string {\n if (this._error) {\n return this.i18n`Could not log out of device: ${this._error.message}`;\n } else {\n return this.i18n`Logging out… Please don't close the app.`;\n }\n }\n\n get showStatus(): boolean {\n return this._showStatus;\n }\n\n get showSpinner(): boolean {\n return this._showSpinner;\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {SortedArray} from \"../observable\";\nimport {ViewModel} from \"./ViewModel\";\nimport {avatarInitials, getIdentifierColorNumber} from \"./avatar\";\n\nclass SessionItemViewModel extends ViewModel {\n constructor(options, pickerVM) {\n super(options);\n this._pickerVM = pickerVM;\n this._sessionInfo = options.sessionInfo;\n this._isDeleting = false;\n this._isClearing = false;\n this._error = null;\n this._exportDataUrl = null;\n }\n\n get error() {\n return this._error && this._error.message;\n }\n\n get id() {\n return this._sessionInfo.id;\n }\n\n get openUrl() {\n return this.urlRouter.urlForSegment(\"session\", this.id);\n }\n\n get label() {\n const {userId, comment} = this._sessionInfo;\n if (comment) {\n return `${userId} (${comment})`;\n } else {\n return userId;\n }\n }\n\n get sessionInfo() {\n return this._sessionInfo;\n }\n\n get exportDataUrl() {\n return this._exportDataUrl;\n }\n\n get avatarColorNumber() {\n return getIdentifierColorNumber(this._sessionInfo.userId);\n }\n\n get avatarInitials() {\n return avatarInitials(this._sessionInfo.userId);\n }\n}\n\n\nexport class SessionPickerViewModel extends ViewModel {\n constructor(options) {\n super(options);\n this._sessions = new SortedArray((s1, s2) => s1.id.localeCompare(s2.id));\n this._loadViewModel = null;\n this._error = null;\n }\n\n // this loads all the sessions\n async load() {\n const sessions = await this.platform.sessionInfoStorage.getAll();\n this._sessions.setManyUnsorted(sessions.map(s => {\n return new SessionItemViewModel(this.childOptions({sessionInfo: s}), this);\n }));\n }\n\n // for the loading of 1 picked session\n get loadViewModel() {\n return this._loadViewModel;\n }\n\n get sessions() {\n return this._sessions;\n }\n\n get cancelUrl() {\n return this.urlRouter.urlForSegment(\"login\");\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {Client} from \"../matrix/Client.js\";\nimport {SessionViewModel} from \"./session/SessionViewModel.js\";\nimport {SessionLoadViewModel} from \"./SessionLoadViewModel.js\";\nimport {LoginViewModel} from \"./login/LoginViewModel\";\nimport {LogoutViewModel} from \"./LogoutViewModel\";\nimport {ForcedLogoutViewModel} from \"./ForcedLogoutViewModel\";\nimport {SessionPickerViewModel} from \"./SessionPickerViewModel.js\";\nimport {ViewModel} from \"./ViewModel\";\n\nexport class RootViewModel extends ViewModel {\n constructor(options) {\n super(options);\n this._error = null;\n this._sessionPickerViewModel = null;\n this._sessionLoadViewModel = null;\n this._loginViewModel = null;\n this._logoutViewModel = null;\n this._forcedLogoutViewModel = null;\n this._sessionViewModel = null;\n this._pendingClient = null;\n }\n\n async load() {\n this.track(this.navigation.observe(\"login\").subscribe(() => this._applyNavigation()));\n this.track(this.navigation.observe(\"session\").subscribe(() => this._applyNavigation()));\n this.track(this.navigation.observe(\"sso\").subscribe(() => this._applyNavigation()));\n this.track(this.navigation.observe(\"logout\").subscribe(() => this._applyNavigation()));\n this._applyNavigation(true);\n }\n\n async _applyNavigation(shouldRestoreLastUrl) {\n const isLogin = this.navigation.path.get(\"login\");\n const logoutSessionId = this.navigation.path.get(\"logout\")?.value;\n const isForcedLogout = this.navigation.path.get(\"forced\")?.value;\n const sessionId = this.navigation.path.get(\"session\")?.value;\n const loginToken = this.navigation.path.get(\"sso\")?.value;\n if (isLogin) {\n if (this.activeSection !== \"login\") {\n this._showLogin();\n }\n } else if (logoutSessionId && isForcedLogout) {\n if (this.activeSection !== \"forced-logout\") {\n this._showForcedLogout(logoutSessionId);\n }\n } else if (logoutSessionId) {\n if (this.activeSection !== \"logout\") {\n this._showLogout(logoutSessionId);\n }\n } else if (sessionId === true) {\n if (this.activeSection !== \"picker\") {\n this._showPicker();\n }\n } else if (sessionId) {\n if (!this._sessionViewModel || this._sessionViewModel.id !== sessionId) {\n // see _showLogin for where _pendingClient comes from\n if (this._pendingClient && this._pendingClient.sessionId === sessionId) {\n const client = this._pendingClient;\n this._pendingClient = null;\n this._showSession(client);\n } else {\n // this should never happen, but we want to be sure not to leak it\n if (this._pendingClient) {\n this._pendingClient.dispose();\n this._pendingClient = null;\n }\n this._showSessionLoader(sessionId);\n }\n }\n } else if (loginToken) {\n this.urlRouter.normalizeUrl();\n if (this.activeSection !== \"login\") {\n this._showLogin(loginToken);\n }\n }\n else {\n try {\n if (!(shouldRestoreLastUrl && this.urlRouter.tryRestoreLastUrl())) {\n const sessionInfos = await this.platform.sessionInfoStorage.getAll();\n if (sessionInfos.length === 0) {\n this.navigation.push(\"login\");\n } else if (sessionInfos.length === 1) {\n this.navigation.push(\"session\", sessionInfos[0].id);\n } else {\n this.navigation.push(\"session\");\n }\n }\n } catch (err) {\n this._setSection(() => this._error = err);\n }\n }\n }\n\n async _showPicker() {\n this._setSection(() => {\n this._sessionPickerViewModel = new SessionPickerViewModel(this.childOptions());\n });\n try {\n await this._sessionPickerViewModel.load();\n } catch (err) {\n this._setSection(() => this._error = err);\n }\n }\n\n _showLogin(loginToken) {\n this._setSection(() => {\n this._loginViewModel = new LoginViewModel(this.childOptions({\n defaultHomeserver: this.platform.config[\"defaultHomeServer\"],\n ready: client => {\n // we don't want to load the session container again,\n // but we also want the change of screen to go through the navigation\n // so we store the session container in a temporary variable that will be\n // consumed by _applyNavigation, triggered by the navigation change\n //\n // Also, we should not call _setSection before the navigation is in the correct state,\n // as url creation (e.g. in RoomTileViewModel)\n // won't be using the correct navigation base path.\n this._pendingClient = client;\n this.navigation.push(\"session\", client.sessionId);\n },\n loginToken\n }));\n });\n }\n\n _showLogout(sessionId) {\n this._setSection(() => {\n this._logoutViewModel = new LogoutViewModel(this.childOptions({sessionId}));\n });\n }\n\n _showForcedLogout(sessionId) {\n this._setSection(() => {\n this._forcedLogoutViewModel = new ForcedLogoutViewModel(this.childOptions({sessionId}));\n });\n }\n\n _showSession(client) {\n this._setSection(() => {\n this._sessionViewModel = new SessionViewModel(this.childOptions({client}));\n this._sessionViewModel.start();\n });\n }\n\n _showSessionLoader(sessionId) {\n const client = new Client(this.platform, this.features);\n client.startWithExistingSession(sessionId);\n this._setSection(() => {\n this._sessionLoadViewModel = new SessionLoadViewModel(this.childOptions({\n client,\n ready: client => this._showSession(client)\n }));\n this._sessionLoadViewModel.start();\n });\n }\n\n get activeSection() {\n if (this._error) {\n return \"error\";\n } else if (this._sessionViewModel) {\n return \"session\";\n } else if (this._loginViewModel) {\n return \"login\";\n } else if (this._logoutViewModel) {\n return \"logout\";\n } else if (this._forcedLogoutViewModel) {\n return \"forced-logout\";\n } else if (this._sessionPickerViewModel) {\n return \"picker\";\n } else if (this._sessionLoadViewModel) {\n return \"loading\";\n } else {\n return \"redirecting\";\n }\n }\n\n _setSection(setter) {\n // clear all members the activeSection depends on\n this._error = null;\n this._sessionPickerViewModel = this.disposeTracked(this._sessionPickerViewModel);\n this._sessionLoadViewModel = this.disposeTracked(this._sessionLoadViewModel);\n this._loginViewModel = this.disposeTracked(this._loginViewModel);\n this._logoutViewModel = this.disposeTracked(this._logoutViewModel);\n this._forcedLogoutViewModel = this.disposeTracked(this._forcedLogoutViewModel);\n this._sessionViewModel = this.disposeTracked(this._sessionViewModel);\n // now set it again\n setter();\n this._sessionPickerViewModel && this.track(this._sessionPickerViewModel);\n this._sessionLoadViewModel && this.track(this._sessionLoadViewModel);\n this._loginViewModel && this.track(this._loginViewModel);\n this._logoutViewModel && this.track(this._logoutViewModel);\n this._forcedLogoutViewModel && this.track(this._forcedLogoutViewModel);\n this._sessionViewModel && this.track(this._sessionViewModel);\n this.emitChange(\"activeSection\");\n }\n\n get error() { return this._error; }\n get sessionViewModel() { return this._sessionViewModel; }\n get loginViewModel() { return this._loginViewModel; }\n get logoutViewModel() { return this._logoutViewModel; }\n get forcedLogoutViewModel() { return this._forcedLogoutViewModel; }\n get sessionPickerViewModel() { return this._sessionPickerViewModel; }\n get sessionLoadViewModel() { return this._sessionLoadViewModel; }\n}\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n// import {RecordRequester, ReplayRequester} from \"./matrix/net/request/replay\";\nimport {RootViewModel} from \"../../domain/RootViewModel.js\";\nimport {createNavigation, createRouter} from \"../../domain/navigation/index\";\nimport {FeatureSet} from \"../../features\";\n\n// Don't use a default export here, as we use multiple entries during legacy build,\n// which does not support default exports,\n// see https://github.com/rollup/plugins/tree/master/packages/multi-entry\nexport async function main(platform) {\n try {\n // to replay:\n // const fetchLog = await (await fetch(\"/fetchlogs/constrainterror.json\")).json();\n // const replay = new ReplayRequester(fetchLog, {delay: false});\n // const request = replay.request;\n\n // to record:\n // const recorder = new RecordRequester(createFetchRequest(clock.createTimeout));\n // const request = recorder.request;\n // window.getBrawlFetchLog = () => recorder.log();\n await platform.init();\n const features = await FeatureSet.load(platform.settingsStorage);\n const navigation = createNavigation();\n platform.setNavigation(navigation);\n const urlRouter = createRouter({navigation, history: platform.history});\n urlRouter.attach();\n const vm = new RootViewModel({\n platform,\n // the only public interface of the router is to create urls,\n // so we call it that in the view models\n urlRouter: urlRouter,\n navigation,\n features\n });\n await vm.load();\n platform.createAndMountRootView(vm);\n } catch(err) {\n console.error(`${err.message}:\\n${err.stack}`);\n }\n}\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {ConnectionError} from \"../matrix/error.js\";\nimport type {Timeout} from \"../platform/web/dom/Clock.js\"\nimport type {IAbortable} from \"./AbortableOperation\";\n\ntype TimeoutCreator = (ms: number) => Timeout;\n\nexport function abortOnTimeout(createTimeout: TimeoutCreator, timeoutAmount: number, requestResult: IAbortable, responsePromise: Promise) {\n const timeout = createTimeout(timeoutAmount);\n // abort request if timeout finishes first\n let timedOut = false;\n timeout.elapsed().then(\n () => {\n timedOut = true;\n requestResult.abort();\n },\n () => {} // ignore AbortError when timeout is aborted\n );\n // abort timeout if request finishes first\n return responsePromise.then(\n response => {\n timeout.abort();\n return response;\n },\n err => {\n timeout.abort();\n // map error to TimeoutError\n if (err.name === \"AbortError\" && timedOut) {\n throw new ConnectionError(`Request timed out after ${timeoutAmount}ms`, true);\n } else {\n throw err;\n }\n }\n );\n}\n\n// because impunity only takes one entrypoint currently,\n// these tests aren't run by yarn test as that does not\n// include platform specific code,\n// and this file is only included by platform specific code,\n// see how to run in package.json and replace src/main.js with this file.\nimport {Clock as MockClock} from \"../mocks/Clock.js\";\nimport {Request as MockRequest} from \"../mocks/Request.js\";\nimport {AbortError} from \"../matrix/error.js\";\nexport function tests() {\n return {\n \"ConnectionError on timeout\": async assert => {\n const clock = new MockClock();\n const request = new MockRequest();\n const promise = abortOnTimeout(clock.createTimeout, 10000, request, request.response());\n clock.elapse(10000);\n await assert.rejects(promise, ConnectionError);\n assert(request.aborted);\n },\n \"Abort is canceled once response resolves\": async assert => {\n const clock = new MockClock();\n const request = new MockRequest();\n const promise = abortOnTimeout(clock.createTimeout, 10000, request, request.response());\n request.resolve(5);\n clock.elapse(10000);\n assert(!request.aborted);\n assert.equal(await promise, 5);\n },\n \"AbortError from request is not mapped to ConnectionError\": async assert => {\n const clock = new MockClock();\n const request = new MockRequest();\n const promise = abortOnTimeout(clock.createTimeout, 10000, request, request.response());\n request.reject(new AbortError());\n assert(!request.aborted);\n assert.rejects(promise, AbortError);\n }\n }\n\n}\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexport function addCacheBuster(urlStr, random = Math.random) {\n // XHR doesn't have a good way to disable cache,\n // so add a random query param\n // see https://davidtranscend.com/blog/prevent-ie11-cache-ajax-requests/\n if (urlStr.includes(\"?\")) {\n urlStr = urlStr + \"&\";\n } else {\n urlStr = urlStr + \"?\";\n }\n return urlStr + `_cacheBuster=${Math.ceil(random() * Number.MAX_SAFE_INTEGER)}`;\n}\n\nexport function mapAsFormData(map) {\n const formData = new FormData();\n for (const [name, value] of map) {\n // Special case {name: string, blob: BlobHandle} to set a filename.\n // This is the format returned by platform.openFile\n if (value.blob?.nativeBlob && value.name) {\n formData.set(name, value.blob.nativeBlob, value.name);\n } else {\n formData.set(name, value);\n }\n }\n return formData;\n}\n\nexport function tests() {\n return {\n \"add cache buster\": assert => {\n const random = () => 0.5;\n assert.equal(addCacheBuster(\"http://foo\", random), \"http://foo?_cacheBuster=4503599627370496\");\n assert.equal(addCacheBuster(\"http://foo?bar=baz\", random), \"http://foo?bar=baz&_cacheBuster=4503599627370496\");\n }\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {\n AbortError,\n ConnectionError\n} from \"../../../../matrix/error.js\";\nimport {addCacheBuster, mapAsFormData} from \"./common.js\";\n\nclass RequestResult {\n constructor(promise, xhr) {\n this._promise = promise;\n this._xhr = xhr;\n }\n\n abort() {\n this._xhr.abort();\n }\n\n response() {\n return this._promise;\n }\n}\n\nfunction createXhr(url, {method, headers, timeout, format, uploadProgress}) {\n const xhr = new XMLHttpRequest();\n\n if (uploadProgress) {\n xhr.upload.addEventListener(\"progress\", evt => uploadProgress(evt.loaded));\n }\n\n xhr.open(method, url);\n \n if (format === \"buffer\") {\n // important to call this after calling open\n xhr.responseType = \"arraybuffer\";\n }\n if (headers) {\n for(const [name, value] of headers.entries()) {\n try {\n xhr.setRequestHeader(name, value);\n } catch (err) {\n console.info(`Could not set ${name} header: ${err.message}`);\n }\n }\n }\n if (timeout) {\n xhr.timeout = timeout;\n }\n\n return xhr;\n}\n\nfunction xhrAsPromise(xhr, method, url) {\n return new Promise((resolve, reject) => {\n xhr.addEventListener(\"load\", () => resolve(xhr));\n xhr.addEventListener(\"abort\", () => reject(new AbortError()));\n xhr.addEventListener(\"error\", () => reject(new ConnectionError(`Error ${method} ${url}`)));\n xhr.addEventListener(\"timeout\", () => reject(new ConnectionError(`Timeout ${method} ${url}`, true)));\n });\n}\n\nexport function xhrRequest(url, options) {\n let {cache, format, body, method} = options;\n if (!cache) {\n url = addCacheBuster(url);\n }\n const xhr = createXhr(url, options);\n const promise = xhrAsPromise(xhr, method, url).then(xhr => {\n const {status} = xhr;\n let body = null;\n if (format === \"buffer\") {\n body = xhr.response;\n } else if (xhr.getResponseHeader(\"Content-Type\") === \"application/json\") {\n body = JSON.parse(xhr.responseText);\n }\n return {status, body};\n });\n\n // if a BlobHandle, take native blob\n if (body?.nativeBlob) {\n body = body.nativeBlob;\n }\n if (body instanceof Map) {\n body = mapAsFormData(body);\n }\n xhr.send(body || null);\n\n return new RequestResult(promise, xhr);\n}\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {\n AbortError,\n ConnectionError\n} from \"../../../../matrix/error.js\";\nimport {abortOnTimeout} from \"../../../../utils/timeout\";\nimport {addCacheBuster, mapAsFormData} from \"./common.js\";\nimport {xhrRequest} from \"./xhr.js\";\n\nclass RequestResult {\n constructor(promise, controller) {\n if (!controller) {\n const abortPromise = new Promise((_, reject) => {\n this._controller = {\n abort() {\n const err = new Error(\"fetch request aborted\");\n err.name = \"AbortError\";\n reject(err);\n }\n };\n });\n this.promise = Promise.race([promise, abortPromise]);\n } else {\n this.promise = promise;\n this._controller = controller;\n }\n }\n\n abort() {\n this._controller.abort();\n }\n\n response() {\n return this.promise;\n }\n}\n\nexport function createFetchRequest(createTimeout, serviceWorkerHandler) {\n return function fetchRequest(url, requestOptions) {\n if (serviceWorkerHandler?.haltRequests) {\n // prevent any requests while waiting\n // for the new service worker to get activated.\n // Once this happens, the page will be reloaded\n // by the serviceWorkerHandler so this is fine.\n return new RequestResult(new Promise(() => {}), {});\n }\n // fetch doesn't do upload progress yet, delegate to xhr\n if (requestOptions?.uploadProgress) {\n return xhrRequest(url, requestOptions);\n }\n let {method, headers, body, timeout, format, cache = false} = requestOptions;\n const controller = typeof AbortController === \"function\" ? new AbortController() : null;\n // if a BlobHandle, take native blob\n if (body?.nativeBlob) {\n body = body.nativeBlob;\n }\n if (body instanceof Map) {\n body = mapAsFormData(body);\n }\n let options = {method, body};\n if (controller) {\n options = Object.assign(options, {\n signal: controller.signal\n });\n }\n if (!cache) {\n url = addCacheBuster(url);\n }\n options = Object.assign(options, {\n mode: \"cors\",\n credentials: \"omit\",\n referrer: \"no-referrer\",\n // ideally we'd turn off cache here, but Safari interprets\n // `Access-Control-Allow-Headers` strictly (only when fetch is\n // intercepted by a service worker strangely enough), in that\n // it gives a CORS error if Cache-Control is not present\n // in the list of allowed headers (which it isn't commonly, at least not on matrix.org).\n // With no-store or no-cache here, it does set `Cache-Control`\n // so we don't do that, and prevent caching with `addCacheBuster`.\n // We also hope the server responds with `Cache-Control: no-store` so\n // we don't fill the http cache with api responses.\n // \n // cache: \"no-store\",\n cache: \"default\",\n });\n if (headers) {\n const fetchHeaders = new Headers();\n for(const [name, value] of headers.entries()) {\n fetchHeaders.append(name, value);\n }\n options.headers = fetchHeaders;\n }\n const promise = fetch(url, options).then(async response => {\n const {status} = response;\n let body;\n try {\n if (format === \"json\") {\n body = await response.json();\n } else if (format === \"buffer\") {\n body = await response.arrayBuffer();\n }\n else if (format === \"text\") {\n body = await response.text();\n }\n } catch (err) {\n // some error pages return html instead of json, ignore error\n // detect these ignored errors from the response status \n if (!(err.name === \"SyntaxError\" && status >= 400)) {\n throw err;\n }\n }\n return {status, body};\n }, err => {\n if (err.name === \"AbortError\") {\n // map DOMException with name AbortError to our own AbortError type\n // as we don't want DOMExceptions in the protocol layer.\n throw new AbortError();\n } else if (err instanceof TypeError) {\n // Network errors are reported as TypeErrors, see\n // https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch#Checking_that_the_fetch_was_successful\n // this can either mean user is offline, server is offline, or a CORS error (server misconfiguration).\n // \n // One could check navigator.onLine to rule out the first\n // but the 2 latter ones are indistinguishable from javascript.\n throw new ConnectionError(`${method} ${url}: ${err.message}`);\n }\n throw err;\n });\n const result = new RequestResult(promise, controller);\n\n if (timeout) {\n result.promise = abortOnTimeout(createTimeout, timeout, result, result.promise);\n }\n\n return result;\n } \n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\ninterface ISessionInfo {\n id: string;\n deviceId: string;\n userId: string;\n homeserver: string;\n homeServer: string; // deprecate this over time\n accessToken: string;\n lastUsed: number;\n /**\n * If true, then this session will not be used for sending\n * encrypted messages.\n * OTK uploads will be disabled when this is true.\n * \n * Encrypted messages can still be decrypted and key backups\n * can also be restored.\n */\n isReadOnly: boolean;\n}\n\n// todo: this should probably be in platform/types?\ninterface ISessionInfoStorage {\n getAll(): Promise;\n updateLastUsed(id: string, timestamp: number): Promise;\n updateAccessToken(id: string, token: string): Promise;\n get(id: string): Promise;\n add(sessionInfo: ISessionInfo): Promise;\n delete(sessionId: string): Promise;\n}\n\nexport class SessionInfoStorage implements ISessionInfoStorage {\n private readonly _name: string;\n\n constructor(name: string) {\n this._name = name;\n }\n\n getAll(): Promise {\n const sessionsJson = localStorage.getItem(this._name);\n if (sessionsJson) {\n const sessions = JSON.parse(sessionsJson);\n if (Array.isArray(sessions)) {\n return Promise.resolve(sessions);\n }\n }\n return Promise.resolve([]);\n }\n\n async updateAccessToken(id: string, accessToken: string): Promise {\n const sessions = await this.getAll();\n const session = sessions.find(session => session.id === id);\n if (!session) {\n throw Error('No session found');\n }\n session.accessToken = accessToken;\n localStorage.setItem(this._name, JSON.stringify(sessions));\n }\n\n async updateLastUsed(id: string, timestamp: number): Promise {\n const sessions = await this.getAll();\n const session = sessions.find(session => session.id === id);\n if (session) {\n session.lastUsed = timestamp;\n localStorage.setItem(this._name, JSON.stringify(sessions));\n }\n }\n\n async get(id: string): Promise {\n const sessions = await this.getAll();\n if (sessions) {\n return sessions.find(session => session.id === id);\n }\n }\n\n async add(sessionInfo: ISessionInfo): Promise {\n const sessions = await this.getAll();\n sessions.push(sessionInfo);\n localStorage.setItem(this._name, JSON.stringify(sessions));\n }\n\n async delete(sessionId: string): Promise {\n let sessions = await this.getAll();\n sessions = sessions.filter(s => s.id !== sessionId);\n localStorage.setItem(this._name, JSON.stringify(sessions));\n }\n \n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexport class SettingsStorage {\n constructor(prefix) {\n this._prefix = prefix;\n }\n\n async setInt(key, value) {\n this._set(key, value);\n }\n\n async getInt(key, defaultValue = 0) {\n const value = window.localStorage.getItem(`${this._prefix}${key}`);\n if (typeof value === \"string\") {\n return parseInt(value, 10);\n }\n return defaultValue;\n }\n\n async setBool(key, value) {\n this._set(key, value);\n }\n\n async getBool(key, defaultValue = false) {\n const value = window.localStorage.getItem(`${this._prefix}${key}`);\n if (typeof value === \"string\") {\n return value === \"true\";\n }\n return defaultValue;\n }\n\n async setString(key, value) {\n this._set(key, value);\n }\n\n async getString(key) {\n return window.localStorage.getItem(`${this._prefix}${key}`);\n }\n\n async remove(key) {\n window.localStorage.removeItem(`${this._prefix}${key}`);\n }\n\n async _set(key, value) {\n window.localStorage.setItem(`${this._prefix}${key}`, value);\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nexport class UTF8 {\n constructor() {\n this._encoder = null;\n this._decoder = null;\n }\n\n encode(str) {\n if (!this._encoder) {\n this._encoder = new TextEncoder();\n }\n return this._encoder.encode(str);\n }\n\n decode(buffer) {\n if (!this._decoder) {\n this._decoder = new TextDecoder();\n }\n return this._decoder.decode(buffer);\n }\n}\n","/*\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\n(function(){\n \"use strict\";\n\n var chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n\n // Use a lookup table to find the index.\n var lookup = new Uint8Array(256);\n for (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n }\n\n exports.encode = function(arraybuffer) {\n var bytes = new Uint8Array(arraybuffer),\n i, len = bytes.length, base64 = \"\";\n\n for (i = 0; i < len; i+=3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if ((len % 3) === 2) {\n base64 = base64.substring(0, base64.length - 1) + \"=\";\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + \"==\";\n }\n\n return base64;\n };\n\n exports.decode = function(base64) {\n var bufferLength = base64.length * 0.75,\n len = base64.length, i, p = 0,\n encoded1, encoded2, encoded3, encoded4;\n\n if (base64[base64.length - 1] === \"=\") {\n bufferLength--;\n if (base64[base64.length - 2] === \"=\") {\n bufferLength--;\n }\n }\n\n var arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i+=4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i+1)];\n encoded3 = lookup[base64.charCodeAt(i+2)];\n encoded4 = lookup[base64.charCodeAt(i+3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n };\n})();\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport base64 from \"base64-arraybuffer\";\n\nexport class Base64 {\n encodeUnpadded(buffer) {\n const str = base64.encode(buffer);\n const paddingIdx = str.indexOf(\"=\");\n if (paddingIdx !== -1) {\n return str.substr(0, paddingIdx);\n } else {\n return str;\n }\n }\n\n encode(buffer) {\n return base64.encode(buffer);\n }\n\n decode(str) {\n return base64.decode(str);\n }\n}\n","var Buffer = {\n isBuffer: function(array) {return array instanceof Uint8Array;},\n from: function(arrayBuffer) {return arrayBuffer;},\n allocUnsafe: function(size) {return Buffer.alloc(size);},\n alloc: function(size) {return new Uint8Array(size);}\n};\nexport default Buffer;\n","'use strict'\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n// @ts-ignore\nvar _Buffer = require('safe-buffer').Buffer\nfunction base (ALPHABET) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n var BASE_MAP = new Uint8Array(256)\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i)\n var xc = x.charCodeAt(0)\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i\n }\n var BASE = ALPHABET.length\n var LEADER = ALPHABET.charAt(0)\n var FACTOR = Math.log(BASE) / Math.log(256) // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up\n function encode (source) {\n if (Array.isArray(source) || source instanceof Uint8Array) { source = _Buffer.from(source) }\n if (!_Buffer.isBuffer(source)) { throw new TypeError('Expected Buffer') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n var zeroes = 0\n var length = 0\n var pbegin = 0\n var pend = source.length\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++\n zeroes++\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0\n var b58 = new Uint8Array(size)\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin]\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0\n b58[it1] = (carry % BASE) >>> 0\n carry = (carry / BASE) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n pbegin++\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length\n while (it2 !== size && b58[it2] === 0) {\n it2++\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes)\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]) }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return _Buffer.alloc(0) }\n var psz = 0\n // Skip leading spaces.\n if (source[psz] === ' ') { return }\n // Skip and count leading '1's.\n var zeroes = 0\n var length = 0\n while (source[psz] === LEADER) {\n zeroes++\n psz++\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0 // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size)\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)]\n // Invalid character\n if (carry === 255) { return }\n var i = 0\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0\n b256[it3] = (carry % 256) >>> 0\n carry = (carry / 256) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n psz++\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') { return }\n // Skip leading zeroes in b256.\n var it4 = size - length\n while (it4 !== size && b256[it4] === 0) {\n it4++\n }\n var vch = _Buffer.allocUnsafe(zeroes + (size - it4))\n vch.fill(0x00, 0, zeroes)\n var j = zeroes\n while (it4 !== size) {\n vch[j++] = b256[it4++]\n }\n return vch\n }\n function decode (string) {\n var buffer = decodeUnsafe(string)\n if (buffer) { return buffer }\n throw new Error('Non-base' + BASE + ' character')\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nmodule.exports = base\n","var basex = require('base-x')\nvar ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n\nmodule.exports = basex(ALPHABET)\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport bs58 from \"bs58\";\n\nexport class Base58 {\n encode(buffer) {\n return bs58.encode(buffer);\n }\n\n decode(str) {\n return bs58.decode(str);\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {UTF8} from \"../dom/UTF8.js\";\nimport {Base64} from \"./Base64.js\";\nimport {Base58} from \"./Base58.js\";\n\nexport class Encoding {\n constructor() {\n this.utf8 = new UTF8();\n this.base64 = new Base64();\n this.base58 = new Base58();\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexport class OlmWorker {\n constructor(workerPool) {\n this._workerPool = workerPool;\n }\n\n megolmDecrypt(session, ciphertext) {\n const sessionKey = session.export_session(session.first_known_index());\n return this._workerPool.send({type: \"megolm_decrypt\", ciphertext, sessionKey});\n }\n\n async createAccountAndOTKs(account, otkAmount) {\n // IE11 does not support getRandomValues in a worker, so we have to generate the values upfront.\n let randomValues;\n if (window.msCrypto) {\n randomValues = [\n window.msCrypto.getRandomValues(new Uint8Array(64)),\n window.msCrypto.getRandomValues(new Uint8Array(otkAmount * 32)),\n ];\n }\n const pickle = await this._workerPool.send({type: \"olm_create_account_otks\", randomValues, otkAmount}).response();\n account.unpickle(\"\", pickle);\n }\n\n async createOutboundOlmSession(account, newSession, theirIdentityKey, theirOneTimeKey) {\n const accountPickle = account.pickle(\"\");\n let randomValues;\n if (window.msCrypto) {\n randomValues = [\n window.msCrypto.getRandomValues(new Uint8Array(64)),\n ];\n }\n const sessionPickle = await this._workerPool.send({type: \"olm_create_outbound\", accountPickle, theirIdentityKey, theirOneTimeKey, randomValues}).response();\n newSession.unpickle(\"\", sessionPickle);\n }\n\n dispose() {\n this._workerPool.dispose();\n }\n}\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {\n openDatabase,\n txnAsPromise,\n reqAsPromise,\n iterateCursor,\n fetchResults,\n} from \"../matrix/storage/idb/utils\";\nimport type {Interval} from \"../platform/web/dom/Clock\";\nimport type {Platform} from \"../platform/web/Platform.js\";\nimport type {BlobHandle} from \"../platform/web/dom/BlobHandle.js\";\nimport type {ILogItem, ILogger, ILogReporter, ISerializedItem} from \"./types\";\nimport {LogFilter} from \"./LogFilter\";\n\ntype QueuedItem = {\n json: string;\n id?: number;\n}\n\ntype Options = {\n name: string,\n flushInterval?: number,\n limit?: number,\n platform: Platform,\n serializedTransformer?: (item: ISerializedItem) => ISerializedItem\n}\n\nexport class IDBLogPersister implements ILogReporter {\n private readonly _flushInterval: Interval;\n private _queuedItems: QueuedItem[];\n private readonly options: Options;\n private logger?: ILogger;\n\n constructor(options: Options) {\n this.options = options;\n this._queuedItems = this._loadQueuedItems();\n // TODO: also listen for unload just in case sync keeps on running after pagehide is fired?\n window.addEventListener(\"pagehide\", this, false);\n this._flushInterval = this.options.platform.clock.createInterval(\n () => this._tryFlush(),\n this.options.flushInterval ?? 60 * 1000\n );\n }\n\n setLogger(logger: ILogger): void {\n this.logger = logger;\n }\n\n reportItem(logItem: ILogItem, filter: LogFilter, forced: boolean): void {\n const queuedItem = this.prepareItemForQueue(logItem, filter, forced);\n if (queuedItem) {\n this._queuedItems.push(queuedItem);\n }\n }\n\n async export(): Promise {\n const db = await this._openDB();\n try {\n const txn = db.transaction([\"logs\"], \"readonly\");\n const logs = txn.objectStore(\"logs\");\n const storedItems: QueuedItem[] = await fetchResults(logs.openCursor(), () => false);\n const openItems = this.getSerializedOpenItems();\n const allItems = storedItems.concat(this._queuedItems).concat(openItems);\n return new IDBLogExport(allItems, this, this.options.platform);\n } finally {\n try {\n db.close();\n } catch (e) {}\n }\n }\n \n dispose(): void {\n window.removeEventListener(\"pagehide\", this, false);\n this._flushInterval.dispose();\n }\n\n handleEvent(evt: Event): void {\n if (evt.type === \"pagehide\") {\n this._finishAllAndFlush();\n }\n }\n\n private async _tryFlush(): Promise {\n const db = await this._openDB();\n try {\n const txn = db.transaction([\"logs\"], \"readwrite\");\n const logs = txn.objectStore(\"logs\");\n const amount = this._queuedItems.length;\n for(const i of this._queuedItems) {\n logs.add(i);\n }\n const itemCount = await reqAsPromise(logs.count());\n const limit = this.options.limit ?? 3000;\n if (itemCount > limit) {\n // delete an extra 10% so we don't need to delete every time we flush\n let deleteAmount = (itemCount - limit) + Math.round(0.1 * limit);\n await iterateCursor(logs.openCursor(), (_, __, cursor) => {\n cursor.delete();\n deleteAmount -= 1;\n return {done: deleteAmount === 0};\n });\n }\n await txnAsPromise(txn);\n this._queuedItems.splice(0, amount);\n } catch (err) {\n console.error(\"Could not flush logs\", err);\n } finally {\n try {\n db.close();\n } catch (e) {}\n }\n }\n\n private _finishAllAndFlush(): void {\n if (this.logger) {\n this.logger.log({l: \"pagehide, closing logs\", t: \"navigation\"});\n this.logger.forceFinish();\n }\n this._persistQueuedItems(this._queuedItems);\n }\n\n private _loadQueuedItems(): QueuedItem[] {\n const key = `${this.options.name}_queuedItems`;\n try {\n const json = window.localStorage.getItem(key);\n if (json) {\n window.localStorage.removeItem(key);\n return JSON.parse(json);\n }\n } catch (err) {\n console.error(\"Could not load queued log items\", err);\n }\n return [];\n }\n\n private _openDB(): Promise {\n return openDatabase(this.options.name, db => db.createObjectStore(\"logs\", {keyPath: \"id\", autoIncrement: true}), 1);\n }\n\n private prepareItemForQueue(logItem: ILogItem, filter: LogFilter, forced: boolean): QueuedItem | undefined {\n let serializedItem = logItem.serialize(filter, undefined, forced);\n if (serializedItem) {\n if (this.options.serializedTransformer) {\n serializedItem = this.options.serializedTransformer(serializedItem);\n }\n return {\n json: JSON.stringify(serializedItem)\n };\n }\n }\n\n private _persistQueuedItems(items: QueuedItem[]): void {\n try {\n window.localStorage.setItem(`${this.options.name}_queuedItems`, JSON.stringify(items));\n } catch (e) {\n console.error(\"Could not persist queued log items in localStorage, they will likely be lost\", e);\n }\n }\n\n /** @internal called by ILogExport.removeFromStore */\n async removeItems(items: QueuedItem[]): Promise {\n const db = await this._openDB();\n try {\n const txn = db.transaction([\"logs\"], \"readwrite\");\n const logs = txn.objectStore(\"logs\");\n for (const item of items) {\n if (typeof item.id === \"number\") {\n logs.delete(item.id);\n } else {\n // assume the (non-persisted) object in each array will be the same\n const queuedIdx = this._queuedItems.indexOf(item);\n if (queuedIdx === -1) {\n this._queuedItems.splice(queuedIdx, 1);\n }\n }\n }\n await txnAsPromise(txn);\n } finally {\n try {\n db.close();\n } catch (e) {}\n }\n }\n\n private getSerializedOpenItems(): QueuedItem[] {\n const openItems: QueuedItem[] = [];\n if (!this.logger) {\n return openItems;\n }\n const filter = new LogFilter();\n for(const item of this.logger!.getOpenRootItems()) {\n const openItem = this.prepareItemForQueue(item, filter, false);\n if (openItem) {\n openItems.push(openItem);\n }\n }\n return openItems;\n }\n}\n\nexport class IDBLogExport {\n private readonly _items: QueuedItem[];\n private readonly _logger: IDBLogPersister;\n private readonly _platform: Platform;\n\n constructor(items: QueuedItem[], logger: IDBLogPersister, platform: Platform) {\n this._items = items;\n this._logger = logger;\n this._platform = platform;\n }\n \n get count(): number {\n return this._items.length;\n }\n\n /**\n * @return {Promise}\n */\n removeFromStore(): Promise {\n return this._logger.removeItems(this._items);\n }\n\n asBlob(): BlobHandle {\n const json = this.toJSON();\n const buffer: Uint8Array = this._platform.encoding.utf8.encode(json);\n const blob: BlobHandle = this._platform.createBlob(buffer, \"application/json\");\n return blob;\n }\n\n toJSON(): string {\n const log = {\n formatVersion: 1,\n appVersion: this._platform.updateService?.version,\n platform: this._platform.description,\n items: this._items.map(i => JSON.parse(i.json))\n };\n const json = JSON.stringify(log);\n return json;\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport type {ILogger, ILogItem, LogItemValues, ILogReporter} from \"./types\";\nimport type {LogItem} from \"./LogItem\";\n\nexport class ConsoleReporter implements ILogReporter {\n private logger?: ILogger;\n\n reportItem(item: ILogItem): void {\n printToConsole(item as LogItem);\n }\n\n setLogger(logger: ILogger) {\n this.logger = logger;\n }\n\n printOpenItems(): void {\n if (!this.logger) {\n return;\n }\n for (const item of this.logger.getOpenRootItems()) {\n this.reportItem(item);\n }\n }\n}\n\nconst excludedKeysFromTable = [\"l\", \"id\"];\nfunction filterValues(values: LogItemValues): LogItemValues | null {\n return Object.entries(values)\n .filter(([key]) => !excludedKeysFromTable.includes(key))\n .reduce((obj: LogItemValues, [key, value]) => {\n obj = obj || {};\n obj[key] = value;\n return obj;\n }, null);\n}\n\nfunction hasChildWithError(item: LogItem): boolean {\n if (item.error) {\n return true;\n }\n if (item.children) {\n for(const c of item.children) {\n if (hasChildWithError(c)) {\n return true;\n }\n }\n }\n return false;\n}\n\nfunction printToConsole(item: LogItem): void {\n const label = `${itemCaption(item)} (@${item.start}ms, duration: ${item.duration}ms)`;\n const filteredValues = filterValues(item.values);\n const shouldGroup = item.children || filteredValues;\n if (shouldGroup) {\n if (hasChildWithError(item)) {\n console.group(label);\n } else {\n console.groupCollapsed(label);\n }\n if (item.error) {\n console.error(item.error);\n }\n } else {\n if (item.error) {\n console.error(item.error);\n } else {\n console.log(label);\n }\n }\n if (filteredValues) {\n console.table(filteredValues);\n }\n if (item.children) {\n for(const c of item.children) {\n printToConsole(c);\n }\n }\n if (shouldGroup) {\n console.groupEnd();\n }\n}\n\nfunction itemCaption(item: ILogItem): string {\n if (item.values.t === \"network\") {\n return `${item.values.method} ${item.values.url}`;\n } else if (item.values.l && typeof item.values.id !== \"undefined\") {\n return `${item.values.l} ${item.values.id}`;\n } else if (item.values.l && typeof item.values.status !== \"undefined\") {\n return `${item.values.l} (${item.values.status})`;\n } else if (item.values.l && typeof item.values.type !== \"undefined\") {\n return `${item.values.l} (${item.values.type})`;\n } else if (item.values.l && item.error) {\n return `${item.values.l} failed`;\n } else if (typeof item.values.ref !== \"undefined\") {\n return `ref ${item.values.ref}`;\n } else {\n return item.values.l || item.values.type;\n }\n}\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {LogLevel, LogFilter} from \"./LogFilter\";\nimport type {Logger} from \"./Logger\";\nimport type {ISerializedItem, ILogItem, LogItemValues, LabelOrValues, FilterCreator, LogCallback} from \"./types\";\n\nexport class LogItem implements ILogItem {\n public readonly start: number;\n public logLevel: LogLevel;\n public error?: Error;\n public end?: number;\n private _values: LogItemValues;\n protected _logger: Logger;\n private _filterCreator?: FilterCreator;\n private _children?: Array;\n private _discard: boolean = false;\n\n constructor(labelOrValues: LabelOrValues, logLevel: LogLevel, logger: Logger, filterCreator?: FilterCreator) {\n this._logger = logger;\n this.start = logger._now();\n // (l)abel\n this._values = typeof labelOrValues === \"string\" ? {l: labelOrValues} : labelOrValues;\n this.logLevel = logLevel;\n this._filterCreator = filterCreator;\n }\n\n /**\n * Prevents this log item from being present in the exported output.\n */\n discard(): void {\n this._discard = true;\n }\n\n /** start a new root log item and run it detached mode, see Logger.runDetached */\n runDetached(labelOrValues: LabelOrValues, callback: LogCallback, logLevel?: LogLevel, filterCreator?: FilterCreator): ILogItem {\n return this._logger.runDetached(labelOrValues, callback, logLevel, filterCreator);\n }\n\n /** start a new detached root log item and log a reference to it from this item */\n wrapDetached(labelOrValues: LabelOrValues, callback: LogCallback, logLevel?: LogLevel, filterCreator?: FilterCreator): void {\n this.refDetached(this.runDetached(labelOrValues, callback, logLevel, filterCreator));\n }\n\n /** logs a reference to a different log item, usually obtained from runDetached.\n This is useful if the referenced operation can't be awaited. */\n refDetached(logItem: ILogItem, logLevel?: LogLevel): void {\n logItem.ensureRefId();\n this.log({ref: logItem.values.refId}, logLevel);\n }\n\n ensureRefId(): void {\n if (!this._values.refId) {\n this.set(\"refId\", this._logger._createRefId());\n }\n }\n\n /**\n * Creates a new child item and runs it in `callback`.\n */\n wrap(labelOrValues: LabelOrValues, callback: LogCallback, logLevel?: LogLevel, filterCreator?: FilterCreator): T {\n const item = this.child(labelOrValues, logLevel, filterCreator);\n return item.run(callback);\n }\n\n get duration(): number | undefined {\n if (this.end) {\n return this.end - this.start;\n } else {\n return undefined;\n }\n }\n\n durationWithoutType(type: string): number | undefined {\n const durationOfType = this.durationOfType(type);\n if (this.duration && durationOfType) {\n return this.duration - durationOfType;\n }\n }\n\n durationOfType(type: string): number | undefined {\n if (this._values.t === type) {\n return this.duration;\n } else if (this._children) {\n return this._children.reduce((sum, c) => {\n const duration = c.durationOfType(type);\n return sum + (duration ?? 0);\n }, 0);\n } else {\n return 0;\n }\n }\n \n /**\n * Creates a new child item that finishes immediately\n * Finished items should not be modified anymore as they can be serialized\n * at any stage, but using `set` on the return value in a synchronous way should still be safe.\n */\n log(labelOrValues: LabelOrValues, logLevel?: LogLevel): ILogItem {\n const item = this.child(labelOrValues, logLevel);\n item.end = item.start;\n return item;\n }\n\n set(key: string | object, value?: unknown): ILogItem {\n if(typeof key === \"object\") {\n const values = key;\n Object.assign(this._values, values);\n } else {\n this._values[key] = value;\n }\n return this;\n }\n\n serialize(filter: LogFilter, parentStartTime: number | undefined, forced: boolean): ISerializedItem | undefined {\n if (this._discard) {\n return;\n }\n if (this._filterCreator) {\n try {\n filter = this._filterCreator(new LogFilter(filter), this);\n } catch (err) {\n console.error(\"Error creating log filter\", err);\n }\n }\n let children: Array | null = null;\n if (this._children) {\n children = this._children.reduce((array: Array, c) => {\n const s = c.serialize(filter, this.start, false);\n if (s) {\n if (array === null) {\n array = [];\n }\n array.push(s);\n }\n return array;\n }, null);\n }\n if (filter && !filter.filter(this, children)) {\n return;\n }\n // in (v)alues, (l)abel and (t)ype are also reserved.\n const item: ISerializedItem = {\n // (s)tart\n s: typeof parentStartTime === \"number\" ? this.start - parentStartTime : this.start,\n // (d)uration\n d: this.duration,\n // (v)alues\n v: this._values,\n // (l)evel\n l: this.logLevel\n };\n if (this.error) {\n // (e)rror\n item.e = {\n stack: this.error.stack,\n name: this.error.name,\n message: this.error.message.split(\"\\n\")[0]\n };\n }\n if (forced) {\n item.f = true; //(f)orced\n }\n if (children) {\n // (c)hildren\n item.c = children;\n }\n return item;\n }\n\n /**\n * You probably want to use `wrap` instead of this.\n * \n * Runs a callback passing this log item,\n * recording the timing and any error.\n *\n * callback can return a Promise.\n *\n * Should only be called once.\n * \n * @param {Function} callback [description]\n * @return {[type]} [description]\n */\n run(callback: LogCallback): T {\n if (this.end !== undefined) {\n console.trace(\"log item is finished, additional logs will likely not be recorded\");\n }\n try {\n const result = callback(this);\n if (result instanceof Promise) {\n return result.then(promiseResult => {\n this.finish();\n return promiseResult;\n }, err => {\n throw this.catch(err);\n }) as unknown as T;\n } else {\n this.finish();\n return result;\n }\n } catch (err) {\n throw this.catch(err);\n }\n }\n\n /**\n * finished the item, recording the end time. After finishing, an item can't be modified anymore as it will be persisted.\n * @internal shouldn't typically be called by hand. allows to force finish if a promise is still running when closing the app\n */\n finish(): void {\n if (this.end === undefined) {\n if (this._children) {\n for(const c of this._children) {\n c.finish();\n }\n }\n this.end = this._logger._now();\n }\n }\n\n /** @internal */\n forceFinish(): void {\n this.finish();\n }\n\n // expose log level without needing import everywhere\n get level(): typeof LogLevel {\n return LogLevel;\n }\n\n catch(err: Error): Error {\n this.error = err;\n this.logLevel = LogLevel.Error;\n this.finish();\n return err;\n }\n\n child(labelOrValues: LabelOrValues, logLevel?: LogLevel, filterCreator?: FilterCreator): LogItem {\n if (this.end) {\n console.trace(`log item ${this.values.l} finished, additional log ${JSON.stringify(labelOrValues)} will likely not be recorded`);\n }\n if (!logLevel) {\n logLevel = this.logLevel || LogLevel.Info;\n }\n const item = new LogItem(labelOrValues, logLevel, this._logger, filterCreator);\n if (!this._children) {\n this._children = [];\n }\n this._children.push(item);\n return item;\n }\n\n get logger(): Logger {\n return this._logger;\n }\n\n get values(): LogItemValues {\n return this._values;\n }\n\n get children(): Array | undefined {\n return this._children;\n }\n}\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {LogItem} from \"./LogItem\";\nimport {LogLevel, LogFilter} from \"./LogFilter\";\nimport type {ILogger, ILogReporter, FilterCreator, LabelOrValues, LogCallback, ILogItem, ISerializedItem} from \"./types\";\nimport type {Platform} from \"../platform/web/Platform.js\";\n\nexport class Logger implements ILogger {\n protected _openItems: Set = new Set();\n protected _platform: Platform;\n protected _serializedTransformer: (item: ISerializedItem) => ISerializedItem;\n public readonly reporters: ILogReporter[] = [];\n\n constructor({platform}) {\n this._platform = platform;\n }\n\n log(labelOrValues: LabelOrValues, logLevel: LogLevel = LogLevel.Info): ILogItem {\n const item = new LogItem(labelOrValues, logLevel, this);\n item.end = item.start;\n this._persistItem(item, undefined, false);\n return item;\n }\n\n /** Prefer `run()` or `log()` above this method; only use it if you have a long-running operation\n * *without* a single call stack that should be logged into one sub-tree.\n * You need to call `finish()` on the returned item or it will stay open until the app unloads. */\n child(labelOrValues: LabelOrValues, logLevel: LogLevel = LogLevel.Info, filterCreator?: FilterCreator): ILogItem {\n const item = new DeferredPersistRootLogItem(labelOrValues, logLevel, this, filterCreator);\n this._openItems.add(item);\n return item;\n }\n\n /** if item is a log item, wrap the callback in a child of it, otherwise start a new root log item. */\n wrapOrRun(item: ILogItem | undefined, labelOrValues: LabelOrValues, callback: LogCallback, logLevel?: LogLevel, filterCreator?: FilterCreator): T {\n if (item) {\n return item.wrap(labelOrValues, callback, logLevel, filterCreator);\n } else {\n return this.run(labelOrValues, callback, logLevel, filterCreator);\n }\n }\n\n /** run a callback in detached mode,\n where the (async) result or errors are not propagated but still logged.\n Useful to pair with LogItem.refDetached.\n\n @return {ILogItem} the log item added, useful to pass to LogItem.refDetached */\n runDetached(labelOrValues: LabelOrValues, callback: LogCallback, logLevel?: LogLevel, filterCreator?: FilterCreator): ILogItem {\n if (!logLevel) {\n logLevel = LogLevel.Info;\n }\n const item = new LogItem(labelOrValues, logLevel, this);\n this._run(item, callback, logLevel, false /* don't throw, nobody is awaiting */, filterCreator);\n return item;\n }\n\n /** run a callback wrapped in a log operation.\n Errors and duration are transparently logged, also for async operations.\n Whatever the callback returns is returned here. */\n run(labelOrValues: LabelOrValues, callback: LogCallback, logLevel?: LogLevel, filterCreator?: FilterCreator): T {\n if (logLevel === undefined) {\n logLevel = LogLevel.Info;\n }\n const item = new LogItem(labelOrValues, logLevel, this);\n return this._run(item, callback, logLevel, true, filterCreator);\n }\n\n private _run(item: LogItem, callback: LogCallback, logLevel: LogLevel, wantResult: true, filterCreator?: FilterCreator): T;\n // we don't return if we don't throw, as we don't have anything to return when an error is caught but swallowed for the fire-and-forget case.\n private _run(item: LogItem, callback: LogCallback, logLevel: LogLevel, wantResult: false, filterCreator?: FilterCreator): void;\n private _run(item: LogItem, callback: LogCallback, logLevel: LogLevel, wantResult: boolean, filterCreator?: FilterCreator): T | void {\n this._openItems.add(item);\n\n const finishItem = () => {\n let filter = new LogFilter();\n if (filterCreator) {\n try {\n filter = filterCreator(filter, item);\n } catch (err) {\n console.error(\"Error while creating log filter\", err);\n }\n } else {\n // if not filter is specified, filter out anything lower than the initial log level\n filter = filter.minLevel(logLevel);\n }\n try {\n this._persistItem(item, filter, false);\n } catch (err) {\n console.error(\"Could not persist log item\", err);\n }\n this._openItems.delete(item);\n };\n\n try {\n let result = item.run(callback);\n if (result instanceof Promise) {\n result = result.then(promiseResult => {\n finishItem();\n return promiseResult;\n }, err => {\n finishItem();\n if (wantResult) {\n throw err;\n }\n }) as unknown as T;\n if (wantResult) {\n return result;\n }\n } else {\n finishItem();\n if(wantResult) {\n return result;\n }\n }\n } catch (err) {\n finishItem();\n if (wantResult) {\n throw err;\n }\n }\n }\n\n addReporter(reporter: ILogReporter): void {\n reporter.setLogger(this);\n this.reporters.push(reporter);\n }\n\n getOpenRootItems(): Iterable {\n return this._openItems;\n }\n\n forceFinish() {\n for (const openItem of this._openItems) {\n openItem.forceFinish();\n try {\n // for now, serialize with an all-permitting filter\n // as the createFilter function would get a distorted image anyway\n // about the duration of the item, etc ...\n // true for force finish\n this._persistItem(openItem, new LogFilter(), true);\n } catch (err) {\n console.error(\"Could not serialize log item\", err);\n }\n }\n this._openItems.clear();\n }\n\n /** @internal */\n _removeItemFromOpenList(item: LogItem): void {\n this._openItems.delete(item);\n }\n\n /** @internal */\n _persistItem(item: LogItem, filter?: LogFilter, forced?: boolean): void {\n for (var i = 0; i < this.reporters.length; i += 1) {\n this.reporters[i].reportItem(item, filter, forced);\n }\n }\n\n // expose log level without needing \n get level(): typeof LogLevel {\n return LogLevel;\n }\n\n /** @internal */\n _now(): number {\n return this._platform.clock.now();\n }\n\n /** @internal */\n _createRefId(): number {\n return Math.round(this._platform.random() * Number.MAX_SAFE_INTEGER);\n }\n}\n\nclass DeferredPersistRootLogItem extends LogItem {\n finish() {\n super.finish();\n (this._logger as Logger)._persistItem(this, undefined, false);\n (this._logger as Logger)._removeItemFromOpenList(this);\n }\n\n forceFinish() {\n super.finish();\n /// no need to persist when force-finishing as _finishOpenItems above will do it\n }\n}\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2021 Daniel Fedorin \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n// DOM helper functions\n\nimport {ViewNode} from \"./types\";\n\nexport type ClassNames = { [className: string]: boolean | ((value: T) => boolean) }\nexport type BasicAttributes = { [attribute: string]: ClassNames | boolean | string }\nexport type Child = string | Text | ViewNode;\n\nexport function isChildren(children: object | Child | Child[]): children is Child | Child[] {\n // children should be an not-object (that's the attributes), or a domnode, or an array\n return typeof children !== \"object\" || \"nodeType\" in children || Array.isArray(children);\n}\n\nexport function classNames(obj: ClassNames, value: T): string {\n return Object.entries(obj).reduce((cn, [name, enabled]) => {\n if (typeof enabled === \"function\") {\n enabled = enabled(value);\n }\n if (enabled) {\n return cn + (cn.length ? \" \" : \"\") + name;\n } else {\n return cn;\n }\n }, \"\");\n}\n\nexport function setAttribute(el: Element, name: string, value: string | boolean): void {\n if (name === \"className\") {\n name = \"class\";\n }\n if (value === false) {\n el.removeAttribute(name);\n } else {\n if (value === true) {\n value = name;\n }\n el.setAttribute(name, value);\n }\n}\n\nexport function el(elementName: string, attributes?: BasicAttributes | Child | Child[], children?: Child | Child[]): Element {\n return elNS(HTML_NS, elementName, attributes, children);\n}\n\nexport function elNS(ns: string, elementName: string, attributes?: BasicAttributes | Child | Child[], children?: Child | Child[]): Element {\n if (attributes && isChildren(attributes)) {\n children = attributes;\n attributes = undefined;\n }\n\n const e = document.createElementNS(ns, elementName);\n\n if (attributes) {\n for (let [name, value] of Object.entries(attributes)) {\n if (typeof value === \"object\") {\n // Only className should ever be an object; be careful\n // here anyway and ignore object-valued non-className attributes.\n value = (value !== null && name === \"className\") ? classNames(value, undefined) : false;\n }\n setAttribute(e, name, value);\n }\n }\n\n if (children) {\n if (!Array.isArray(children)) {\n children = [children];\n }\n for (let c of children) {\n if (typeof c === \"string\") {\n c = text(c);\n }\n e.appendChild(c);\n }\n }\n return e;\n}\n\nexport function text(str: string): Text {\n return document.createTextNode(str);\n}\n\nexport const HTML_NS: string = \"http://www.w3.org/1999/xhtml\";\nexport const SVG_NS: string = \"http://www.w3.org/2000/svg\";\n\nexport const TAG_NAMES = {\n [HTML_NS]: [\n \"br\", \"a\", \"ol\", \"ul\", \"li\", \"div\", \"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\",\n \"p\", \"strong\", \"em\", \"span\", \"img\", \"section\", \"header\", \"main\", \"footer\", \"dialog\",\n \"article\", \"aside\", \"del\", \"blockquote\", \"details\", \"summary\",\n \"table\", \"thead\", \"tbody\", \"tr\", \"th\", \"td\", \"hr\",\n \"pre\", \"code\", \"button\", \"time\", \"input\", \"textarea\", \"select\", \"option\", \"optgroup\", \"label\", \"form\",\n \"progress\", \"output\", \"video\", \"style\"],\n [SVG_NS]: [\"svg\", \"g\", \"path\", \"circle\", \"ellipse\", \"rect\", \"use\"]\n} as const;\n\nexport const tag: { [tagName in typeof TAG_NAMES[string][number]]: (attributes?: BasicAttributes | Child | Child[], children?: Child | Child[]) => Element } = {} as any;\n\nfor (const [ns, tags] of Object.entries(TAG_NAMES)) {\n for (const tagName of tags) {\n tag[tagName] = function(attributes, children) {\n return elNS(ns, tagName, attributes, children);\n }\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {IView, IMountArgs, ViewNode} from \"./types\";\nimport {tag} from \"./html\";\n\nexport function mountView(view: IView, mountArgs?: IMountArgs): ViewNode {\n let node;\n try {\n node = view.mount(mountArgs);\n } catch (err) {\n // Log it to the console so it's easy to reference\n console.error(err);\n // Then render our error boundary to the DOM\n node = errorToDOM(err);\n }\n return node;\n}\n\nexport function errorToDOM(error: Error): Element {\n const stack = new Error().stack;\n let callee: string | null = null;\n if (stack) {\n callee = stack.split(\"\\n\")[1];\n }\n return tag.div([\n tag.h2(\"Something went wrong…\"),\n tag.h3(error.message),\n tag.p(`This occurred while running ${callee}.`),\n tag.pre(error.stack),\n ]);\n}\n\nexport function insertAt(parentNode: Element, idx: number, childNode: Node): void {\n const isLast = idx === parentNode.childElementCount;\n if (isLast) {\n parentNode.appendChild(childNode);\n } else {\n const nextDomNode = parentNode.children[idx];\n parentNode.insertBefore(childNode, nextDomNode);\n }\n}\n\nexport function removeChildren(parentNode: Element): void {\n parentNode.innerHTML = '';\n}\n\nexport function disableTargetCallback(callback: (evt: Event) => Promise): (evt: Event) => Promise {\n return async (evt: Event) => {\n (evt.target as HTMLElement)?.setAttribute(\"disabled\", \"disabled\");\n await callback(evt);\n (evt.target as HTMLElement)?.removeAttribute(\"disabled\");\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {el} from \"./html\";\nimport {mountView, insertAt} from \"./utils\";\nimport {SubscriptionHandle} from \"../../../../observable/BaseObservable\";\nimport {BaseObservableList as ObservableList, IListObserver} from \"../../../../observable/list/BaseObservableList\";\nimport {IView, IMountArgs} from \"./types\";\n\nexport interface IOptions {\n list: ObservableList,\n onItemClick?: (childView: V, evt: UIEvent) => void,\n className?: string,\n tagName?: string,\n parentProvidesUpdates?: boolean\n}\n\nexport class ListView implements IView, IListObserver {\n\n private _onItemClick?: (childView: V, evt: UIEvent) => void;\n private _className?: string;\n private _tagName: string;\n private _root?: Element;\n protected _subscription?: SubscriptionHandle;\n protected _childCreator: (value: T) => V;\n protected _mountArgs: IMountArgs;\n protected _list: ObservableList;\n protected _childInstances?: V[];\n\n constructor(\n {list, onItemClick, className, tagName = \"ul\", parentProvidesUpdates = true}: IOptions, \n childCreator: (value: T) => V\n ) {\n this._onItemClick = onItemClick;\n this._list = list;\n this._className = className;\n this._tagName = tagName;\n this._root = undefined;\n this._subscription = undefined;\n this._childCreator = childCreator;\n this._childInstances = undefined;\n this._mountArgs = {parentProvidesUpdates};\n }\n\n root(): Element | undefined {\n // won't be undefined when called between mount and unmount\n return this._root;\n }\n\n update(attributes: IOptions) {\n if (attributes.list) {\n if (this._subscription) {\n this._unloadList();\n while (this._root!.lastChild) {\n this._root!.lastChild.remove();\n }\n }\n this._list = attributes.list;\n this.loadList();\n }\n }\n\n mount(): Element {\n const attr: {[name: string]: any} = {};\n if (this._className) {\n attr.className = this._className;\n }\n const root = this._root = el(this._tagName, attr);\n this.loadList();\n if (this._onItemClick) {\n root.addEventListener(\"click\", this);\n }\n return root;\n }\n\n handleEvent(evt: Event) {\n if (evt.type === \"click\") {\n this._handleClick(evt as UIEvent);\n }\n }\n\n unmount(): void {\n if (this._list) {\n this._unloadList();\n }\n }\n\n private _handleClick(event: UIEvent) {\n if (event.target === this._root || !this._onItemClick) {\n return;\n }\n let childNode = event.target as Element;\n while (childNode.parentNode !== this._root) {\n childNode = childNode.parentNode as Element;\n }\n const index = Array.prototype.indexOf.call(this._root!.childNodes, childNode);\n const childView = this._childInstances![index];\n if (childView) {\n this._onItemClick(childView, event);\n }\n }\n\n private _unloadList() {\n this._subscription = this._subscription!();\n for (let child of this._childInstances!) {\n child.unmount();\n }\n this._childInstances = undefined;\n }\n\n protected loadList() {\n if (!this._list) {\n return;\n }\n this._subscription = this._list.subscribe(this);\n this._childInstances = [];\n const fragment = document.createDocumentFragment();\n for (let item of this._list) {\n const child = this._childCreator(item);\n this._childInstances!.push(child);\n fragment.appendChild(mountView(child, this._mountArgs));\n }\n this._root!.appendChild(fragment);\n }\n\n onReset() {\n for (const child of this._childInstances!) {\n child.root()!.remove();\n child.unmount();\n }\n this._childInstances!.length = 0;\n }\n\n onAdd(idx: number, value: T) {\n this.addChild(idx, value);\n }\n\n onRemove(idx: number, value: T) {\n this.removeChild(idx);\n }\n\n onMove(fromIdx: number, toIdx: number, value: T) {\n this.moveChild(fromIdx, toIdx);\n }\n\n onUpdate(i: number, value: T, params: any) {\n this.updateChild(i, value, params);\n }\n\n protected addChild(childIdx: number, value: T) {\n const child = this._childCreator(value);\n this._childInstances!.splice(childIdx, 0, child);\n insertAt(this._root!, childIdx, mountView(child, this._mountArgs));\n }\n\n protected removeChild(childIdx: number) {\n const [child] = this._childInstances!.splice(childIdx, 1);\n child.root()!.remove();\n child.unmount();\n }\n\n protected moveChild(fromChildIdx: number, toChildIdx: number) {\n const [child] = this._childInstances!.splice(fromChildIdx, 1);\n this._childInstances!.splice(toChildIdx, 0, child);\n child.root()!.remove();\n insertAt(this._root!, toChildIdx, child.root()! as Element);\n }\n\n protected updateChild(childIdx: number, value: T, params: any) {\n if (this._childInstances) {\n const instance = this._childInstances![childIdx];\n instance && instance.update(value, params);\n }\n }\n\n // TODO: is this the list or view index? \n protected recreateItem(index: number, value: T) {\n if (this._childInstances) {\n const child = this._childCreator(value);\n if (!child) {\n this.onRemove(index, value);\n } else {\n const [oldChild] = this._childInstances!.splice(index, 1, child);\n this._root!.replaceChild(child.mount(this._mountArgs), oldChild.root()!);\n oldChild.unmount();\n }\n }\n }\n\n public getChildInstanceByIndex(idx: number): V | undefined {\n return this._childInstances?.[idx];\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\nCopyright 2021 Daniel Fedorin \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {IMountArgs, ViewNode, IView} from \"./types\";\n\nexport interface IObservableValue {\n on?(event: \"change\", handler: (props?: string[]) => void): void;\n off?(event: \"change\", handler: (props?: string[]) => void): void;\n}\n\nexport abstract class BaseUpdateView implements IView {\n protected _value: T\n protected _boundUpdateFromValue: ((props?: string[]) => void) | null\n\n abstract mount(args?: IMountArgs): ViewNode;\n abstract root(): ViewNode | undefined;\n abstract update(...any);\n\n constructor(value :T) {\n this._value = value;\n // TODO: can avoid this if we adopt the handleEvent pattern in our EventListener\n this._boundUpdateFromValue = null;\n }\n\n subscribeOnMount(options?: IMountArgs): void {\n const parentProvidesUpdates = options && options.parentProvidesUpdates;\n if (!parentProvidesUpdates) {\n this._subscribe();\n }\n }\n\n unmount(): void {\n this._unsubscribe();\n }\n\n get value(): T {\n return this._value;\n }\n\n _updateFromValue(changedProps?: string[]) {\n this.update(this._value, changedProps);\n }\n\n _subscribe(): void {\n if (typeof this._value?.on === \"function\") {\n this._boundUpdateFromValue = this._updateFromValue.bind(this) as (props?: string[]) => void;\n this._value.on(\"change\", this._boundUpdateFromValue);\n }\n }\n\n _unsubscribe(): void {\n if (this._boundUpdateFromValue) {\n if (typeof this._value.off === \"function\") {\n this._value.off(\"change\", this._boundUpdateFromValue);\n }\n this._boundUpdateFromValue = null;\n }\n }\n}\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2021 Daniel Fedorin \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { setAttribute, text, isChildren, classNames, TAG_NAMES, HTML_NS, ClassNames, Child as NonBoundChild} from \"./html\";\nimport {mountView} from \"./utils\";\nimport {BaseUpdateView, IObservableValue} from \"./BaseUpdateView\";\nimport {IMountArgs, ViewNode, IView} from \"./types\";\n\nfunction objHasFns(obj: ClassNames): obj is { [className: string]: boolean } {\n for(const value of Object.values(obj)) {\n if (typeof value === \"function\") {\n return true;\n }\n }\n return false;\n}\n\nexport type RenderFn = (t: Builder, vm: T) => ViewNode;\ntype TextBinding = (T) => string | number | boolean | undefined | null;\ntype Child = NonBoundChild | TextBinding;\ntype Children = Child | Child[];\ntype EventHandler = ((event: Event) => void);\ntype AttributeStaticValue = string | boolean;\ntype AttributeBinding = (value: T) => AttributeStaticValue;\nexport type AttrValue = AttributeStaticValue | AttributeBinding | EventHandler | ClassNames;\nexport type Attributes = { [attribute: string]: AttrValue };\ntype ElementFn = (attributes?: Attributes | Children, children?: Children) => Element;\nexport type Builder = TemplateBuilder & { [tagName in typeof TAG_NAMES[string][number]]: ElementFn };\n\n/**\n Bindable template. Renders once, and allows bindings for given nodes. If you need\n to change the structure on a condition, use a subtemplate (if)\n\n supports\n - event handlers (attribute fn value with name that starts with on)\n - one way binding of attributes (other attribute fn value)\n - one way binding of text values (child fn value)\n - refs to get dom nodes\n - className binding returning object with className => enabled map\n - add subviews inside the template\n*/\n// TODO: should we rename this to BoundView or something? As opposed to StaticView ...\nexport abstract class TemplateView extends BaseUpdateView {\n private _eventListeners?: { node: Element, name: string, fn: EventHandler, useCapture: boolean }[] = undefined;\n private _bindings?: (() => void)[] = undefined;\n private _root?: ViewNode = undefined;\n // public because used by TemplateBuilder\n _subViews?: IView[] = undefined;\n\n _attach(): void {\n if (this._eventListeners) {\n for (let {node, name, fn, useCapture} of this._eventListeners) {\n node.addEventListener(name, fn, useCapture);\n }\n }\n }\n\n _detach(): void {\n if (this._eventListeners) {\n for (let {node, name, fn, useCapture} of this._eventListeners) {\n node.removeEventListener(name, fn, useCapture);\n }\n }\n }\n\n abstract render(t: Builder, value: T): ViewNode;\n\n mount(options?: IMountArgs): ViewNode {\n const builder = new TemplateBuilder(this) as Builder;\n try {\n this._root = this.render(builder, this._value);\n } finally {\n builder.close();\n }\n // takes care of update being called when needed\n this.subscribeOnMount(options);\n this._attach();\n return this._root!;\n }\n\n unmount(): void {\n this._detach();\n super.unmount();\n if (this._subViews) {\n for (const v of this._subViews) {\n v.unmount();\n }\n }\n }\n\n root(): ViewNode | undefined {\n return this._root;\n }\n\n update(value: T, props?: string[]): void {\n this._value = value;\n if (this._bindings) {\n for (const binding of this._bindings) {\n binding();\n }\n }\n }\n\n _addEventListener(node: Element, name: string, fn: (event: Event) => void, useCapture: boolean = false): void {\n if (!this._eventListeners) {\n this._eventListeners = [];\n }\n this._eventListeners.push({node, name, fn, useCapture});\n }\n\n _addBinding(bindingFn: () => void): void {\n if (!this._bindings) {\n this._bindings = [];\n }\n this._bindings.push(bindingFn);\n }\n\n addSubView(view: IView): void {\n if (!this._subViews) {\n this._subViews = [];\n }\n this._subViews.push(view);\n }\n\n removeSubView(view: IView): void {\n if (!this._subViews) { return; }\n const idx = this._subViews.indexOf(view);\n if (idx !== -1) {\n this._subViews.splice(idx, 1);\n }\n }\n\n updateSubViews(value: IObservableValue, props: string[]) {\n if (this._subViews) {\n for (const v of this._subViews) {\n v.update(value, props);\n }\n }\n }\n}\n\n// what is passed to render\nexport class TemplateBuilder {\n private _templateView: TemplateView;\n private _closed: boolean = false;\n\n constructor(templateView: TemplateView) {\n this._templateView = templateView;\n }\n\n close(): void {\n this._closed = true;\n }\n\n _addBinding(fn: () => void): void {\n if (this._closed) {\n console.trace(\"Adding a binding after render will likely cause memory leaks\");\n }\n this._templateView._addBinding(fn);\n }\n\n get _value(): T {\n return this._templateView.value;\n }\n\n addEventListener(node: Element, name: string, fn: (event: Event) => void, useCapture: boolean = false): void {\n this._templateView._addEventListener(node, name, fn, useCapture);\n }\n\n _addAttributeBinding(node: Element, name: string, fn: AttributeBinding): void {\n let prevValue: string | boolean | undefined = undefined;\n const binding = () => {\n const newValue = fn(this._value);\n if (prevValue !== newValue) {\n prevValue = newValue;\n setAttribute(node, name, newValue);\n }\n };\n this._addBinding(binding);\n binding();\n }\n\n _addClassNamesBinding(node: Element, obj: ClassNames): void {\n this._addAttributeBinding(node, \"className\", value => classNames(obj, value));\n }\n\n _addTextBinding(fn: (value: T) => ReturnType>): Text {\n const initialValue = fn(this._value)+\"\";\n const node = text(initialValue);\n let prevValue = initialValue;\n const binding = () => {\n const newValue = fn(this._value)+\"\";\n if (prevValue !== newValue) {\n prevValue = newValue;\n node.textContent = newValue;\n }\n };\n\n this._addBinding(binding);\n return node;\n }\n\n _isEventHandler(key: string, value: AttrValue): value is (event: Event) => void {\n // This isn't actually safe, but it's incorrect to feed event handlers to\n // non-on* attributes.\n return key.startsWith(\"on\") && key.length > 2 && typeof value === \"function\";\n }\n\n _setNodeAttributes(node: Element, attributes: Attributes): void {\n for(let [key, value] of Object.entries(attributes)) {\n // binding for className as object of className => enabled\n if (typeof value === \"object\") {\n if (key !== \"className\" || value === null) {\n // Ignore non-className objects.\n continue;\n }\n if (objHasFns(value)) {\n this._addClassNamesBinding(node, value);\n } else {\n setAttribute(node, key, classNames(value, this._value));\n }\n } else if (this._isEventHandler(key, value)) {\n const eventName = key.substr(2, 1).toLowerCase() + key.substr(3);\n const handler = value;\n this._templateView._addEventListener(node, eventName, handler);\n } else if (typeof value === \"function\") {\n this._addAttributeBinding(node, key, value);\n } else {\n setAttribute(node, key, value);\n }\n }\n }\n\n _setNodeChildren(node: Element, children: Children): void{\n if (!Array.isArray(children)) {\n children = [children];\n }\n for (let child of children) {\n if (typeof child === \"function\") {\n child = this._addTextBinding(child);\n } else if (typeof child === \"string\") {\n // not a DOM node, turn into text\n child = text(child);\n }\n node.appendChild(child);\n }\n }\n \n _addReplaceNodeBinding(fn: (value: T) => R, renderNode: (old: ViewNode | null) => ViewNode): ViewNode {\n let prevValue = fn(this._value);\n let node = renderNode(null);\n\n const binding = () => {\n const newValue = fn(this._value);\n if (prevValue !== newValue) {\n prevValue = newValue;\n const newNode = renderNode(node);\n if (node.parentNode) {\n node.parentNode.replaceChild(newNode, node);\n }\n node = newNode;\n }\n };\n this._addBinding(binding);\n return node;\n }\n\n el(name: string, attributes?: Attributes | Children, children?: Children): ViewNode {\n return this.elNS(HTML_NS, name, attributes, children);\n }\n\n elNS(ns: string, name: string, attributesOrChildren?: Attributes | Children, children?: Children): ViewNode {\n let attributes: Attributes | undefined;\n if (attributesOrChildren) {\n if (isChildren(attributesOrChildren)) {\n children = attributesOrChildren as Children;\n } else {\n attributes = attributesOrChildren as Attributes;\n }\n }\n\n const node = document.createElementNS(ns, name);\n \n if (attributes) {\n this._setNodeAttributes(node, attributes);\n }\n if (children) {\n this._setNodeChildren(node, children);\n }\n\n return node;\n }\n\n // this inserts a view, and is not a view factory for `if`, so returns the root element to insert in the template\n // you should not call t.view() and not use the result (e.g. attach the result to the template DOM tree).\n view(view: IView, mountOptions?: IMountArgs): ViewNode {\n this._templateView.addSubView(view);\n return mountView(view, mountOptions);\n }\n\n // map a value to a view, every time the value changes\n mapView(mapFn: (value: T) => R, viewCreator: (mapped: R) => IView | null): ViewNode {\n return this._addReplaceNodeBinding(mapFn, (prevNode) => {\n if (prevNode && prevNode.nodeType !== Node.COMMENT_NODE) {\n const subViews = this._templateView._subViews;\n if (subViews) {\n const viewIdx = subViews.findIndex(v => v.root() === prevNode);\n if (viewIdx !== -1) {\n const [view] = subViews.splice(viewIdx, 1);\n view.unmount();\n }\n }\n }\n const view = viewCreator(mapFn(this._value));\n if (view) {\n return this.view(view);\n } else {\n return document.createComment(\"node binding placeholder\");\n }\n });\n }\n\n // Special case of mapView for a TemplateView.\n // Always creates a TemplateView, if this is optional depending\n // on mappedValue, use `if` or `mapView`\n map(mapFn: (value: T) => R, renderFn: (mapped: R, t: Builder, vm: T) => ViewNode | undefined): ViewNode {\n return this.mapView(mapFn, mappedValue => {\n return new InlineTemplateView(this._value, (t, vm) => {\n const rootNode = renderFn(mappedValue, t, vm);\n if (!rootNode) {\n // TODO: this will confuse mapView which assumes that\n // a comment node means there is no view to clean up\n return document.createComment(\"map placeholder\");\n }\n return rootNode;\n });\n });\n }\n\n ifView(predicate: (value: T) => boolean, viewCreator: (value: T) => IView): ViewNode {\n return this.mapView(\n value => !!predicate(value),\n enabled => enabled ? viewCreator(this._value) : null\n );\n }\n\n // creates a conditional subtemplate\n // use mapView if you need to map to a different view class\n if(predicate: (value: T) => boolean, renderFn: (t: Builder, vm: T) => ViewNode) {\n return this.ifView(predicate, vm => new InlineTemplateView(vm, renderFn));\n }\n\n /** You probably are looking for something else, like map or mapView.\n This is an escape hatch that allows you to do manual DOM manipulations\n as a reaction to a binding change.\n This should only be used if the side-effect won't add any bindings,\n event handlers, ...\n You should not call the TemplateBuilder (e.g. `t.xxx()`) at all from the side effect,\n instead use tags from html.ts to help you construct any DOM you need. */\n mapSideEffect(mapFn: (value: T) => R, sideEffect: (newV: R, oldV: R | undefined, value: T) => void) {\n let prevValue = mapFn(this._value);\n const binding = () => {\n const newValue = mapFn(this._value);\n if (prevValue !== newValue) {\n sideEffect(newValue, prevValue, this._value);\n prevValue = newValue;\n }\n };\n this._addBinding(binding);\n sideEffect(prevValue, undefined, this._value);\n }\n}\n\n\nfor (const [ns, tags] of Object.entries(TAG_NAMES)) {\n for (const tag of tags) {\n TemplateBuilder.prototype[tag] = function(attributes, children) {\n return this.elNS(ns, tag, attributes, children);\n };\n }\n}\n\nexport class InlineTemplateView extends TemplateView {\n private _render: RenderFn;\n\n constructor(value: T, render: RenderFn) {\n super(value);\n this._render = render;\n }\n\n override render(t: Builder, value: T): ViewNode {\n return this._render(t, value);\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {tag, text, classNames, setAttribute} from \"./general/html\";\n/**\n * @param {Object} vm view model with {avatarUrl, avatarColorNumber, avatarTitle, avatarLetter}\n * @param {Number} size\n * @return {Element}\n */\nexport function renderStaticAvatar(vm, size, extraClasses = undefined) {\n const hasAvatar = !!vm.avatarUrl(size);\n let avatarClasses = classNames({\n avatar: true,\n [`size-${size}`]: true,\n [`usercolor${vm.avatarColorNumber}`]: !hasAvatar\n });\n if (extraClasses) {\n avatarClasses += ` ${extraClasses}`;\n }\n const avatarContent = hasAvatar ? renderImg(vm, size) : text(vm.avatarLetter);\n const avatar = tag.div({\n className: avatarClasses,\n title: vm.avatarTitle,\n \"data-testid\": \"avatar\",\n }, [avatarContent]);\n if (hasAvatar) {\n setAttribute(avatar, \"data-avatar-letter\", vm.avatarLetter);\n setAttribute(avatar, \"data-avatar-color\", vm.avatarColorNumber);\n }\n return avatar;\n}\n\nexport function renderImg(vm, size) {\n const sizeStr = size.toString();\n return tag.img({src: vm.avatarUrl(size), width: sizeStr, height: sizeStr, title: vm.avatarTitle});\n}\n\nfunction isAvatarEvent(e) {\n const element = e.target;\n const parent = element.parentElement;\n return element.tagName === \"IMG\" && parent.classList.contains(\"avatar\");\n}\n\nexport function handleAvatarError(e) {\n if (!isAvatarEvent(e)) { return; }\n const parent = e.target.parentElement;\n const avatarColorNumber = parent.getAttribute(\"data-avatar-color\");\n parent.classList.add(`usercolor${avatarColorNumber}`);\n const avatarLetter = parent.getAttribute(\"data-avatar-letter\");\n parent.textContent = avatarLetter;\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {BaseUpdateView} from \"./general/BaseUpdateView\";\nimport {renderStaticAvatar, renderImg} from \"./avatar\";\n\n/*\noptimization to not use a sub view when changing between img and text\nbecause there can be many many instances of this view\n*/\n\nexport class AvatarView extends BaseUpdateView {\n /**\n * @param {ViewModel} value view model with {avatarUrl, avatarColorNumber, avatarTitle, avatarLetter}\n * @param {Number} size\n */\n constructor(value, size) {\n super(value);\n this._root = null;\n this._avatarUrl = null;\n this._avatarTitle = null;\n this._avatarLetter = null;\n this._size = size;\n }\n\n _avatarUrlChanged() {\n if (this.value.avatarUrl(this._size) !== this._avatarUrl) {\n this._avatarUrl = this.value.avatarUrl(this._size);\n return true;\n }\n return false;\n }\n\n _avatarTitleChanged() {\n if (this.value.avatarTitle !== this._avatarTitle) {\n this._avatarTitle = this.value.avatarTitle;\n return true;\n }\n return false;\n }\n\n _avatarLetterChanged() {\n if (this.value.avatarLetter !== this._avatarLetter) {\n this._avatarLetter = this.value.avatarLetter;\n return true;\n }\n return false;\n }\n\n mount(options) {\n this._avatarUrlChanged();\n this._avatarLetterChanged();\n this._avatarTitleChanged();\n this._root = renderStaticAvatar(this.value, this._size);\n // takes care of update being called when needed\n this.subscribeOnMount(options);\n return this._root;\n }\n\n root() {\n return this._root;\n }\n\n update(vm) {\n // important to always call _...changed for every prop \n if (this._avatarUrlChanged()) {\n // avatarColorNumber won't change, it's based on room/user id\n const bgColorClass = `usercolor${vm.avatarColorNumber}`;\n if (vm.avatarUrl(this._size)) {\n this._root.replaceChild(renderImg(vm, this._size), this._root.firstChild);\n this._root.classList.remove(bgColorClass);\n } else {\n this._root.textContent = vm.avatarLetter;\n this._root.classList.add(bgColorClass);\n }\n }\n const hasAvatar = !!vm.avatarUrl(this._size);\n if (this._avatarTitleChanged() && hasAvatar) {\n const element = this._root.firstChild;\n if (element.tagName === \"IMG\") {\n element.setAttribute(\"title\", vm.avatarTitle);\n }\n }\n if (this._avatarLetterChanged() && !hasAvatar) {\n this._root.textContent = vm.avatarLetter;\n }\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nlet container;\n\nexport function spinner(t, extraClasses = undefined) {\n if (container === undefined) {\n container = document.querySelector(\".hydrogen\");\n }\n const classes = Object.assign({\"spinner\": true}, extraClasses);\n if (container?.classList.contains(\"legacy\")) {\n return t.div({className: classes}, [\n t.div(),\n t.div(),\n t.div(),\n t.div(),\n ]);\n } else {\n return t.svg({className: classes, viewBox:\"0 0 100 100\"}, \n t.circle({cx:\"50%\", cy:\"50%\", r:\"45%\", pathLength:\"100\"})\n );\n }\n}\n\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {TemplateView} from \"../../general/TemplateView\";\nimport {AvatarView} from \"../../AvatarView.js\";\nimport {spinner} from \"../../common.js\";\n\nexport class RoomTileView extends TemplateView {\n render(t, vm) {\n const classes = {\n \"active\": vm => vm.isOpen,\n \"hidden\": vm => vm.hidden\n };\n return t.li({\"className\": classes}, [\n t.a({href: vm.url}, [\n t.view(new AvatarView(vm, 32), {parentProvidesUpdates: true}),\n t.div({className: \"description\"}, [\n t.div({className: {\"name\": true, unread: vm => vm.isUnread}}, vm => vm.name),\n t.map(vm => vm.busy, busy => {\n if (busy) {\n return spinner(t);\n } else {\n return t.div({\n className: {\n badge: true,\n highlighted: vm => vm.isHighlighted,\n hidden: vm => !vm.badgeCount\n }\n }, vm => vm.badgeCount);\n }\n })\n ])\n ])\n ]);\n }\n\n update(value, props) {\n super.update(value);\n // update the AvatarView as we told it to not subscribe itself with parentProvidesUpdates\n this.updateSubViews(value, props);\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {TemplateView} from \"./TemplateView\";\n\nexport class Menu extends TemplateView {\n static option(label, callback) {\n return new MenuOption(label, callback);\n }\n\n constructor(options) {\n super();\n this._options = options;\n }\n\n render(t) {\n return t.ul({className: \"menu\", role: \"menu\"}, this._options.map(o => o.toDOM(t)));\n }\n}\n\nclass MenuOption {\n constructor(label, callback) {\n this.label = label;\n this.callback = callback;\n this.icon = null;\n this.destructive = false;\n }\n\n setIcon(className) {\n this.icon = className;\n return this;\n }\n\n setDestructive() {\n this.destructive = true;\n return this;\n }\n\n toDOM(t) {\n const className = {\n destructive: this.destructive,\n };\n if (this.icon) {\n className.icon = true;\n className[this.icon] = true;\n }\n return t.li({\n className,\n }, t.button({className:\"menu-item\", onClick: this.callback}, this.label));\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {tag} from \"./html\";\n\nexport class Popup {\n constructor(view, closeCallback = null) {\n this._view = view;\n this._target = null;\n this._arrangement = null;\n this._scroller = null;\n this._fakeRoot = null;\n this._trackingTemplateView = null;\n this._closeCallback = closeCallback;\n }\n\n _getPopupContainer() {\n const appContainer = this._target.closest(\".hydrogen\");\n let popupContainer = appContainer.querySelector(\".popupContainer\");\n if (!popupContainer) {\n popupContainer = tag.div({className: \"popupContainer\"});\n appContainer.appendChild(popupContainer);\n }\n return popupContainer;\n }\n\n trackInTemplateView(templateView) {\n this._trackingTemplateView = templateView;\n this._trackingTemplateView.addSubView(this);\n }\n\n showRelativeTo(target, verticalPadding = 0) {\n this._target = target;\n this._verticalPadding = verticalPadding;\n this._scroller = findScrollParent(this._target);\n this._view.mount();\n this._getPopupContainer().appendChild(this._popup);\n this._position();\n if (this._scroller) {\n document.body.addEventListener(\"scroll\", this, true);\n }\n setTimeout(() => {\n document.body.addEventListener(\"click\", this, false);\n }, 10);\n }\n\n get isOpen() {\n return !!this._view;\n }\n\n close() {\n if (this._view) {\n this._view.unmount();\n this._trackingTemplateView.removeSubView(this);\n if (this._scroller) {\n document.body.removeEventListener(\"scroll\", this, true);\n }\n document.body.removeEventListener(\"click\", this, false);\n this._popup.remove();\n this._view = null;\n if (this._closeCallback) {\n this._closeCallback();\n }\n }\n }\n\n get _popup() {\n return this._view.root();\n }\n\n handleEvent(evt) {\n if (evt.type === \"scroll\") {\n if(!this._position()) {\n this.close();\n }\n } else if (evt.type === \"click\") {\n this._onClick(evt);\n }\n }\n\n _onClick() {\n this.close();\n }\n\n _position() {\n const targetPosition = this._target.getBoundingClientRect();\n const popupWidth = this._popup.clientWidth;\n const popupHeight = this._popup.clientHeight;\n const viewport = (this._scroller ? this._scroller : document.documentElement).getBoundingClientRect();\n\n if (\n targetPosition.top > viewport.bottom ||\n targetPosition.left > viewport.right ||\n targetPosition.bottom < viewport.top ||\n targetPosition.right < viewport.left\n ) {\n return false;\n }\n if (viewport.bottom >= targetPosition.bottom + popupHeight) {\n // show below\n this._popup.style.top = `${targetPosition.bottom + this._verticalPadding}px`;\n } else if (viewport.top <= targetPosition.top - popupHeight) {\n // show top\n this._popup.style.top = `${targetPosition.top - popupHeight - this._verticalPadding}px`;\n } else {\n return false;\n }\n if (viewport.right >= targetPosition.right + popupWidth) {\n // show right\n this._popup.style.left = `${targetPosition.left}px`;\n } else if (viewport.left <= targetPosition.left - popupWidth) {\n // show left\n this._popup.style.left = `${targetPosition.right - popupWidth}px`;\n } else {\n return false;\n }\n return true;\n }\n\n /* fake IView api, so it can be tracked by a template view as a subview */\n root() {\n return this._fakeRoot;\n }\n\n mount() {\n this._fakeRoot = document.createComment(\"popup\");\n return this._fakeRoot;\n }\n\n unmount() {\n this.close();\n }\n\n update() {}\n}\n\nfunction findScrollParent(el) {\n let parent = el;\n do {\n parent = parent.parentElement;\n if (parent.scrollHeight > parent.clientHeight) {\n // double check that overflow would allow a scrollbar\n // because some elements, like a button with negative margin to increate the click target\n // can cause the scrollHeight to be larger than the clientHeight in the parent\n // see button.link class\n const style = window.getComputedStyle(parent);\n const overflowY = style.getPropertyValue(\"overflow-y\");\n if (overflowY === \"auto\" || overflowY === \"scroll\") {\n return parent;\n }\n }\n } while (parent !== document.body);\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {ListView} from \"../../general/ListView\";\nimport {TemplateView} from \"../../general/TemplateView\";\nimport {RoomTileView} from \"./RoomTileView.js\";\nimport {Menu} from \"../../general/Menu.js\";\nimport {Popup} from \"../../general/Popup.js\";\n\nclass FilterField extends TemplateView {\n render(t, options) {\n const clear = () => {\n filterInput.value = \"\";\n filterInput.blur();\n clearButton.blur();\n options.clear();\n };\n const filterInput = t.input({\n type: \"text\",\n placeholder: options?.label,\n \"aria-label\": options?.label,\n autocomplete: options?.autocomplete,\n enterkeyhint: 'search',\n name: options?.name,\n onInput: event => options.set(event.target.value),\n onKeydown: event => {\n if (event.key === \"Escape\" || event.key === \"Esc\") {\n clear();\n }\n },\n onFocus: () => filterInput.select()\n });\n const clearButton = t.button({\n onClick: clear,\n title: options.i18n`Clear`,\n \"aria-label\": options.i18n`Clear`\n });\n return t.div({className: \"FilterField\"}, [filterInput, clearButton]);\n }\n}\n\nexport class LeftPanelView extends TemplateView {\n constructor(vm) {\n super(vm);\n this._createMenuPopup = null;\n }\n\n render(t, vm) {\n const gridButtonLabel = vm => {\n return vm.gridEnabled ?\n vm.i18n`Show single room` :\n vm.i18n`Enable grid layout`;\n };\n const roomList = t.view(new ListView(\n {\n className: \"RoomList\",\n list: vm.tileViewModels,\n },\n tileVM => new RoomTileView(tileVM)\n ));\n const utilitiesRow = t.div({className: \"utilities\"}, [\n t.a({className: \"button-utility close-session\", href: vm.closeUrl, \"aria-label\": vm.i18n`Back to account list`, title: vm.i18n`Back to account list`}),\n t.view(new FilterField({\n i18n: vm.i18n,\n label: vm.i18n`Filter rooms…`,\n name: \"room-filter\",\n autocomplete: true,\n set: query => {\n // scroll up if we just started filtering\n if (vm.setFilter(query)) {\n roomList.scrollTop = 0;\n }\n },\n clear: () => vm.clearFilter()\n })),\n t.button({\n onClick: () => vm.toggleGrid(),\n className: {\n \"button-utility\": true,\n grid: true,\n on: vm => vm.gridEnabled\n },\n title: gridButtonLabel,\n \"aria-label\": gridButtonLabel\n }),\n t.a({className: \"button-utility settings\", href: vm.settingsUrl, \"aria-label\": vm.i18n`Settings`, title: vm.i18n`Settings`}),\n t.button({\n className: \"button-utility create\",\n \"aria-label\": vm.i18n`Create room`,\n onClick: evt => this._toggleCreateMenu(evt)\n }),\n ]);\n\n return t.div({className: \"LeftPanel\"}, [\n utilitiesRow,\n roomList\n ]);\n }\n\n _toggleCreateMenu(evt) {\n if (this._createMenuPopup && this._createMenuPopup.isOpen) {\n this._createMenuPopup.close();\n } else {\n const vm = this.value;\n const options = [];\n options.push(Menu.option(vm.i18n`Create Room`, () => vm.showCreateRoomView()));\n options.push(Menu.option(vm.i18n`Join Room`, () => vm.showJoinRoomView()));\n this._createMenuPopup = new Popup(new Menu(options));\n this._createMenuPopup.trackInTemplateView(this);\n this._createMenuPopup.showRelativeTo(evt.target, 10);\n }\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {ListView} from \"../../general/ListView\";\nimport {TemplateView, Builder} from \"../../general/TemplateView\";\nimport {IObservableValue} from \"../../general/BaseUpdateView\";\nimport {BaseObservableList as ObservableList} from \"../../../../../observable/list/BaseObservableList\";\nimport type {IView} from \"../../general/types\";\nimport type {ITile} from \"../../../../../domain/session/room/timeline/tiles/ITile\";\n\nexport interface TileView extends IView {\n readonly value: ITile;\n onClick(event: UIEvent);\n} \nexport type TileViewConstructor = new (\n tile: ITile,\n viewClassForTile: ViewClassForEntryFn,\n renderFlags?: { reply?: boolean, interactive?: boolean }\n) => TileView;\nexport type ViewClassForEntryFn = (tile: ITile) => TileViewConstructor;\n\n//import {TimelineViewModel} from \"../../../../../domain/session/room/timeline/TimelineViewModel.js\";\nexport interface TimelineViewModel extends IObservableValue {\n showJumpDown: boolean;\n tiles: ObservableList;\n setVisibleTileRange(start?: ITile, end?: ITile);\n}\n\nfunction bottom(node: HTMLElement): number {\n return node.offsetTop + node.clientHeight;\n}\n\nfunction findFirstNodeIndexAtOrBelow(tiles: HTMLElement, top: number, startIndex: number = (tiles.children.length - 1)): number {\n for (var i = startIndex; i >= 0; i--) {\n const node = tiles.children[i] as HTMLElement;\n if (node.offsetTop < top) {\n return i;\n }\n }\n // return first item if nothing matched before\n return 0;\n}\n\nexport class TimelineView extends TemplateView {\n\n private anchoredNode?: HTMLElement;\n private anchoredBottom: number = 0;\n private stickToBottom: boolean = true;\n private tilesView?: TilesListView;\n private resizeObserver?: ResizeObserver;\n\n constructor(vm: TimelineViewModel, private readonly viewClassForTile: ViewClassForEntryFn) {\n super(vm);\n }\n\n render(t: Builder, vm: TimelineViewModel) {\n // assume this view will be mounted in the parent DOM straight away\n requestAnimationFrame(() => {\n // do initial scroll positioning\n this.restoreScrollPosition();\n });\n this.tilesView = new TilesListView(vm.tiles, () => this.restoreScrollPosition(), this.viewClassForTile);\n const root = t.div({className: \"Timeline\"}, [\n t.div({\n className: \"Timeline_scroller bottom-aligned-scroll\",\n onScroll: () => this.onScroll()\n }, t.view(this.tilesView)),\n t.button({\n className: {\n \"Timeline_jumpDown\": true,\n hidden: vm => !vm.showJumpDown\n },\n title: \"Jump down\",\n onClick: () => this.jumpDown()\n })\n ]);\n\n if (typeof ResizeObserver === \"function\") {\n this.resizeObserver = new ResizeObserver(() => {\n this.restoreScrollPosition();\n });\n this.resizeObserver.observe(root);\n }\n\n return root;\n }\n\n private get scrollNode(): HTMLElement {\n return (this.root()! as HTMLElement).firstElementChild! as HTMLElement;\n }\n\n private get tilesNode(): HTMLElement {\n return this.tilesView!.root()! as HTMLElement;\n }\n\n private jumpDown() {\n const {scrollNode} = this;\n this.stickToBottom = true;\n scrollNode.scrollTop = scrollNode.scrollHeight;\n }\n\n public unmount() {\n super.unmount();\n if (this.resizeObserver) {\n this.resizeObserver.unobserve(this.root()! as Element);\n this.resizeObserver = undefined;\n }\n }\n\n private restoreScrollPosition() {\n const {scrollNode, tilesNode} = this;\n\n const missingTilesHeight = scrollNode.clientHeight - tilesNode.clientHeight;\n if (missingTilesHeight > 0) {\n tilesNode.style.setProperty(\"margin-top\", `${missingTilesHeight}px`);\n // we don't have enough tiles to fill the viewport, so set all as visible\n const len = this.value.tiles.length;\n this.updateVisibleRange(0, len - 1);\n } else {\n tilesNode.style.removeProperty(\"margin-top\");\n if (this.stickToBottom) {\n scrollNode.scrollTop = scrollNode.scrollHeight;\n } else if (this.anchoredNode) {\n const newAnchoredBottom = bottom(this.anchoredNode!);\n if (newAnchoredBottom !== this.anchoredBottom) {\n const bottomDiff = newAnchoredBottom - this.anchoredBottom;\n // scrollBy tends to create less scroll jumps than reassigning scrollTop as it does\n // not depend on reading scrollTop, which might be out of date as some platforms\n // run scrolling off the main thread.\n if (typeof scrollNode.scrollBy === \"function\") {\n scrollNode.scrollBy(0, bottomDiff);\n } else {\n scrollNode.scrollTop = scrollNode.scrollTop + bottomDiff;\n }\n this.anchoredBottom = newAnchoredBottom;\n }\n }\n // TODO: should we be updating the visible range here as well as the range might have changed even though\n // we restored the bottom tile\n }\n }\n\n private onScroll(): void {\n const {scrollNode, tilesNode} = this;\n const {scrollHeight, scrollTop, clientHeight} = scrollNode;\n\n let bottomNodeIndex;\n this.stickToBottom = Math.abs(scrollHeight - (scrollTop + clientHeight)) < 1;\n if (this.stickToBottom) {\n const len = this.value.tiles.length;\n bottomNodeIndex = len - 1;\n } else {\n const viewportBottom = scrollTop + clientHeight;\n const anchoredNodeIndex = findFirstNodeIndexAtOrBelow(tilesNode, viewportBottom);\n this.anchoredNode = tilesNode.childNodes[anchoredNodeIndex] as HTMLElement;\n this.anchoredBottom = bottom(this.anchoredNode!);\n bottomNodeIndex = anchoredNodeIndex;\n }\n let topNodeIndex = findFirstNodeIndexAtOrBelow(tilesNode, scrollTop, bottomNodeIndex);\n this.updateVisibleRange(topNodeIndex, bottomNodeIndex);\n }\n\n private updateVisibleRange(startIndex: number, endIndex: number) {\n // can be undefined, meaning the tiles collection is still empty\n const firstVisibleChild = this.tilesView!.getChildInstanceByIndex(startIndex);\n const lastVisibleChild = this.tilesView!.getChildInstanceByIndex(endIndex);\n this.value.setVisibleTileRange(firstVisibleChild?.value, lastVisibleChild?.value);\n }\n}\n\nclass TilesListView extends ListView {\n\n private onChanged: () => void;\n\n constructor(tiles: ObservableList, onChanged: () => void, private readonly viewClassForTile: ViewClassForEntryFn) {\n super({\n list: tiles,\n onItemClick: (tileView, evt) => tileView.onClick(evt),\n }, tile => {\n const TileView = viewClassForTile(tile);\n return new TileView(tile, viewClassForTile);\n });\n this.onChanged = onChanged;\n }\n\n onReset() {\n super.onReset();\n this.onChanged();\n }\n\n onUpdate(index: number, value: ITile, param: any) {\n if (param === \"shape\") {\n const ExpectedClass = this.viewClassForTile(value);\n const child = this.getChildInstanceByIndex(index);\n if (!ExpectedClass || !(child instanceof ExpectedClass)) {\n // shape was updated, so we need to recreate the tile view,\n // the shape parameter is set in EncryptedEventTile.updateEntry\n // (and perhaps elsewhere by the time you read this)\n super.recreateItem(index, value);\n return;\n }\n }\n super.onUpdate(index, value, param);\n this.onChanged();\n }\n\n onAdd(idx: number, value: ITile) {\n super.onAdd(idx, value);\n this.onChanged();\n }\n\n onRemove(idx: number, value: ITile) {\n super.onRemove(idx, value);\n this.onChanged();\n }\n\n onMove(fromIdx: number, toIdx: number, value: ITile) {\n super.onMove(fromIdx, toIdx, value);\n this.onChanged();\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {TemplateView} from \"../../general/TemplateView\";\nimport {spinner} from \"../../common.js\";\n\nexport class TimelineLoadingView extends TemplateView {\n render(t, vm) {\n return t.div({className: \"TimelineLoadingView\"}, [\n spinner(t),\n t.div(vm.isEncrypted ? vm.i18n`Loading encrypted messages…` : vm.i18n`Loading messages…`)\n ]);\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {TemplateView} from \"../../general/TemplateView\";\nimport {Popup} from \"../../general/Popup.js\";\nimport {Menu} from \"../../general/Menu.js\";\n\nexport class MessageComposer extends TemplateView {\n constructor(viewModel, viewClassForTile) {\n super(viewModel);\n this._viewClassForTile = viewClassForTile;\n this._input = null;\n this._attachmentPopup = null;\n this._focusInput = null;\n this._rafResizeHandle = undefined;\n }\n\n render(t, vm) {\n this._input = t.textarea({\n onKeydown: e => this._onKeyDown(e),\n onInput: () => {\n vm.setInput(this._input.value);\n if (this._input.value) {\n this._adjustHeight();\n } else {\n this._clearHeight();\n }\n },\n placeholder: vm => vm.isEncrypted ? \"Send an encrypted message…\" : \"Send a message…\",\n rows: \"1\"\n });\n this._focusInput = () => this._input.focus();\n this.value.on(\"focus\", this._focusInput);\n const replyPreview = t.map(vm => vm.replyViewModel, (rvm, t) => {\n const TileView = rvm && this._viewClassForTile(rvm);\n if (!TileView) { return null; }\n return t.div({\n className: \"MessageComposer_replyPreview\"\n }, [\n t.span({ className: \"replying\" }, \"Replying\"),\n t.button({\n className: \"cancel\",\n onClick: () => this._clearReplyingTo()\n }, \"Close\"),\n t.view(new TileView(rvm, this._viewClassForTile, { interactive: false }, \"div\"))\n ]);\n });\n const input = t.div({className: \"MessageComposer_input\"}, [\n this._input,\n t.button({\n className: \"sendFile\",\n title: vm.i18n`Pick attachment`,\n onClick: evt => this._toggleAttachmentMenu(evt),\n }, vm.i18n`Send file`),\n t.button({\n className: \"send\",\n title: vm.i18n`Send`,\n onClick: () => this._trySend(),\n }, vm.i18n`Send`),\n ]);\n return t.div({ className: {\n MessageComposer: true,\n MessageComposer_canSend: vm => vm.canSend\n } }, [replyPreview, input]);\n }\n\n unmount() {\n if (this._focusInput) {\n this.value.off(\"focus\", this._focusInput);\n }\n super.unmount();\n }\n\n _clearReplyingTo() {\n this.value.clearReplyingTo();\n }\n\n async _trySend() {\n this._input.focus();\n // we clear the composer while enqueuing\n // and restore it when that didn't work somehow\n // to prevent the user from sending the message\n // every time they hit enter while it's still enqueuing.\n const {value} = this._input;\n const restoreValue = () => {\n this._input.value = value;\n this._adjustHeight();\n };\n this._input.value = \"\";\n this._clearHeight();\n try {\n if (!await this.value.sendMessage(value)) {\n restoreValue();\n }\n } catch (err) {\n restoreValue();\n console.error(err);\n }\n }\n\n _onKeyDown(event) {\n if (event.key === \"Enter\" && !event.shiftKey) {\n // don't insert newline into composer\n event.preventDefault();\n this._trySend();\n }\n }\n\n _toggleAttachmentMenu(evt) {\n if (this._attachmentPopup && this._attachmentPopup.isOpen) {\n this._attachmentPopup.close();\n } else {\n const vm = this.value;\n this._attachmentPopup = new Popup(new Menu([\n Menu.option(vm.i18n`Send video`, () => vm.sendVideo()).setIcon(\"video\"),\n Menu.option(vm.i18n`Send picture`, () => vm.sendPicture()).setIcon(\"picture\"),\n Menu.option(vm.i18n`Send file`, () => vm.sendFile()).setIcon(\"file\"),\n ]));\n this._attachmentPopup.trackInTemplateView(this);\n this._attachmentPopup.showRelativeTo(evt.target, 12);\n }\n }\n\n _adjustHeight() {\n if (this._rafResizeHandle) {\n return;\n }\n this._rafResizeHandle = window.requestAnimationFrame(() => {\n const scrollHeight = this._input.scrollHeight;\n this._input.style.height = `${scrollHeight}px`;\n this._rafResizeHandle = undefined;\n });\n }\n\n _clearHeight() {\n this._input.style.removeProperty(\"height\");\n }\n\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {TemplateView} from \"../../general/TemplateView\";\n\nexport class DisabledComposerView extends TemplateView {\n render(t) {\n return t.div({className: \"DisabledComposerView\"}, t.h3(vm => vm.description));\n }\n}\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {TemplateView, Builder} from \"./TemplateView\";\nimport { disableTargetCallback } from \"./utils\";\n\nimport type { ViewNode } from \"./types\";\nimport type {ErrorViewModel} from \"../../../../domain/ErrorViewModel\";\n\n\nexport class ErrorView extends TemplateView {\n constructor(vm: ErrorViewModel, private readonly options: {inline: boolean} = {inline: false}) {\n super(vm);\n }\n override render(t: Builder, vm: ErrorViewModel): ViewNode {\n const submitLogsButton = t.button({\n className: \"ErrorView_submit\",\n onClick: disableTargetCallback(async evt => {\n evt.stopPropagation();\n if (await vm.submitLogs()) {\n alert(\"Logs submitted!\");\n } else {\n alert(\"Could not submit logs\");\n }\n })\n }, \"Submit logs\");\n const closeButton = t.button({\n className: \"ErrorView_close\",\n onClick: evt => {\n evt.stopPropagation();\n vm.close();\n },\n title: \"Dismiss error\"\n });\n return t.div({\n className: {\n \"ErrorView\": true,\n \"ErrorView_inline\": this.options.inline,\n \"ErrorView_block\": !this.options.inline\n }}, [\n t.p({className: \"ErrorView_message\"}, vm.message),\n submitLogsButton,\n closeButton\n ]);\n }\n}\n\n","/*\nCopyright 2022 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {TemplateView, Builder} from \"../../general/TemplateView\";\nimport {AvatarView} from \"../../AvatarView\";\nimport {ListView} from \"../../general/ListView\";\nimport {classNames} from \"../../general/html\";\nimport {Stream} from \"../../../../types/MediaDevices\";\nimport type {CallViewModel, CallMemberViewModel, IStreamViewModel} from \"../../../../../domain/session/room/CallViewModel\";\nimport { ErrorView } from \"../../general/ErrorView\";\n\nexport class CallView extends TemplateView {\n private resizeObserver?: ResizeObserver;\n \n render(t: Builder, vm: CallViewModel): Element {\n const members = t.view(new ListView({\n className: \"CallView_members\",\n list: vm.memberViewModels\n }, vm => new StreamView(vm))) as HTMLElement;\n this.bindMembersCssClasses(t, members);\n return t.div({class: \"CallView\"}, [\n members,\n //t.p(vm => `Call ${vm.name}`),\n t.div({class: \"CallView_buttons\"}, [\n t.button({className: {\n \"CallView_mutedMicrophone\": vm => vm.isMicrophoneMuted,\n \"CallView_unmutedMicrophone\": vm => !vm.isMicrophoneMuted,\n }, onClick: disableTargetCallback(() => vm.toggleMicrophone())}),\n t.button({className: {\n \"CallView_mutedCamera\": vm => vm.isCameraMuted,\n \"CallView_unmutedCamera\": vm => !vm.isCameraMuted,\n }, onClick: disableTargetCallback(() => vm.toggleCamera())}),\n t.button({className: \"CallView_hangup\", onClick: disableTargetCallback(() => vm.hangup())}),\n ]),\n t.if(vm => !!vm.errorViewModel, t => {\n return t.div({className: \"CallView_error\"}, t.view(new ErrorView(vm.errorViewModel!)));\n })\n ]);\n }\n\n private bindMembersCssClasses(t, members) {\n t.mapSideEffect(vm => vm.memberCount, count => {\n members.classList.forEach((c, _, list) => {\n if (c.startsWith(\"size\")) {\n list.remove(c);\n }\n });\n members.classList.add(`size${count}`);\n });\n // update classes describing aspect ratio categories\n if (typeof ResizeObserver === \"function\") {\n const set = (c, flag) => {\n if (flag) {\n members.classList.add(c);\n } else {\n members.classList.remove(c);\n }\n };\n this.resizeObserver = new ResizeObserver(() => {\n const ar = members.clientWidth / members.clientHeight;\n const isTall = ar < 0.5;\n const isSquare = !isTall && ar < 1.8\n const isWide = !isTall && !isSquare;\n set(\"tall\", isTall);\n set(\"square\", isSquare);\n set(\"wide\", isWide);\n });\n this.resizeObserver!.observe(members);\n }\n }\n\n public unmount() {\n if (this.resizeObserver) {\n this.resizeObserver.unobserve((this.root()! as Element).querySelector(\".CallView_members\")!);\n this.resizeObserver = undefined;\n }\n super.unmount();\n }\n}\n\nclass StreamView extends TemplateView {\n render(t: Builder, vm: IStreamViewModel): Element {\n const video = t.video({\n autoplay: true,\n disablePictureInPicture: true,\n className: {\n hidden: vm => vm.isCameraMuted\n }\n }) as HTMLVideoElement;\n t.mapSideEffect(vm => vm.stream, stream => {\n video.srcObject = stream as MediaStream;\n });\n return t.div({className: \"StreamView\"}, [\n video,\n t.div({className: {\n StreamView_avatar: true,\n hidden: vm => !vm.isCameraMuted\n }}, t.view(new AvatarView(vm, 96), {parentProvidesUpdates: true})),\n t.div({\n className: {\n StreamView_muteStatus: true,\n hidden: vm => !vm.isCameraMuted && !vm.isMicrophoneMuted,\n microphoneMuted: vm => vm.isMicrophoneMuted && !vm.isCameraMuted,\n cameraMuted: vm => vm.isCameraMuted,\n }\n }),\n t.if(vm => !!vm.errorViewModel, t => {\n return t.div({className: \"StreamView_error\"}, t.view(new ErrorView(vm.errorViewModel!)));\n })\n ]);\n }\n\n update(value, props) {\n super.update(value);\n // update the AvatarView as we told it to not subscribe itself with parentProvidesUpdates\n this.updateSubViews(value, props);\n }\n}\n\nfunction disableTargetCallback(callback: (evt: Event) => Promise): (evt: Event) => Promise {\n return async (evt: Event) => {\n (evt.target as HTMLElement)?.setAttribute(\"disabled\", \"disabled\");\n await callback(evt);\n (evt.target as HTMLElement)?.removeAttribute(\"disabled\");\n }\n}\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {TemplateView} from \"../../general/TemplateView\"; \nimport {Popup} from \"../../general/Popup.js\";\nimport {Menu} from \"../../general/Menu.js\";\nimport {TimelineView} from \"./TimelineView\";\nimport {TimelineLoadingView} from \"./TimelineLoadingView.js\";\nimport {MessageComposer} from \"./MessageComposer.js\";\nimport {DisabledComposerView} from \"./DisabledComposerView.js\";\nimport {AvatarView} from \"../../AvatarView.js\";\nimport {CallView} from \"./CallView\";\nimport { ErrorView } from \"../../general/ErrorView\";\n\nexport class RoomView extends TemplateView {\n constructor(vm, viewClassForTile) {\n super(vm);\n this._viewClassForTile = viewClassForTile;\n this._optionsPopup = null;\n }\n\n render(t, vm) {\n return t.main({className: \"RoomView middle\"}, [\n t.div({className: \"RoomHeader middle-header\"}, [\n t.a({className: \"button-utility close-middle\", href: vm.closeUrl, title: vm.i18n`Close room`}),\n t.view(new AvatarView(vm, 32)),\n t.div({className: \"room-description\"}, [\n t.h2(vm => vm.name),\n ]),\n t.button({\n className: \"button-utility room-options\",\n \"aria-label\":vm.i18n`Room options`,\n onClick: evt => this._toggleOptionsMenu(evt)\n })\n ]),\n t.div({className: \"RoomView_body\"}, [\n t.if(vm => vm.errorViewModel, t => t.div({className: \"RoomView_error\"}, t.view(new ErrorView(vm.errorViewModel)))),\n t.mapView(vm => vm.callViewModel, callViewModel => callViewModel ? new CallView(callViewModel) : null),\n t.mapView(vm => vm.timelineViewModel, timelineViewModel => {\n return timelineViewModel ?\n new TimelineView(timelineViewModel, this._viewClassForTile) :\n new TimelineLoadingView(vm); // vm is just needed for i18n\n }),\n t.mapView(vm => vm.composerViewModel, composerViewModel => {\n switch (composerViewModel?.kind) {\n case \"composer\":\n return new MessageComposer(vm.composerViewModel, this._viewClassForTile);\n case \"disabled\":\n return new DisabledComposerView(vm.composerViewModel);\n }\n }),\n ])\n ]);\n }\n \n _toggleOptionsMenu(evt) {\n if (this._optionsPopup && this._optionsPopup.isOpen) {\n this._optionsPopup.close();\n } else {\n const vm = this.value;\n const options = [];\n options.push(Menu.option(vm.i18n`Room details`, () => vm.openDetailsPanel()));\n if (vm.features.calls) {\n options.push(Menu.option(vm.i18n`Start call`, () => vm.startCall()));\n }\n if (vm.canLeave) {\n options.push(Menu.option(vm.i18n`Leave room`, () => this._confirmToLeaveRoom()).setDestructive());\n }\n if (vm.canForget) {\n options.push(Menu.option(vm.i18n`Forget room`, () => vm.forgetRoom()).setDestructive());\n }\n if (vm.canRejoin) {\n options.push(Menu.option(vm.i18n`Rejoin room`, () => vm.rejoinRoom()));\n }\n if (!options.length) {\n return;\n }\n this._optionsPopup = new Popup(new Menu(options));\n this._optionsPopup.trackInTemplateView(this);\n this._optionsPopup.showRelativeTo(evt.target, 10);\n }\n }\n\n _confirmToLeaveRoom() {\n if (confirm(this.value.i18n`Are you sure you want to leave \"${this.value.name}\"?`)) {\n this.value.leaveRoom();\n }\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {TemplateView} from \"../../general/TemplateView\";\n\nexport class UnknownRoomView extends TemplateView {\n render(t, vm) {\n return t.main({className: \"UnknownRoomView middle\"}, [\n t.div({className: \"UnknownRoomView_header middle-header\"}, [\n t.a({className: \"button-utility close-middle\", href: vm.closeUrl, title: vm.i18n`Cancel room join`}),\n t.h2(\"Join room\"),\n ]),\n t.div({className: \"UnknownRoomView_body centered-column\"}, [\n t.div({className: \"UnknownRoomView_container\"}, [\n t.h2([\n vm.i18n`You are currently not in ${vm.roomIdOrAlias}.`,\n t.br(),\n vm.i18n`Want to join it?`\n ]),\n t.button({\n className: \"button-action primary\",\n onClick: () => vm.join(),\n disabled: vm => vm.busy,\n }, vm.i18n`Join room`),\n t.if(vm => vm.error, t => t.p({className: \"error\"}, vm.error))\n ])\n ])\n ]);\n }\n}\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {tag} from \"../general/html\";\n\nexport class StaticView {\n constructor(value, render = undefined) {\n if (typeof value === \"function\" && !render) {\n render = value;\n value = null;\n }\n this._root = render ? render(tag, value) : this.render(tag, value);\n }\n\n mount() {\n return this._root;\n }\n\n root() {\n return this._root;\n }\n\n unmount() {}\n update() {}\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {StaticView} from \"./StaticView\";\nimport {spinner} from \"../common.js\";\n\nexport class LoadingView extends StaticView {\n constructor(label = \"Loading\") {\n super(label, (t, label) => {\n return t.div({ className: \"LoadingView\" }, [spinner(t), label]);\n });\n }\n}\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {TemplateView} from \"../../general/TemplateView\";\nimport {LoadingView} from \"../../general/LoadingView\";\nimport {AvatarView} from \"../../AvatarView\";\n\nexport class RoomBeingCreatedView extends TemplateView {\n render(t, vm) {\n return t.main({className: \"RoomView middle\"}, [\n t.div({className: \"RoomHeader middle-header\"}, [\n t.a({className: \"button-utility close-middle\", href: vm.closeUrl, title: vm.i18n`Close room`}),\n t.view(new AvatarView(vm, 32)),\n t.div({className: \"room-description\"}, [\n t.h2(vm => vm.name),\n ])\n ]),\n t.div({className: \"RoomView_body\"}, [\n t.mapView(vm => vm.error, error => {\n if (error) {\n return new ErrorView(vm);\n } else {\n return new LoadingView(vm.i18n`Setting up the room…`);\n }\n })\n ])\n ]);\n }\n}\n\nclass ErrorView extends TemplateView {\n render(t,vm) {\n return t.div({className: \"RoomBeingCreated_error centered-column\"}, [\n t.h3(vm.i18n`Could not create the room, something went wrong:`),\n t.div({className: \"RoomView_error form-group\"}, vm.error),\n t.div({className: \"button-row\"},\n t.button({\n className: \"button-action primary destructive\",\n onClick: () => vm.cancel()\n }, vm.i18n`Cancel`))\n ]);\n }\n}\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {TemplateView} from \"../../general/TemplateView\";\nimport {renderStaticAvatar} from \"../../avatar\";\n\nexport class InviteView extends TemplateView {\n render(t, vm) {\n let inviteNodes = [];\n if (vm.isDirectMessage) {\n inviteNodes.push(renderStaticAvatar(vm, 128, \"InviteView_dmAvatar\"));\n }\n let inviterNodes;\n if (vm.isDirectMessage) {\n inviterNodes = [t.strong(vm.name), ` (${vm.inviter?.id}) wants to chat with you.`];\n } else if (vm.inviter) {\n inviterNodes = [renderStaticAvatar(vm.inviter, 24), t.strong(vm.inviter.name), ` (${vm.inviter.id}) invited you.`];\n } else {\n inviterNodes = `You were invited to join.`;\n }\n inviteNodes.push(t.p({className: \"InviteView_inviter\"}, inviterNodes));\n if (!vm.isDirectMessage) {\n inviteNodes.push(t.div({className: \"InviteView_roomProfile\"}, [\n renderStaticAvatar(vm, 64, \"InviteView_roomAvatar\"),\n t.h3(vm.name),\n t.p({className: \"InviteView_roomDescription\"}, vm.roomDescription)\n ]));\n }\n\n return t.main({className: \"InviteView middle\"}, [\n t.div({className: \"RoomHeader middle-header\"}, [\n t.a({className: \"button-utility close-middle\", href: vm.closeUrl, title: vm.i18n`Close invite`}),\n renderStaticAvatar(vm, 32),\n t.div({className: \"room-description\"}, [\n t.h2(vm => vm.name),\n ]),\n ]),\n t.if(vm => vm.error, t => t.div({className: \"RoomView_error\"}, vm => vm.error)),\n t.div({className: \"InviteView_body\"}, [\n t.div({className: \"InviteView_invite\"}, [\n ...inviteNodes,\n t.div({className: \"InviteView_buttonRow\"},\n t.button({\n className: \"button-action primary\",\n disabled: vm => vm.busy,\n onClick: () => vm.accept()\n }, vm.i18n`Accept`)\n ),\n t.div({className: \"InviteView_buttonRow\"},\n t.button({\n className: \"button-action primary destructive\",\n disabled: vm => vm.busy,\n onClick: () => vm.reject()\n }, vm.i18n`Reject`)\n ),\n ])\n ])\n ]);\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {TemplateView} from \"../../general/TemplateView\";\nimport {spinner} from \"../../common.js\";\n\nexport class LightboxView extends TemplateView {\n render(t, vm) {\n const close = t.a({href: vm.closeUrl, title: vm.i18n`Close`, className: \"close\"});\n const image = t.div({\n role: \"img\",\n \"aria-label\": vm => vm.name,\n title: vm => vm.name,\n className: {\n picture: true,\n hidden: vm => !vm.imageUrl,\n },\n style: vm => `background-image: url('${vm.imageUrl}'); max-width: ${vm.imageWidth}px; max-height: ${vm.imageHeight}px;`\n });\n const loading = t.div({\n className: {\n loading: true,\n hidden: vm => !!vm.imageUrl\n }\n }, [\n spinner(t),\n t.div(vm.i18n`Loading image…`)\n ]);\n const details = t.div({\n className: \"details\"\n }, [t.strong(vm => vm.name), t.br(), \"uploaded by \", t.strong(vm => vm.sender), vm => ` at ${vm.time} on ${vm.date}.`]);\n const dialog = t.div({\n role: \"dialog\",\n className: \"lightbox\",\n onClick: evt => this.clickToClose(evt),\n onKeydown: evt => this.closeOnEscKey(evt)\n }, [image, loading, details, close]);\n trapFocus(t, dialog);\n return dialog;\n }\n\n clickToClose(evt) {\n if (evt.target === this.root()) {\n this.value.close();\n }\n }\n\n closeOnEscKey(evt) {\n if (evt.key === \"Escape\" || evt.key === \"Esc\") {\n this.value.close();\n }\n }\n}\n\nfunction trapFocus(t, element) {\n const elements = focusables(element);\n const first = elements[0];\n const last = elements[elements.length - 1];\n\n t.addEventListener(element, \"keydown\", evt => {\n if (evt.key === \"Tab\") {\n if (evt.shiftKey) {\n if (document.activeElement === first) {\n last.focus();\n evt.preventDefault();\n }\n } else {\n if (document.activeElement === last) {\n first.focus();\n evt.preventDefault();\n }\n }\n }\n }, true);\n Promise.resolve().then(() => {\n first.focus();\n });\n}\n\nfunction focusables(element) {\n return element.querySelectorAll('a[href], button, textarea, input, select');\n}\n\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {TemplateView} from \"../general/TemplateView\";\nimport {spinner} from \"../common.js\";\n\nexport class SessionStatusView extends TemplateView {\n render(t, vm) {\n return t.div({className: {\n \"SessionStatusView\": true,\n \"hidden\": vm => !vm.isShown,\n }}, [\n spinner(t, {hidden: vm => !vm.isWaiting}),\n t.p(vm => vm.statusLabel),\n t.if(vm => vm.isConnectNowShown, t => t.button({className: \"link\", onClick: () => vm.connectNow()}, \"Retry now\")),\n t.if(vm => vm.isSecretStorageShown, t => t.a({href: vm.setupKeyBackupUrl}, \"Go to settings\")),\n t.if(vm => vm.canDismiss, t => t.div({className: \"end\"}, t.button({className: \"dismiss\", onClick: () => vm.dismiss()}))),\n ]);\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {RoomView} from \"./room/RoomView.js\";\nimport {RoomBeingCreatedView} from \"./room/RoomBeingCreatedView.js\";\nimport {InviteView} from \"./room/InviteView.js\";\nimport {TemplateView} from \"../general/TemplateView\";\nimport {StaticView} from \"../general/StaticView.js\";\n\nexport class RoomGridView extends TemplateView {\n constructor(vm, viewClassForTile) {\n super(vm);\n this._viewClassForTile = viewClassForTile;\n }\n\n render(t, vm) {\n const children = [];\n for (let i = 0; i < (vm.height * vm.width); i+=1) {\n children.push(t.div({\n onClick: () => vm.focusTile(i),\n onFocusin: () => vm.focusTile(i),\n className: {\n \"container\": true,\n [`tile${i}`]: true,\n \"focused\": vm => vm.focusIndex === i\n },\n }, t.mapView(vm => vm.roomViewModelAt(i), roomVM => {\n if (roomVM) {\n if (roomVM.kind === \"roomBeingCreated\") {\n return new RoomBeingCreatedView(roomVM);\n } else if (roomVM.kind === \"invite\") {\n return new InviteView(roomVM);\n } else {\n return new RoomView(roomVM, this._viewClassForTile);\n }\n } else {\n return new StaticView(t => t.div({className: \"room-placeholder\"}, [\n t.h2({className: \"focused\"}, vm.i18n`Select a room on the left`),\n t.h2({className: \"unfocused\"}, vm.i18n`Click to select this tile`),\n ]));\n }\n })));\n }\n children.push(t.div({className: vm => `focus-ring tile${vm.focusIndex}`}));\n return t.div({className: \"RoomGridView middle layout3x2\"}, children);\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {TemplateView, Builder} from \"../../general/TemplateView\";\nimport {disableTargetCallback} from \"../../general/utils\";\nimport {ViewNode} from \"../../general/types\";\nimport {KeyBackupViewModel, Status, BackupWriteStatus} from \"../../../../../domain/session/settings/KeyBackupViewModel\";\nimport {KeyType} from \"../../../../../matrix/ssss/index\";\n\nexport class KeyBackupSettingsView extends TemplateView {\n render(t: Builder, vm: KeyBackupViewModel): ViewNode {\n return t.div([\n t.map(vm => vm.status, (status, t, vm) => {\n switch (status) {\n case Status.Enabled: return renderEnabled(t, vm);\n case Status.NewVersionAvailable: return renderNewVersionAvailable(t, vm);\n case Status.SetupWithPassphrase: return renderEnableFromPhrase(t, vm);\n case Status.SetupWithRecoveryKey: return renderEnableFromKey(t, vm);\n case Status.Pending: return t.p(vm.i18n`Waiting to go online…`);\n }\n }),\n t.map(vm => vm.backupWriteStatus, (status, t, vm) => {\n switch (status) {\n case BackupWriteStatus.Writing: {\n const progress = t.progress({\n min: 0+\"\",\n max: 100+\"\",\n value: vm => vm.backupPercentage,\n });\n return t.div([`Backup in progress `, progress, \" \", vm => vm.backupInProgressLabel]);\n }\n case BackupWriteStatus.Stopped: {\n let label;\n const error = vm.backupError;\n if (error) {\n label = `Backup has stopped because of an error: ${vm.backupError}`;\n } else {\n label = `Backup has stopped`;\n }\n return t.p([label, \" \", t.button({onClick: () => vm.startBackup()}, `Backup now`)]);\n }\n case BackupWriteStatus.Done:\n return t.p(`All keys are backed up.`);\n default:\n return undefined;\n }\n }),\n t.if(vm => vm.isMasterKeyTrusted, t => {\n return t.p(\"Cross-signing master key found and trusted.\")\n }),\n t.if(vm => vm.canSignOwnDevice, t => {\n return t.div([\n t.button(\n {\n onClick: disableTargetCallback(async () => {\n vm.navigateToVerification();\n }),\n },\n \"Verify by emoji\"\n ),\n ]);\n }),\n\n ]);\n }\n}\n\nfunction renderEnabled(t: Builder, vm: KeyBackupViewModel): ViewNode {\n const items = [\n t.p([vm.i18n`Key backup is enabled, using backup version ${vm.backupVersion}. `, t.button({onClick: () => vm.disable()}, vm.i18n`Disable`)])\n ];\n if (vm.dehydratedDeviceId) {\n items.push(t.p(vm.i18n`A dehydrated device id was set up with id ${vm.dehydratedDeviceId} which you can use during your next login with your secret storage key.`));\n }\n return t.div(items);\n}\n\nfunction renderNewVersionAvailable(t: Builder, vm: KeyBackupViewModel): ViewNode {\n const items = [\n t.p([vm.i18n`A new backup version has been created from another device. Disable key backup and enable it again with the new key.`, t.button({onClick: () => vm.disable()}, vm.i18n`Disable`)])\n ];\n return t.div(items);\n}\n\nfunction renderEnableFromKey(t: Builder, vm: KeyBackupViewModel): ViewNode {\n const useASecurityPhrase = t.button({className: \"link\", onClick: () => vm.showPhraseSetup()}, vm.i18n`use a security phrase`);\n return t.div([\n t.p(vm.i18n`Enter your secret storage security key below to ${vm.purpose}, which will enable you to decrypt messages received before you logged into this session. The security key is a code of 12 groups of 4 characters separated by a space that Element created for you when setting up security.`),\n renderError(t),\n renderEnableFieldRow(t, vm, vm.i18n`Security key`, (key, setupDehydratedDevice) => vm.enterSecurityKey(key, setupDehydratedDevice)),\n t.p([vm.i18n`Alternatively, you can `, useASecurityPhrase, vm.i18n` if you have one.`]),\n ]);\n}\n\nfunction renderEnableFromPhrase(t: Builder, vm: KeyBackupViewModel): ViewNode {\n const useASecurityKey = t.button({className: \"link\", onClick: () => vm.showKeySetup()}, vm.i18n`use your security key`);\n return t.div([\n t.p(vm.i18n`Enter your secret storage security phrase below to ${vm.purpose}, which will enable you to decrypt messages received before you logged into this session. The security phrase is a freeform secret phrase you optionally chose when setting up security in Element. It is different from your password to login, unless you chose to set them to the same value.`),\n renderError(t),\n renderEnableFieldRow(t, vm, vm.i18n`Security phrase`, (phrase, setupDehydratedDevice) => vm.enterSecurityPhrase(phrase, setupDehydratedDevice)),\n t.p([vm.i18n`You can also `, useASecurityKey, vm.i18n`.`]),\n ]);\n}\n\nfunction renderEnableFieldRow(t, vm, label, callback): ViewNode {\n let setupDehydrationCheck;\n const eventHandler = () => callback(input.value, setupDehydrationCheck?.checked || false);\n const input = t.input({type: \"password\", disabled: vm => vm.isBusy, placeholder: label});\n const children = [\n t.p([\n input,\n t.button({disabled: vm => vm.isBusy, onClick: eventHandler}, vm.decryptAction),\n ]),\n ];\n if (vm.offerDehydratedDeviceSetup) {\n setupDehydrationCheck = t.input({type: \"checkbox\", id:\"enable-dehydrated-device\"});\n const moreInfo = t.a({href: \"https://github.com/uhoreg/matrix-doc/blob/dehydration/proposals/2697-device-dehydration.md\", target: \"_blank\", rel: \"noopener\"}, \"more info\");\n children.push(t.p([\n setupDehydrationCheck,\n t.label({for: setupDehydrationCheck.id}, [vm.i18n`Back up my device as well (`, moreInfo, \")\"])\n ]));\n }\n return t.div({className: `row`}, [\n t.div({className: \"label\"}, label),\n t.div({className: \"content\"}, children),\n ]);\n}\n\nfunction renderError(t: Builder): ViewNode {\n return t.if(vm => vm.error !== undefined, (t, vm) => {\n return t.div([\n t.p({className: \"error\"}, vm => vm.i18n`Could not enable key backup: ${vm.error}.`),\n t.p(vm.i18n`Try double checking that you did not mix up your security key, security phrase and login password as explained above.`)\n ])\n });\n}\n\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {TemplateView, TemplateBuilder} from \"../../general/TemplateView\";\nimport {ViewNode} from \"../../general/types\";\nimport {disableTargetCallback} from \"../../general/utils\";\nimport type {FeaturesViewModel, FeatureViewModel} from \"../../../../../domain/session/settings/FeaturesViewModel\";\n\nexport class FeaturesView extends TemplateView {\n render(t, vm: FeaturesViewModel): ViewNode {\n return t.div({\n className: \"FeaturesView\",\n }, [\n t.p(\"Enable experimental features here that are still in development. These are not yet ready for primetime, so expect bugs.\"),\n // we don't use a binding/ListView because this is a static list\n t.ul(vm.featureViewModels.map(vm => {\n return t.li(t.view(new FeatureView(vm)));\n }))\n ]);\n }\n}\n\nclass FeatureView extends TemplateView {\n render(t, vm): ViewNode {\n let id = `feature_${vm.id}`;\n return t.div({className: \"FeatureView\"}, [\n t.input({\n type: \"checkbox\",\n id,\n checked: vm => vm.enabled,\n onChange: evt => vm.enableFeature(evt.target.checked)\n }),\n t.div({class: \"FeatureView_container\"}, [\n t.h4(t.label({for: id}, vm.name)),\n t.p(vm.description)\n ])\n ]);\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {TemplateView} from \"../../general/TemplateView\";\nimport {disableTargetCallback} from \"../../general/utils\";\nimport {KeyBackupSettingsView} from \"./KeyBackupSettingsView\"\nimport {FeaturesView} from \"./FeaturesView\"\n\nexport class SettingsView extends TemplateView {\n render(t, vm) {\n let version = vm.version;\n if (vm.showUpdateButton) {\n version = t.span([\n vm.version,\n t.button({onClick: () => vm.checkForUpdate()}, vm.i18n`Check for updates`)\n ]);\n }\n\n const row = (t, label, content, extraClass = \"\") => {\n return t.div({className: `row ${extraClass}`}, [\n t.div({className: \"label\"}, label),\n t.div({className: \"content\"}, content),\n ]);\n };\n\n const settingNodes = [];\n\n settingNodes.push(\n t.h3(\"Session\"),\n row(t, vm.i18n`User ID`, vm.userId),\n row(t, vm.i18n`Session ID`, vm.deviceId, \"code\"),\n row(t, vm.i18n`Session key`, vm.fingerprintKey, \"code\"),\n row(t, \"\", t.button({\n onClick: () => vm.logout(),\n disabled: vm => vm.isLoggingOut\n }, vm.i18n`Log out`)),\n );\n settingNodes.push(\n t.h3(\"Key backup & security\"),\n t.view(new KeyBackupSettingsView(vm.keyBackupViewModel))\n );\n\n settingNodes.push(\n t.h3(\"Notifications\"),\n t.map(vm => vm.pushNotifications.supported, (supported, t) => {\n if (supported === null) {\n return t.p(vm.i18n`Loading…`);\n } else if (supported) {\n const label = vm => vm.pushNotifications.enabled ?\n vm.i18n`Push notifications are enabled`:\n vm.i18n`Push notifications are disabled`;\n const buttonLabel = vm => vm.pushNotifications.enabled ?\n vm.i18n`Disable`:\n vm.i18n`Enable`;\n return row(t, label, t.button({\n onClick: () => vm.togglePushNotifications(),\n disabled: vm => vm.pushNotifications.updating\n }, buttonLabel));\n } else {\n return t.p(vm.i18n`Push notifications are not supported on this browser`);\n }\n }),\n t.if(vm => vm.pushNotifications.supported && vm.pushNotifications.enabled, t => {\n return t.div([\n t.p([\n \"If you think push notifications are not being delivered, \",\n t.button({className: \"link\", onClick: () => vm.checkPushEnabledOnServer()}, \"check\"),\n \" if they got disabled on the server\"\n ]),\n t.map(vm => vm.pushNotifications.enabledOnServer, (enabled, t) => {\n if (enabled === true) {\n return t.p(\"Push notifications are still enabled on the server, so everything should be working. Sometimes notifications can get dropped if they can't be delivered within a given time.\");\n } else if (enabled === false) {\n return t.p(\"Push notifications have been disabled on the server, likely due to a bug. Please re-enable them by clicking Disable and then Enable again above.\");\n }\n }),\n t.map(vm => vm.pushNotifications.serverError, (err, t) => {\n if (err) {\n return t.p(\"Couldn't not check on server: \" + err.message);\n }\n })\n ]);\n })\n );\n \n settingNodes.push(\n t.h3(\"Preferences\"),\n row(t, vm.i18n`Scale down images when sending`, this._imageCompressionRange(t, vm)),\n t.if(vm => !import.meta.env.DEV && vm.activeTheme, (t, vm) => {\n return row(t, vm.i18n`Use the following theme`, this._themeOptions(t, vm));\n }),\n );\n const logButtons = [];\n if (import.meta.env.DEV) {\n logButtons.push(t.button({onClick: () => openLogs(vm)}, \"Open logs\"));\n }\n if (vm.canSendLogsToServer) {\n logButtons.push(t.button({onClick: disableTargetCallback(() => vm.sendLogsToServer())}, `Submit logs to ${vm.logsServer}`));\n }\n logButtons.push(t.button({onClick: () => vm.exportLogs()}, \"Download logs\"));\n\n settingNodes.push(\n t.h3(\"Experimental features\"),\n t.view(new FeaturesView(vm.featuresViewModel))\n );\n\n settingNodes.push(\n t.h3(\"Application\"),\n row(t, vm.i18n`Version`, version),\n row(t, vm.i18n`Storage usage`, vm => `${vm.storageUsage} / ${vm.storageQuota}`),\n row(t, vm.i18n`Debug logs`, logButtons),\n t.p({className: {hidden: vm => !vm.logsFeedbackMessage}}, vm => vm.logsFeedbackMessage),\n t.p([\"Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited, the usernames of other users and the names of files you send. They do not contain messages. For more information, review our \",\n t.a({href: \"https://element.io/privacy\", target: \"_blank\", rel: \"noopener\"}, \"privacy policy\"), \".\"]),\n t.p([])\n );\n\n return t.main({className: \"Settings middle\"}, [\n t.div({className: \"middle-header\"}, [\n t.a({className: \"button-utility close-middle\", href: vm.closeUrl, title: vm.i18n`Close settings`}),\n t.h2(\"Settings\")\n ]),\n t.div({className: \"SettingsBody\"}, settingNodes)\n ]);\n }\n\n _imageCompressionRange(t, vm) {\n const step = 32;\n const min = Math.ceil(vm.minSentImageSizeLimit / step) * step;\n const max = (Math.floor(vm.maxSentImageSizeLimit / step) + 1) * step;\n const updateSetting = evt => vm.setSentImageSizeLimit(parseInt(evt.target.value, 10));\n return [t.input({\n type: \"range\",\n step,\n min,\n max,\n value: vm => vm.sentImageSizeLimit || max,\n onInput: updateSetting,\n onChange: updateSetting,\n }), \" \", t.output(vm => {\n return vm.sentImageSizeLimit ? \n vm.i18n`resize to ${vm.sentImageSizeLimit}px` :\n vm.i18n`no resizing`;\n })];\n }\n\n _themeOptions(t, vm) {\n const { themeName: activeThemeName, themeVariant: activeThemeVariant } = vm.activeTheme;\n const optionTags = [];\n // 1. render the dropdown containing the themes\n for (const name of Object.keys(vm.themeMapping)) {\n optionTags.push( t.option({ value: name, selected: name === activeThemeName} , name));\n }\n const select = t.select({\n onChange: (e) => {\n const themeName = e.target.value;\n if(!(\"id\" in vm.themeMapping[themeName])) {\n const colorScheme = darkRadioButton.checked ? \"dark\" : lightRadioButton.checked ? \"light\" : \"default\";\n // execute the radio-button callback so that the theme actually changes!\n // otherwise the theme would only change when another radio-button is selected.\n radioButtonCallback(colorScheme);\n return;\n }\n vm.changeThemeOption(themeName);\n }\n }, optionTags);\n // 2. render the radio-buttons used to choose variant\n const radioButtonCallback = (colorScheme) => {\n const selectedThemeName = select.options[select.selectedIndex].value;\n vm.changeThemeOption(selectedThemeName, colorScheme);\n };\n const isDarkSelected = activeThemeVariant === \"dark\";\n const isLightSelected = activeThemeVariant === \"light\";\n const darkRadioButton = t.input({ type: \"radio\", name: \"radio-chooser\", value: \"dark\", id: \"dark\", checked: isDarkSelected });\n const defaultRadioButton = t.input({ type: \"radio\", name: \"radio-chooser\", value: \"default\", id: \"default\", checked: !(isDarkSelected || isLightSelected) });\n const lightRadioButton = t.input({ type: \"radio\", name: \"radio-chooser\", value: \"light\", id: \"light\", checked: isLightSelected });\n const radioButtons = t.form({\n className: {\n hidden: () => {\n const themeName = select.options[select.selectedIndex].value;\n return \"id\" in vm.themeMapping[themeName];\n }\n },\n onChange: (e) => radioButtonCallback(e.target.value)\n },\n [\n defaultRadioButton,\n t.label({for: \"default\"}, \"Match system theme\"),\n darkRadioButton,\n t.label({for: \"dark\"}, \"dark\"),\n lightRadioButton,\n t.label({for: \"light\"}, \"light\"),\n ]);\n return t.div({ className: \"theme-chooser\" }, [select, radioButtons]);\n }\n}\n\n\nasync function openLogs(vm) {\n // Use vite-specific url so this asset doesn't get picked up by vite and included in the production build,\n // as opening the logs is only available during dev time, and @matrixdotorg/structured-logviewer is a dev dependency\n // This url is what import \"@matrixdotorg/structured-logviewer/index.html?url\" resolves to with vite.\n const win = window.open(`/@fs/${DEFINE_PROJECT_DIR}/node_modules/@matrixdotorg/structured-logviewer/index.html`);\n await new Promise((resolve, reject) => {\n let shouldSendPings = true;\n const cleanup = () => {\n shouldSendPings = false;\n window.removeEventListener(\"message\", waitForPong);\n };\n const waitForPong = event => {\n if (event.data.type === \"pong\") {\n cleanup();\n resolve();\n }\n };\n const sendPings = async () => {\n while (shouldSendPings) {\n win.postMessage({type: \"ping\"});\n await new Promise(rr => setTimeout(rr, 50));\n if (win.closed) {\n cleanup();\n }\n }\n };\n window.addEventListener(\"message\", waitForPong);\n sendPings().catch(reject);\n });\n const logs = await vm.exportLogsBlob();\n win.postMessage({type: \"open\", logs: logs.nativeBlob});\n}\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {TemplateView} from \"../general/TemplateView\";\nimport {AvatarView} from \"../AvatarView\";\nimport {StaticView} from \"../general/StaticView\";\n\nexport class CreateRoomView extends TemplateView {\n render(t, vm) {\n return t.main({className: \"CreateRoomView middle\"}, [\n t.div({className: \"CreateRoomView_header middle-header\"}, [\n t.a({className: \"button-utility close-middle\", href: vm.closeUrl, title: vm.i18n`Cancel room creation`}),\n t.h2(\"Create room\"),\n ]),\n t.div({className: \"CreateRoomView_body centered-column\"}, [\n //t.div({className: \"RoomView_error\"}, vm => vm.error),\n t.form({className: \"CreateRoomView_detailsForm form\", onChange: evt => this.onFormChange(evt), onSubmit: evt => this.onSubmit(evt)}, [\n t.div({className: \"vertical-layout\"}, [\n t.button({type: \"button\", className: \"CreateRoomView_selectAvatar\", onClick: () => vm.selectAvatar()},\n t.mapView(vm => vm.hasAvatar, hasAvatar => {\n if (hasAvatar) {\n return new AvatarView(vm, 64);\n } else {\n return new StaticView(undefined, t => {\n return t.div({className: \"CreateRoomView_selectAvatarPlaceholder\"})\n });\n }\n })\n ),\n t.div({className: \"stretch form-row text\"}, [\n t.label({for: \"name\"}, vm.i18n`Room name`),\n t.input({\n onInput: evt => vm.setName(evt.target.value),\n type: \"text\", name: \"name\", id: \"name\",\n placeholder: vm.i18n`Enter a room name`\n }),\n ]),\n ]),\n t.div({className: \"form-row text\"}, [\n t.label({for: \"topic\"}, vm.i18n`Topic (optional)`),\n t.textarea({\n onInput: evt => vm.setTopic(evt.target.value),\n name: \"topic\", id: \"topic\",\n placeholder: vm.i18n`Topic`\n }),\n ]),\n t.div({className: \"form-group\"}, [\n t.div({className: \"form-row check\"}, [\n t.input({type: \"radio\", name: \"isPublic\", id: \"isPrivate\", value: \"false\", checked: !vm.isPublic}),\n t.label({for: \"isPrivate\"}, vm.i18n`Private room, only upon invitation.`)\n ]),\n t.div({className: \"form-row check\"}, [\n t.input({type: \"radio\", name: \"isPublic\", id: \"isPublic\", value: \"true\", checked: vm.isPublic}),\n t.label({for: \"isPublic\"}, vm.i18n`Public room, anyone can join`)\n ]),\n ]),\n t.div({className: {\"form-row check\": true, hidden: vm => vm.isPublic}}, [\n t.input({type: \"checkbox\", name: \"isEncrypted\", id: \"isEncrypted\", checked: vm.isEncrypted}),\n t.label({for: \"isEncrypted\"}, vm.i18n`Enable end-to-end encryption`)\n ]),\n t.div({className: {\"form-row text\": true, hidden: vm => !vm.isPublic}}, [\n t.label({for: \"roomAlias\"}, vm.i18n`Room alias`),\n t.input({\n onInput: evt => vm.setRoomAlias(evt.target.value),\n type: \"text\", name: \"roomAlias\", id: \"roomAlias\",\n placeholder: vm.i18n`Room alias (, or # or #:hs.tld`}),\n ]),\n t.div({className: \"form-group\"}, [\n t.div(t.button({className: \"link\", type: \"button\", onClick: () => vm.toggleAdvancedShown()},\n vm => vm.isAdvancedShown ? vm.i18n`Hide advanced settings` : vm.i18n`Show advanced settings`)),\n t.div({className: {\"form-row check\": true, hidden: vm => !vm.isAdvancedShown}}, [\n t.input({type: \"checkbox\", name: \"isFederationDisabled\", id: \"isFederationDisabled\", checked: vm.isFederationDisabled}),\n t.label({for: \"isFederationDisabled\"}, [\n vm.i18n`Disable federation`,\n t.p({className: \"form-row-description\"}, vm.i18n`Can't be changed later. This will prevent people on other homeservers from joining the room. This is typically used when only people from your own organisation (if applicable) should be allowed in the room, and is otherwise not needed.`)\n ]),\n ]),\n ]),\n t.div({className: \"button-row\"}, [\n t.button({\n className: \"button-action primary\",\n type: \"submit\",\n disabled: vm => !vm.canCreate\n }, vm.i18n`Create room`),\n ]),\n ])\n ])\n ]);\n }\n\n onFormChange(evt) {\n switch (evt.target.name) {\n case \"isEncrypted\":\n this.value.setEncrypted(evt.target.checked);\n break;\n case \"isPublic\":\n this.value.setPublic(evt.currentTarget.isPublic.value === \"true\");\n break;\n case \"isFederationDisabled\":\n this.value.setFederationDisabled(evt.target.checked);\n break;\n }\n }\n\n onSubmit(evt) {\n evt.preventDefault();\n this.value.create();\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {TemplateView} from \"../../general/TemplateView\";\nimport {classNames, tag} from \"../../general/html\";\nimport {AvatarView} from \"../../AvatarView.js\";\n\nexport class RoomDetailsView extends TemplateView {\n render(t, vm) {\n const encryptionString = () => vm.isEncrypted ? vm.i18n`On` : vm.i18n`Off`;\n return t.div({className: \"RoomDetailsView\"}, [\n t.div({className: \"RoomDetailsView_avatar\"},\n [\n t.view(new AvatarView(vm, 52)),\n t.mapView(vm => vm.isEncrypted, isEncrypted => new EncryptionIconView(isEncrypted))\n ]),\n t.div({className: \"RoomDetailsView_name\"}, [t.h2(vm => vm.name)]),\n this._createRoomAliasDisplay(vm),\n t.div({className: \"RoomDetailsView_rows\"},\n [\n this._createRightPanelButtonRow(t, vm.i18n`People`, { MemberCount: true }, vm => vm.memberCount,\n () => vm.openPanel(\"members\")),\n this._createRightPanelRow(t, vm.i18n`Encryption`, {EncryptionStatus: true}, encryptionString)\n ])\n ]);\n }\n\n _createRoomAliasDisplay(vm) {\n return vm.canonicalAlias ? tag.div({className: \"RoomDetailsView_id\"}, [vm.canonicalAlias]) :\n \"\";\n }\n\n _createRightPanelRow(t, label, labelClass, value) {\n const labelClassString = classNames({RoomDetailsView_label: true, ...labelClass});\n return t.div({className: \"RoomDetailsView_row\"}, [\n t.div({className: labelClassString}, [label]),\n t.div({className: \"RoomDetailsView_value\"}, value)\n ]);\n }\n\n _createRightPanelButtonRow(t, label, labelClass, value, onClick) {\n const labelClassString = classNames({RoomDetailsView_label: true, ...labelClass});\n return t.button({className: \"RoomDetailsView_row\", onClick}, [\n t.div({className: labelClassString}, [label]),\n t.div({className: \"RoomDetailsView_value\"}, value)\n ]);\n }\n\n}\n\nclass EncryptionIconView extends TemplateView {\n render(t, isEncrypted) {\n return t.div({className: \"EncryptionIconView\"},\n [t.div({className: isEncrypted ? \"EncryptionIconView_encrypted\" : \"EncryptionIconView_unencrypted\"})]);\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n// start is included in the range,\n// end is excluded,\n// so [2, 2[ means an empty range\nexport class Range {\n constructor(\n public readonly start: number,\n public readonly end: number\n ) {}\n\n get length() {\n return this.end - this.start;\n }\n\n contains(range: Range): boolean {\n return range.start >= this.start && range.end <= this.end;\n }\n\n containsIndex(idx: number): boolean {\n return idx >= this.start && idx < this.end;\n }\n\n toLocalIndex(idx: number) {\n return idx - this.start;\n }\n\n intersects(range: Range): boolean {\n return range.start < this.end && this.start < range.end;\n }\n\n forEachInIterator(it: Iterator, callback: ((T, i: number) => void)) {\n let i = 0;\n for (i = 0; i < this.start; i += 1) {\n it.next();\n }\n for (i = 0; i < this.length; i += 1) {\n const result = it.next();\n if (result.done) {\n break;\n } else {\n callback(result.value, this.start + i);\n }\n }\n }\n\n [Symbol.iterator](): Iterator {\n return new RangeIterator(this);\n }\n\n reverseIterable(): Iterable {\n return new ReverseRangeIterator(this);\n }\n\n clampIndex(idx: number, end = this.end - 1) {\n return Math.min(Math.max(this.start, idx), end);\n }\n\n getIndexZone(idx): RangeZone {\n if (idx < this.start) {\n return RangeZone.Before;\n } else if (idx < this.end) {\n return RangeZone.Inside;\n } else {\n return RangeZone.After;\n }\n }\n}\n\nexport enum RangeZone {\n Before = 1,\n Inside,\n After\n}\n\nclass RangeIterator implements Iterator {\n private idx: number;\n constructor(private readonly range: Range) {\n this.idx = range.start - 1;\n }\n\n next(): IteratorResult {\n if (this.idx < (this.range.end - 1)) {\n this.idx += 1;\n return {value: this.idx, done: false};\n } else {\n return {value: undefined, done: true};\n }\n }\n}\n\nclass ReverseRangeIterator implements Iterable, Iterator {\n private idx: number;\n constructor(private readonly range: Range) {\n this.idx = range.end;\n }\n\n [Symbol.iterator]() {\n return this;\n }\n\n next(): IteratorResult {\n if (this.idx > this.range.start) {\n this.idx -= 1;\n return {value: this.idx, done: false};\n } else {\n return {value: undefined, done: true};\n }\n }\n}\n\nexport function tests() {\n return {\n \"length\": assert => {\n const a = new Range(2, 5);\n assert.equal(a.length, 3);\n },\n \"iterator\": assert => {\n assert.deepEqual(Array.from(new Range(2, 5)), [2, 3, 4]);\n },\n \"reverseIterable\": assert => {\n assert.deepEqual(Array.from(new Range(2, 5).reverseIterable()), [4, 3, 2]);\n },\n \"containsIndex\": assert => {\n const a = new Range(2, 5);\n assert.equal(a.containsIndex(0), false);\n assert.equal(a.containsIndex(1), false);\n assert.equal(a.containsIndex(2), true);\n assert.equal(a.containsIndex(3), true);\n assert.equal(a.containsIndex(4), true);\n assert.equal(a.containsIndex(5), false);\n assert.equal(a.containsIndex(6), false);\n },\n \"intersects returns false for touching ranges\": assert => {\n const a = new Range(2, 5);\n const b = new Range(5, 10);\n assert.equal(a.intersects(b), false);\n assert.equal(b.intersects(a), false);\n },\n \"intersects returns false\": assert => {\n const a = new Range(2, 5);\n const b = new Range(50, 100);\n assert.equal(a.intersects(b), false);\n assert.equal(b.intersects(a), false);\n },\n \"intersects returns true for 1 overlapping item\": assert => {\n const a = new Range(2, 5);\n const b = new Range(4, 10);\n assert.equal(a.intersects(b), true);\n assert.equal(b.intersects(a), true);\n },\n \"contains beyond left edge\": assert => {\n const a = new Range(2, 5);\n const b = new Range(1, 3);\n assert.equal(a.contains(b), false);\n },\n \"contains at left edge\": assert => {\n const a = new Range(2, 5);\n const b = new Range(2, 3);\n assert.equal(a.contains(b), true);\n },\n \"contains between edges\": assert => {\n const a = new Range(2, 5);\n const b = new Range(3, 4);\n assert.equal(a.contains(b), true);\n },\n \"contains at right edge\": assert => {\n const a = new Range(2, 5);\n const b = new Range(3, 5);\n assert.equal(a.contains(b), true);\n },\n \"contains beyond right edge\": assert => {\n const a = new Range(2, 5);\n const b = new Range(4, 6);\n assert.equal(a.contains(b), false);\n },\n \"contains for non-intersecting ranges\": assert => {\n const a = new Range(2, 5);\n const b = new Range(5, 6);\n assert.equal(a.contains(b), false);\n },\n \"forEachInIterator with more values available\": assert => {\n const callbackValues: {v: string, i: number}[] = [];\n const values = [\"a\", \"b\", \"c\", \"d\", \"e\", \"f\"];\n const it = values[Symbol.iterator]();\n new Range(2, 5).forEachInIterator(it, (v, i) => callbackValues.push({v, i}));\n assert.deepEqual(callbackValues, [\n {v: \"c\", i: 2},\n {v: \"d\", i: 3},\n {v: \"e\", i: 4},\n ]);\n },\n \"forEachInIterator with fewer values available\": assert => {\n const callbackValues: {v: string, i: number}[] = [];\n const values = [\"a\", \"b\", \"c\"];\n const it = values[Symbol.iterator]();\n new Range(2, 5).forEachInIterator(it, (v, i) => callbackValues.push({v, i}));\n assert.deepEqual(callbackValues, [\n {v: \"c\", i: 2},\n ]);\n },\n \"clampIndex\": assert => {\n assert.equal(new Range(2, 5).clampIndex(0), 2);\n assert.equal(new Range(2, 5).clampIndex(2), 2);\n assert.equal(new Range(2, 5).clampIndex(3), 3);\n assert.equal(new Range(2, 5).clampIndex(4), 4);\n assert.equal(new Range(2, 5).clampIndex(5), 4);\n assert.equal(new Range(2, 5).clampIndex(10), 4);\n }\n };\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {Range, RangeZone} from \"./Range\";\nimport {defaultObserverWith} from \"../../../../observable/list/BaseObservableList\";\n\nfunction skipOnIterator(it: Iterator, pos: number): boolean {\n let i = 0;\n while (i < pos) {\n i += 1;\n if(it.next().done) {\n return false;\n }\n }\n return true;\n}\n\nfunction getIteratorValueAtIdx(it: Iterator, idx: number): undefined | T {\n if (skipOnIterator(it, idx)) {\n const result = it.next();\n if (!result.done) {\n return result.value;\n }\n }\n return undefined;\n}\n\nexport enum ResultType {\n Move,\n Add,\n Remove,\n RemoveAndAdd,\n UpdateRange\n}\n\nexport interface MoveResult {\n type: ResultType.Move;\n fromIdx: number;\n toIdx: number\n}\n\ninterface AddResult {\n type: ResultType.Add;\n newRange?: ListRange;\n /** the list index of an item to add */\n addIdx: number;\n /** the value to add at addIdx */\n value: T\n}\n\ninterface RemoveResult {\n type: ResultType.Remove;\n newRange?: ListRange;\n /** the list index of an item to remove, before the add or remove event has been taken into account */\n removeIdx: number;\n}\n\n// need to repeat the fields from RemoveResult and AddResult here\n// to make the discriminated union work\ninterface RemoveAndAddResult {\n type: ResultType.RemoveAndAdd;\n newRange?: ListRange;\n /** the list index of an item to remove, before the add or remove event has been taken into account */\n removeIdx: number;\n /** the list index of an item to add */\n addIdx: number;\n /** the value to add at addIdx */\n value: T;\n}\n\ninterface UpdateRangeResult {\n type: ResultType.UpdateRange;\n newRange?: ListRange;\n}\n\nexport type AddRemoveResult = AddResult | RemoveResult | RemoveAndAddResult | UpdateRangeResult;\n\nexport class ListRange extends Range {\n constructor(\n start: number,\n end: number,\n private _totalLength: number,\n private _viewportItemCount: number = end - start\n ) {\n super(start, end);\n }\n\n expand(amount: number): ListRange {\n // don't expand ranges that won't render anything\n if (this.length === 0) {\n return this;\n }\n const newStart = Math.max(0, this.start - amount);\n const newEnd = Math.min(this.totalLength, this.end + amount);\n return new ListRange(\n newStart,\n newEnd,\n this.totalLength,\n this._viewportItemCount\n );\n }\n\n get totalLength(): number {\n return this._totalLength;\n }\n\n get viewportItemCount(): number {\n return this._viewportItemCount;\n }\n\n static fromViewport(listLength: number, itemHeight: number, listHeight: number, scrollTop: number) {\n const topCount = Math.min(Math.max(0, Math.floor(scrollTop / itemHeight)), listLength);\n const itemsAfterTop = listLength - topCount;\n const viewportItemCount = listHeight !== 0 ? Math.ceil(listHeight / itemHeight) : 0;\n const renderCount = Math.min(viewportItemCount, itemsAfterTop);\n return new ListRange(topCount, topCount + renderCount, listLength, viewportItemCount);\n }\n\n queryAdd(idx: number, value: T, list: Iterable): AddRemoveResult {\n const maxAddIdx = this.viewportItemCount > this.length ? this.end : this.end - 1;\n if (idx <= maxAddIdx) {\n // use maxAddIdx to allow to grow the range by one at a time\n // if the viewport isn't filled yet\n const addIdx = this.clampIndex(idx, maxAddIdx);\n const addValue = addIdx === idx ? value : getIteratorValueAtIdx(list[Symbol.iterator](), addIdx)!;\n return this.createAddResult(addIdx, addValue);\n } else {\n // if the add happened after the range, we only update the range with the new length\n return {type: ResultType.UpdateRange, newRange: this.deriveRange(1, 0)};\n }\n }\n\n queryRemove(idx: number, list: Iterable): AddRemoveResult {\n if (idx < this.end) {\n const removeIdx = this.clampIndex(idx);\n return this.createRemoveResult(removeIdx, list);\n } else {\n return {type: ResultType.UpdateRange, newRange: this.deriveRange(-1, 0)};\n }\n }\n\n queryMove(fromIdx: number, toIdx: number, value: T, list: Iterable): MoveResult | AddRemoveResult | undefined {\n const fromZone = this.getIndexZone(fromIdx);\n const toZone = this.getIndexZone(toIdx);\n if (fromZone === toZone) {\n if (fromZone === RangeZone.Before || fromZone === RangeZone.After) {\n return;\n } else if (fromZone === RangeZone.Inside) {\n return {type: ResultType.Move, fromIdx, toIdx};\n }\n } else {\n const addIdx = this.clampIndex(toIdx);\n const removeIdx = this.clampIndex(fromIdx);\n const addValue = addIdx === toIdx ? value : getIteratorValueAtIdx(list[Symbol.iterator](), addIdx)!;\n return {type: ResultType.RemoveAndAdd, removeIdx, addIdx, value: addValue};\n }\n }\n\n private createAddResult(addIdx: number, value: T): AddRemoveResult {\n // if the view port isn't filled yet, we don't remove\n if (this.viewportItemCount > this.length) {\n return {type: ResultType.Add, addIdx, value, newRange: this.deriveRange(1, 1)};\n } else {\n const removeIdx = this.clampIndex(Number.MAX_SAFE_INTEGER);\n return {type: ResultType.RemoveAndAdd, removeIdx, addIdx, value, newRange: this.deriveRange(1, 0)};\n }\n }\n\n private createRemoveResult(removeIdx: number, list: Iterable): AddRemoveResult {\n if (this.end < this.totalLength) {\n // we have items below the range, we can add one from there to fill the viewport\n const addIdx = this.clampIndex(Number.MAX_SAFE_INTEGER);\n // we assume the value has already been removed from the list,\n // so we can just look up the next value which is already at the same idx\n const value = getIteratorValueAtIdx(list[Symbol.iterator](), addIdx)!;\n return {type: ResultType.RemoveAndAdd, removeIdx, value, addIdx, newRange: this.deriveRange(-1, 0)};\n } else if (this.start !== 0) {\n // move the range 1 item up so we still display a viewport full of items\n const newRange = this.deriveRange(-1, 0, 1);\n const addIdx = newRange.start;\n // we assume the value has already been removed from the list,\n // so we can just look up the next value which is already at the same idx\n const value = getIteratorValueAtIdx(list[Symbol.iterator](), addIdx)!;\n return {type: ResultType.RemoveAndAdd, removeIdx, value, addIdx, newRange};\n } else {\n // we can't add at the bottom nor top, already constrained\n return {type: ResultType.Remove, removeIdx, newRange: this.deriveRange(-1, 0)};\n }\n }\n\n private deriveRange(totalLengthInc: number, viewportItemCountDecr: number, startDecr: number = 0): ListRange {\n const start = this.start - startDecr;\n const totalLength = this.totalLength + totalLengthInc;\n // prevent end being larger than totalLength\n const end = Math.min(Math.max(start, this.end - startDecr + viewportItemCountDecr), totalLength);\n return new ListRange(\n start,\n end,\n totalLength,\n this.viewportItemCount\n );\n }\n}\n\nimport {ObservableArray} from \"../../../../observable/list/ObservableArray\";\n\nexport function tests() {\n return {\n \"fromViewport\": assert => {\n const range = ListRange.fromViewport(10, 20, 90, 30);\n assert.equal(range.start, 1);\n assert.equal(range.end, 6);\n assert.equal(range.totalLength, 10);\n },\n \"fromViewport at end\": assert => {\n const itemHeight = 20;\n const range = ListRange.fromViewport(10, itemHeight, 3 * itemHeight, 7 * itemHeight);\n assert.equal(range.start, 7);\n assert.equal(range.end, 10);\n assert.equal(range.totalLength, 10);\n },\n \"fromViewport with not enough items to fill viewport\": assert => {\n const itemHeight = 20;\n const range = ListRange.fromViewport(5, itemHeight, 8 * itemHeight, 0);\n assert.equal(range.start, 0);\n assert.equal(range.end, 5);\n assert.equal(range.totalLength, 5);\n assert.equal(range.length, 5);\n assert.equal(range.viewportItemCount, 8);\n },\n \"expand at start of list\": assert => {\n const range = new ListRange(1, 5, 10);\n const expanded = range.expand(2);\n assert.equal(expanded.start, 0);\n assert.equal(expanded.end, 7);\n assert.equal(expanded.totalLength, 10);\n assert.equal(expanded.length, 7);\n },\n \"expand at end of list\": assert => {\n const range = new ListRange(7, 9, 10);\n const expanded = range.expand(2);\n assert.equal(expanded.start, 5);\n assert.equal(expanded.end, 10);\n assert.equal(expanded.totalLength, 10);\n assert.equal(expanded.length, 5);\n },\n \"expand in middle of list\": assert => {\n const range = new ListRange(4, 6, 10);\n const expanded = range.expand(2);\n assert.equal(expanded.start, 2);\n assert.equal(expanded.end, 8);\n assert.equal(expanded.totalLength, 10);\n assert.equal(expanded.length, 6);\n },\n \"queryAdd with addition before range\": assert => {\n const list = new ObservableArray([\"b\", \"c\", \"d\", \"e\"]);\n const range = new ListRange(1, 3, list.length);\n let added = false;\n list.subscribe(defaultObserverWith({\n onAdd(idx, value) {\n added = true;\n const result = range.queryAdd(idx, value, list);\n assert.deepEqual(result, {\n type: ResultType.RemoveAndAdd,\n removeIdx: 2,\n addIdx: 1,\n value: \"b\",\n newRange: new ListRange(1, 3, 5)\n });\n }\n }));\n list.insert(0, \"a\");\n assert(added);\n },\n \"queryAdd with addition within range\": assert => {\n const list = new ObservableArray([\"a\", \"b\", \"d\", \"e\"]);\n const range = new ListRange(1, 3, list.length);\n let added = false;\n list.subscribe(defaultObserverWith({\n onAdd(idx, value) {\n added = true;\n const result = range.queryAdd(idx, value, list);\n assert.deepEqual(result, {\n type: ResultType.RemoveAndAdd,\n removeIdx: 2,\n addIdx: 2,\n value: \"c\",\n newRange: new ListRange(1, 3, 5)\n });\n }\n }));\n list.insert(2, \"c\");\n assert(added);\n },\n \"queryAdd with addition after range\": assert => {\n const list = new ObservableArray([\"a\", \"b\", \"c\", \"d\"]);\n const range = new ListRange(1, 3, list.length);\n let added = false;\n list.subscribe(defaultObserverWith({\n onAdd(idx, value) {\n added = true;\n const result = range.queryAdd(idx, value, list);\n assert.deepEqual(result, {\n type: ResultType.UpdateRange,\n newRange: new ListRange(1, 3, 5)\n });\n }\n }));\n list.insert(4, \"e\");\n assert(added);\n },\n \"queryAdd with too few items to fill viewport grows the range\": assert => {\n const list = new ObservableArray([\"a\", \"b\", \"d\"]);\n const viewportItemCount = 4;\n const range = new ListRange(0, 3, list.length, viewportItemCount);\n let added = false;\n list.subscribe(defaultObserverWith({\n onAdd(idx, value) {\n added = true;\n const result = range.queryAdd(idx, value, list);\n assert.deepEqual(result, {\n type: ResultType.Add,\n newRange: new ListRange(0, 4, 4),\n addIdx: 2,\n value: \"c\"\n });\n }\n }));\n list.insert(2, \"c\");\n assert(added);\n },\n \"queryRemove with removal before range\": assert => {\n const list = new ObservableArray([\"a\", \"b\", \"c\", \"d\", \"e\"]);\n const range = new ListRange(1, 3, list.length);\n let removed = false;\n list.subscribe(defaultObserverWith({\n onRemove(idx) {\n removed = true;\n const result = range.queryRemove(idx, list);\n assert.deepEqual(result, {\n type: ResultType.RemoveAndAdd,\n removeIdx: 1,\n addIdx: 2,\n value: \"d\",\n newRange: new ListRange(1, 3, 4)\n });\n }\n }));\n list.remove(0);\n assert(removed);\n },\n \"queryRemove with removal within range\": assert => {\n const list = new ObservableArray([\"a\", \"b\", \"c\", \"d\", \"e\"]);\n const range = new ListRange(1, 3, list.length);\n let removed = false;\n list.subscribe(defaultObserverWith({\n onRemove(idx) {\n removed = true;\n const result = range.queryRemove(idx, list);\n assert.deepEqual(result, {\n type: ResultType.RemoveAndAdd,\n removeIdx: 2,\n addIdx: 2,\n value: \"d\",\n newRange: new ListRange(1, 3, 4)\n });\n assert.equal(list.length, 4);\n }\n }));\n list.remove(2);\n assert(removed);\n },\n \"queryRemove with removal after range\": assert => {\n const list = new ObservableArray([\"a\", \"b\", \"c\", \"d\", \"e\"]);\n const range = new ListRange(1, 3, list.length);\n let removed = false;\n list.subscribe(defaultObserverWith({\n onRemove(idx) {\n removed = true;\n const result = range.queryRemove(idx, list);\n assert.deepEqual(result, {\n type: ResultType.UpdateRange,\n newRange: new ListRange(1, 3, 4)\n });\n }\n }));\n list.remove(3);\n assert(removed);\n },\n \"queryRemove at bottom of range moves range one up\": assert => {\n const list = new ObservableArray([\"a\", \"b\", \"c\"]);\n const range = new ListRange(1, 3, list.length);\n let removed = false;\n list.subscribe(defaultObserverWith({\n onRemove(idx) {\n removed = true;\n const result = range.queryRemove(idx, list);\n assert.deepEqual(result, {\n newRange: new ListRange(0, 2, 2),\n type: ResultType.RemoveAndAdd,\n removeIdx: 2,\n addIdx: 0,\n value: \"a\"\n });\n }\n }));\n list.remove(2);\n assert(removed);\n },\n \"queryRemove with range on full length shrinks range\": assert => {\n const list = new ObservableArray([\"a\", \"b\", \"c\"]);\n const range = new ListRange(0, 3, list.length);\n let removed = false;\n list.subscribe(defaultObserverWith({\n onRemove(idx) {\n removed = true;\n const result = range.queryRemove(idx, list);\n assert.deepEqual(result, {\n newRange: new ListRange(0, 2, 2, 3),\n type: ResultType.Remove,\n removeIdx: 2,\n });\n }\n }));\n list.remove(2);\n assert(removed);\n },\n \"queryMove with move inside range\": assert => {\n const list = new ObservableArray([\"a\", \"b\", \"c\", \"d\", \"e\"]);\n const range = new ListRange(1, 4, list.length);\n let moved = false;\n list.subscribe(defaultObserverWith({\n onMove(fromIdx, toIdx, value) {\n moved = true;\n const result = range.queryMove(fromIdx, toIdx, value, list);\n assert.deepEqual(result, {\n type: ResultType.Move,\n fromIdx: 2,\n toIdx: 3\n });\n }\n }));\n list.move(2, 3);\n assert(moved);\n },\n \"queryMove with move from before to inside range\": assert => {\n const list = new ObservableArray([\"a\", \"b\", \"c\", \"d\", \"e\"]);\n const range = new ListRange(2, 5, list.length);\n let moved = false;\n list.subscribe(defaultObserverWith({\n onMove(fromIdx, toIdx, value) {\n moved = true;\n const result = range.queryMove(fromIdx, toIdx, value, list);\n assert.deepEqual(result, {\n type: ResultType.RemoveAndAdd,\n removeIdx: 2,\n addIdx: 3,\n value: \"a\"\n });\n }\n }));\n list.move(0, 3); // move \"a\" to after \"d\"\n assert(moved);\n },\n \"queryMove with move from after to inside range\": assert => {\n const list = new ObservableArray([\"a\", \"b\", \"c\", \"d\", \"e\"]);\n const range = new ListRange(0, 3, list.length);\n let moved = false;\n list.subscribe(defaultObserverWith({\n onMove(fromIdx, toIdx, value) {\n moved = true;\n const result = range.queryMove(fromIdx, toIdx, value, list);\n assert.deepEqual(result, {\n type: ResultType.RemoveAndAdd,\n removeIdx: 2,\n addIdx: 1,\n value: \"e\"\n });\n }\n }));\n list.move(4, 1); // move \"e\" to before \"b\"\n assert(moved);\n },\n \"queryMove with move inside range to after\": assert => {\n const list = new ObservableArray([\"a\", \"b\", \"c\", \"d\", \"e\"]);\n const range = new ListRange(0, 3, list.length);\n let moved = false;\n list.subscribe(defaultObserverWith({\n onMove(fromIdx, toIdx, value) {\n moved = true;\n const result = range.queryMove(fromIdx, toIdx, value, list);\n assert.deepEqual(result, {\n type: ResultType.RemoveAndAdd,\n removeIdx: 1,\n addIdx: 2,\n value: \"d\"\n });\n }\n }));\n list.move(1, 3); // move \"b\" to after \"d\"\n assert(moved);\n },\n \"queryMove with move inside range to before\": assert => {\n const list = new ObservableArray([\"a\", \"b\", \"c\", \"d\", \"e\"]);\n const range = new ListRange(2, 5, list.length);\n let moved = false;\n list.subscribe(defaultObserverWith({\n onMove(fromIdx, toIdx, value) {\n moved = true;\n const result = range.queryMove(fromIdx, toIdx, value, list);\n assert.deepEqual(result, {\n type: ResultType.RemoveAndAdd,\n removeIdx: 3,\n addIdx: 2,\n value: \"b\"\n });\n }\n }));\n list.move(3, 0); // move \"d\" to before \"a\"\n assert(moved);\n },\n \"queryMove with move from before range to after\": assert => {\n const list = new ObservableArray([\"a\", \"b\", \"c\", \"d\", \"e\"]);\n const range = new ListRange(1, 4, list.length);\n let moved = false;\n list.subscribe(defaultObserverWith({\n onMove(fromIdx, toIdx, value) {\n moved = true;\n const result = range.queryMove(fromIdx, toIdx, value, list);\n assert.deepEqual(result, {\n type: ResultType.RemoveAndAdd,\n removeIdx: 1,\n addIdx: 3,\n value: \"e\"\n });\n }\n }));\n list.move(0, 4); // move \"a\" to after \"e\"\n assert(moved);\n },\n // would be good to test here what multiple mutations look like with executing the result of queryXXX\n // on an array, much like we do in the view.\n };\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {tag} from \"./html\";\nimport {removeChildren, mountView} from \"./utils\";\nimport {ListRange, ResultType, AddRemoveResult} from \"./ListRange\";\nimport {ListView, IOptions as IParentOptions} from \"./ListView\";\nimport {IView} from \"./types\";\n\nexport interface IOptions extends IParentOptions {\n itemHeight: number;\n overflowItems?: number;\n}\n\nexport class LazyListView extends ListView {\n private renderRange?: ListRange;\n private height?: number;\n private itemHeight: number;\n private overflowItems: number;\n private scrollContainer?: HTMLElement;\n\n constructor(\n {itemHeight, overflowItems = 20, ...options}: IOptions, \n childCreator: (value: T) => V\n ) {\n super(options, childCreator);\n this.itemHeight = itemHeight;\n this.overflowItems = overflowItems;\n }\n\n handleEvent(e: Event) {\n if (e.type === \"scroll\") {\n this.handleScroll();\n } else {\n super.handleEvent(e);\n }\n }\n\n handleScroll() {\n const visibleRange = this._getVisibleRange();\n // don't contain empty ranges\n // as it will prevent clearing the list\n // once it is scrolled far enough out of view\n if (visibleRange.length !== 0 && !this.renderRange!.contains(visibleRange)) {\n const prevRenderRange = this.renderRange!;\n this.renderRange = visibleRange.expand(this.overflowItems);\n this.renderUpdate(prevRenderRange, this.renderRange);\n }\n }\n \n // override\n async loadList() {\n /*\n Wait two frames for the return from mount() to be inserted into DOM.\n This should be enough, but if this gives us trouble we can always use\n MutationObserver.\n */\n await new Promise(r => requestAnimationFrame(r));\n await new Promise(r => requestAnimationFrame(r));\n\n if (!this._list) {\n return;\n }\n this._subscription = this._list.subscribe(this);\n const visibleRange = this._getVisibleRange();\n this.renderRange = visibleRange.expand(this.overflowItems);\n this._childInstances = [];\n this.reRenderFullRange(this.renderRange);\n }\n\n private _getVisibleRange() {\n const {clientHeight, scrollTop} = this.root()!;\n if (clientHeight === 0) {\n throw new Error(\"LazyListView height is 0\");\n }\n return ListRange.fromViewport(this._list.length, this.itemHeight, clientHeight, scrollTop);\n }\n\n private reRenderFullRange(range: ListRange) {\n removeChildren(this._listElement!);\n const fragment = document.createDocumentFragment();\n const it = this._list[Symbol.iterator]();\n this._childInstances!.length = 0;\n range.forEachInIterator(it, item => {\n const child = this._childCreator(item);\n this._childInstances!.push(child);\n fragment.appendChild(mountView(child, this._mountArgs));\n });\n this._listElement!.appendChild(fragment);\n this.adjustPadding(range);\n }\n\n private renderUpdate(prevRange: ListRange, newRange: ListRange) {\n if (newRange.intersects(prevRange)) {\n // remove children in reverse order so child index isn't affected by previous removals\n for (const idxInList of prevRange.reverseIterable()) {\n if (!newRange.containsIndex(idxInList)) {\n const localIdx = idxInList - prevRange.start;\n this.removeChild(localIdx);\n }\n }\n // use forEachInIterator instead of for loop as we need to advance\n // the list iterator to the start of the range first\n newRange.forEachInIterator(this._list[Symbol.iterator](), (item, idxInList) => {\n if (!prevRange.containsIndex(idxInList)) {\n const localIdx = idxInList - newRange.start;\n this.addChild(localIdx, item);\n }\n });\n this.adjustPadding(newRange);\n } else {\n this.reRenderFullRange(newRange);\n }\n }\n\n private adjustPadding(range: ListRange) {\n const paddingTop = range.start * this.itemHeight;\n const paddingBottom = (range.totalLength - range.end) * this.itemHeight;\n const style = this._listElement!.style;\n style.paddingTop = `${paddingTop}px`;\n style.paddingBottom = `${paddingBottom}px`;\n }\n\n mount() {\n const listElement = super.mount();\n this.scrollContainer = tag.div({className: \"LazyListParent\"}, listElement) as HTMLElement;\n this.scrollContainer.addEventListener(\"scroll\", this);\n return this.scrollContainer;\n }\n\n unmount() {\n this.root()!.removeEventListener(\"scroll\", this);\n this.scrollContainer = undefined;\n super.unmount();\n }\n\n root(): Element | undefined {\n return this.scrollContainer;\n }\n\n private get _listElement(): HTMLElement | undefined {\n return super.root() as HTMLElement | undefined;\n }\n\n onAdd(idx: number, value: T) {\n const result = this.renderRange!.queryAdd(idx, value, this._list);\n this.applyRemoveAddResult(result);\n }\n\n onRemove(idx: number, value: T) {\n const result = this.renderRange!.queryRemove(idx, this._list);\n this.applyRemoveAddResult(result);\n }\n\n onMove(fromIdx: number, toIdx: number, value: T) {\n const result = this.renderRange!.queryMove(fromIdx, toIdx, value, this._list);\n if (result) {\n if (result.type === ResultType.Move) {\n this.moveChild(\n this.renderRange!.toLocalIndex(result.fromIdx),\n this.renderRange!.toLocalIndex(result.toIdx)\n );\n } else {\n this.applyRemoveAddResult(result);\n }\n }\n }\n\n onUpdate(i: number, value: T, params: any) {\n if (this.renderRange!.containsIndex(i)) {\n this.updateChild(this.renderRange!.toLocalIndex(i), value, params);\n }\n }\n\n private applyRemoveAddResult(result: AddRemoveResult) {\n // order is important here, the new range can have a different start\n if (result.type === ResultType.Remove || result.type === ResultType.RemoveAndAdd) {\n this.removeChild(this.renderRange!.toLocalIndex(result.removeIdx));\n }\n if (result.newRange) {\n this.renderRange = result.newRange;\n this.adjustPadding(this.renderRange)\n }\n if (result.type === ResultType.Add || result.type === ResultType.RemoveAndAdd) {\n this.addChild(this.renderRange!.toLocalIndex(result.addIdx), result.value);\n }\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {TemplateView} from \"../../general/TemplateView\";\nimport {AvatarView} from \"../../AvatarView.js\";\n\nexport class MemberTileView extends TemplateView {\n render(t, vm) {\n return t.li({ className: \"MemberTileView\" },\n t.a({ href: vm.detailsUrl },\n [\n t.view(new AvatarView(vm, 32)),\n t.div({ className: \"MemberTileView_name\" }, (vm) => vm.name),\n ])\n );\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {LazyListView} from \"../../general/LazyListView\";\nimport {MemberTileView} from \"./MemberTileView.js\";\nimport {TemplateView} from \"../../general/TemplateView\";\n\nexport class MemberListView extends TemplateView {\n render(t, vm) {\n const list = new LazyListView({\n list: vm.memberTileViewModels,\n className: \"MemberListView__list\",\n itemHeight: 40\n }, tileViewModel => new MemberTileView(tileViewModel));\n return t.div({ className: \"MemberListView\" }, [\n t.div({ className: \"MemberListView__invite-container\" }, [\n t.button(\n {\n className: \"MemberListView__invite-btn button-action primary\",\n onClick: () => vm.openInvitePanel(),\n },\n vm.i18n`Invite to this room`\n ),\n ]),\n t.view(list),\n ]);\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {AvatarView} from \"../../AvatarView.js\";\nimport {TemplateView} from \"../../general/TemplateView\";\n\nexport class MemberDetailsView extends TemplateView {\n render(t, vm) {\n const securityNodes = [\n t.p(vm.isEncrypted ?\n vm.i18n`Messages in this room are end-to-end encrypted.` :\n vm.i18n`Messages in this room are not end-to-end encrypted.`),\n ]\n\n if (vm.features.crossSigning) {\n securityNodes.push(t.div({className: \"MemberDetailsView_shield_container\"}, [\n t.span({className: vm => `MemberDetailsView_shield_${vm.trustShieldColor}`}),\n t.p({className: \"MemberDetailsView_shield_description\"}, vm => vm.trustDescription)\n ]));\n }\n\n return t.div({className: \"MemberDetailsView\"},\n [ t.view(new AvatarView(vm, 128)),\n t.div({className: \"MemberDetailsView_name\"}, t.h2(vm => vm.name)),\n t.div({className: \"MemberDetailsView_id\"}, vm.userId),\n this._createSection(t, vm.i18n`Role`, vm => vm.role),\n this._createSection(t, vm.i18n`Security`, securityNodes),\n this._createOptions(t, vm)\n ]);\n }\n\n _createSection(t, label, value) {\n return t.div({ className: \"MemberDetailsView_section\" },\n [\n t.div({className: \"MemberDetailsView_label\"}, label),\n t.div({className: \"MemberDetailsView_value\"}, value)\n ]);\n }\n\n _createOptions(t, vm) {\n const options = [\n t.a({href: vm.linkToUser, target: \"_blank\", rel: \"noopener\"}, vm.i18n`Open Link to User`),\n t.button({className: \"text\", onClick: () => vm.openDirectMessage()}, vm.i18n`Open direct message`)\n ];\n if (vm.features.crossSigning) {\n if (vm.canVerifyUser) {\n options.push(t.button({ className: \"text\", onClick: () => vm.verifyUser() }, vm.i18n`Verify`));\n }\n const onClick = () => {\n if (confirm(\"You don't want to do this with any account but a test account. This will cross-sign this user without verifying their keys first. You won't be able to undo this apart from resetting your cross-signing keys.\")) {\n vm.signUser();\n }\n };\n options.push(t.button({className: \"text\", onClick}, vm.i18n`Cross-sign user (DO NOT USE, TESTING ONLY)`))\n }\n return t.div({ className: \"MemberDetailsView_section\" },\n [\n t.div({className: \"MemberDetailsView_label\"}, vm.i18n`Options`),\n t.div({className: \"MemberDetailsView_options\"}, options)\n ]);\n }\n}\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {Builder, TemplateView} from \"../../../general/TemplateView\";\nimport {spinner} from \"../../../common.js\";\nimport {WaitingForOtherUserViewModel} from \"../../../../../../domain/session/verification/stages/WaitingForOtherUserViewModel\";\n\nexport class WaitingForOtherUserView extends TemplateView {\n render(t: Builder, vm: WaitingForOtherUserViewModel) {\n return t.div({ className: \"WaitingForOtherUserView\" }, [\n t.div({ className: \"WaitingForOtherUserView__heading\" }, [\n spinner(t),\n t.h2(\n { className: \"WaitingForOtherUserView__title\" },\n vm.title,\n ),\n ]),\n t.p({ className: \"WaitingForOtherUserView__description\" },\n vm.description,\n ),\n t.div({ className: \"WaitingForOtherUserView__actions\" },\n t.button({\n className: {\n \"button-action\": true,\n \"primary\": true,\n \"destructive\": true,\n },\n onclick: () => vm.cancel(),\n }, \"Cancel\")\n ),\n ]);\n }\n}\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {Builder, TemplateView} from \"../../../general/TemplateView\";\nimport {VerificationCancelledViewModel} from \"../../../../../../domain/session/verification/stages/VerificationCancelledViewModel\";\n\nexport class VerificationCancelledView extends TemplateView {\n render(t: Builder, vm: VerificationCancelledViewModel) {\n return t.div(\n {\n className: \"VerificationCancelledView\",\n },\n [\n t.h2(\n { className: \"VerificationCancelledView__title\" },\n vm.title,\n ),\n t.p(\n { className: \"VerificationCancelledView__description\" },\n vm.description,\n ),\n t.div({ className: \"VerificationCancelledView__actions\" }, [\n t.button({\n className: {\n \"button-action\": true,\n \"primary\": true,\n },\n onclick: () => vm.dismiss(),\n }, \"Got it\")\n ]),\n ]\n );\n }\n}\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {Builder, TemplateView} from \"../../../general/TemplateView\";\nimport {spinner} from \"../../../common.js\"\nimport type {SelectMethodViewModel} from \"../../../../../../domain/session/verification/stages/SelectMethodViewModel\";\n\nexport class SelectMethodView extends TemplateView {\n render(t: Builder) {\n return t.div({ className: \"SelectMethodView\" }, [\n t.map(vm => vm.hasProceeded, (hasProceeded, t, vm) => {\n if (hasProceeded) {\n return spinner(t);\n }\n else return t.div([\n t.div({ className: \"SelectMethodView__heading\" }, [\n t.h2( { className: \"SelectMethodView__title\" }, this.getHeading(t, vm)),\n ]),\n t.p({ className: \"SelectMethodView__description\" }, this.getSubheading(vm)),\n t.div({ className: \"SelectMethodView__actions\" }, [\n t.button(\n {\n className: {\n \"button-action\": true,\n primary: true,\n destructive: true,\n },\n onclick: () => vm.cancel(),\n },\n \"Cancel\"\n ),\n t.button(\n {\n className: {\n \"button-action\": true,\n primary: true,\n },\n onclick: () => vm.proceed(),\n },\n \"Proceed\"\n ),\n ]),\n ]);\n }),\n ]);\n }\n\n getHeading(t: Builder, vm: SelectMethodViewModel) {\n if (vm.isCrossSigningAnotherUser) {\n return [vm.i18n`Verify user `, t.span({\n className: \"SelectMethodView__name\"\n }, vm.otherUserId), vm.i18n` by comparing emojis?`];\n } else {\n return [vm.i18n`Verify device`, t.span({\n className: \"SelectMethodView__name\"\n }, vm.deviceName), vm.i18n` by comparing emojis?`];\n }\n }\n\n getSubheading(vm: SelectMethodViewModel): string {\n if (vm.isCrossSigningAnotherUser) {\n return vm.i18n`You are about to verify user (${vm.otherUserId}) by comparing emojis.`;\n } else {\n return vm.i18n`You are about to verify your other device (${vm.deviceName}) by comparing emojis.`;\n }\n }\n}\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {Builder, TemplateView} from \"../../../general/TemplateView\";\nimport {spinner} from \"../../../common.js\"\nimport type {VerifyEmojisViewModel} from \"../../../../../../domain/session/verification/stages/VerifyEmojisViewModel\";\n\nexport class VerifyEmojisView extends TemplateView {\n render(t: Builder, vm: VerifyEmojisViewModel) {\n const emojiList = vm.emojis.reduce((acc, [emoji, name]) => {\n const e = t.div({ className: \"EmojiContainer\" }, [\n t.div({ className: \"EmojiContainer__emoji\" }, emoji),\n t.div({ className: \"EmojiContainer__name\" }, name),\n ]);\n acc.push(e);\n return acc;\n }, [] as any);\n const emojiCollection = t.div({ className: \"EmojiCollection\" }, emojiList);\n return t.div({ className: \"VerifyEmojisView\" }, [\n t.div({ className: \"VerifyEmojisView__heading\" }, [\n t.h2(\n { className: \"VerifyEmojisView__title\" },\n vm.i18n`Do the emojis match?`\n ),\n ]),\n t.p(\n { className: \"VerifyEmojisView__description\" },\n vm.i18n`Confirm the emoji below are displayed on both devices, in the same order:`\n ),\n t.div({ className: \"VerifyEmojisView__emojis\" }, emojiCollection),\n t.map(vm => vm.isWaiting, (isWaiting, t, vm) => {\n if (isWaiting) {\n return t.div({ className: \"VerifyEmojisView__waiting\" }, [\n spinner(t),\n t.span(vm.i18n`Waiting for you to verify on your other device`),\n ]);\n }\n else {\n return t.div({ className: \"VerifyEmojisView__actions\" }, [\n t.button(\n {\n className: {\n \"button-action\": true,\n primary: true,\n destructive: true,\n },\n onclick: () => vm.setEmojiMatch(false),\n },\n vm.i18n`They don't match`\n ),\n t.button(\n {\n className: {\n \"button-action\": true,\n primary: true,\n },\n onclick: () => vm.setEmojiMatch(true),\n },\n vm.i18n`They match`\n ),\n ]);\n }\n })\n ]);\n }\n}\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {Builder, TemplateView} from \"../../../general/TemplateView\";\nimport type {VerificationCompleteViewModel} from \"../../../../../../domain/session/verification/stages/VerificationCompleteViewModel\";\n\nexport class VerificationCompleteView extends TemplateView {\n render(t: Builder, vm: VerificationCompleteViewModel) {\n return t.div({ className: \"VerificationCompleteView\" }, [\n t.div({className: \"VerificationCompleteView__icon\"}),\n t.div({ className: \"VerificationCompleteView__heading\" }, [\n t.h2(\n { className: \"VerificationCompleteView__title\" },\n vm.i18n`Verification completed successfully!`\n ),\n ]),\n t.p(\n { className: \"VerificationCompleteView__description\" }, vm.verificationSuccessfulMessage),\n t.div({ className: \"VerificationCompleteView__actions\" }, [\n t.button({\n className: {\n \"button-action\": true,\n \"primary\": true,\n },\n onclick: () => vm.dismiss(),\n }, \"Got it\")\n ]),\n ]);\n }\n}\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {Builder, TemplateView} from \"../../../general/TemplateView\";\nimport type {MissingKeysViewModel} from \"../../../../../../domain/session/verification/stages/MissingKeysViewModel\";\n\nexport class MissingKeysView extends TemplateView {\n render(t: Builder, vm: MissingKeysViewModel) {\n return t.div(\n {\n className: \"MissingKeysView\",\n },\n [\n t.h2(\n { className: \"MissingKeysView__heading\" },\n vm.i18n`Verification is currently not possible!`\n ),\n t.p(\n { className: \"MissingKeysView__description\" },\n vm.i18n`Some keys needed for verification are missing. You can fix this by enabling key backup in settings.` \n ),\n t.div({ className: \"MissingKeysView__actions\" }, [\n t.button({\n className: {\n \"button-action\": true,\n \"primary\": true,\n },\n onclick: () => vm.gotoSettings(),\n }, \"Open Settings\")\n ]),\n ]\n );\n }\n}\n","/*\nCopyright 2022 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {Builder, InlineTemplateView, TemplateView} from \"../../general/TemplateView\";\nimport {DeviceVerificationViewModel} from \"../../../../../domain/session/verification/DeviceVerificationViewModel\";\nimport {WaitingForOtherUserView} from \"./stages/WaitingForOtherUserView\";\nimport {VerificationCancelledView} from \"./stages/VerificationCancelledView\";\nimport {SelectMethodView} from \"./stages/SelectMethodView\";\nimport {VerifyEmojisView} from \"./stages/VerifyEmojisView\";\nimport {VerificationCompleteView} from \"./stages/VerificationCompleteView\";\nimport {MissingKeysView} from \"./stages/MissingKeysView\";\nimport {spinner} from \"../../common.js\";\n\nexport class DeviceVerificationView extends TemplateView {\n render(t: Builder, vm: DeviceVerificationViewModel) {\n return t.div({\n className: {\n \"middle\": !vm.isHappeningInRoom,\n \"DeviceVerificationView\": true,\n }\n }, [\n t.mapView(vm => vm.currentStageViewModel, (vm) => {\n switch (vm?.kind) {\n case \"waiting-for-user\": return new WaitingForOtherUserView(vm);\n case \"verification-cancelled\": return new VerificationCancelledView(vm);\n case \"select-method\": return new SelectMethodView(vm);\n case \"verify-emojis\": return new VerifyEmojisView(vm);\n case \"verification-completed\": return new VerificationCompleteView(vm);\n case \"keys-missing\": return new MissingKeysView(vm);\n default: return new InlineTemplateView(vm, () => spinner(t));\n }\n })\n ])\n }\n}\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {Builder, TemplateView} from \"../../general/TemplateView\";\nimport {ErrorView} from \"../../general/ErrorView\";\nimport type {InvitePanelViewModel} from \"../../../../../domain/session/rightpanel/InvitePanelViewModel\";\n\nexport class InvitePanelView extends TemplateView {\n render(t: Builder, vm: InvitePanelViewModel) {\n const input = t.input({\n className: \"InvitePanelView__input\",\n type: \"text\",\n placeholder: \"Enter user-id of user\",\n onkeydown: (e: KeyboardEvent) => {\n if (e.key === \"Enter\") {\n vm.invite((input as HTMLInputElement).value);\n }\n }\n });\n return t.div({ className: \"InvitePanelView\" }, [\n t.h3({ className: \"InvitePanelView__heading\" },\n (vm: InvitePanelViewModel) => vm.i18n`Invite to ${vm.roomName}`\n ),\n t.div({ className: \"InvitePanelView__form\" }, [\n input,\n t.button({\n className: \"InvitePanelView__btn button-action primary\",\n onClick: () => vm.invite((input as HTMLInputElement).value),\n }, \"Invite\"),\n ]),\n t.div({ className: \"InvitePanelView__error\" }, [\n t.ifView(vm => !!vm.errorViewModel, vm => new ErrorView(vm.errorViewModel!)),\n ]),\n ]);\n }\n\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {TemplateView} from \"../../general/TemplateView\";\nimport {RoomDetailsView} from \"./RoomDetailsView.js\";\nimport {MemberListView} from \"./MemberListView.js\";\nimport {LoadingView} from \"../../general/LoadingView.js\";\nimport {MemberDetailsView} from \"./MemberDetailsView.js\";\nimport {DeviceVerificationView} from \"../verification/DeviceVerificationView\";\nimport {InvitePanelView} from \"./InvitePanelView\";\n\nexport class RightPanelView extends TemplateView {\n render(t) {\n return t.div({ className: \"RightPanelView\" },\n [\n t.ifView(vm => vm.activeViewModel, vm => new ButtonsView(vm)),\n t.mapView(vm => vm.activeViewModel, vm => this._viewFromType(vm))\n ]\n );\n }\n\n _viewFromType(vm) {\n const type = vm?.type;\n switch (type) {\n case \"room-details\":\n return new RoomDetailsView(vm);\n case \"member-list\":\n return new MemberListView(vm);\n case \"member-details\":\n return new MemberDetailsView(vm);\n case \"invite\":\n return new InvitePanelView(vm);\n case \"verification\":\n return new DeviceVerificationView(vm);\n default:\n return new LoadingView();\n }\n }\n}\n\nclass ButtonsView extends TemplateView {\n render(t, vm) {\n return t.div({ className: \"RightPanelView_buttons\" },\n [\n t.button({\n className: {\n \"back\": true,\n \"button-utility\": true,\n \"hide\": (vm) => !vm.activeViewModel.shouldShowBackButton\n }, onClick: () => vm.showPreviousPanel()}),\n t.button({className: \"close button-utility\", onClick: () => vm.closePanel()})\n ]);\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {ListView} from \"../../../general/ListView\";\nimport {TemplateView} from \"../../../general/TemplateView\";\n\nexport class ReactionsView extends ListView {\n constructor(reactionsViewModel) {\n const options = {\n className: \"Timeline_messageReactions\",\n tagName: \"div\",\n list: reactionsViewModel.reactions,\n onItemClick: reactionView => reactionView.onClick(),\n }\n super(options, reactionVM => new ReactionView(reactionVM));\n }\n}\n\nclass ReactionView extends TemplateView {\n render(t, vm) {\n return t.button({\n className: {\n active: vm => vm.isActive,\n pending: vm => vm.isPending\n },\n }, [vm.key, \" \", vm => `${vm.count}`]);\n }\n\n onClick() {\n this.value.toggle();\n }\n}\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {renderStaticAvatar} from \"../../../avatar\";\nimport {tag} from \"../../../general/html\";\nimport {mountView} from \"../../../general/utils\";\nimport {TemplateView} from \"../../../general/TemplateView\";\nimport {Popup} from \"../../../general/Popup.js\";\nimport {Menu} from \"../../../general/Menu.js\";\nimport {ReactionsView} from \"./ReactionsView.js\";\n\nexport class BaseMessageView extends TemplateView {\n constructor(value, viewClassForTile, renderFlags, tagName = \"li\") {\n super(value);\n this._menuPopup = null;\n this._tagName = tagName;\n this._viewClassForTile = viewClassForTile;\n // TODO An enum could be nice to make code easier to read at call sites.\n this._renderFlags = renderFlags;\n }\n\n get _interactive() { return this._renderFlags?.interactive ?? true; }\n get _isReplyPreview() { return this._renderFlags?.reply; }\n\n render(t, vm) {\n const children = [this.renderMessageBody(t, vm)];\n if (this._interactive) {\n children.push(t.button({className: \"Timeline_messageOptions\"}, \"⋯\"));\n }\n const li = t.el(this._tagName, {\n className: {\n \"Timeline_message\": true,\n own: vm.isOwn,\n unsent: vm.isUnsent,\n unverified: vm => vm.isUnverified,\n disabled: !this._interactive,\n continuation: vm => vm.isContinuation,\n },\n 'data-event-id': vm.eventId\n }, children);\n // given that there can be many tiles, we don't add\n // unneeded DOM nodes in case of a continuation, and we add it\n // with a side-effect binding to not have to create sub views,\n // as the avatar or sender doesn't need any bindings or event handlers.\n // don't use `t` from within the side-effect callback\n t.mapSideEffect(vm => vm.isContinuation, (isContinuation, wasContinuation) => {\n if (isContinuation && wasContinuation === false) {\n li.removeChild(li.querySelector(\".Timeline_messageAvatar\"));\n li.removeChild(li.querySelector(\".Timeline_messageSender\"));\n } else if (!isContinuation && !this._isReplyPreview) {\n const avatar = tag.a({href: vm.memberPanelLink, className: \"Timeline_messageAvatar\"}, [renderStaticAvatar(vm, 30)]);\n const sender = tag.div(\n {\n className: `Timeline_messageSender usercolor${vm.avatarColorNumber}`,\n title: vm.sender,\n },\n vm.displayName,\n );\n li.insertBefore(avatar, li.firstChild);\n li.insertBefore(sender, li.firstChild);\n }\n });\n // similarly, we could do this with a simple ifView,\n // but that adds a comment node to all messages without reactions\n let reactionsView = null;\n t.mapSideEffect(vm => vm.reactions, reactions => {\n if (reactions && this._interactive && !reactionsView) {\n reactionsView = new ReactionsView(reactions);\n this.addSubView(reactionsView);\n li.appendChild(mountView(reactionsView));\n } else if (!reactions && reactionsView) {\n li.removeChild(reactionsView.root());\n reactionsView.unmount();\n this.removeSubView(reactionsView);\n reactionsView = null;\n }\n });\n return li;\n }\n\n /* This is called by the parent ListView, which just has 1 listener for the whole list */\n onClick(evt) {\n if (evt.target.className === \"Timeline_messageOptions\") {\n this._toggleMenu(evt.target);\n }\n }\n\n _toggleMenu(button) {\n if (this._menuPopup && this._menuPopup.isOpen) {\n this._menuPopup.close();\n } else {\n const options = this.createMenuOptions(this.value);\n if (!options.length) {\n return;\n }\n this.root().classList.add(\"menuOpen\");\n const onClose = () => this.root().classList.remove(\"menuOpen\");\n this._menuPopup = new Popup(new Menu(options), onClose);\n this._menuPopup.trackInTemplateView(this);\n this._menuPopup.showRelativeTo(button, 2);\n }\n }\n\n createMenuOptions(vm) {\n const options = [];\n if (vm.canReact && vm.shape !== \"redacted\" && !vm.isPending) {\n options.push(new QuickReactionsMenuOption(vm));\n options.push(Menu.option(vm.i18n`Reply`, () => vm.startReply()));\n }\n if (vm.canAbortSending) {\n options.push(Menu.option(vm.i18n`Cancel`, () => vm.abortSending()));\n } else if (vm.canRedact) {\n options.push(Menu.option(vm.i18n`Delete`, () => vm.redact()).setDestructive());\n }\n options.push(Menu.option(vm.i18n`Copy matrix.to permalink`, () => vm.copyPermalink()));\n return options;\n }\n\n renderMessageBody() {}\n}\n\nclass QuickReactionsMenuOption {\n constructor(vm) {\n this._vm = vm;\n }\n toDOM(t) {\n const emojiButtons = [\"👍\", \"👎\", \"😄\", \"🎉\", \"😕\", \"❤️\", \"🚀\", \"👀\"].map(emoji => {\n return t.button({onClick: () => this._vm.react(emoji)}, emoji);\n });\n const customButton = t.button({onClick: () => {\n const key = prompt(\"Enter your reaction (emoji)\");\n if (key) {\n this._vm.react(key);\n }\n }}, \"…\");\n return t.li({className: \"quick-reactions\"}, [...emojiButtons, customButton]);\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {renderStaticAvatar} from \"../../../avatar\";\nimport {TemplateView} from \"../../../general/TemplateView\";\n\nexport class ReplyPreviewView extends TemplateView {\n constructor(vm, viewClassForTile) {\n super(vm);\n this._viewClassForTile = viewClassForTile;\n }\n render(t, vm) {\n const TileView = this._viewClassForTile(vm);\n if (!TileView) {\n throw new Error(`Shape ${vm.shape} is unrecognized.`)\n }\n const view = new TileView(vm, this._viewClassForTile, { reply: true, interactive: false });\n return t.div(\n { className: \"ReplyPreviewView\" },\n t.blockquote([\n t.a({ className: \"link\", target: \"_blank\", href: vm.permaLink }, \"In reply to\"),\n t.a({ className: \"pill\", target: \"_blank\", href: vm.senderProfileLink }, [\n renderStaticAvatar(vm, 12, undefined, true),\n vm.displayName,\n ]),\n t.br(),\n t.view(view),\n ])\n );\n }\n}\n\nexport class ReplyPreviewError extends TemplateView {\n render(t) {\n return t.blockquote({ className: \"ReplyPreviewView\" }, [\n t.div({ className: \"Timeline_messageBody statusMessage\" }, \"This reply could not be found.\")\n ]);\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {tag, text} from \"../../../general/html\";\nimport {BaseMessageView} from \"./BaseMessageView.js\";\nimport {ReplyPreviewError, ReplyPreviewView} from \"./ReplyPreviewView.js\";\n\nexport class TextMessageView extends BaseMessageView {\n renderMessageBody(t, vm) {\n const time = t.time({className: {hidden: !vm.time}}, vm.time);\n const container = t.div({\n className: {\n \"Timeline_messageBody\": true,\n statusMessage: vm => vm.shape === \"message-status\",\n }\n }, t.mapView(vm => vm.replyTile, replyTile => {\n if (this._isReplyPreview) {\n // if this._isReplyPreview = true, this is already a reply preview, don't nest replies for now.\n return null;\n }\n else if (vm.isReply && !replyTile) {\n return new ReplyPreviewError();\n }\n else if (replyTile) {\n return new ReplyPreviewView(replyTile, this._viewClassForTile);\n }\n else {\n return null;\n }\n }));\n\n // exclude comment nodes as they are used by t.map and friends for placeholders\n const shouldRemove = (element) => element?.nodeType !== Node.COMMENT_NODE && element.className !== \"ReplyPreviewView\";\n\n t.mapSideEffect(vm => vm.body, body => {\n while (shouldRemove(container.lastChild)) {\n container.removeChild(container.lastChild);\n }\n for (const part of body.parts) {\n container.appendChild(renderPart(part));\n }\n container.appendChild(time);\n });\n\n return container;\n }\n}\n\nfunction renderList(listBlock) {\n const items = listBlock.items.map(item => tag.li(renderParts(item)));\n const start = listBlock.startOffset;\n if (start) {\n return tag.ol({ start }, items);\n } else {\n return tag.ul(items);\n }\n}\n\nfunction renderImage(imagePart) {\n const attributes = { src: imagePart.src };\n if (imagePart.width) { attributes.width = imagePart.width }\n if (imagePart.height) { attributes.height = imagePart.height }\n if (imagePart.alt) { attributes.alt = imagePart.alt }\n if (imagePart.title) { attributes.title = imagePart.title }\n return tag.img(attributes);\n}\n\nfunction renderPill(pillPart) {\n // The classes and structure are borrowed from avatar.js;\n // We don't call renderStaticAvatar because that would require\n // an intermediate object that has getAvatarUrl etc.\n const classes = `avatar size-12 usercolor${pillPart.avatarColorNumber}`;\n const avatar = tag.div({class: classes}, text(pillPart.avatarInitials));\n const children = renderParts(pillPart.children);\n children.unshift(avatar);\n return tag.a({class: \"pill\", href: pillPart.href, rel: \"noopener\", target: \"_blank\"}, children);\n}\n\nfunction renderTable(tablePart) {\n const children = [];\n if (tablePart.head) {\n const headers = tablePart.head\n .map(cell => tag.th(renderParts(cell)));\n children.push(tag.thead(tag.tr(headers)))\n }\n const rows = [];\n for (const row of tablePart.body) {\n const data = row.map(cell => tag.td(renderParts(cell)));\n rows.push(tag.tr(data));\n }\n children.push(tag.tbody(rows));\n return tag.table(children);\n}\n\n/**\n * Map from part to function that outputs DOM for the part\n */\nconst formatFunction = {\n header: headerBlock => tag[\"h\" + Math.min(6,headerBlock.level)](renderParts(headerBlock.inlines)),\n codeblock: codeBlock => tag.pre(tag.code(text(codeBlock.text))),\n table: tableBlock => renderTable(tableBlock),\n code: codePart => tag.code(text(codePart.text)),\n text: textPart => text(textPart.text),\n link: linkPart => tag.a({href: linkPart.url, className: \"link\", target: \"_blank\", rel: \"noopener\" }, renderParts(linkPart.inlines)),\n pill: renderPill,\n format: formatPart => tag[formatPart.format](renderParts(formatPart.children)),\n rule: () => tag.hr(),\n list: renderList,\n image: renderImage,\n newline: () => tag.br()\n};\n\nfunction renderPart(part) {\n const f = formatFunction[part.type];\n if (!f) {\n return text(`[unknown part type ${part.type}]`);\n }\n return f(part);\n}\n\nfunction renderParts(parts) {\n return Array.from(parts, renderPart);\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {BaseMessageView} from \"./BaseMessageView.js\";\nimport {Menu} from \"../../../general/Menu.js\";\n\nexport class BaseMediaView extends BaseMessageView {\n renderMessageBody(t, vm) {\n const heightRatioPercent = (vm.height / vm.width) * 100; \n let spacerStyle = `padding-top: ${heightRatioPercent}%;`;\n if (vm.platform.isIE11) {\n // preserving aspect-ratio in a grid with padding percentages\n // does not work in IE11, so we assume people won't use it\n // with viewports narrower than 400px where thumbnails will get\n // scaled. If they do, the thumbnail will still scale, but\n // there will be whitespace underneath the picture\n // An alternative would be to use position: absolute but that\n // can slow down rendering, and was bleeding through the lightbox.\n spacerStyle = `height: ${vm.height}px`;\n }\n const children = [\n t.div({className: \"spacer\", style: spacerStyle}),\n this.renderMedia(t, vm),\n t.time(vm.time),\n ];\n const status = t.div({\n className: {\n status: true,\n hidden: vm => !vm.status\n },\n }, vm => vm.status);\n children.push(status);\n if (vm.isPending) {\n const progress = t.progress({\n min: 0,\n max: 100,\n value: vm => vm.uploadPercentage,\n className: {hidden: vm => !vm.isUploading}\n });\n children.push(progress);\n }\n return t.div({className: \"Timeline_messageBody\"}, [\n t.div({className: \"media\", style: `max-width: ${vm.width}px`, \"data-testid\": \"media\"}, children),\n t.if(vm => vm.error, t => t.p({className: \"error\"}, vm.error))\n ]);\n }\n\n createMenuOptions(vm) {\n const options = super.createMenuOptions(vm);\n if (!vm.isPending) {\n let label;\n switch (vm.shape) {\n case \"image\": label = vm.i18n`Download image`; break;\n case \"video\": label = vm.i18n`Download video`; break;\n default: label = vm.i18n`Download media`; break;\n }\n options.push(Menu.option(label, () => vm.downloadMedia()));\n }\n return options;\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {BaseMediaView} from \"./BaseMediaView.js\";\n\nexport class ImageView extends BaseMediaView {\n renderMedia(t, vm) {\n const img = t.img({\n src: vm => vm.thumbnailUrl,\n alt: vm => vm.label,\n title: vm => vm.label,\n style: `max-width: ${vm.width}px; max-height: ${vm.height}px;`\n });\n return vm.isPending || !vm.lightboxUrl ? img : t.a({href: vm.lightboxUrl}, img);\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexport function domEventAsPromise(element: HTMLElement, successEvent: string): Promise {\n return new Promise((resolve, reject) => {\n let detach;\n const handleError = evt => {\n detach();\n reject(evt.target.error);\n };\n const handleSuccess = () => {\n detach();\n resolve();\n };\n detach = () => {\n element.removeEventListener(successEvent, handleSuccess);\n element.removeEventListener(\"error\", handleError);\n };\n element.addEventListener(successEvent, handleSuccess);\n element.addEventListener(\"error\", handleError);\n });\n}\n\n// Copies the given text to clipboard and returns a boolean of whether the action was\n// successful\nexport async function copyPlaintext(text: string): Promise {\n try {\n if (navigator?.clipboard?.writeText) {\n await navigator.clipboard.writeText(text);\n return true;\n } else {\n const textArea = document.createElement(\"textarea\");\n textArea.value = text;\n\n // Avoid scrolling to bottom\n textArea.style.top = \"0\";\n textArea.style.left = \"0\";\n textArea.style.position = \"fixed\";\n\n document.body.appendChild(textArea);\n\n const selection = document.getSelection();\n if (!selection) {\n console.error('copyPlaintext: Unable to copy text to clipboard in fallback mode because `selection` was null/undefined');\n return false;\n }\n\n const range = document.createRange();\n // range.selectNodeContents(textArea);\n range.selectNode(textArea);\n selection.removeAllRanges();\n selection.addRange(range);\n\n const successful = document.execCommand(\"copy\");\n selection.removeAllRanges();\n document.body.removeChild(textArea);\n if(!successful) {\n console.error('copyPlaintext: Unable to copy text to clipboard in fallback mode because the `copy` command is unsupported or disabled');\n }\n return successful;\n }\n } catch (err) {\n console.error(\"copyPlaintext: Ran into an error\", err);\n }\n return false;\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {BaseMediaView} from \"./BaseMediaView.js\";\nimport {domEventAsPromise} from \"../../../../dom/utils\";\n\nexport class VideoView extends BaseMediaView {\n renderMedia(t) {\n const video = t.video({\n // provide empty data url if video is not decrypted yet.\n // Chrome/Electron need this to enable the play button.\n src: vm => vm.videoUrl || `data:${vm.mimeType},`,\n title: vm => vm.label,\n controls: true,\n preload: \"none\",\n poster: vm => vm.thumbnailUrl,\n onPlay: this._onPlay.bind(this),\n style: vm => `max-width: ${vm.width}px; max-height: ${vm.height}px;${vm.isPending ? \"z-index: -1\": \"\"}`\n });\n\n video.addEventListener(\"error\", this._onError.bind(this));\n\n return video;\n }\n\n async _onPlay(evt) {\n const vm = this.value;\n // download and decrypt the video if needed,\n if (!vm.videoUrl) {\n try {\n const video = evt.target;\n // this will trigger the src to update\n await vm.loadVideo();\n // important to only listen for this after src has changed,\n // or we get the error for the placeholder data url\n const loadPromise = domEventAsPromise(video, \"loadeddata\");\n // now, reload the video and play\n video.load();\n await loadPromise;\n video.play();\n } catch (err) {/* errors are already caught in error event handler */}\n } \n }\n\n _onError(evt) {\n const vm = this.value;\n const video = evt.target;\n const err = video.error;\n if (err instanceof window.MediaError && err.code === 4) {\n if (!video.src.startsWith(\"data:\")) {\n vm.setViewError(new Error(`this browser does not support videos of type ${vm.mimeType}.`));\n } else {\n // ignore placeholder url failing to load\n return;\n }\n } else {\n vm.setViewError(err);\n }\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {BaseMessageView} from \"./BaseMessageView.js\";\n\nexport class FileView extends BaseMessageView {\n renderMessageBody(t, vm) {\n const children = [];\n if (vm.isPending) {\n children.push(vm => vm.label);\n } else {\n children.push(\n t.button({className: \"link\", onClick: () => vm.download()}, vm => vm.label),\n t.time(vm.time)\n );\n }\n return t.p({className: \"Timeline_messageBody statusMessage\"}, children);\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {BaseMessageView} from \"./BaseMessageView.js\";\n\nexport class LocationView extends BaseMessageView {\n renderMessageBody(t, vm) {\n return t.p({className: \"Timeline_messageBody statusMessage\"}, [\n t.span(vm.label),\n t.a({className: \"Timeline_locationLink\", href: vm.mapsLink, target: \"_blank\", rel: \"noopener\"}, vm.i18n`Open in maps`),\n t.time(vm.time)\n ]);\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {BaseMessageView} from \"./BaseMessageView.js\";\n\nexport class MissingAttachmentView extends BaseMessageView {\n renderMessageBody(t, vm) {\n return t.p({className: \"Timeline_messageBody statusMessage\"}, vm.label);\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {TemplateView} from \"../../../general/TemplateView\";\n\nexport class AnnouncementView extends TemplateView {\n // ignore other arguments\n constructor(vm) {\n super(vm);\n }\n\n render(t, vm) {\n return t.li({\n className: \"AnnouncementView\",\n 'data-event-id': vm.eventId\n }, t.div(vm => vm.announcement));\n }\n \n /* This is called by the parent ListView, which just has 1 listener for the whole list */\n onClick() {}\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {BaseMessageView} from \"./BaseMessageView.js\";\nimport {Menu} from \"../../../general/Menu.js\";\n\nexport class RedactedView extends BaseMessageView {\n renderMessageBody(t) {\n return t.p({className: \"Timeline_messageBody statusMessage\"}, vm => vm.description);\n }\n\n createMenuOptions(vm) {\n const options = super.createMenuOptions(vm);\n if (vm.isRedacting) {\n options.push(Menu.option(vm.i18n`Cancel`, () => vm.abortPendingRedaction()));\n }\n return options;\n }\n}","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {TemplateView} from \"../../../general/TemplateView\";\nimport {spinner} from \"../../../common.js\";\nimport {ErrorView} from \"../../../general/ErrorView\";\n\nexport class GapView extends TemplateView {\n // ignore other argument\n constructor(vm) {\n super(vm);\n }\n\n render(t, vm) {\n const className = {\n GapView: true,\n isLoading: vm => vm.isLoading,\n isAtTop: vm => vm.isAtTop,\n };\n return t.li({ className }, [\n t.div({class: \"GapView_container\"}, [\n t.if(vm => vm.showSpinner, (t) => spinner(t)),\n t.span(vm => vm.status),\n ]),\n t.if(vm => !!vm.errorViewModel, t => {\n return t.view(new ErrorView(vm.errorViewModel, {inline: true}));\n })\n ]);\n }\n\n /* This is called by the parent ListView, which just has 1 listener for the whole list */\n onClick() {}\n}\n","/*\nCopyright 2022 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {Builder, TemplateView} from \"../../../general/TemplateView\";\nimport type {CallTile} from \"../../../../../../domain/session/room/timeline/tiles/CallTile\";\nimport {ErrorView} from \"../../../general/ErrorView\";\nimport {ListView} from \"../../../general/ListView\";\nimport {AvatarView} from \"../../../AvatarView\";\n\nexport class CallTileView extends TemplateView {\n render(t: Builder, vm: CallTile) {\n return t.li(\n {className: \"CallTileView AnnouncementView\"},\n t.div(\n [\n t.if(vm => vm.errorViewModel, t => {\n return t.div({className: \"CallTileView_error\"}, t.view(new ErrorView(vm.errorViewModel, {inline: true})));\n }),\n t.div([\n t.div({className: \"CallTileView_title\"}, vm => vm.title),\n t.div({className: \"CallTileView_subtitle\"}, [\n vm.typeLabel, \" • \",\n t.span({className: \"CallTileView_memberCount\"}, vm => vm.memberCount)\n ]),\n t.view(new ListView({className: \"CallTileView_members\", tagName: \"div\", list: vm.memberViewModels}, vm => {\n return new AvatarView(vm, 24);\n })),\n t.div(vm => vm.duration),\n t.div([\n t.button({className: \"CallTileView_join button-action primary\", hidden: vm => !vm.canJoin}, \"Join\"),\n t.button({className: \"CallTileView_leave button-action primary destructive\", hidden: vm => !vm.canLeave}, \"Leave\")\n ])\n ])\n ])\n );\n }\n \n /* This is called by the parent ListView, which just has 1 listener for the whole list */\n onClick(evt) {\n if (evt.target.classList.contains(\"CallTileView_join\")) {\n this.value.join();\n } else if (evt.target.classList.contains(\"CallTileView_leave\")) {\n this.value.leave();\n }\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {TemplateView} from \"../../../general/TemplateView\";\nimport type {DateTile} from \"../../../../../../domain/session/room/timeline/tiles/DateTile\";\n\nexport class DateHeaderView extends TemplateView {\n render(t, vm) {\n return t.h2({className: \"DateHeader\"}, t.time({dateTime: vm.machineReadableDate}, vm.relativeDate));\n }\n\n /* This is called by the parent ListView, which just has 1 listener for the whole list */\n onClick() {}\n}\n","/*\nCopyright 2022 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {TemplateView} from \"../../../general/TemplateView\";\nimport {Status} from \"../../../../../../domain/session/room/timeline/tiles/VerificationTile\";\nimport {spinner} from \"../../../common.js\";\nimport type {IView} from \"../../../general/types\";\nimport type {Builder} from \"../../../general/TemplateView\";\nimport type {VerificationTile} from \"../../../../../../domain/session/room/timeline/tiles/VerificationTile\";\n\ntype IClickableView = {\n onClick: (evt) => void;\n} & IView; \n\nexport class VerificationTileView extends TemplateView {\n render(t: Builder, vm: VerificationTile) {\n return t.div({ className: \"VerificationTileView\" },\n t.mapView(vm => vm.status, (status: Status) => {\n switch (status) {\n case Status.Ready:\n return new VerificationReadyTileView(vm);\n case Status.Cancelled:\n return new VerificationCancelledTileView(vm);\n case Status.Completed:\n return new VerificationCompletedTileView(vm);\n case Status.InProgress:\n return new VerificationInProgressTileView(vm);\n }\n })\n );\n }\n\n onClick(evt) {\n // Propagate click events to the sub-view\n this._subViews?.forEach((s: IClickableView) => s.onClick?.(evt));\n }\n}\n\nclass VerificationReadyTileView extends TemplateView {\n render(t: Builder, vm: VerificationTile) {\n return t.div({ className: \"VerificationReadyTileView\" }, [\n t.div({ className: \"VerificationTileView__shield\" }),\n t.div({ className: \"VerificationTileView__description\" }, [\n t.div(vm.description)\n ]),\n t.div({ className: \"VerificationTileView__actions\" }, [\n t.button({ className: \"VerificationTileView__accept button-action primary\" }, \"Accept\"),\n t.button({ className: \"VerificationTileView__reject button-action secondary\" }, \"Reject\"),\n ]),\n ]);\n }\n\n onClick(evt) {\n if (evt.target.classList.contains(\"VerificationTileView__accept\")) {\n this.value.accept();\n } else if (evt.target.classList.contains(\"VerificationTileView__reject\")) {\n this.value.reject();\n }\n }\n}\n\n\nclass VerificationCancelledTileView extends TemplateView {\n render(t: Builder, vm: VerificationTile) {\n return t.div({ className: \"VerificationCancelledTileView\" }, [\n t.div({ className: \"VerificationTileView__description\" },\n vm.i18n`${vm.isCancelledByUs? \"You\": vm.sender} cancelled the verification!`),\n ]);\n }\n}\n\nclass VerificationCompletedTileView extends TemplateView {\n render(t: Builder, vm: VerificationTile) {\n return t.div({ className: \"VerificationCompletedTileView\" }, [\n t.div({ className: \"VerificationTileView__description\" }, [\n t.div({ className: \"VerificationTileView__shield\" }),\n t.div(vm.i18n`You verified ${vm.sender}`),\n ]),\n ]);\n }\n}\n\nclass VerificationInProgressTileView extends TemplateView {\n render(t: Builder, vm: VerificationTile) {\n return t.div({ className: \"VerificationInProgressTileView\" }, [\n t.div({ className: \"VerificationTileView__description\" },\n vm.i18n`Verification in progress`),\n t.div({ className: \"VerificationTileView__actions\" }, [\n spinner(t)\n ]),\n ]);\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {TextMessageView} from \"./timeline/TextMessageView.js\";\nimport {ImageView} from \"./timeline/ImageView.js\";\nimport {VideoView} from \"./timeline/VideoView.js\";\nimport {FileView} from \"./timeline/FileView.js\";\nimport {LocationView} from \"./timeline/LocationView.js\";\nimport {MissingAttachmentView} from \"./timeline/MissingAttachmentView.js\";\nimport {AnnouncementView} from \"./timeline/AnnouncementView.js\";\nimport {RedactedView} from \"./timeline/RedactedView.js\";\nimport {ITile, TileShape} from \"../../../../../domain/session/room/timeline/tiles/ITile\";\nimport {GapView} from \"./timeline/GapView.js\";\nimport {CallTileView} from \"./timeline/CallTileView\";\nimport {DateHeaderView} from \"./timeline/DateHeaderView\";\nimport {VerificationTileView} from \"./timeline/VerificationTileView\";\nimport type {TileViewConstructor} from \"./TimelineView\";\n\nexport function viewClassForTile(vm: ITile): TileViewConstructor {\n switch (vm.shape) {\n case TileShape.Gap:\n return GapView;\n case TileShape.Announcement:\n return AnnouncementView;\n case TileShape.Message:\n case TileShape.MessageStatus:\n return TextMessageView;\n case TileShape.Image:\n return ImageView;\n case TileShape.Video:\n return VideoView;\n case TileShape.File:\n return FileView;\n case TileShape.Location:\n return LocationView;\n case TileShape.MissingAttachment:\n return MissingAttachmentView;\n case TileShape.Redacted:\n return RedactedView;\n case TileShape.Call:\n return CallTileView;\n case TileShape.DateHeader:\n return DateHeaderView;\n case TileShape.Verification:\n return VerificationTileView;\n default:\n throw new Error(`Tiles of shape \"${vm.shape}\" are not supported, check the tileClassForEntry function in the view model`);\n }\n}\n","/*\nCopyright 2022 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {TemplateView} from \"../general/TemplateView\";\nimport type {JoinRoomViewModel} from \"../../../../domain/session/JoinRoomViewModel\";\nimport {spinner} from \"../common.js\";\n\nexport class JoinRoomView extends TemplateView {\n render(t, vm) {\n const input = t.input({\n type: \"text\",\n name: \"id\",\n id: \"id\",\n placeholder: vm.i18n`Enter a room id or alias`,\n disabled: vm => vm.joinInProgress,\n });\n return t.main({className: \"JoinRoomView middle\"}, [\n t.div({className: \"JoinRoomView_header middle-header\"}, [\n t.a({className: \"button-utility close-middle\", href: vm.closeUrl, title: vm.i18n`Cancel room join`}),\n t.h2(\"Join room\"),\n ]),\n t.div({className: \"JoinRoomView_body centered-column\"}, [\n t.form({className: \"JoinRoomView_detailsForm form\", onSubmit: evt => this.onSubmit(evt, input.value)}, [\n t.div({className: \"vertical-layout\"}, [\n t.div({className: \"stretch form-row text\"}, [\n t.label({for: \"id\"}, vm.i18n`Room id`),\n input,\n ]),\n ]),\n t.div({className: \"button-row\"}, [\n t.button({\n className: \"button-action primary\",\n type: \"submit\",\n disabled: vm => vm.joinInProgress\n }, vm.i18n`Join`),\n ]),\n t.map(vm => vm.status, (status, t) => {\n return t.div({ className: \"JoinRoomView_status\" }, [\n spinner(t, { hidden: vm => !vm.joinInProgress }),\n t.span(status),\n ]);\n })\n ])\n ])\n ]);\n }\n\n onSubmit(evt, id) {\n evt.preventDefault();\n this.value.join(id);\n }\n}\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {AvatarView} from \"../../AvatarView.js\";\nimport {ErrorView} from \"../../general/ErrorView\";\nimport {TemplateView, Builder} from \"../../general/TemplateView\";\nimport type {CallToastNotificationViewModel} from \"../../../../../domain/session/toast/calls/CallToastNotificationViewModel\";\n\nexport class CallToastNotificationView extends TemplateView {\n render(t: Builder, vm: CallToastNotificationViewModel) {\n return t.div({ className: \"CallToastNotificationView\" }, [\n t.div({ className: \"CallToastNotificationView__top\" }, [\n t.view(new AvatarView(vm, 24)),\n t.span({ className: \"CallToastNotificationView__name\" }, (vm) => vm.roomName),\n t.button({\n className: \"button-action CallToastNotificationView__dismiss-btn\",\n onClick: () => vm.dismiss(),\n }),\n ]),\n t.div({ className: \"CallToastNotificationView__description\" }, [\n t.span(vm.i18n`Video call started`)\n ]),\n t.div({ className: \"CallToastNotificationView__info\" }, [\n t.span({className: \"CallToastNotificationView__call-type\"}, vm.i18n`Video`),\n t.span({className: \"CallToastNotificationView__member-count\"}, (vm) => vm.memberCount),\n ]),\n t.div({ className: \"CallToastNotificationView__action\" }, [\n t.button({\n className: \"button-action primary\",\n onClick: () => vm.join(),\n }, vm.i18n`Join`),\n ]),\n t.if(vm => !!vm.errorViewModel, t => {\n return t.div({className: \"CallView_error\"}, t.view(new ErrorView(vm.errorViewModel!)));\n }),\n ]);\n }\n}\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nimport {TemplateView, Builder} from \"../../general/TemplateView\";\nimport type {VerificationToastNotificationViewModel} from \"../../../../../domain/session/toast/verification/VerificationToastNotificationViewModel\";\n\nexport class VerificationToastNotificationView extends TemplateView {\n render(t: Builder, vm: VerificationToastNotificationViewModel) {\n return t.div({ className: \"VerificationToastNotificationView\" }, [\n t.div({ className: \"VerificationToastNotificationView__top\" }, [\n t.span({ className: \"VerificationToastNotificationView__title\" },\n vm.i18n`Device Verification`),\n t.button({\n className: \"button-action VerificationToastNotificationView__dismiss-btn\",\n onClick: () => vm.dismiss(),\n }),\n ]),\n t.div({ className: \"VerificationToastNotificationView__description\" }, [\n t.span(vm.i18n`Do you want to verify device ${vm.otherDeviceId}?`),\n ]),\n t.div({ className: \"VerificationToastNotificationView__action\" }, [\n t.button({\n className: \"button-action primary destructive\",\n onClick: () => vm.dismiss(),\n }, vm.i18n`Ignore`),\n t.button({\n className: \"button-action primary\",\n onClick: () => vm.accept(),\n }, vm.i18n`Accept`),\n ]),\n ]);\n }\n}\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {CallToastNotificationView} from \"./CallToastNotificationView\";\nimport {VerificationToastNotificationView} from \"./VerificationToastNotificationView\";\nimport {ListView} from \"../../general/ListView\";\nimport {TemplateView, Builder} from \"../../general/TemplateView\";\nimport type {IView} from \"../../general/types\";\nimport type {CallToastNotificationViewModel} from \"../../../../../domain/session/toast/calls/CallToastNotificationViewModel\";\nimport type {ToastCollectionViewModel} from \"../../../../../domain/session/toast/ToastCollectionViewModel\";\nimport type {BaseToastNotificationViewModel} from \"../../../../../domain/session/toast/BaseToastNotificationViewModel\";\nimport type {VerificationToastNotificationViewModel} from \"../../../../../domain/session/toast/verification/VerificationToastNotificationViewModel\";\n\nfunction toastViewModelToView(vm: BaseToastNotificationViewModel): IView {\n switch (vm.kind) {\n case \"calls\":\n return new CallToastNotificationView(vm as CallToastNotificationViewModel); \n case \"verification\":\n return new VerificationToastNotificationView(vm as VerificationToastNotificationViewModel);\n default:\n throw new Error(`Cannot find view class for notification kind ${vm.kind}`);\n }\n}\n\nexport class ToastCollectionView extends TemplateView {\n render(t: Builder, vm: ToastCollectionViewModel) {\n return t.div({ className: \"ToastCollectionView\" }, [\n t.ifView(vm => !!vm.toastViewModels, t => {\n return new ListView({\n list: vm.toastViewModels,\n parentProvidesUpdates: false,\n }, (vm: CallToastNotificationViewModel) => toastViewModelToView(vm));\n }),\n ]);\n }\n}\n","/*\nCopyright 2020 Bruno Windels \nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {LeftPanelView} from \"./leftpanel/LeftPanelView.js\";\nimport {RoomView} from \"./room/RoomView.js\";\nimport {UnknownRoomView} from \"./room/UnknownRoomView.js\";\nimport {RoomBeingCreatedView} from \"./room/RoomBeingCreatedView.js\";\nimport {InviteView} from \"./room/InviteView.js\";\nimport {LightboxView} from \"./room/LightboxView.js\";\nimport {TemplateView} from \"../general/TemplateView\";\nimport {StaticView} from \"../general/StaticView.js\";\nimport {SessionStatusView} from \"./SessionStatusView.js\";\nimport {RoomGridView} from \"./RoomGridView.js\";\nimport {SettingsView} from \"./settings/SettingsView.js\";\nimport {CreateRoomView} from \"./CreateRoomView.js\";\nimport {RightPanelView} from \"./rightpanel/RightPanelView.js\";\nimport {viewClassForTile} from \"./room/common\";\nimport {JoinRoomView} from \"./JoinRoomView\";\nimport {DeviceVerificationView} from \"./verification/DeviceVerificationView\";\nimport {ToastCollectionView} from \"./toast/ToastCollectionView\";\n\nexport class SessionView extends TemplateView {\n render(t, vm) {\n return t.div({\n className: {\n \"SessionView\": true,\n \"middle-shown\": vm => !!vm.activeMiddleViewModel,\n \"right-shown\": vm => !!vm.rightPanelViewModel\n },\n }, [\n t.view(new ToastCollectionView(vm.toastCollectionViewModel)),\n t.view(new SessionStatusView(vm.sessionStatusViewModel)),\n t.view(new LeftPanelView(vm.leftPanelViewModel)),\n t.mapView(vm => vm.activeMiddleViewModel, () => {\n if (vm.roomGridViewModel) {\n return new RoomGridView(vm.roomGridViewModel, viewClassForTile);\n } else if (vm.settingsViewModel) {\n return new SettingsView(vm.settingsViewModel);\n } else if (vm.createRoomViewModel) {\n return new CreateRoomView(vm.createRoomViewModel);\n } else if (vm.joinRoomViewModel) {\n return new JoinRoomView(vm.joinRoomViewModel);\n } else if (vm.verificationViewModel) {\n return new DeviceVerificationView(vm.verificationViewModel);\n } else if (vm.currentRoomViewModel) {\n if (vm.currentRoomViewModel.kind === \"invite\") {\n return new InviteView(vm.currentRoomViewModel);\n } else if (vm.currentRoomViewModel.kind === \"room\") {\n return new RoomView(vm.currentRoomViewModel, viewClassForTile);\n } else if (vm.currentRoomViewModel.kind === \"roomBeingCreated\") {\n return new RoomBeingCreatedView(vm.currentRoomViewModel);\n } else {\n return new UnknownRoomView(vm.currentRoomViewModel);\n }\n } else {\n return new StaticView(t => t.div({className: \"room-placeholder\"}, t.h2(vm.i18n`Choose a room on the left side.`)));\n }\n }),\n t.mapView(vm => vm.lightboxViewModel, lightboxViewModel => lightboxViewModel ? new LightboxView(lightboxViewModel) : null),\n t.mapView(vm => vm.rightPanelViewModel, rightPanelViewModel => rightPanelViewModel ? new RightPanelView(rightPanelViewModel) : null)\n ]);\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexport function hydrogenGithubLink(t) {\n if (DEFINE_VERSION === \"develop\") {\n return t.a(\n {\n target: \"_blank\",\n href: `https://github.com/vector-im/hydrogen-web`,\n },\n `Hydrogen develop, ${DEFINE_GLOBAL_HASH}`\n );\n } else if (DEFINE_VERSION && DEFINE_GLOBAL_HASH) {\n return t.a(\n {\n target: \"_blank\",\n href: `https://github.com/vector-im/hydrogen-web/releases/tag/v${DEFINE_VERSION}`,\n },\n `Hydrogen v${DEFINE_VERSION} (${DEFINE_GLOBAL_HASH}) on Github`\n );\n } else {\n return t.a(\n {\n target: \"_blank\",\n href: \"https://github.com/vector-im/hydrogen-web\",\n },\n \"Hydrogen on Github\"\n );\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {TemplateView} from \"../general/TemplateView\";\n\nexport class PasswordLoginView extends TemplateView {\n render(t, vm) {\n const disabled = vm => !!vm.isBusy;\n const username = t.input({\n id: \"username\",\n type: \"text\",\n placeholder: vm.i18n`Username`,\n disabled\n });\n const password = t.input({\n id: \"password\",\n type: \"password\",\n placeholder: vm.i18n`Password`,\n disabled\n });\n \n return t.div({className: \"PasswordLoginView form\"}, [\n t.if(vm => vm.error, t => t.div({ className: \"error\" }, vm => vm.error)),\n t.form({\n onSubmit: evnt => {\n evnt.preventDefault();\n vm.login(username.value, password.value);\n }\n }, [\n t.if(vm => vm.errorMessage, (t, vm) => t.p({className: \"error\"}, vm.i18n(vm.errorMessage))),\n t.div({ className: \"form-row text\" }, [t.label({ for: \"username\" }, vm.i18n`Username`), username]),\n t.div({ className: \"form-row text\" }, [t.label({ for: \"password\" }, vm.i18n`Password`), password]),\n t.div({ className: \"button-row\" }, [\n t.button({\n className: \"button-action primary\",\n type: \"submit\",\n disabled\n }, vm.i18n`Log In`),\n ]),\n ])\n ]);\n }\n}\n\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {TemplateView} from \"../general/TemplateView\";\nimport {KeyBackupSettingsView} from \"../session/settings/KeyBackupSettingsView\";\n\nexport class AccountSetupView extends TemplateView {\n render(t, vm) {\n return t.div({className: \"Settings\" /* hack for now to get the layout right*/}, [\n t.h3(vm.i18n`Restore your encrypted history?`),\n t.ifView(vm => vm.decryptDehydratedDeviceViewModel, vm => new KeyBackupSettingsView(vm.decryptDehydratedDeviceViewModel)),\n t.map(vm => vm.deviceDecrypted, (decrypted, t) => {\n if (decrypted) {\n return t.p(vm.i18n`That worked out, you're good to go!`);\n } else {\n return t.p(vm.i18n`This will claim the dehydrated device ${vm.dehydratedDeviceId}, and will set up a new one.`);\n }\n }),\n t.div({ className: \"button-row\" }, [\n t.button({\n className: \"button-action primary\",\n onClick: () => { vm.finish(); },\n type: \"button\",\n }, vm => vm.deviceDecrypted ? vm.i18n`Continue` : vm.i18n`Continue without restoring`),\n ]),\n ]);\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {TemplateView} from \"../general/TemplateView\";\nimport {spinner} from \"../common.js\";\nimport {AccountSetupView} from \"./AccountSetupView.js\";\n\n/** a view used both in the login view and the loading screen\nto show the current state of loading the session.\nJust a spinner and a label, meant to be used as a paragraph */\nexport class SessionLoadStatusView extends TemplateView {\n render(t) {\n const exportLogsButtonIfFailed = t.if(vm => vm.hasError, (t, vm) => {\n return t.button({\n onClick: () => vm.exportLogs()\n }, vm.i18n`Export logs`);\n });\n const logoutButtonIfFailed = t.if(vm => vm.hasError, (t, vm) => {\n return t.button({\n onClick: () => vm.logout()\n }, vm.i18n`Log out`);\n });\n return t.div({className: \"SessionLoadStatusView\"}, [\n t.p({className: \"status\"}, [\n spinner(t, {hidden: vm => !vm.loading}),\n t.p(vm => vm.loadLabel),\n exportLogsButtonIfFailed,\n logoutButtonIfFailed\n ]),\n t.ifView(vm => vm.accountSetupViewModel, vm => new AccountSetupView(vm.accountSetupViewModel)),\n ]);\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {TemplateView} from \"../general/TemplateView\";\nimport {SessionLoadStatusView} from \"./SessionLoadStatusView.js\";\n\nexport class CompleteSSOView extends TemplateView {\n render(t) {\n return t.div({ className: \"CompleteSSOView\" },\n [\n t.p({ className: \"CompleteSSOView_title\" }, \"Finishing up your SSO Login\"),\n t.if(vm => vm.errorMessage, (t, vm) => t.p({className: \"error\"}, vm.i18n(vm.errorMessage))),\n t.mapView(vm => vm.loadViewModel, loadViewModel => loadViewModel ? new SessionLoadStatusView(loadViewModel) : null),\n ]\n );\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {TemplateView} from \"../general/TemplateView\";\nimport {hydrogenGithubLink} from \"./common.js\";\nimport {PasswordLoginView} from \"./PasswordLoginView.js\";\nimport {CompleteSSOView} from \"./CompleteSSOView.js\";\nimport {SessionLoadStatusView} from \"./SessionLoadStatusView.js\";\nimport {spinner} from \"../common.js\";\n\nexport class LoginView extends TemplateView {\n render(t, vm) {\n const disabled = vm => vm.isBusy;\n\n return t.div({className: \"PreSessionScreen\"}, [\n t.button({\n className: \"button-utility LoginView_back\",\n onClick: () => vm.goBack(),\n disabled\n }),\n t.div({className: \"logo\"}),\n t.h1([vm.i18n`Sign In`]),\n t.mapView(vm => vm.completeSSOLoginViewModel, vm => vm ? new CompleteSSOView(vm) : null),\n t.if(vm => vm.showHomeserver, (t, vm) => t.div({ className: \"LoginView_sso form-row text\" },\n [\n t.label({for: \"homeserver\"}, vm.i18n`Homeserver`),\n t.input({\n id: \"homeserver\",\n type: \"text\",\n placeholder: vm.i18n`Your matrix homeserver`,\n value: vm.homeserver,\n disabled,\n onInput: event => vm.setHomeserver(event.target.value),\n onChange: () => vm.queryHomeserver(),\n }),\n t.p({className: {\n LoginView_forwardInfo: true,\n hidden: vm => !vm.resolvedHomeserver\n }}, vm => vm.i18n`You will connect to ${vm.resolvedHomeserver}.`),\n t.if(vm => vm.errorMessage, (t, vm) => t.p({className: \"error\"}, vm.i18n(vm.errorMessage))),\n ]\n )),\n t.if(vm => vm.isFetchingLoginOptions, t => t.div({className: \"LoginView_query-spinner\"}, [spinner(t), t.p(\"Fetching available login options...\")])),\n t.mapView(vm => vm.passwordLoginViewModel, vm => vm ? new PasswordLoginView(vm): null),\n t.if(vm => vm.passwordLoginViewModel && vm.startSSOLoginViewModel, t => t.p({className: \"LoginView_separator\"}, vm.i18n`or`)),\n t.mapView(vm => vm.startSSOLoginViewModel, vm => vm ? new StartSSOLoginView(vm) : null),\n t.mapView(vm => vm.loadViewModel, loadViewModel => loadViewModel ? new SessionLoadStatusView(loadViewModel) : null),\n // use t.mapView rather than t.if to create a new view when the view model changes too\n t.p(hydrogenGithubLink(t))\n ]);\n }\n}\n\nclass StartSSOLoginView extends TemplateView {\n render(t, vm) {\n return t.div({ className: \"StartSSOLoginView\" },\n t.button({\n className: \"StartSSOLoginView_button button-action secondary\",\n type: \"button\",\n onClick: () => vm.startSSOLogin(),\n disabled: vm => vm.isBusy\n }, vm.i18n`Log in with SSO`)\n );\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {TemplateView, InlineTemplateView} from \"./general/TemplateView\";\nimport {spinner} from \"./common.js\";\n\nexport class LogoutView extends TemplateView {\n render(t, vm) {\n const confirmView = new InlineTemplateView(vm, t => {\n return t.div([\n t.p(\"Are you sure you want to log out?\"),\n t.div({ className: \"button-row\" }, [\n t.a({\n className: \"button-action\",\n type: \"submit\",\n href: vm.cancelUrl,\n }, [\"Cancel\"]),\n t.button({\n className: \"button-action primary destructive\",\n type: \"submit\",\n onClick: () => vm.logout(),\n }, vm.i18n`Log out`)\n ]),\n ]);\n });\n const progressView = new InlineTemplateView(vm, t => {\n return t.p({className: \"status\", hidden: vm => !vm.showStatus}, [\n spinner(t, {hidden: vm => !vm.busy}), t.span(vm => vm.status)\n ]);\n });\n\n return t.div({className: \"LogoutScreen\"}, [\n t.div({className: \"content\"}, [\n t.mapView(vm => vm.showConfirm, showConfirm => {\n return showConfirm ? confirmView : progressView;\n })\n ]),\n ]);\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {TemplateView} from \"./general/TemplateView\";\nimport {spinner} from \"./common.js\";\n\nexport class ForcedLogoutView extends TemplateView {\n render(t) {\n return t.div({ className: \"LogoutScreen\" }, [\n t.div({ className: \"content\" },\n t.map(vm => vm.showStatus, (showStatus, t, vm) => {\n if (showStatus) {\n return t.p({ className: \"status\" }, [\n spinner(t, { hidden: vm => !vm.showSpinner }),\n t.span(vm => vm.status)\n ]);\n }\n else {\n return t.div([\n t.p(\"Your access token is no longer valid! You can reauthenticate in the next screen.\"),\n t.div({ className: \"button-row\" }, [\n t.button({\n className: \"button-action primary\",\n type: \"submit\",\n onClick: () => vm.proceed(),\n }, vm.i18n`Proceed`)\n ]),\n ]);\n }\n })\n ),\n ]);\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {TemplateView} from \"../general/TemplateView\";\nimport {SessionLoadStatusView} from \"./SessionLoadStatusView.js\";\n\nexport class SessionLoadView extends TemplateView {\n render(t, vm) {\n return t.div({className: \"PreSessionScreen\"}, [\n t.div({className: \"logo\"}),\n t.div({className: \"SessionLoadView\"}, [\n t.view(new SessionLoadStatusView(vm))\n ]),\n t.div({className: {\"button-row\": true, hidden: vm => vm.loading}},\n t.a({className: \"button-action primary\", href: vm.backUrl}, vm.i18n`Go back`))\n ]);\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {ListView} from \"../general/ListView\";\nimport {TemplateView} from \"../general/TemplateView\";\nimport {hydrogenGithubLink} from \"./common.js\";\nimport {SessionLoadStatusView} from \"./SessionLoadStatusView.js\";\n\nclass SessionPickerItemView extends TemplateView {\n _onDeleteClick() {\n if (confirm(\"Are you sure?\")) {\n this.value.delete();\n }\n }\n\n _onClearClick() {\n if (confirm(\"Are you sure?\")) {\n this.value.clear();\n }\n }\n\n render(t, vm) {\n return t.li([\n t.a({className: \"session-info\", href: vm.openUrl}, [\n t.div({className: `avatar usercolor${vm.avatarColorNumber}`}, vm => vm.avatarInitials),\n t.div({className: \"user-id\"}, vm => vm.label),\n ])\n ]);\n }\n}\n\nexport class SessionPickerView extends TemplateView {\n render(t, vm) {\n const sessionList = new ListView({\n list: vm.sessions,\n parentProvidesUpdates: false,\n }, sessionInfo => {\n return new SessionPickerItemView(sessionInfo);\n });\n\n return t.div({className: \"PreSessionScreen\"}, [\n t.div({className: \"logo\"}),\n t.div({className: \"SessionPickerView\"}, [\n t.h1([\"Continue as …\"]),\n t.view(sessionList),\n t.div({className: \"button-row\"}, [\n t.a({\n className: \"button-action primary\",\n href: vm.cancelUrl\n }, vm.i18n`Sign In`)\n ]),\n t.ifView(vm => vm.loadViewModel, () => new SessionLoadStatusView(vm.loadViewModel)),\n t.p(hydrogenGithubLink(t))\n ])\n ]);\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {SessionView} from \"./session/SessionView.js\";\nimport {LoginView} from \"./login/LoginView\";\nimport {LogoutView} from \"./LogoutView.js\";\nimport {ForcedLogoutView} from \"./ForcedLogoutView.js\";\nimport {SessionLoadView} from \"./login/SessionLoadView.js\";\nimport {SessionPickerView} from \"./login/SessionPickerView.js\";\nimport {TemplateView} from \"./general/TemplateView\";\nimport {StaticView} from \"./general/StaticView.js\";\n\nexport class RootView extends TemplateView {\n render(t, vm) {\n return t.mapView(vm => vm.activeSection, activeSection => {\n switch (activeSection) {\n case \"error\":\n return new StaticView(t => {\n return t.div({className: \"StatusView\"}, [\n t.h1(\"Something went wrong\"),\n t.p(vm.errorText),\n ])\n });\n case \"session\":\n return new SessionView(vm.sessionViewModel);\n case \"login\":\n return new LoginView(vm.loginViewModel);\n case \"logout\":\n return new LogoutView(vm.logoutViewModel);\n case \"forced-logout\":\n return new ForcedLogoutView(vm.forcedLogoutViewModel);\n case \"picker\":\n return new SessionPickerView(vm.sessionPickerViewModel);\n case \"redirecting\":\n return new StaticView(t => t.p(\"Redirecting...\"));\n case \"loading\":\n return new SessionLoadView(vm.sessionLoadViewModel);\n default:\n throw new Error(`Unknown section: ${vm.activeSection}`);\n }\n });\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {AbortError} from \"../../../utils/error\";\n\nclass Timeout {\n constructor(ms) {\n this._reject = null;\n this._handle = null;\n this._promise = new Promise((resolve, reject) => {\n this._reject = reject;\n this._handle = setTimeout(() => {\n this._reject = null;\n resolve();\n }, ms);\n });\n }\n\n elapsed() {\n return this._promise;\n }\n\n abort() {\n if (this._reject) {\n this._reject(new AbortError());\n clearTimeout(this._handle);\n this._handle = null;\n this._reject = null;\n }\n }\n\n dispose() {\n this.abort();\n }\n}\n\nclass Interval {\n constructor(ms, callback) {\n this._handle = setInterval(callback, ms);\n }\n\n dispose() {\n if (this._handle) {\n clearInterval(this._handle);\n this._handle = null;\n }\n }\n}\n\nclass TimeMeasure {\n constructor() {\n this._start = window.performance.now();\n }\n\n measure() {\n return window.performance.now() - this._start;\n }\n}\n\nexport class Clock {\n createMeasure() {\n return new TimeMeasure();\n }\n\n createTimeout(ms) {\n return new Timeout(ms);\n }\n\n createInterval(callback, ms) {\n return new Interval(ms, callback);\n }\n\n now() {\n return Date.now();\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n// 3 (imaginary) interfaces are implemented here:\n// - OfflineAvailability (done by registering the sw)\n// - UpdateService (see checkForUpdate method, and should also emit events rather than showing confirm dialog here)\n// - ConcurrentAccessBlocker (see preventConcurrentSessionAccess method)\nexport class ServiceWorkerHandler {\n constructor(sessionInfoStorage) {\n this._waitingForReply = new Map();\n this._messageIdCounter = 0;\n this._navigation = null;\n this._registration = null;\n this._registrationPromise = null;\n this._currentController = null;\n this._sessionInfoStorage = sessionInfoStorage;\n this.haltRequests = false;\n this._authData = {};\n }\n\n setNavigation(navigation) {\n this._navigation = navigation;\n }\n\n /**\n * Set the access-token and homeserver to be used within the service worker.\n * @param auth An object with accessToken and homeserver\n */\n updateAuthData(auth) {\n if (!auth.accessToken && !auth.homeserver) {\n throw new Error(\n \"updateAuthData argument must contain accessToken, homeserver or both!\"\n );\n }\n this._authData = { ...this._authData, ...auth };\n }\n\n registerAndStart(path) {\n this._registrationPromise = (async () => {\n navigator.serviceWorker.addEventListener(\"message\", this);\n navigator.serviceWorker.addEventListener(\"controllerchange\", this);\n this._registration = await navigator.serviceWorker.register(path);\n await navigator.serviceWorker.ready;\n this._currentController = navigator.serviceWorker.controller;\n this._registration.addEventListener(\"updatefound\", this);\n this._registrationPromise = null;\n // do we have a new service worker waiting to activate?\n if (this._registration.waiting && this._registration.active) {\n this._proposeUpdate();\n }\n console.log(\"Service Worker registered\");\n })();\n }\n\n async _onMessage(event) {\n const { data } = event;\n const replyTo = data.replyTo;\n if (replyTo) {\n const resolve = this._waitingForReply.get(replyTo);\n if (resolve) {\n this._waitingForReply.delete(replyTo);\n resolve(data.payload);\n }\n }\n if (data.type === \"hasSessionOpen\") {\n const hasOpen =\n this._navigation.observe(\"session\").get() ===\n data.payload.sessionId;\n event.source.postMessage({ replyTo: data.id, payload: hasOpen });\n } else if (data.type === \"hasRoomOpen\") {\n const hasSessionOpen =\n this._navigation.observe(\"session\").get() ===\n data.payload.sessionId;\n const hasRoomOpen =\n this._navigation.observe(\"room\").get() === data.payload.roomId;\n event.source.postMessage({\n replyTo: data.id,\n payload: hasSessionOpen && hasRoomOpen,\n });\n } else if (data.type === \"closeSession\") {\n const { sessionId } = data.payload;\n this._closeSessionIfNeeded(sessionId).finally(() => {\n event.source.postMessage({ replyTo: data.id });\n });\n } else if (data.type === \"haltRequests\") {\n // this flag is read in fetch.js\n this.haltRequests = true;\n event.source.postMessage({ replyTo: data.id });\n } else if (data.type === \"openRoom\") {\n this._navigation.push(\"room\", data.payload.roomId);\n } else if (data.type === \"getAuthInfo\") {\n event.source.postMessage({\n replyTo: data.id,\n payload: this._authData,\n });\n }\n }\n\n _closeSessionIfNeeded(sessionId) {\n const currentSession = this._navigation?.path.get(\"session\");\n if (sessionId && currentSession?.value === sessionId) {\n return new Promise((resolve) => {\n const unsubscribe = this._navigation.pathObservable.subscribe(\n (path) => {\n const session = path.get(\"session\");\n if (!session || session.value !== sessionId) {\n unsubscribe();\n resolve();\n }\n }\n );\n this._navigation.push(\"session\");\n });\n } else {\n return Promise.resolve();\n }\n }\n\n async _proposeUpdate() {\n if (document.hidden) {\n return;\n }\n const version = await this._sendAndWaitForReply(\n \"version\",\n null,\n this._registration.waiting\n );\n const isSdk = DEFINE_IS_SDK;\n const isDev = this.version === \"develop\";\n // Don't ask for confirmation when being used as an sdk/ when being run in dev server\n if (\n isSdk ||\n isDev ||\n confirm(\n `Version ${version.version} (${version.buildHash}) is available. Reload to apply?`\n )\n ) {\n console.log(\"Service Worker has been updated!\");\n // prevent any fetch requests from going to the service worker\n // from any client, so that it is not kept active\n // when calling skipWaiting on the new one\n await this._sendAndWaitForReply(\"haltRequests\");\n // only once all requests are blocked, ask the new\n // service worker to skipWaiting\n this._send(\"skipWaiting\", null, this._registration.waiting);\n }\n }\n\n handleEvent(event) {\n switch (event.type) {\n case \"message\":\n this._onMessage(event);\n break;\n case \"updatefound\":\n this._registration.installing.addEventListener(\n \"statechange\",\n this\n );\n break;\n case \"statechange\": {\n if (event.target.state === \"installed\") {\n this._proposeUpdate();\n event.target.removeEventListener(\"statechange\", this);\n }\n break;\n }\n case \"controllerchange\":\n if (!this._currentController) {\n // Clients.claim() in the SW can trigger a controllerchange event\n // if we had no SW before. This is fine,\n // and now our requests will be served from the SW.\n this._currentController =\n navigator.serviceWorker.controller;\n } else {\n // active service worker changed,\n // refresh, so we can get all assets\n // (and not only some if we would not refresh)\n // up to date from it\n document.location.reload();\n }\n break;\n }\n }\n\n async _send(type, payload, worker = undefined) {\n if (this._registrationPromise) {\n await this._registrationPromise;\n }\n if (!worker) {\n worker = this._registration.active;\n }\n worker.postMessage({ type, payload });\n }\n\n async _sendAndWaitForReply(type, payload, worker = undefined) {\n if (this._registrationPromise) {\n await this._registrationPromise;\n }\n if (!worker) {\n worker = this._registration.active;\n }\n this._messageIdCounter += 1;\n const id = this._messageIdCounter;\n const promise = new Promise((resolve) => {\n this._waitingForReply.set(id, resolve);\n });\n worker.postMessage({ type, id, payload });\n return await promise;\n }\n\n async checkForUpdate() {\n if (this._registrationPromise) {\n await this._registrationPromise;\n }\n this._registration.update();\n }\n\n get version() {\n return DEFINE_VERSION;\n }\n\n get buildHash() {\n return DEFINE_GLOBAL_HASH;\n }\n\n async preventConcurrentSessionAccess(sessionId) {\n return this._sendAndWaitForReply(\"closeSession\", { sessionId });\n }\n\n async getRegistration() {\n if (this._registrationPromise) {\n await this._registrationPromise;\n }\n return this._registration;\n }\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexport class NotificationService {\n constructor(serviceWorkerHandler, pushConfig) {\n this._serviceWorkerHandler = serviceWorkerHandler;\n this._pushConfig = pushConfig;\n }\n\n async enablePush(pusherFactory, defaultPayload) {\n const registration = await this._serviceWorkerHandler?.getRegistration();\n if (registration?.pushManager) {\n const subscription = await registration.pushManager.subscribe({\n userVisibleOnly: true,\n applicationServerKey: this._pushConfig.applicationServerKey,\n });\n const subscriptionData = subscription.toJSON();\n const pushkey = subscriptionData.keys.p256dh;\n const data = {\n endpoint: subscriptionData.endpoint,\n auth: subscriptionData.keys.auth,\n // don't deliver unread count push messages\n // as we don't want to show a notification in this case\n events_only: true,\n default_payload: defaultPayload\n };\n return pusherFactory.httpPusher(\n this._pushConfig.gatewayUrl,\n this._pushConfig.appId,\n pushkey,\n data\n );\n }\n }\n\n async disablePush() {\n const registration = await this._serviceWorkerHandler?.getRegistration();\n if (registration?.pushManager) {\n const subscription = await registration.pushManager.getSubscription();\n if (subscription) {\n await subscription.unsubscribe();\n }\n }\n }\n\n async isPushEnabled() {\n const registration = await this._serviceWorkerHandler?.getRegistration();\n if (registration?.pushManager) {\n const subscription = await registration.pushManager.getSubscription();\n return !!subscription;\n }\n return false;\n }\n\n async supportsPush() {\n if (!this._pushConfig) {\n return false;\n }\n const registration = await this._serviceWorkerHandler?.getRegistration();\n return registration && \"pushManager\" in registration;\n }\n\n async enableNotifications() {\n if (\"Notification\" in window) {\n return (await Notification.requestPermission()) === \"granted\";\n }\n return false;\n }\n\n async supportsNotifications() {\n return \"Notification\" in window;\n }\n\n async areNotificationsEnabled() {\n if (\"Notification\" in window) {\n return Notification.permission === \"granted\";\n } else {\n return false;\n }\n }\n\n async showNotification(title, body = undefined) {\n if (\"Notification\" in window) {\n new Notification(title, {body});\n return;\n }\n // Chrome on Android does not support the Notification constructor\n const registration = await this._serviceWorkerHandler?.getRegistration();\n registration?.showNotification(title, {body});\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {BaseObservableValue} from \"../../../observable/value\";\n\nexport class History extends BaseObservableValue {\n \n constructor() {\n super();\n this._lastSessionHash = undefined;\n }\n \n handleEvent(event) {\n if (event.type === \"hashchange\") {\n this.emit(this.get());\n this._storeHash(this.get());\n }\n }\n\n get() {\n /*\n All URLS in Hydrogen will use /#/segment/value/...\n But for SSO, we need to handle /?loginToken=\n Handle that as a special case for now.\n */\n if (document.location.search.includes(\"loginToken\")) {\n return document.location.search;\n }\n return document.location.hash;\n }\n\n /** does not emit */\n replaceUrlSilently(url) {\n window.history.replaceState(null, null, url);\n this._storeHash(url);\n }\n\n /** does not emit */\n pushUrlSilently(url) {\n window.history.pushState(null, null, url);\n this._storeHash(url);\n }\n\n pushUrl(url) {\n document.location.hash = url;\n }\n\n urlAsPath(url) {\n if (url.startsWith(\"#\")) {\n return url.substr(1);\n } else {\n return url;\n }\n }\n\n pathAsUrl(path) {\n return `#${path}`;\n }\n\n onSubscribeFirst() {\n this._lastSessionHash = window.localStorage?.getItem(\"hydrogen_last_url_hash\");\n window.addEventListener('hashchange', this);\n }\n\n onUnsubscribeLast() {\n window.removeEventListener('hashchange', this);\n }\n\n _storeHash(hash) {\n window.localStorage?.setItem(\"hydrogen_last_url_hash\", hash);\n }\n\n getLastSessionUrl() {\n return this._lastSessionHash;\n }\n}\n","/*\nCopyright 2020 Bruno Windels \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {BaseObservableValue} from \"../../../observable/value\";\n\nexport class OnlineStatus extends BaseObservableValue {\n constructor() {\n super();\n this._onOffline = this._onOffline.bind(this);\n this._onOnline = this._onOnline.bind(this);\n }\n\n _onOffline() {\n this.emit(false);\n }\n\n _onOnline() {\n this.emit(true);\n }\n\n get() {\n return navigator.onLine;\n }\n\n onSubscribeFirst() {\n window.addEventListener('offline', this._onOffline);\n window.addEventListener('online', this._onOnline);\n }\n\n onUnsubscribeLast() {\n window.removeEventListener('offline', this._onOffline);\n window.removeEventListener('online', this._onOnline);\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport base64 from \"base64-arraybuffer\";\n\n// turn IE11 result into promise\nfunction subtleCryptoResult(promiseOrOp, method) {\n if (promiseOrOp instanceof Promise) {\n return promiseOrOp;\n } else {\n return new Promise((resolve, reject) => {\n promiseOrOp.oncomplete = e => resolve(e.target.result);\n promiseOrOp.onerror = () => reject(new Error(\"Crypto error on \" + method));\n });\n }\n}\n\nclass HMACCrypto {\n constructor(subtleCrypto) {\n this._subtleCrypto = subtleCrypto;\n }\n /**\n * [hmac description]\n * @param {BufferSource} key\n * @param {BufferSource} mac\n * @param {BufferSource} data\n * @param {HashName} hash\n * @return {boolean}\n */\n async verify(key, mac, data, hash) {\n const opts = {\n name: 'HMAC',\n hash: {name: hashName(hash)},\n };\n const hmacKey = await subtleCryptoResult(this._subtleCrypto.importKey(\n 'raw',\n key,\n opts,\n false,\n ['verify'],\n ), \"importKey\");\n const isVerified = await subtleCryptoResult(this._subtleCrypto.verify(\n opts,\n hmacKey,\n mac,\n data,\n ), \"verify\");\n return isVerified;\n }\n\n async compute(key, data, hash) {\n const opts = {\n name: 'HMAC',\n hash: {name: hashName(hash)},\n };\n const hmacKey = await subtleCryptoResult(this._subtleCrypto.importKey(\n 'raw',\n key,\n opts,\n false,\n ['sign'],\n ), \"importKey\");\n const buffer = await subtleCryptoResult(this._subtleCrypto.sign(\n opts,\n hmacKey,\n data,\n ), \"sign\");\n return new Uint8Array(buffer);\n }\n}\n\nclass DeriveCrypto {\n constructor(subtleCrypto, crypto, cryptoExtras) {\n this._subtleCrypto = subtleCrypto;\n this._crypto = crypto;\n this._cryptoExtras = cryptoExtras;\n }\n /**\n * [pbkdf2 description]\n * @param {BufferSource} password\n * @param {Number} iterations\n * @param {BufferSource} salt\n * @param {HashName} hash\n * @param {Number} length the desired length of the generated key, in bits (not bytes!)\n * @return {BufferSource}\n */\n async pbkdf2(password, iterations, salt, hash, length) {\n if (!this._subtleCrypto.deriveBits) {\n throw new Error(\"PBKDF2 is not supported\");\n }\n const key = await subtleCryptoResult(this._subtleCrypto.importKey(\n 'raw',\n password,\n {name: 'PBKDF2'},\n false,\n ['deriveBits'],\n ), \"importKey\");\n const keybits = await subtleCryptoResult(this._subtleCrypto.deriveBits(\n {\n name: 'PBKDF2',\n salt,\n iterations,\n hash: hashName(hash),\n },\n key,\n length,\n ), \"deriveBits\");\n return new Uint8Array(keybits);\n }\n\n /**\n * [hkdf description]\n * @param {BufferSource} key [description]\n * @param {BufferSource} salt [description]\n * @param {BufferSource} info [description]\n * @param {HashName} hash the hash to use\n * @param {Number} length desired length of the generated key in bits (not bytes!)\n * @return {[type]} [description]\n */\n async hkdf(key, salt, info, hash, length) {\n if (!this._subtleCrypto.deriveBits) {\n return this._cryptoExtras.hkdf(this._crypto, key, salt, info, hash, length);\n }\n const hkdfkey = await subtleCryptoResult(this._subtleCrypto.importKey(\n 'raw',\n key,\n {name: \"HKDF\"},\n false,\n [\"deriveBits\"],\n ), \"importKey\");\n const keybits = await subtleCryptoResult(this._subtleCrypto.deriveBits({\n name: \"HKDF\",\n salt,\n info,\n hash: hashName(hash),\n },\n hkdfkey,\n length,\n ), \"deriveBits\");\n return new Uint8Array(keybits);\n }\n}\n\nclass AESCrypto {\n constructor(subtleCrypto, crypto) {\n this._subtleCrypto = subtleCrypto;\n this._crypto = crypto;\n }\n /**\n * [decrypt description]\n * @param {BufferSource} key [description]\n * @param {Object} jwkKey [description]\n * @param {BufferSource} iv [description]\n * @param {BufferSource} data [description]\n * @param {Number} counterLength the size of the counter, in bits\n * @return {BufferSource} [description]\n */\n async decryptCTR({key, jwkKey, iv, data, counterLength = 64}) {\n const opts = {\n name: \"AES-CTR\",\n counter: iv,\n length: counterLength,\n };\n let aesKey;\n try {\n const selectedKey = key || jwkKey;\n const format = jwkKey ? \"jwk\" : \"raw\";\n aesKey = await subtleCryptoResult(this._subtleCrypto.importKey(\n format,\n selectedKey,\n opts,\n false,\n ['decrypt'],\n ), \"importKey\");\n } catch (err) {\n throw new Error(`Could not import key for AES-CTR decryption: ${err.message}`);\n }\n try {\n const plaintext = await subtleCryptoResult(this._subtleCrypto.decrypt(\n // see https://developer.mozilla.org/en-US/docs/Web/API/AesCtrParams\n opts,\n aesKey,\n data,\n ), \"decrypt\");\n return new Uint8Array(plaintext);\n } catch (err) {\n throw new Error(`Could not decrypt with AES-CTR: ${err.message}`);\n }\n }\n\n async encryptCTR({key, jwkKey, iv, data}) {\n const opts = {\n name: \"AES-CTR\",\n counter: iv,\n length: 64,\n };\n let aesKey;\n const selectedKey = key || jwkKey;\n const format = jwkKey ? \"jwk\" : \"raw\";\n try {\n aesKey = await subtleCryptoResult(this._subtleCrypto.importKey(\n format,\n selectedKey,\n opts,\n false,\n ['encrypt'],\n ), \"importKey\");\n } catch (err) {\n throw new Error(`Could not import key for AES-CTR encryption: ${err.message}`);\n }\n try {\n const ciphertext = await subtleCryptoResult(this._subtleCrypto.encrypt(\n // see https://developer.mozilla.org/en-US/docs/Web/API/AesCtrParams\n opts,\n aesKey,\n data,\n ), \"encrypt\");\n return new Uint8Array(ciphertext);\n } catch (err) {\n throw new Error(`Could not encrypt with AES-CTR: ${err.message}`);\n }\n }\n\n /**\n * Generate a CTR key\n * @param {String} format \"raw\" or \"jwk\"\n * @param {Number} length 128 or 256\n * @return {Promise} an object for jwk, or a BufferSource for raw\n */\n async generateKey(format, length = 256) {\n const cryptoKey = await subtleCryptoResult(this._subtleCrypto.generateKey(\n {\"name\": \"AES-CTR\", length}, true, [\"encrypt\", \"decrypt\"]));\n return subtleCryptoResult(this._subtleCrypto.exportKey(format, cryptoKey));\n }\n\n async generateIV() {\n return generateIV(this._crypto);\n }\n}\n\nfunction generateIV(crypto) {\n const randomBytes = crypto.getRandomValues(new Uint8Array(8));\n const ivArray = new Uint8Array(16);\n for (let i = 0; i < randomBytes.length; i += 1) {\n ivArray[i] = randomBytes[i];\n }\n return ivArray;\n}\n\nfunction jwkKeyToRaw(jwkKey) {\n if (jwkKey.alg !== \"A256CTR\") {\n throw new Error(`Unknown algorithm: ${jwkKey.alg}`);\n }\n if (!jwkKey.key_ops.includes(\"decrypt\")) {\n throw new Error(`decrypt missing from key_ops`);\n }\n if (jwkKey.kty !== \"oct\") {\n throw new Error(`Invalid key type, \"oct\" expected: ${jwkKey.kty}`);\n }\n // convert base64-url to normal base64\n const base64UrlKey = jwkKey.k;\n const base64Key = base64UrlKey.replace(/-/g, \"+\").replace(/_/g, \"/\");\n return base64.decode(base64Key);\n}\n\nfunction encodeUnpaddedBase64(buffer) {\n const str = base64.encode(buffer);\n const paddingIdx = str.indexOf(\"=\");\n if (paddingIdx !== -1) {\n return str.substr(0, paddingIdx);\n } else {\n return str;\n }\n}\n\nfunction encodeUrlBase64(buffer) {\n const unpadded = encodeUnpaddedBase64(buffer);\n return unpadded.replace(/\\+/g, \"-\").replace(/\\//g, \"_\");\n}\n\nfunction rawKeyToJwk(key) {\n return {\n \"alg\": \"A256CTR\",\n \"ext\": true,\n \"k\": encodeUrlBase64(key),\n \"key_ops\": [\n \"encrypt\",\n \"decrypt\"\n ],\n \"kty\": \"oct\"\n };\n}\n\n\nclass AESLegacyCrypto {\n constructor(aesjs, crypto) {\n this._aesjs = aesjs;\n this._crypto = crypto;\n }\n /**\n * [decrypt description]\n * @param {BufferSource} key [description]\n * @param {BufferSource} iv [description]\n * @param {BufferSource} ciphertext [description]\n * @param {Number} counterLength the size of the counter, in bits\n * @return {BufferSource} [description]\n */\n async decryptCTR({key, jwkKey, iv, data, counterLength = 64}) {\n if (counterLength !== 64) {\n throw new Error(`Unsupported counter length: ${counterLength}`);\n }\n if (jwkKey) {\n key = jwkKeyToRaw(jwkKey);\n }\n const aesjs = this._aesjs;\n var aesCtr = new aesjs.ModeOfOperation.ctr(new Uint8Array(key), new aesjs.Counter(new Uint8Array(iv)));\n return aesCtr.decrypt(new Uint8Array(data));\n }\n\n async encryptCTR({key, jwkKey, iv, data}) {\n if (jwkKey) {\n key = jwkKeyToRaw(jwkKey);\n }\n const aesjs = this._aesjs;\n var aesCtr = new aesjs.ModeOfOperation.ctr(new Uint8Array(key), new aesjs.Counter(new Uint8Array(iv)));\n return aesCtr.encrypt(new Uint8Array(data));\n }\n\n /**\n * Generate a CTR key\n * @param {String} format \"raw\" or \"jwk\"\n * @param {Number} length 128 or 256\n * @return {Promise} an object for jwk, or a BufferSource for raw\n */\n async generateKey(format, length = 256) {\n let key = crypto.getRandomValues(new Uint8Array(length / 8));\n if (format === \"jwk\") {\n key = rawKeyToJwk(key);\n }\n return key;\n }\n\n async generateIV() {\n return generateIV(this._crypto);\n }\n}\n\nfunction hashName(name) {\n if (name !== \"SHA-256\" && name !== \"SHA-512\") {\n throw new Error(`Invalid hash name: ${name}`);\n }\n return name;\n}\n\nexport class Crypto {\n constructor(cryptoExtras) {\n const crypto = window.crypto || window.msCrypto;\n const subtleCrypto = crypto.subtle || crypto.webkitSubtle;\n this._subtleCrypto = subtleCrypto;\n // not exactly guaranteeing AES-CTR support\n // but in practice IE11 doesn't have this\n if (!subtleCrypto.deriveBits && cryptoExtras?.aesjs) {\n this.aes = new AESLegacyCrypto(cryptoExtras.aesjs, crypto);\n } else {\n this.aes = new AESCrypto(subtleCrypto, crypto);\n }\n this.hmac = new HMACCrypto(subtleCrypto);\n this.derive = new DeriveCrypto(subtleCrypto, this, cryptoExtras);\n }\n\n /**\n * [digest description]\n * @param {HashName} hash\n * @param {BufferSource} data\n * @return {BufferSource}\n */\n async digest(hash, data) {\n return await subtleCryptoResult(this._subtleCrypto.digest(hashName(hash), data));\n }\n\n digestSize(hash) {\n switch (hashName(hash)) {\n case \"SHA-512\": return 64;\n case \"SHA-256\": return 32;\n default: throw new Error(`Not implemented for ${hashName(hash)}`);\n }\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexport async function estimateStorageUsage() {\n if (navigator?.storage?.estimate) {\n const {quota, usage} = await navigator.storage.estimate();\n return {quota, usage};\n } else {\n return {quota: null, usage: null};\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {AbortError} from \"../../../utils/error\";\n\nclass WorkerState {\n constructor(worker) {\n this.worker = worker;\n this.busy = false;\n }\n\n attach(pool) {\n this.worker.addEventListener(\"message\", pool);\n this.worker.addEventListener(\"error\", pool);\n }\n\n detach(pool) {\n this.worker.removeEventListener(\"message\", pool);\n this.worker.removeEventListener(\"error\", pool);\n }\n}\n\nclass Request {\n constructor(message, pool) {\n this._promise = new Promise((_resolve, _reject) => {\n this._resolve = _resolve;\n this._reject = _reject;\n });\n this._message = message;\n this._pool = pool;\n this._worker = null;\n }\n\n abort() {\n if (this._isNotDisposed) {\n this._pool._abortRequest(this);\n this._dispose();\n }\n }\n\n response() {\n return this._promise;\n }\n\n _dispose() {\n this._reject = null;\n this._resolve = null;\n }\n\n get _isNotDisposed() {\n return this._resolve && this._reject;\n }\n}\n\nexport class WorkerPool {\n // TODO: extract DOM specific bits and write unit tests\n constructor(path, amount) {\n this._workers = [];\n for (let i = 0; i < amount ; ++i) {\n const worker = new WorkerState(new Worker(path));\n worker.attach(this);\n this._workers[i] = worker;\n }\n this._requests = new Map();\n this._counter = 0;\n this._pendingFlag = false;\n this._init = null;\n\n }\n\n init() {\n const promise = new Promise((resolve, reject) => {\n this._init = {resolve, reject};\n });\n this.sendAll({type: \"ping\"})\n .then(this._init.resolve, this._init.reject)\n .finally(() => {\n this._init = null;\n });\n return promise;\n }\n\n handleEvent(e) {\n if (e.type === \"message\") {\n const message = e.data;\n const request = this._requests.get(message.replyToId);\n if (request) {\n request._worker.busy = false;\n if (request._isNotDisposed) {\n if (message.type === \"success\") {\n request._resolve(message.payload);\n } else if (message.type === \"error\") {\n const err = new Error(message.message);\n err.stack = message.stack;\n request._reject(err);\n }\n request._dispose();\n }\n this._requests.delete(message.replyToId);\n }\n this._sendPending();\n } else if (e.type === \"error\") {\n if (this._init) {\n this._init.reject(new Error(\"worker error during init\"));\n }\n console.error(\"worker error\", e);\n }\n }\n\n _getPendingRequest() {\n for (const r of this._requests.values()) {\n if (!r._worker) {\n return r;\n }\n }\n }\n\n _getFreeWorker() {\n for (const w of this._workers) {\n if (!w.busy) {\n return w;\n }\n }\n }\n\n _sendPending() {\n this._pendingFlag = false;\n let success;\n do {\n success = false;\n const request = this._getPendingRequest();\n if (request) {\n const worker = this._getFreeWorker();\n if (worker) {\n this._sendWith(request, worker);\n success = true;\n }\n }\n } while (success);\n }\n\n _sendWith(request, worker) {\n request._worker = worker;\n worker.busy = true;\n worker.worker.postMessage(request._message);\n }\n\n _enqueueRequest(message) {\n this._counter += 1;\n message.id = this._counter;\n const request = new Request(message, this);\n this._requests.set(message.id, request);\n return request;\n }\n\n send(message) {\n const request = this._enqueueRequest(message);\n const worker = this._getFreeWorker();\n if (worker) {\n this._sendWith(request, worker);\n }\n return request;\n }\n\n // assumes all workers are free atm\n sendAll(message) {\n const promises = this._workers.map(worker => {\n const request = this._enqueueRequest(Object.assign({}, message));\n this._sendWith(request, worker);\n return request.response();\n });\n return Promise.all(promises);\n }\n\n dispose() {\n for (const w of this._workers) {\n w.detach(this);\n w.worker.terminate();\n }\n }\n\n _trySendPendingInNextTick() {\n if (!this._pendingFlag) {\n this._pendingFlag = true;\n Promise.resolve().then(() => {\n this._sendPending();\n });\n }\n }\n\n _abortRequest(request) {\n request._reject(new AbortError());\n if (request._worker) {\n request._worker.busy = false;\n }\n this._requests.delete(request._message.id);\n // allow more requests to be aborted before trying to send other pending\n this._trySendPendingInNextTick();\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {BlobHandle} from \"./BlobHandle.js\";\nimport {domEventAsPromise} from \"./utils\";\n\nexport class ImageHandle {\n static async fromBlob(blob) {\n const img = await loadImgFromBlob(blob);\n const {width, height} = img;\n return new ImageHandle(blob, width, height, img);\n }\n\n constructor(blob, width, height, imgElement) {\n this.blob = blob;\n this.width = width;\n this.height = height;\n this._domElement = imgElement;\n }\n\n get maxDimension() {\n return Math.max(this.width, this.height);\n }\n\n async _getDomElement() {\n if (!this._domElement) {\n this._domElement = await loadImgFromBlob(this.blob);\n }\n return this._domElement;\n }\n\n async scale(maxDimension) {\n const aspectRatio = this.width / this.height;\n const scaleFactor = Math.min(1, maxDimension / (aspectRatio >= 1 ? this.width : this.height));\n const scaledWidth = Math.round(this.width * scaleFactor);\n const scaledHeight = Math.round(this.height * scaleFactor);\n const canvas = document.createElement(\"canvas\");\n canvas.width = scaledWidth;\n canvas.height = scaledHeight;\n const ctx = canvas.getContext(\"2d\");\n const drawableElement = await this._getDomElement();\n ctx.drawImage(drawableElement, 0, 0, scaledWidth, scaledHeight);\n let mimeType = this.blob.mimeType === \"image/jpeg\" ? \"image/jpeg\" : \"image/png\";\n let nativeBlob;\n if (canvas.toBlob) {\n nativeBlob = await new Promise(resolve => canvas.toBlob(resolve, mimeType));\n } else if (canvas.msToBlob) {\n // TODO: provide a mimetype override in blob handle for this case\n mimeType = \"image/png\";\n nativeBlob = canvas.msToBlob();\n } else {\n throw new Error(\"canvas can't be turned into blob\");\n }\n // unsafe is ok because it's a jpeg or png image\n const blob = BlobHandle.fromBlobUnsafe(nativeBlob);\n return new ImageHandle(blob, scaledWidth, scaledHeight, null);\n }\n\n dispose() {\n this.blob.dispose();\n }\n}\n\nexport class VideoHandle extends ImageHandle {\n get duration() {\n if (typeof this._domElement.duration === \"number\") {\n return Math.round(this._domElement.duration * 1000);\n }\n return undefined;\n }\n\n static async fromBlob(blob) {\n const video = await loadVideoFromBlob(blob);\n const {videoWidth, videoHeight} = video;\n return new VideoHandle(blob, videoWidth, videoHeight, video);\n }\n}\n\nexport function hasReadPixelPermission() {\n const canvas = document.createElement(\"canvas\");\n canvas.width = 1;\n canvas.height = 1;\n const ctx = canvas.getContext(\"2d\");\n const rgb = [\n Math.round(Math.random() * 255),\n Math.round(Math.random() * 255),\n Math.round(Math.random() * 255),\n ]\n ctx.fillStyle = `rgb(${rgb[0]}, ${rgb[1]}, ${rgb[2]})`;\n ctx.fillRect(0, 0, 1, 1);\n const data = ctx.getImageData(0, 0, 1, 1).data;\n return data[0] === rgb[0] && data[1] === rgb[1] && data[2] === rgb[2];\n}\n\nasync function loadImgFromBlob(blob) {\n const img = document.createElement(\"img\");\n const loadPromise = domEventAsPromise(img, \"load\");\n img.src = blob.url;\n await loadPromise;\n return img;\n}\n\nasync function loadVideoFromBlob(blob) {\n const video = document.createElement(\"video\");\n video.muted = true;\n const loadPromise = domEventAsPromise(video, \"loadedmetadata\");\n video.src = blob.url;\n video.load();\n await loadPromise;\n // seek to the first 1/10s to make sure that drawing the video\n // on a canvas won't give a blank image\n const seekPromise = domEventAsPromise(video, \"seeked\");\n // needed for safari to reliably fire the seeked event,\n // somewhat hacky but using raf for example didn't do the trick\n await new Promise(r => setTimeout(r, 200));\n video.currentTime = 0.1;\n await seekPromise;\n return video;\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexport async function downloadInIframe(container, iframeSrc, blobHandle, filename, isIOS) {\n let iframe = container.querySelector(\"iframe.downloadSandbox\");\n if (!iframe) {\n iframe = document.createElement(\"iframe\");\n iframe.setAttribute(\"sandbox\", \"allow-scripts allow-downloads allow-downloads-without-user-activation\");\n iframe.setAttribute(\"src\", iframeSrc);\n iframe.className = \"hidden downloadSandbox\";\n container.appendChild(iframe);\n let detach;\n await new Promise((resolve, reject) => {\n detach = () => {\n iframe.removeEventListener(\"load\", resolve);\n iframe.removeEventListener(\"error\", reject); \n }\n iframe.addEventListener(\"load\", resolve);\n iframe.addEventListener(\"error\", reject);\n });\n detach();\n }\n if (isIOS) {\n // iOS can't read a blob in a sandboxed iframe,\n // see https://github.com/vector-im/hydrogen-web/issues/244\n const buffer = await blobHandle.readAsBuffer();\n iframe.contentWindow.postMessage({\n type: \"downloadBuffer\",\n buffer,\n mimeType: blobHandle.mimeType,\n filename: filename\n }, \"*\");\n } else {\n iframe.contentWindow.postMessage({\n type: \"downloadBlob\",\n blob: blobHandle.nativeBlob,\n filename: filename\n }, \"*\");\n }\n}\n","/*! @license DOMPurify 2.3.0 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/2.3.0/LICENSE */\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nvar hasOwnProperty = Object.hasOwnProperty,\n setPrototypeOf = Object.setPrototypeOf,\n isFrozen = Object.isFrozen,\n getPrototypeOf = Object.getPrototypeOf,\n getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar freeze = Object.freeze,\n seal = Object.seal,\n create = Object.create; // eslint-disable-line import/no-mutable-exports\n\nvar _ref = typeof Reflect !== 'undefined' && Reflect,\n apply = _ref.apply,\n construct = _ref.construct;\n\nif (!apply) {\n apply = function apply(fun, thisValue, args) {\n return fun.apply(thisValue, args);\n };\n}\n\nif (!freeze) {\n freeze = function freeze(x) {\n return x;\n };\n}\n\nif (!seal) {\n seal = function seal(x) {\n return x;\n };\n}\n\nif (!construct) {\n construct = function construct(Func, args) {\n return new (Function.prototype.bind.apply(Func, [null].concat(_toConsumableArray(args))))();\n };\n}\n\nvar arrayForEach = unapply(Array.prototype.forEach);\nvar arrayPop = unapply(Array.prototype.pop);\nvar arrayPush = unapply(Array.prototype.push);\n\nvar stringToLowerCase = unapply(String.prototype.toLowerCase);\nvar stringMatch = unapply(String.prototype.match);\nvar stringReplace = unapply(String.prototype.replace);\nvar stringIndexOf = unapply(String.prototype.indexOf);\nvar stringTrim = unapply(String.prototype.trim);\n\nvar regExpTest = unapply(RegExp.prototype.test);\n\nvar typeErrorCreate = unconstruct(TypeError);\n\nfunction unapply(func) {\n return function (thisArg) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return apply(func, thisArg, args);\n };\n}\n\nfunction unconstruct(func) {\n return function () {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return construct(func, args);\n };\n}\n\n/* Add properties to a lookup table */\nfunction addToSet(set, array) {\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n\n var l = array.length;\n while (l--) {\n var element = array[l];\n if (typeof element === 'string') {\n var lcElement = stringToLowerCase(element);\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n\n element = lcElement;\n }\n }\n\n set[element] = true;\n }\n\n return set;\n}\n\n/* Shallow clone an object */\nfunction clone(object) {\n var newObject = create(null);\n\n var property = void 0;\n for (property in object) {\n if (apply(hasOwnProperty, object, [property])) {\n newObject[property] = object[property];\n }\n }\n\n return newObject;\n}\n\n/* IE10 doesn't support __lookupGetter__ so lets'\n * simulate it. It also automatically checks\n * if the prop is function or getter and behaves\n * accordingly. */\nfunction lookupGetter(object, prop) {\n while (object !== null) {\n var desc = getOwnPropertyDescriptor(object, prop);\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n\n object = getPrototypeOf(object);\n }\n\n function fallbackValue(element) {\n console.warn('fallback value for', element);\n return null;\n }\n\n return fallbackValue;\n}\n\nvar html = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);\n\n// SVG\nvar svg = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\n\nvar svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nvar svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'fedropshadow', 'feimage', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\n\nvar mathMl = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover']);\n\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nvar mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\n\nvar text = freeze(['#text']);\n\nvar html$1 = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'xmlns', 'slot']);\n\nvar svg$1 = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'targetx', 'targety', 'transform', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\n\nvar mathMl$1 = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\n\nvar xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n// eslint-disable-next-line unicorn/better-regex\nvar MUSTACHE_EXPR = seal(/\\{\\{[\\s\\S]*|[\\s\\S]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nvar ERB_EXPR = seal(/<%[\\s\\S]*|[\\s\\S]*%>/gm);\nvar DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]/); // eslint-disable-line no-useless-escape\nvar ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nvar IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nvar IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nvar ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction _toConsumableArray$1(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nvar getGlobal = function getGlobal() {\n return typeof window === 'undefined' ? null : window;\n};\n\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param {?TrustedTypePolicyFactory} trustedTypes The policy factory.\n * @param {Document} document The document object (to determine policy name suffix)\n * @return {?TrustedTypePolicy} The policy created (or null, if Trusted Types\n * are not supported).\n */\nvar _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, document) {\n if ((typeof trustedTypes === 'undefined' ? 'undefined' : _typeof(trustedTypes)) !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n return null;\n }\n\n // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n var suffix = null;\n var ATTR_NAME = 'data-tt-policy-suffix';\n if (document.currentScript && document.currentScript.hasAttribute(ATTR_NAME)) {\n suffix = document.currentScript.getAttribute(ATTR_NAME);\n }\n\n var policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML: function createHTML(html$$1) {\n return html$$1;\n }\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n return null;\n }\n};\n\nfunction createDOMPurify() {\n var window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n\n var DOMPurify = function DOMPurify(root) {\n return createDOMPurify(root);\n };\n\n /**\n * Version label, exposed for easier checks\n * if DOMPurify is up to date or not\n */\n DOMPurify.version = '2.3.0';\n\n /**\n * Array of elements that DOMPurify removed during sanitation.\n * Empty if nothing was removed.\n */\n DOMPurify.removed = [];\n\n if (!window || !window.document || window.document.nodeType !== 9) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n\n return DOMPurify;\n }\n\n var originalDocument = window.document;\n\n var document = window.document;\n var DocumentFragment = window.DocumentFragment,\n HTMLTemplateElement = window.HTMLTemplateElement,\n Node = window.Node,\n Element = window.Element,\n NodeFilter = window.NodeFilter,\n _window$NamedNodeMap = window.NamedNodeMap,\n NamedNodeMap = _window$NamedNodeMap === undefined ? window.NamedNodeMap || window.MozNamedAttrMap : _window$NamedNodeMap,\n Text = window.Text,\n Comment = window.Comment,\n DOMParser = window.DOMParser,\n trustedTypes = window.trustedTypes;\n\n\n var ElementPrototype = Element.prototype;\n\n var cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n var getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n var getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n var getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n\n // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n if (typeof HTMLTemplateElement === 'function') {\n var template = document.createElement('template');\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n\n var trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, originalDocument);\n var emptyHTML = trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML('') : '';\n\n var _document = document,\n implementation = _document.implementation,\n createNodeIterator = _document.createNodeIterator,\n createDocumentFragment = _document.createDocumentFragment,\n getElementsByTagName = _document.getElementsByTagName;\n var importNode = originalDocument.importNode;\n\n\n var documentMode = {};\n try {\n documentMode = clone(document).documentMode ? document.documentMode : {};\n } catch (_) {}\n\n var hooks = {};\n\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n DOMPurify.isSupported = typeof getParentNode === 'function' && implementation && typeof implementation.createHTMLDocument !== 'undefined' && documentMode !== 9;\n\n var MUSTACHE_EXPR$$1 = MUSTACHE_EXPR,\n ERB_EXPR$$1 = ERB_EXPR,\n DATA_ATTR$$1 = DATA_ATTR,\n ARIA_ATTR$$1 = ARIA_ATTR,\n IS_SCRIPT_OR_DATA$$1 = IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE$$1 = ATTR_WHITESPACE;\n var IS_ALLOWED_URI$$1 = IS_ALLOWED_URI;\n\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n\n /* allowed element names */\n\n var ALLOWED_TAGS = null;\n var DEFAULT_ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray$1(html), _toConsumableArray$1(svg), _toConsumableArray$1(svgFilters), _toConsumableArray$1(mathMl), _toConsumableArray$1(text)));\n\n /* Allowed attribute names */\n var ALLOWED_ATTR = null;\n var DEFAULT_ALLOWED_ATTR = addToSet({}, [].concat(_toConsumableArray$1(html$1), _toConsumableArray$1(svg$1), _toConsumableArray$1(mathMl$1), _toConsumableArray$1(xml)));\n\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n var FORBID_TAGS = null;\n\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n var FORBID_ATTR = null;\n\n /* Decide if ARIA attributes are okay */\n var ALLOW_ARIA_ATTR = true;\n\n /* Decide if custom data attributes are okay */\n var ALLOW_DATA_ATTR = true;\n\n /* Decide if unknown protocols are okay */\n var ALLOW_UNKNOWN_PROTOCOLS = false;\n\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n var SAFE_FOR_TEMPLATES = false;\n\n /* Decide if document with ... should be returned */\n var WHOLE_DOCUMENT = false;\n\n /* Track whether config is already set on this instance of DOMPurify. */\n var SET_CONFIG = false;\n\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n var FORCE_BODY = false;\n\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n var RETURN_DOM = false;\n\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n var RETURN_DOM_FRAGMENT = false;\n\n /* If `RETURN_DOM` or `RETURN_DOM_FRAGMENT` is enabled, decide if the returned DOM\n * `Node` is imported into the current `Document`. If this flag is not enabled the\n * `Node` will belong (its ownerDocument) to a fresh `HTMLDocument`, created by\n * DOMPurify.\n *\n * This defaults to `true` starting DOMPurify 2.2.0. Note that setting it to `false`\n * might cause XSS from attacks hidden in closed shadowroots in case the browser\n * supports Declarative Shadow: DOM https://web.dev/declarative-shadow-dom/\n */\n var RETURN_DOM_IMPORT = true;\n\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n var RETURN_TRUSTED_TYPE = false;\n\n /* Output should be free from DOM clobbering attacks? */\n var SANITIZE_DOM = true;\n\n /* Keep element content when removing element? */\n var KEEP_CONTENT = true;\n\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n var IN_PLACE = false;\n\n /* Allow usage of profiles like html, svg and mathMl */\n var USE_PROFILES = {};\n\n /* Tags to ignore content of when KEEP_CONTENT is true */\n var FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n\n /* Tags that are safe for data: URIs */\n var DATA_URI_TAGS = null;\n var DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n\n /* Attributes safe for values like \"javascript:\" */\n var URI_SAFE_ATTRIBUTES = null;\n var DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'summary', 'title', 'value', 'style', 'xmlns']);\n\n var MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n var SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n var HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n var NAMESPACE = HTML_NAMESPACE;\n var IS_EMPTY_INPUT = false;\n\n /* Keep a reference to config to pass to hooks */\n var CONFIG = null;\n\n /* Ideally, do not touch anything below this line */\n /* ______________________________________________ */\n\n var formElement = document.createElement('form');\n\n /**\n * _parseConfig\n *\n * @param {Object} cfg optional config literal\n */\n // eslint-disable-next-line complexity\n var _parseConfig = function _parseConfig(cfg) {\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n\n /* Shield configuration object from tampering */\n if (!cfg || (typeof cfg === 'undefined' ? 'undefined' : _typeof(cfg)) !== 'object') {\n cfg = {};\n }\n\n /* Shield configuration object from prototype pollution */\n cfg = clone(cfg);\n\n /* Set configuration parameters */\n ALLOWED_TAGS = 'ALLOWED_TAGS' in cfg ? addToSet({}, cfg.ALLOWED_TAGS) : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = 'ALLOWED_ATTR' in cfg ? addToSet({}, cfg.ALLOWED_ATTR) : DEFAULT_ALLOWED_ATTR;\n URI_SAFE_ATTRIBUTES = 'ADD_URI_SAFE_ATTR' in cfg ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR) : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = 'ADD_DATA_URI_TAGS' in cfg ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS) : DEFAULT_DATA_URI_TAGS;\n FORBID_TAGS = 'FORBID_TAGS' in cfg ? addToSet({}, cfg.FORBID_TAGS) : {};\n FORBID_ATTR = 'FORBID_ATTR' in cfg ? addToSet({}, cfg.FORBID_ATTR) : {};\n USE_PROFILES = 'USE_PROFILES' in cfg ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n RETURN_DOM_IMPORT = cfg.RETURN_DOM_IMPORT !== false; // Default true\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n IS_ALLOWED_URI$$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI$$1;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n\n /* Parse profile info */\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray$1(text)));\n ALLOWED_ATTR = [];\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, html);\n addToSet(ALLOWED_ATTR, html$1);\n }\n\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, svg);\n addToSet(ALLOWED_ATTR, svg$1);\n addToSet(ALLOWED_ATTR, xml);\n }\n\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, svgFilters);\n addToSet(ALLOWED_ATTR, svg$1);\n addToSet(ALLOWED_ATTR, xml);\n }\n\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, mathMl);\n addToSet(ALLOWED_ATTR, mathMl$1);\n addToSet(ALLOWED_ATTR, xml);\n }\n }\n\n /* Merge configuration parameters */\n if (cfg.ADD_TAGS) {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS);\n }\n\n if (cfg.ADD_ATTR) {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR);\n }\n\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR);\n }\n\n /* Add #text in case KEEP_CONTENT is set to true */\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n }\n\n // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n if (freeze) {\n freeze(cfg);\n }\n\n CONFIG = cfg;\n };\n\n var MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n\n var HTML_INTEGRATION_POINTS = addToSet({}, ['foreignobject', 'desc', 'title', 'annotation-xml']);\n\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n var ALL_SVG_TAGS = addToSet({}, svg);\n addToSet(ALL_SVG_TAGS, svgFilters);\n addToSet(ALL_SVG_TAGS, svgDisallowed);\n\n var ALL_MATHML_TAGS = addToSet({}, mathMl);\n addToSet(ALL_MATHML_TAGS, mathMlDisallowed);\n\n /**\n *\n *\n * @param {Element} element a DOM element whose namespace is being checked\n * @returns {boolean} Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n var _checkValidNamespace = function _checkValidNamespace(element) {\n var parent = getParentNode(element);\n\n // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: HTML_NAMESPACE,\n tagName: 'template'\n };\n }\n\n var tagName = stringToLowerCase(element.tagName);\n var parentTagName = stringToLowerCase(parent.tagName);\n\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n }\n\n // The only way to switch from MathML to SVG is via\n // svg if parent is either or MathML\n // text integration points.\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n }\n\n // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n }\n\n // The only way to switch from SVG to MathML is via\n // and HTML integration points\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n }\n\n // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n\n if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n\n // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erronously deleted from\n // HTML namespace.\n var commonSvgAndHTMLElements = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n\n // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n return !ALL_MATHML_TAGS[tagName] && (commonSvgAndHTMLElements[tagName] || !ALL_SVG_TAGS[tagName]);\n }\n\n // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG or MathML). Return false just in case.\n return false;\n };\n\n /**\n * _forceRemove\n *\n * @param {Node} node a DOM node\n */\n var _forceRemove = function _forceRemove(node) {\n arrayPush(DOMPurify.removed, { element: node });\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n node.parentNode.removeChild(node);\n } catch (_) {\n try {\n node.outerHTML = emptyHTML;\n } catch (_) {\n node.remove();\n }\n }\n };\n\n /**\n * _removeAttribute\n *\n * @param {String} name an Attribute name\n * @param {Node} node a DOM node\n */\n var _removeAttribute = function _removeAttribute(name, node) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: node.getAttributeNode(name),\n from: node\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: node\n });\n }\n\n node.removeAttribute(name);\n\n // We void attribute values for unremovable \"is\"\" attributes\n if (name === 'is' && !ALLOWED_ATTR[name]) {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(node);\n } catch (_) {}\n } else {\n try {\n node.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n\n /**\n * _initDocument\n *\n * @param {String} dirty a string of dirty markup\n * @return {Document} a DOM, filled with the dirty markup\n */\n var _initDocument = function _initDocument(dirty) {\n /* Create a HTML document */\n var doc = void 0;\n var leadingWhitespace = void 0;\n\n if (FORCE_BODY) {\n dirty = '' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n var matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n\n var dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, 'text/html');\n } catch (_) {}\n }\n\n /* Use createHTMLDocument in case DOMParser is not available */\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT ? '' : dirtyPayload;\n } catch (_) {\n // Syntax error if dirtyPayload is invalid xml\n }\n }\n\n var body = doc.body || doc.documentElement;\n\n if (dirty && leadingWhitespace) {\n body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n }\n\n /* Work on whole document or just its body */\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n }\n\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n\n /**\n * _createIterator\n *\n * @param {Document} root document/fragment to create iterator for\n * @return {Iterator} iterator instance\n */\n var _createIterator = function _createIterator(root) {\n return createNodeIterator.call(root.ownerDocument || root, root, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT, null, false);\n };\n\n /**\n * _isClobbered\n *\n * @param {Node} elm element to check for clobbering attacks\n * @return {Boolean} true if clobbered, false if safe\n */\n var _isClobbered = function _isClobbered(elm) {\n if (elm instanceof Text || elm instanceof Comment) {\n return false;\n }\n\n if (typeof elm.nodeName !== 'string' || typeof elm.textContent !== 'string' || typeof elm.removeChild !== 'function' || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== 'function' || typeof elm.setAttribute !== 'function' || typeof elm.namespaceURI !== 'string' || typeof elm.insertBefore !== 'function') {\n return true;\n }\n\n return false;\n };\n\n /**\n * _isNode\n *\n * @param {Node} obj object to check whether it's a DOM node\n * @return {Boolean} true is object is a DOM node\n */\n var _isNode = function _isNode(object) {\n return (typeof Node === 'undefined' ? 'undefined' : _typeof(Node)) === 'object' ? object instanceof Node : object && (typeof object === 'undefined' ? 'undefined' : _typeof(object)) === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string';\n };\n\n /**\n * _executeHook\n * Execute user configurable hooks\n *\n * @param {String} entryPoint Name of the hook's entry point\n * @param {Node} currentNode node to work on with the hook\n * @param {Object} data additional hook parameters\n */\n var _executeHook = function _executeHook(entryPoint, currentNode, data) {\n if (!hooks[entryPoint]) {\n return;\n }\n\n arrayForEach(hooks[entryPoint], function (hook) {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n };\n\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n *\n * @param {Node} currentNode to check for permission to exist\n * @return {Boolean} true if node was killed, false if left alive\n */\n var _sanitizeElements = function _sanitizeElements(currentNode) {\n var content = void 0;\n\n /* Execute a hook if present */\n _executeHook('beforeSanitizeElements', currentNode, null);\n\n /* Check if element is clobbered or can clobber */\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Check if tagname contains Unicode */\n if (stringMatch(currentNode.nodeName, /[\\u0080-\\uFFFF]/)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Now let's check the element's type and name */\n var tagName = stringToLowerCase(currentNode.nodeName);\n\n /* Execute a hook if present */\n _executeHook('uponSanitizeElement', currentNode, {\n tagName: tagName,\n allowedTags: ALLOWED_TAGS\n });\n\n /* Detect mXSS attempts abusing namespace confusion */\n if (!_isNode(currentNode.firstElementChild) && (!_isNode(currentNode.content) || !_isNode(currentNode.content.firstElementChild)) && regExpTest(/<[/\\w]/g, currentNode.innerHTML) && regExpTest(/<[/\\w]/g, currentNode.textContent)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Remove element if anything forbids its presence */\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n /* Keep content except for bad-listed elements */\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n var parentNode = getParentNode(currentNode) || currentNode.parentNode;\n var childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n\n if (childNodes && parentNode) {\n var childCount = childNodes.length;\n\n for (var i = childCount - 1; i >= 0; --i) {\n parentNode.insertBefore(cloneNode(childNodes[i], true), getNextSibling(currentNode));\n }\n }\n }\n\n _forceRemove(currentNode);\n return true;\n }\n\n /* Check whether element has a valid namespace */\n if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n\n if ((tagName === 'noscript' || tagName === 'noembed') && regExpTest(/<\\/no(script|embed)/i, currentNode.innerHTML)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Sanitize element content to be template-safe */\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === 3) {\n /* Get the element's text content */\n content = currentNode.textContent;\n content = stringReplace(content, MUSTACHE_EXPR$$1, ' ');\n content = stringReplace(content, ERB_EXPR$$1, ' ');\n if (currentNode.textContent !== content) {\n arrayPush(DOMPurify.removed, { element: currentNode.cloneNode() });\n currentNode.textContent = content;\n }\n }\n\n /* Execute a hook if present */\n _executeHook('afterSanitizeElements', currentNode, null);\n\n return false;\n };\n\n /**\n * _isValidAttribute\n *\n * @param {string} lcTag Lowercase tag name of containing element.\n * @param {string} lcName Lowercase attribute name.\n * @param {string} value Attribute value.\n * @return {Boolean} Returns true if `value` is valid, otherwise false.\n */\n // eslint-disable-next-line complexity\n var _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n /* Make sure attribute cannot clobber */\n if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n return false;\n }\n\n /* Allow valid data-* attributes: At least one character after \"-\"\n (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n We don't need to check the value; it's always URI safe. */\n if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR$$1, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR$$1, lcName)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n return false;\n\n /* Check value is safe. First, is attr inert? If so, is safe */\n } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$$1, stringReplace(value, ATTR_WHITESPACE$$1, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA$$1, stringReplace(value, ATTR_WHITESPACE$$1, ''))) ; else if (!value) ; else {\n return false;\n }\n\n return true;\n };\n\n /**\n * _sanitizeAttributes\n *\n * @protect attributes\n * @protect nodeName\n * @protect removeAttribute\n * @protect setAttribute\n *\n * @param {Node} currentNode to sanitize\n */\n var _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n var attr = void 0;\n var value = void 0;\n var lcName = void 0;\n var l = void 0;\n /* Execute a hook if present */\n _executeHook('beforeSanitizeAttributes', currentNode, null);\n\n var attributes = currentNode.attributes;\n\n /* Check if we have attributes; if not we might have a text node */\n\n if (!attributes) {\n return;\n }\n\n var hookEvent = {\n attrName: '',\n attrValue: '',\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR\n };\n l = attributes.length;\n\n /* Go backwards over all attributes; safely remove bad ones */\n while (l--) {\n attr = attributes[l];\n var _attr = attr,\n name = _attr.name,\n namespaceURI = _attr.namespaceURI;\n\n value = stringTrim(attr.value);\n lcName = stringToLowerCase(name);\n\n /* Execute a hook if present */\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n _executeHook('uponSanitizeAttribute', currentNode, hookEvent);\n value = hookEvent.attrValue;\n /* Did the hooks approve of the attribute? */\n if (hookEvent.forceKeepAttr) {\n continue;\n }\n\n /* Remove attribute */\n _removeAttribute(name, currentNode);\n\n /* Did the hooks approve of the attribute? */\n if (!hookEvent.keepAttr) {\n continue;\n }\n\n /* Work around a security issue in jQuery 3.0 */\n if (regExpTest(/\\/>/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n\n /* Sanitize attribute content to be template-safe */\n if (SAFE_FOR_TEMPLATES) {\n value = stringReplace(value, MUSTACHE_EXPR$$1, ' ');\n value = stringReplace(value, ERB_EXPR$$1, ' ');\n }\n\n /* Is `value` valid for this attribute? */\n var lcTag = currentNode.nodeName.toLowerCase();\n if (!_isValidAttribute(lcTag, lcName, value)) {\n continue;\n }\n\n /* Handle invalid data-* attribute set by try-catching it */\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n currentNode.setAttribute(name, value);\n }\n\n arrayPop(DOMPurify.removed);\n } catch (_) {}\n }\n\n /* Execute a hook if present */\n _executeHook('afterSanitizeAttributes', currentNode, null);\n };\n\n /**\n * _sanitizeShadowDOM\n *\n * @param {DocumentFragment} fragment to iterate over recursively\n */\n var _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n var shadowNode = void 0;\n var shadowIterator = _createIterator(fragment);\n\n /* Execute a hook if present */\n _executeHook('beforeSanitizeShadowDOM', fragment, null);\n\n while (shadowNode = shadowIterator.nextNode()) {\n /* Execute a hook if present */\n _executeHook('uponSanitizeShadowNode', shadowNode, null);\n\n /* Sanitize tags and elements */\n if (_sanitizeElements(shadowNode)) {\n continue;\n }\n\n /* Deep shadow DOM detected */\n if (shadowNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(shadowNode.content);\n }\n\n /* Check attributes, sanitize if necessary */\n _sanitizeAttributes(shadowNode);\n }\n\n /* Execute a hook if present */\n _executeHook('afterSanitizeShadowDOM', fragment, null);\n };\n\n /**\n * Sanitize\n * Public method providing core sanitation functionality\n *\n * @param {String|Node} dirty string or DOM node\n * @param {Object} configuration object\n */\n // eslint-disable-next-line complexity\n DOMPurify.sanitize = function (dirty, cfg) {\n var body = void 0;\n var importedNode = void 0;\n var currentNode = void 0;\n var oldNode = void 0;\n var returnNode = void 0;\n /* Make sure we have a string to sanitize.\n DO NOT return early, as this will return the wrong type if\n the user has requested a DOM object rather than a string */\n IS_EMPTY_INPUT = !dirty;\n if (IS_EMPTY_INPUT) {\n dirty = '';\n }\n\n /* Stringify, in case dirty is an object */\n if (typeof dirty !== 'string' && !_isNode(dirty)) {\n // eslint-disable-next-line no-negated-condition\n if (typeof dirty.toString !== 'function') {\n throw typeErrorCreate('toString is not a function');\n } else {\n dirty = dirty.toString();\n if (typeof dirty !== 'string') {\n throw typeErrorCreate('dirty is not a string, aborting');\n }\n }\n }\n\n /* Check we can run. Otherwise fall back or ignore */\n if (!DOMPurify.isSupported) {\n if (_typeof(window.toStaticHTML) === 'object' || typeof window.toStaticHTML === 'function') {\n if (typeof dirty === 'string') {\n return window.toStaticHTML(dirty);\n }\n\n if (_isNode(dirty)) {\n return window.toStaticHTML(dirty.outerHTML);\n }\n }\n\n return dirty;\n }\n\n /* Assign config vars */\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n\n /* Clean up removed elements */\n DOMPurify.removed = [];\n\n /* Check if dirty is correctly typed for IN_PLACE */\n if (typeof dirty === 'string') {\n IN_PLACE = false;\n }\n\n if (IN_PLACE) ; else if (dirty instanceof Node) {\n /* If dirty is a DOM element, append to an empty document to avoid\n elements being stripped by the parser */\n body = _initDocument('');\n importedNode = body.ownerDocument.importNode(dirty, true);\n if (importedNode.nodeType === 1 && importedNode.nodeName === 'BODY') {\n /* Node is already a body, use as is */\n body = importedNode;\n } else if (importedNode.nodeName === 'HTML') {\n body = importedNode;\n } else {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n body.appendChild(importedNode);\n }\n } else {\n /* Exit directly if we have nothing to do */\n if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT &&\n // eslint-disable-next-line unicorn/prefer-includes\n dirty.indexOf('<') === -1) {\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n }\n\n /* Initialize the document to work on */\n body = _initDocument(dirty);\n\n /* Check we have a DOM node from the data */\n if (!body) {\n return RETURN_DOM ? null : emptyHTML;\n }\n }\n\n /* Remove first element node (ours) if FORCE_BODY is set */\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n\n /* Get node iterator */\n var nodeIterator = _createIterator(IN_PLACE ? dirty : body);\n\n /* Now start iterating over the created document */\n while (currentNode = nodeIterator.nextNode()) {\n /* Fix IE's strange behavior with manipulated textNodes #89 */\n if (currentNode.nodeType === 3 && currentNode === oldNode) {\n continue;\n }\n\n /* Sanitize tags and elements */\n if (_sanitizeElements(currentNode)) {\n continue;\n }\n\n /* Shadow DOM detected, sanitize it */\n if (currentNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(currentNode.content);\n }\n\n /* Check attributes, sanitize if necessary */\n _sanitizeAttributes(currentNode);\n\n oldNode = currentNode;\n }\n\n oldNode = null;\n\n /* If we sanitized `dirty` in-place, return it. */\n if (IN_PLACE) {\n return dirty;\n }\n\n /* Return sanitized string or DOM */\n if (RETURN_DOM) {\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n\n while (body.firstChild) {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n\n if (RETURN_DOM_IMPORT) {\n /*\n AdoptNode() is not used because internal state is not reset\n (e.g. the past names map of a HTMLFormElement), this is safe\n in theory but we would rather not risk another attack vector.\n The state that is cloned by importNode() is explicitly defined\n by the specs.\n */\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n\n return returnNode;\n }\n\n var serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n\n /* Sanitize final string template-safe */\n if (SAFE_FOR_TEMPLATES) {\n serializedHTML = stringReplace(serializedHTML, MUSTACHE_EXPR$$1, ' ');\n serializedHTML = stringReplace(serializedHTML, ERB_EXPR$$1, ' ');\n }\n\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n };\n\n /**\n * Public method to set the configuration once\n * setConfig\n *\n * @param {Object} cfg configuration object\n */\n DOMPurify.setConfig = function (cfg) {\n _parseConfig(cfg);\n SET_CONFIG = true;\n };\n\n /**\n * Public method to remove the configuration\n * clearConfig\n *\n */\n DOMPurify.clearConfig = function () {\n CONFIG = null;\n SET_CONFIG = false;\n };\n\n /**\n * Public method to check if an attribute value is valid.\n * Uses last set config, if any. Otherwise, uses config defaults.\n * isValidAttribute\n *\n * @param {string} tag Tag name of containing element.\n * @param {string} attr Attribute name.\n * @param {string} value Attribute value.\n * @return {Boolean} Returns true if `value` is valid. Otherwise, returns false.\n */\n DOMPurify.isValidAttribute = function (tag, attr, value) {\n /* Initialize shared config vars if necessary. */\n if (!CONFIG) {\n _parseConfig({});\n }\n\n var lcTag = stringToLowerCase(tag);\n var lcName = stringToLowerCase(attr);\n return _isValidAttribute(lcTag, lcName, value);\n };\n\n /**\n * AddHook\n * Public method to add DOMPurify hooks\n *\n * @param {String} entryPoint entry point for the hook to add\n * @param {Function} hookFunction function to execute\n */\n DOMPurify.addHook = function (entryPoint, hookFunction) {\n if (typeof hookFunction !== 'function') {\n return;\n }\n\n hooks[entryPoint] = hooks[entryPoint] || [];\n arrayPush(hooks[entryPoint], hookFunction);\n };\n\n /**\n * RemoveHook\n * Public method to remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if more are present)\n *\n * @param {String} entryPoint entry point for the hook to remove\n */\n DOMPurify.removeHook = function (entryPoint) {\n if (hooks[entryPoint]) {\n arrayPop(hooks[entryPoint]);\n }\n };\n\n /**\n * RemoveHooks\n * Public method to remove all DOMPurify hooks at a given entryPoint\n *\n * @param {String} entryPoint entry point for the hooks to remove\n */\n DOMPurify.removeHooks = function (entryPoint) {\n if (hooks[entryPoint]) {\n hooks[entryPoint] = [];\n }\n };\n\n /**\n * RemoveAllHooks\n * Public method to remove all DOMPurify hooks\n *\n */\n DOMPurify.removeAllHooks = function () {\n hooks = {};\n };\n\n return DOMPurify;\n}\n\nvar purify = createDOMPurify();\n\nexport default purify;\n//# sourceMappingURL=purify.es.js.map\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport DOMPurify from \"dompurify\"\n\nclass HTMLParseResult {\n constructor(bodyNode) {\n this._bodyNode = bodyNode;\n }\n\n get rootNodes() {\n return Array.from(this._bodyNode.childNodes);\n }\n \n getChildNodes(node) {\n return Array.from(node.childNodes);\n }\n\n getAttributeNames(node) {\n return Array.from(node.getAttributeNames());\n }\n\n getAttributeValue(node, attr) {\n return node.getAttribute(attr);\n }\n\n isTextNode(node) { \n return node.nodeType === Node.TEXT_NODE;\n }\n\n getNodeText(node) {\n return node.textContent;\n }\n\n isElementNode(node) {\n return node.nodeType === Node.ELEMENT_NODE;\n }\n\n getNodeElementName(node) {\n return node.tagName;\n }\n}\n\nconst sanitizeConfig = {\n ALLOWED_URI_REGEXP: /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|xxx|mxc):|[^a-z]|[a-z+.-]+(?:[^a-z+.-:]|$))/i,\n FORBID_TAGS: ['mx-reply'],\n KEEP_CONTENT: false,\n}\n\nexport function parseHTML(html) {\n // If DOMPurify uses DOMParser, can't we just get the built tree from it\n // instead of re-parsing?\n const sanitized = DOMPurify.sanitize(html, sanitizeConfig);\n const bodyNode = new DOMParser().parseFromString(`${sanitized}`, \"text/html\").body;\n return new HTMLParseResult(bodyNode);\n}\n","/*\nCopyright 2021 Šimon Brandner \nCopyright 2022 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {MediaDevices as IMediaDevices, Stream, Track, TrackKind, VolumeMeasurer} from \"../../types/MediaDevices\";\n\nconst POLLING_INTERVAL = 200; // ms\nexport const SPEAKING_THRESHOLD = -60; // dB\nconst SPEAKING_SAMPLE_COUNT = 8; // samples\n\nexport class MediaDevicesWrapper implements IMediaDevices {\n constructor(private readonly mediaDevices: MediaDevices) {}\n\n enumerate(): Promise {\n return this.mediaDevices.enumerateDevices();\n }\n\n async getMediaTracks(audio: true | MediaDeviceInfo, video: boolean | MediaDeviceInfo): Promise {\n const stream = await this.mediaDevices.getUserMedia(this.getUserMediaContraints(audio, video));\n stream.addEventListener(\"removetrack\", evt => {\n console.log(`removing track ${evt.track.id} (${evt.track.kind}) from stream ${stream.id}`);\n });\n return stream as Stream;\n }\n\n async getScreenShareTrack(): Promise {\n const stream = await this.mediaDevices.getDisplayMedia(this.getScreenshareContraints());\n return stream as Stream;\n }\n\n private getUserMediaContraints(audio: boolean | MediaDeviceInfo, video: boolean | MediaDeviceInfo): MediaStreamConstraints {\n const isWebkit = !!navigator[\"webkitGetUserMedia\"];\n\n return {\n audio: audio\n ? {\n deviceId: typeof audio !== \"boolean\" ? { ideal: audio.deviceId } : undefined,\n }\n : false,\n video: video\n ? {\n deviceId: typeof video !== \"boolean\" ? { ideal: video.deviceId } : undefined,\n /* We want 640x360. Chrome will give it only if we ask exactly,\n FF refuses entirely if we ask exactly, so have to ask for ideal\n instead\n XXX: Is this still true?\n */\n width: isWebkit ? { exact: 640 } : { ideal: 640 },\n height: isWebkit ? { exact: 360 } : { ideal: 360 },\n }\n : false,\n };\n }\n\n private getScreenshareContraints(): MediaStreamConstraints {\n return {\n audio: false,\n video: true,\n };\n }\n\n createVolumeMeasurer(stream: Stream, callback: () => void): VolumeMeasurer {\n return new WebAudioVolumeMeasurer(stream as MediaStream, callback);\n }\n}\n\nexport class WebAudioVolumeMeasurer implements VolumeMeasurer {\n private measuringVolumeActivity = false;\n private audioContext?: AudioContext;\n private analyser: AnalyserNode;\n private frequencyBinCount: Float32Array;\n private speakingThreshold = SPEAKING_THRESHOLD;\n private speaking = false;\n private volumeLooperTimeout: number;\n private speakingVolumeSamples: number[];\n private callback: () => void;\n private stream: MediaStream;\n\n constructor(stream: MediaStream, callback: () => void) {\n this.stream = stream;\n this.callback = callback;\n this.speakingVolumeSamples = new Array(SPEAKING_SAMPLE_COUNT).fill(-Infinity);\n this.initVolumeMeasuring();\n this.measureVolumeActivity(true);\n }\n\n get isSpeaking(): boolean { return this.speaking; }\n /**\n * Starts emitting volume_changed events where the emitter value is in decibels\n * @param enabled emit volume changes\n */\n private measureVolumeActivity(enabled: boolean): void {\n if (enabled) {\n if (!this.audioContext || !this.analyser || !this.frequencyBinCount) return;\n\n this.measuringVolumeActivity = true;\n this.volumeLooper();\n } else {\n this.measuringVolumeActivity = false;\n this.speakingVolumeSamples.fill(-Infinity);\n this.callback();\n // this.emit(CallFeedEvent.VolumeChanged, -Infinity);\n }\n }\n\n private initVolumeMeasuring(): void {\n const AudioContext = window.AudioContext || window[\"webkitAudioContext\"] as undefined | typeof window.AudioContext;\n if (!AudioContext) return;\n\n this.audioContext = new AudioContext();\n\n this.analyser = this.audioContext.createAnalyser();\n this.analyser.fftSize = 512;\n this.analyser.smoothingTimeConstant = 0.1;\n\n const mediaStreamAudioSourceNode = this.audioContext.createMediaStreamSource(this.stream);\n mediaStreamAudioSourceNode.connect(this.analyser);\n\n this.frequencyBinCount = new Float32Array(this.analyser.frequencyBinCount);\n }\n\n public setSpeakingThreshold(threshold: number) {\n this.speakingThreshold = threshold;\n }\n\n private volumeLooper = () => {\n if (!this.analyser) return;\n\n if (!this.measuringVolumeActivity) return;\n\n this.analyser.getFloatFrequencyData(this.frequencyBinCount);\n\n let maxVolume = -Infinity;\n for (let i = 0; i < this.frequencyBinCount.length; i++) {\n if (this.frequencyBinCount[i] > maxVolume) {\n maxVolume = this.frequencyBinCount[i];\n }\n }\n\n this.speakingVolumeSamples.shift();\n this.speakingVolumeSamples.push(maxVolume);\n\n this.callback();\n // this.emit(CallFeedEvent.VolumeChanged, maxVolume);\n\n let newSpeaking = false;\n\n for (let i = 0; i < this.speakingVolumeSamples.length; i++) {\n const volume = this.speakingVolumeSamples[i];\n\n if (volume > this.speakingThreshold) {\n newSpeaking = true;\n break;\n }\n }\n\n if (this.speaking !== newSpeaking) {\n this.speaking = newSpeaking;\n this.callback();\n // this.emit(CallFeedEvent.Speaking, this.speaking);\n }\n\n this.volumeLooperTimeout = setTimeout(this.volumeLooper, POLLING_INTERVAL) as unknown as number;\n };\n\n public stop(): void {\n clearTimeout(this.volumeLooperTimeout);\n this.analyser.disconnect();\n this.audioContext?.close();\n }\n}\n","/*\nCopyright 2021 Šimon Brandner \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {Stream, Track, TrackKind} from \"../../types/MediaDevices\";\nimport {WebRTC, Sender, PeerConnection} from \"../../types/WebRTC\";\nimport {SDPStreamMetadataPurpose} from \"../../../matrix/calls/callEventTypes\";\n\nconst POLLING_INTERVAL = 200; // ms\nexport const SPEAKING_THRESHOLD = -60; // dB\nconst SPEAKING_SAMPLE_COUNT = 8; // samples\n\nexport class DOMWebRTC implements WebRTC {\n createPeerConnection(forceTURN: boolean, turnServers: RTCIceServer[], iceCandidatePoolSize): PeerConnection {\n const peerConn = new RTCPeerConnection({\n iceTransportPolicy: forceTURN ? 'relay' : undefined,\n iceServers: turnServers,\n iceCandidatePoolSize: iceCandidatePoolSize,\n }) as PeerConnection;\n return new Proxy(peerConn, {\n get(target, prop, receiver) {\n if (prop === \"close\") {\n console.trace(\"calling peerConnection.close\");\n }\n const value = target[prop];\n if (typeof value === \"function\") {\n return value.bind(target);\n } else {\n return value;\n }\n }\n });\n }\n\n prepareSenderForPurpose(peerConnection: PeerConnection, sender: Sender, purpose: SDPStreamMetadataPurpose): void {\n if (purpose === SDPStreamMetadataPurpose.Screenshare) {\n this.getRidOfRTXCodecs(peerConnection as RTCPeerConnection, sender as RTCRtpSender);\n }\n }\n\n private getRidOfRTXCodecs(peerConnection: RTCPeerConnection, sender: RTCRtpSender): void {\n // RTCRtpReceiver.getCapabilities and RTCRtpSender.getCapabilities don't seem to be supported on FF\n if (!RTCRtpReceiver.getCapabilities || !RTCRtpSender.getCapabilities) return;\n\n const recvCodecs = RTCRtpReceiver.getCapabilities(\"video\")?.codecs ?? [];\n const sendCodecs = RTCRtpSender.getCapabilities(\"video\")?.codecs ?? [];\n const codecs = [...sendCodecs, ...recvCodecs];\n\n for (const codec of codecs) {\n if (codec.mimeType === \"video/rtx\") {\n const rtxCodecIndex = codecs.indexOf(codec);\n codecs.splice(rtxCodecIndex, 1);\n }\n }\n\n const transceiver = peerConnection.getTransceivers().find(t => t.sender === sender);\n if (transceiver && (\n transceiver.sender.track?.kind === \"video\" ||\n transceiver.receiver.track?.kind === \"video\"\n )\n ) {\n transceiver.setCodecPreferences(codecs);\n }\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexport type NormalVariant = {\n id: string;\n cssLocation: string;\n variables?: any;\n};\n\nexport type Variant = NormalVariant & {\n variantName: string;\n};\n\nexport type DefaultVariant = {\n dark: Variant;\n light: Variant;\n default: Variant;\n}\n\nexport type ThemeInformation = NormalVariant | DefaultVariant; \n\nexport enum ColorSchemePreference {\n Dark,\n Light\n};\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexport function getColoredSvgString(svgString, primaryColor, secondaryColor) {\n let coloredSVGCode = svgString.replaceAll(\"#ff00ff\", primaryColor);\n coloredSVGCode = coloredSVGCode.replaceAll(\"#00ffff\", secondaryColor);\n if (svgString === coloredSVGCode) {\n throw new Error(\"svg-colorizer made no color replacements! The input svg should only contain colors #ff00ff (primary, case-sensitive) and #00ffff (secondary, case-sensitive).\");\n }\n return coloredSVGCode;\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nimport type {Platform} from \"../Platform.js\";\nimport {getColoredSvgString} from \"./shared/svg-colorizer.mjs\";\n\ntype ParsedStructure = {\n [variableName: string]: {\n svg: Promise<{ status: number; body: string }>;\n primary: string | null;\n secondary: string | null;\n };\n};\n\nexport class IconColorizer {\n private _iconVariables: Record;\n private _resolvedVariables: Record;\n private _manifestLocation: string;\n private _platform: Platform;\n\n constructor(platform: Platform, iconVariables: Record, resolvedVariables: Record, manifestLocation: string) {\n this._platform = platform;\n this._iconVariables = iconVariables;\n this._resolvedVariables = resolvedVariables;\n this._manifestLocation = manifestLocation;\n }\n\n async toVariables(): Promise> {\n const { parsedStructure, promises } = await this._fetchAndParseIcons();\n await Promise.all(promises);\n return this._produceColoredIconVariables(parsedStructure);\n }\n\n private async _fetchAndParseIcons(): Promise<{ parsedStructure: ParsedStructure, promises: any[] }> {\n const promises: any[] = [];\n const parsedStructure: ParsedStructure = {};\n for (const [variable, url] of Object.entries(this._iconVariables)) {\n const urlObject = new URL(`https://${url}`);\n const pathWithoutQueryParams = urlObject.hostname;\n const relativePath = new URL(pathWithoutQueryParams, new URL(this._manifestLocation, window.location.origin));\n const responsePromise = this._platform.request(relativePath, { method: \"GET\", format: \"text\", cache: true, }).response()\n promises.push(responsePromise);\n const searchParams = urlObject.searchParams;\n parsedStructure[variable] = {\n svg: responsePromise,\n primary: searchParams.get(\"primary\"),\n secondary: searchParams.get(\"secondary\")\n };\n }\n return { parsedStructure, promises };\n }\n\n private async _produceColoredIconVariables(parsedStructure: ParsedStructure): Promise> {\n let coloredVariables: Record = {};\n for (const [variable, { svg, primary, secondary }] of Object.entries(parsedStructure)) {\n const { body: svgCode } = await svg;\n if (!primary) {\n throw new Error(`Primary color variable ${primary} not in list of variables!`);\n }\n const primaryColor = this._resolvedVariables[primary], secondaryColor = this._resolvedVariables[secondary!];\n const coloredSvgCode = getColoredSvgString(svgCode, primaryColor, secondaryColor);\n const dataURI = `url('data:image/svg+xml;utf8,${encodeURIComponent(coloredSvgCode)}')`;\n coloredVariables[variable] = dataURI;\n }\n return coloredVariables;\n }\n}\n","module.exports=function(n){var t={};function r(e){if(t[e])return t[e].exports;var o=t[e]={i:e,l:!1,exports:{}};return n[e].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=n,r.c=t,r.d=function(n,t,e){r.o(n,t)||Object.defineProperty(n,t,{enumerable:!0,get:e})},r.r=function(n){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(n,\"__esModule\",{value:!0})},r.t=function(n,t){if(1&t&&(n=r(n)),8&t)return n;if(4&t&&\"object\"==typeof n&&n&&n.__esModule)return n;var e=Object.create(null);if(r.r(e),Object.defineProperty(e,\"default\",{enumerable:!0,value:n}),2&t&&\"string\"!=typeof n)for(var o in n)r.d(e,o,function(t){return n[t]}.bind(null,o));return e},r.n=function(n){var t=n&&n.__esModule?function(){return n.default}:function(){return n};return r.d(t,\"a\",t),t},r.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)},r.p=\"\",r(r.s=0)}([function(n,t,r){\"use strict\";function e(n){let t,r;const e={light:function(){return!a()},dark:a,lighten:d,darken:l,saturate:p,desaturate:function(n=0){return p(n*=-1)},increaseContrast:function(n=0){return b(n*=-1)},decreaseContrast:b,active:function(){return b(.123)},highlight:function(){return b(.1)},selected:function(){return b(.066)},text:function(){return r=s()?o(\"#333333\"):o(\"#FFFFFF\"),e},shadow:function(){return r=s()?o(\"#000000\"):o(\"#FFFFFF\"),e},hex:function(){const n=r;return r=t,\"#\"+n.map(n=>parseInt(n+\"\",10).toString(16).padStart(2,\"0\")).join(\"\")},rgb:function(){const n=r;return r=t,`rgb(${n.join()})`},rgba:function(n=1){const e=r;return r=t,`rgba(${e.join()}, ${n})`},setHex:c,setRgb:function(n=[0,0,0]){let[o,u,c]=n;return o=f(o,0,255),u=f(u,0,255),c=f(c,0,255),t=[o,u,c],r=[o,u,c],e}};function c(n=\"#000000\"){return t=o(n),r=t,e}function a(){const[n,e,o]=r;return r=t,(299*n+587*e+114*o)/1e3<128}function s(){const[n,t,e]=r;return(299*n+587*t+114*e)/1e3>=128}function l(n=0){return d(n*=-1)}function d(n=0){let[t,o,c]=i(r);return c=f(c+n,0,1),r=u([t,o,c]),e}function p(n=0){let[t,o,c]=i(r);return o=f(o+n,0,1),r=u([t,o,c]),e}function b(n=0){return s()?l(n):d(n)}return c(n),e}function o(n){if(\"string\"!=typeof n)throw new TypeError(\"Expected a string\");3===(n=n.replace(/^#/,\"\")).length&&(n=n[0]+n[0]+n[1]+n[1]+n[2]+n[2]);var t=parseInt(n,16);return[t>>16,t>>8&255,255&t]}function u(n){const[t,r,e]=n;let o,u,c;if(0===r)o=u=c=e;else{const n=function(n,t,r){return r<0&&(r+=1),r>1&&(r-=1),r<1/6?n+6*(t-n)*r:r<.5?t:r<2/3?n+(t-n)*(2/3-r)*6:n},i=e<.5?e*(1+r):e+r-e*r,a=2*e-i;o=f(n(a,i,t+1/3),0,1),u=f(n(a,i,t),0,1),c=f(n(a,i,t-1/3),0,1)}return[Math.round(255*o),Math.round(255*u),Math.round(255*c)]}r.r(t),r.d(t,\"offColor\",(function(){return e})),r.d(t,\"hexRgb\",(function(){return o})),r.d(t,\"hslToRgb\",(function(){return u})),r.d(t,\"color\",(function(){return c})),r.d(t,\"rgbToHsl\",(function(){return i}));const c=e;function i(n){const t=n[0]/255,r=n[1]/255,e=n[2]/255,o=Math.max(t,r,e),u=Math.min(t,r,e);let c=(o+u)/2,i=(o+u)/2;const f=(o+u)/2;if(o===u)c=i=0;else{const n=o-u;switch(i=f>.5?n/(2-o-u):n/(o+u),o){case t:c=(r-e)/n+(r=t?n:t}}]);","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/index.min.js');\n} else {\n module.exports = require('./cjs/index.js');\n}\n","/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nimport * as pkg from 'off-color';\nconst offColor = pkg.offColor ?? pkg.default.offColor;\n\nexport function derive(value, operation, argument, isDark) {\n const argumentAsNumber = parseInt(argument);\n if (isDark) {\n // For dark themes, invert the operation\n if (operation === 'darker') {\n operation = \"lighter\";\n }\n else if (operation === 'lighter') {\n operation = \"darker\";\n }\n }\n switch (operation) {\n case \"darker\": {\n const newColorString = offColor(value).darken(argumentAsNumber / 100).hex();\n return newColorString;\n }\n case \"lighter\": {\n const newColorString = offColor(value).lighten(argumentAsNumber / 100).hex();\n return newColorString;\n }\n case \"alpha\": {\n return offColor(value).rgba(argumentAsNumber / 100);\n }\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n \nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nimport {derive} from \"./shared/color.mjs\";\n\nexport class DerivedVariables {\n private _baseVariables: Record;\n private _variablesToDerive: string[]\n private _isDark: boolean\n private _aliases: Record = {};\n private _derivedAliases: string[] = [];\n\n constructor(baseVariables: Record, variablesToDerive: string[], isDark: boolean) {\n this._baseVariables = baseVariables;\n this._variablesToDerive = variablesToDerive;\n this._isDark = isDark;\n }\n\n toVariables(): Record {\n const resolvedVariables: any = {};\n this._detectAliases();\n for (const variable of this._variablesToDerive) {\n const resolvedValue = this._derive(variable);\n if (resolvedValue) {\n resolvedVariables[variable] = resolvedValue;\n }\n }\n for (const [alias, variable] of Object.entries(this._aliases) as any) {\n resolvedVariables[alias] = this._baseVariables[variable] ?? resolvedVariables[variable];\n }\n for (const variable of this._derivedAliases) {\n const resolvedValue = this._deriveAlias(variable, resolvedVariables);\n if (resolvedValue) {\n resolvedVariables[variable] = resolvedValue;\n }\n }\n return resolvedVariables;\n }\n\n private _detectAliases(): void {\n const newVariablesToDerive: string[] = [];\n for (const variable of this._variablesToDerive) {\n const [alias, value] = variable.split(\"=\");\n if (value) {\n this._aliases[alias] = value;\n }\n else {\n newVariablesToDerive.push(variable);\n }\n }\n this._variablesToDerive = newVariablesToDerive;\n }\n\n private _derive(variable: string): string | undefined {\n const RE_VARIABLE_VALUE = /(.+)--(.+)-(.+)/;\n const matches = variable.match(RE_VARIABLE_VALUE);\n if (matches) {\n const [, baseVariable, operation, argument] = matches;\n const value = this._baseVariables[baseVariable];\n if (!value ) {\n if (this._aliases[baseVariable]) {\n this._derivedAliases.push(variable);\n return;\n }\n else {\n throw new Error(`Cannot find value for base variable \"${baseVariable}\"!`);\n }\n }\n const resolvedValue = derive(value, operation, argument, this._isDark);\n return resolvedValue;\n }\n }\n\n private _deriveAlias(variable: string, resolvedVariables: Record): string | undefined {\n const RE_VARIABLE_VALUE = /(.+)--(.+)-(.+)/;\n const matches = variable.match(RE_VARIABLE_VALUE);\n if (matches) {\n const [, baseVariable, operation, argument] = matches;\n const value = resolvedVariables[baseVariable];\n if (!value ) {\n throw new Error(`Cannot find value for alias \"${baseVariable}\" when trying to derive ${variable}!`);\n }\n const resolvedValue = derive(value, operation, argument, this._isDark);\n return resolvedValue;\n }\n }\n}\n\nimport * as pkg from \"off-color\";\n// @ts-ignore \nconst offColor = pkg.offColor ?? pkg.default.offColor;\n\nexport function tests() {\n return {\n \"Simple variable derivation\": assert => {\n const deriver = new DerivedVariables({ \"background-color\": \"#ff00ff\" }, [\"background-color--darker-5\"], false);\n const result = deriver.toVariables();\n const resultColor = offColor(\"#ff00ff\").darken(5/100).hex();\n assert.deepEqual(result, {\"background-color--darker-5\": resultColor});\n },\n\n \"For dark themes, lighten and darken are inverted\": assert => {\n const deriver = new DerivedVariables({ \"background-color\": \"#ff00ff\" }, [\"background-color--darker-5\"], true);\n const result = deriver.toVariables();\n const resultColor = offColor(\"#ff00ff\").lighten(5/100).hex();\n assert.deepEqual(result, {\"background-color--darker-5\": resultColor});\n },\n\n \"Aliases can be derived\": assert => {\n const deriver = new DerivedVariables({ \"background-color\": \"#ff00ff\" }, [\"my-awesome-alias=background-color\",\"my-awesome-alias--darker-5\"], false);\n const result = deriver.toVariables();\n const resultColor = offColor(\"#ff00ff\").darken(5/100).hex();\n assert.deepEqual(result, {\n \"my-awesome-alias\": \"#ff00ff\",\n \"my-awesome-alias--darker-5\": resultColor,\n });\n },\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nimport type {ThemeInformation} from \"./types\";\nimport type {Platform} from \"../../Platform.js\";\nimport type {ThemeManifest} from \"../../../types/theme\";\nimport {ColorSchemePreference} from \"./types\";\nimport {IconColorizer} from \"../IconColorizer\";\nimport {DerivedVariables} from \"../DerivedVariables\";\nimport {ILogItem} from \"../../../../logging/types\";\n\nexport class RuntimeThemeParser {\n private _themeMapping: Record = {};\n private _preferredColorScheme?: ColorSchemePreference;\n private _platform: Platform;\n\n constructor(platform: Platform, preferredColorScheme?: ColorSchemePreference) {\n this._preferredColorScheme = preferredColorScheme;\n this._platform = platform;\n }\n\n async parse(manifest: ThemeManifest, baseManifest: ThemeManifest, baseManifestLocation: string, log: ILogItem): Promise {\n await log.wrap(\"RuntimeThemeParser.parse\", async () => {\n const {cssLocation, derivedVariables, icons} = this._getSourceData(baseManifest, baseManifestLocation, log);\n const themeName = manifest.name;\n if (!themeName) {\n throw new Error(`Theme name not found in manifest!`);\n }\n let defaultDarkVariant: any = {}, defaultLightVariant: any = {};\n for (const [variant, variantDetails] of Object.entries(manifest.values?.variants!) as [string, any][]) {\n try {\n const themeId = `${manifest.id}-${variant}`;\n const { name: variantName, default: isDefault, dark, variables } = variantDetails;\n const resolvedVariables = new DerivedVariables(variables, derivedVariables, dark).toVariables();\n Object.assign(variables, resolvedVariables);\n const iconVariables = await new IconColorizer(this._platform, icons, variables, baseManifestLocation).toVariables();\n Object.assign(variables, resolvedVariables, iconVariables);\n const themeDisplayName = `${themeName} ${variantName}`;\n if (isDefault) {\n const defaultVariant = dark ? defaultDarkVariant : defaultLightVariant;\n Object.assign(defaultVariant, { variantName, id: themeId, cssLocation, variables });\n continue;\n }\n this._themeMapping[themeDisplayName] = { cssLocation, id: themeId, variables: variables, };\n }\n catch (e) {\n console.error(e);\n continue;\n }\n }\n if (defaultDarkVariant.id && defaultLightVariant.id) {\n const defaultVariant = this._preferredColorScheme === ColorSchemePreference.Dark ? defaultDarkVariant : defaultLightVariant;\n this._themeMapping[themeName] = { dark: defaultDarkVariant, light: defaultLightVariant, default: defaultVariant };\n }\n else {\n const variant = defaultDarkVariant.id ? defaultDarkVariant : defaultLightVariant;\n this._themeMapping[`${themeName} ${variant.variantName}`] = { id: variant.id, cssLocation: variant.cssLocation };\n }\n });\n }\n\n private _getSourceData(manifest: ThemeManifest, location: string, log: ILogItem)\n : { cssLocation: string, derivedVariables: string[], icons: Record} {\n return log.wrap(\"getSourceData\", () => {\n const runtimeCSSLocation = manifest.source?.[\"runtime-asset\"];\n if (!runtimeCSSLocation) {\n throw new Error(`Run-time asset not found in source section for theme at ${location}`);\n }\n const cssLocation = new URL(runtimeCSSLocation, new URL(location, window.location.origin)).href;\n const derivedVariables = manifest.source?.[\"derived-variables\"];\n if (!derivedVariables) {\n throw new Error(`Derived variables not found in source section for theme at ${location}`);\n }\n const icons = manifest.source?.[\"icon\"];\n if (!icons) {\n throw new Error(`Icon mapping not found in source section for theme at ${location}`);\n }\n return { cssLocation, derivedVariables, icons };\n });\n }\n\n get themeMapping(): Record {\n return this._themeMapping;\n }\n\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport type {ThemeInformation} from \"./types\";\nimport type {ThemeManifest} from \"../../../types/theme\";\nimport type {ILogItem} from \"../../../../logging/types\";\nimport {ColorSchemePreference} from \"./types\";\n\nexport class BuiltThemeParser {\n private _themeMapping: Record = {};\n private _preferredColorScheme?: ColorSchemePreference;\n\n constructor(preferredColorScheme?: ColorSchemePreference) {\n this._preferredColorScheme = preferredColorScheme;\n }\n\n parse(manifest: ThemeManifest, manifestLocation: string, log: ILogItem) {\n log.wrap(\"BuiltThemeParser.parse\", () => {\n /*\n After build has finished, the source section of each theme manifest\n contains `built-assets` which is a mapping from the theme-id to\n cssLocation of theme\n */\n const builtAssets: Record = manifest.source?.[\"built-assets\"];\n const themeName = manifest.name;\n if (!themeName) {\n throw new Error(`Theme name not found in manifest at ${manifestLocation}`);\n }\n let defaultDarkVariant: any = {}, defaultLightVariant: any = {};\n for (let [themeId, cssLocation] of Object.entries(builtAssets)) {\n try {\n /**\n * This cssLocation is relative to the location of the manifest file.\n * So we first need to resolve it relative to the root of this hydrogen instance.\n */\n cssLocation = new URL(cssLocation, new URL(manifestLocation, window.location.origin)).href;\n }\n catch {\n continue;\n }\n const variant = themeId.match(/.+-(.+)/)?.[1];\n const variantDetails = manifest.values?.variants[variant!];\n if (!variantDetails) {\n throw new Error(`Variant ${variant} is missing in manifest at ${manifestLocation}`);\n }\n const { name: variantName, default: isDefault, dark } = variantDetails;\n const themeDisplayName = `${themeName} ${variantName}`;\n if (isDefault) {\n /**\n * This is a default variant!\n * We'll add these to the themeMapping (separately) keyed with just the\n * theme-name (i.e \"Element\" instead of \"Element Dark\").\n * We need to be able to distinguish them from other variants!\n * \n * This allows us to render radio-buttons with \"dark\" and\n * \"light\" options.\n */\n const defaultVariant = dark ? defaultDarkVariant : defaultLightVariant;\n defaultVariant.variantName = variantName;\n defaultVariant.id = themeId\n defaultVariant.cssLocation = cssLocation;\n continue;\n }\n // Non-default variants are keyed in themeMapping with \"theme_name variant_name\"\n // eg: \"Element Dark\"\n this._themeMapping[themeDisplayName] = {\n cssLocation,\n id: themeId\n };\n }\n if (defaultDarkVariant.id && defaultLightVariant.id) {\n /**\n * As mentioned above, if there's both a default dark and a default light variant,\n * add them to themeMapping separately.\n */\n const defaultVariant = this._preferredColorScheme === ColorSchemePreference.Dark ? defaultDarkVariant : defaultLightVariant;\n this._themeMapping[themeName] = { dark: defaultDarkVariant, light: defaultLightVariant, default: defaultVariant };\n }\n else {\n /**\n * If only one default variant is found (i.e only dark default or light default but not both),\n * treat it like any other variant.\n */\n const variant = defaultDarkVariant.id ? defaultDarkVariant : defaultLightVariant;\n this._themeMapping[`${themeName} ${variant.variantName}`] = { id: variant.id, cssLocation: variant.cssLocation };\n }\n });\n }\n\n get themeMapping(): Record {\n return this._themeMapping;\n }\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {RuntimeThemeParser} from \"./parsers/RuntimeThemeParser\";\nimport {ColorSchemePreference} from \"./parsers/types\";\nimport {BuiltThemeParser} from \"./parsers/BuiltThemeParser\";\nimport type {Variant, ThemeInformation} from \"./parsers/types\";\nimport type {ThemeManifest} from \"../../types/theme\";\nimport type {ILogItem} from \"../../../logging/types\";\nimport type {Platform} from \"../Platform.js\";\nimport {LogLevel} from \"../../../logging/LogFilter\";\n\nexport class ThemeLoader {\n private _platform: Platform;\n private _themeMapping: Record;\n private _injectedVariables?: Record;\n\n constructor(platform: Platform) {\n this._platform = platform;\n }\n\n async init(manifestLocations: string[], log?: ILogItem): Promise {\n await this._platform.logger.wrapOrRun(log, \"ThemeLoader.init\", async (log) => {\n let noManifestsAvailable = true;\n const failedManifestLoads: string[] = [];\n const parseErrors: string[] = [];\n const results = await Promise.all(\n manifestLocations.map(location => this._platform.request(location, { method: \"GET\", format: \"json\", cache: true, }).response())\n );\n const runtimeThemeParser = new RuntimeThemeParser(this._platform, this.preferredColorScheme);\n const builtThemeParser = new BuiltThemeParser(this.preferredColorScheme);\n const runtimeThemePromises: Promise[] = [];\n for (let i = 0; i < results.length; ++i) {\n const result = results[i];\n const { status, body } = result;\n if (!(status >= 200 && status <= 299)) {\n console.error(`Failed to load manifest at ${manifestLocations[i]}, status: ${status}`);\n log.log({ l: \"Manifest fetch failed\", location: manifestLocations[i], status }, LogLevel.Error);\n failedManifestLoads.push(manifestLocations[i])\n continue;\n }\n noManifestsAvailable = false;\n try {\n if (body.extends) {\n const indexOfBaseManifest = results.findIndex(result => \"value\" in result && result.value.body.id === body.extends);\n if (indexOfBaseManifest === -1) {\n throw new Error(`Base manifest for derived theme at ${manifestLocations[i]} not found!`);\n }\n const { body: baseManifest } = (results[indexOfBaseManifest] as PromiseFulfilledResult<{ body: ThemeManifest }>).value;\n const baseManifestLocation = manifestLocations[indexOfBaseManifest];\n const promise = runtimeThemeParser.parse(body, baseManifest, baseManifestLocation, log);\n runtimeThemePromises.push(promise);\n }\n else {\n builtThemeParser.parse(body, manifestLocations[i], log);\n }\n }\n catch(e) {\n console.error(e);\n parseErrors.push(e.message);\n }\n }\n await Promise.all(runtimeThemePromises);\n this._themeMapping = { ...builtThemeParser.themeMapping, ...runtimeThemeParser.themeMapping };\n if (noManifestsAvailable) {\n // We need at least one working theme manifest!\n throw new Error(`All configured theme manifests failed to load, the following were tried: ${failedManifestLoads.join(\", \")}`);\n }\n else if (Object.keys(this._themeMapping).length === 0 && parseErrors.length) {\n // Something is wrong..., themeMapping is empty!\n throw new Error(`Failed to parse theme manifests, the following errors were encountered: ${parseErrors.join(\", \")}`);\n }\n this._addDefaultThemeToMapping(log);\n log.log({ l: \"Preferred colorscheme\", scheme: this.preferredColorScheme === ColorSchemePreference.Dark ? \"dark\" : \"light\" });\n log.log({ l: \"Result\", themeMapping: this._themeMapping });\n });\n }\n\n async setTheme(themeName: string, themeVariant?: \"light\" | \"dark\" | \"default\", log?: ILogItem) {\n await this._platform.logger.wrapOrRun(log, { l: \"change theme\", name: themeName, variant: themeVariant }, async (l) => {\n let cssLocation: string, variables: Record;\n let themeDetails = this._themeMapping[themeName];\n if (\"id\" in themeDetails) {\n cssLocation = themeDetails.cssLocation;\n variables = themeDetails.variables;\n }\n else {\n if (!themeVariant) {\n throw new Error(\"themeVariant is undefined!\");\n }\n cssLocation = themeDetails[themeVariant].cssLocation;\n variables = themeDetails[themeVariant].variables;\n }\n await this._platform.replaceStylesheet(cssLocation, l);\n if (variables) {\n log?.log({l: \"Derived Theme\", variables});\n this._injectCSSVariables(variables);\n }\n else {\n this._removePreviousCSSVariables();\n }\n this._platform.settingsStorage.setString(\"theme-name\", themeName);\n if (themeVariant) {\n this._platform.settingsStorage.setString(\"theme-variant\", themeVariant);\n }\n else {\n this._platform.settingsStorage.remove(\"theme-variant\");\n }\n });\n }\n\n private _injectCSSVariables(variables: Record): void {\n const root = document.documentElement;\n for (const [variable, value] of Object.entries(variables)) {\n root.style.setProperty(`--${variable}`, value);\n }\n this._injectedVariables = variables;\n }\n\n private _removePreviousCSSVariables(): void {\n if (!this._injectedVariables) {\n return;\n }\n const root = document.documentElement;\n for (const variable of Object.keys(this._injectedVariables)) {\n root.style.removeProperty(`--${variable}`);\n }\n this._injectedVariables = undefined;\n }\n\n /** Maps theme display name to theme information */\n get themeMapping(): Record {\n return this._themeMapping;\n }\n\n async getActiveTheme(): Promise<{themeName: string, themeVariant?: string}> {\n let themeName = await this._platform.settingsStorage.getString(\"theme-name\");\n let themeVariant = await this._platform.settingsStorage.getString(\"theme-variant\");\n if (!themeName || !this._themeMapping[themeName]) {\n themeName = \"Default\" in this._themeMapping ? \"Default\" : Object.keys(this._themeMapping)[0];\n if (!this._themeMapping[themeName][themeVariant]) {\n themeVariant = \"default\" in this._themeMapping[themeName] ? \"default\" : undefined;\n }\n }\n return { themeName, themeVariant };\n }\n\n getDefaultTheme(): string | undefined {\n switch (this.preferredColorScheme) {\n case ColorSchemePreference.Dark:\n return this._platform.config[\"defaultTheme\"]?.dark;\n case ColorSchemePreference.Light:\n return this._platform.config[\"defaultTheme\"]?.light;\n }\n }\n\n private _findThemeDetailsFromId(themeId: string): {themeName: string, themeData: Partial} | undefined {\n for (const [themeName, themeData] of Object.entries(this._themeMapping)) {\n if (\"id\" in themeData && themeData.id === themeId) {\n return { themeName, themeData };\n }\n else if (\"light\" in themeData && themeData.light?.id === themeId) {\n return { themeName, themeData: themeData.light };\n }\n else if (\"dark\" in themeData && themeData.dark?.id === themeId) {\n return { themeName, themeData: themeData.dark };\n }\n }\n }\n\n private _addDefaultThemeToMapping(log: ILogItem) {\n log.wrap(\"addDefaultThemeToMapping\", l => { \n const defaultThemeId = this.getDefaultTheme();\n if (defaultThemeId) {\n const themeDetails = this._findThemeDetailsFromId(defaultThemeId);\n if (themeDetails) {\n this._themeMapping[\"Default\"] = { id: \"default\", cssLocation: themeDetails.themeData.cssLocation! };\n const variables = themeDetails.themeData.variables;\n if (variables) {\n this._themeMapping[\"Default\"].variables = variables;\n }\n }\n }\n l.log({ l: \"Default Theme\", theme: defaultThemeId});\n });\n }\n\n get preferredColorScheme(): ColorSchemePreference | undefined {\n if (window.matchMedia(\"(prefers-color-scheme: dark)\").matches) {\n return ColorSchemePreference.Dark;\n }\n else if (window.matchMedia(\"(prefers-color-scheme: light)\").matches) {\n return ColorSchemePreference.Light;\n }\n }\n}\n","/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexport enum TimeScope {\n Minute = 60 * 1000,\n Hours = 60 * TimeScope.Minute,\n Day = 24 * TimeScope.Hours,\n}\n\nexport function formatDuration(milliseconds: number): string {\n let days = 0;\n let hours = 0;\n let minutes = 0;\n if (milliseconds >= TimeScope.Day) {\n days = Math.floor(milliseconds / TimeScope.Day);\n milliseconds -= days * TimeScope.Day;\n }\n if (milliseconds >= TimeScope.Hours) {\n hours = Math.floor(milliseconds / TimeScope.Hours);\n milliseconds -= hours * TimeScope.Hours;\n }\n if (milliseconds >= TimeScope.Minute) {\n minutes = Math.floor(milliseconds / TimeScope.Minute);\n milliseconds -= minutes * TimeScope.Minute;\n }\n const seconds = Math.floor(milliseconds / 1000);\n let result = \"\";\n if (days) {\n result = `${days}d `;\n }\n if (hours || days) {\n result += `${hours}h `;\n }\n if (minutes || hours || days) {\n result += `${minutes}m `;\n }\n result += `${seconds}s`;\n return result;\n}\n","/*\nCopyright 2022 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport type { ITimeFormatter } from \"../../types/types\";\nimport {Clock} from \"./Clock\";\nimport {formatDuration, TimeScope} from \"../../../utils/timeFormatting\";\n\nexport class TimeFormatter implements ITimeFormatter {\n\n private todayMidnight: Date;\n private relativeDayFormatter: Intl.RelativeTimeFormat;\n private weekdayFormatter: Intl.DateTimeFormat;\n private currentYearFormatter: Intl.DateTimeFormat;\n private otherYearFormatter: Intl.DateTimeFormat;\n private timeFormatter: Intl.DateTimeFormat;\n\n constructor(private clock: Clock) {\n // don't use the clock time here as the DOM relative formatters don't support setting the reference date anyway\n this.todayMidnight = new Date();\n this.todayMidnight.setHours(0, 0, 0, 0);\n this.relativeDayFormatter = new Intl.RelativeTimeFormat(undefined, {numeric: \"auto\"});\n this.weekdayFormatter = new Intl.DateTimeFormat(undefined, {weekday: 'long'});\n this.currentYearFormatter = new Intl.DateTimeFormat(undefined, {\n weekday: 'long',\n month: 'long',\n day: 'numeric'\n });\n this.otherYearFormatter = new Intl.DateTimeFormat(undefined, {\n weekday: 'long',\n year: 'numeric',\n month: 'long',\n day: 'numeric'\n });\n this.timeFormatter = new Intl.DateTimeFormat(undefined, {hour: \"numeric\", minute: \"2-digit\"});\n }\n \n formatTime(date: Date): string {\n return this.timeFormatter.format(date);\n }\n\n formatMachineReadableDate(date: Date): string {\n return `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}`; \n }\n\n formatRelativeDate(date: Date): string {\n let daysDiff = Math.floor((date.getTime() - this.todayMidnight.getTime()) / TimeScope.Day);\n if (daysDiff >= -1 && daysDiff <= 1) {\n // Tomorrow, Today, Yesterday\n return capitalizeFirstLetter(this.relativeDayFormatter.format(daysDiff, \"day\"));\n } else if (daysDiff > -7 && daysDiff < 0) {\n // Wednesday\n return this.weekdayFormatter.format(date);\n } else if (this.todayMidnight.getFullYear() === date.getFullYear()) {\n // Friday, November 6\n return this.currentYearFormatter.format(date);\n } else {\n // Friday, November 5, 2021\n return this.otherYearFormatter.format(date);\n }\n }\n\n formatDuration(milliseconds: number): string {\n return formatDuration(milliseconds);\n }\n}\n\nfunction capitalizeFirstLetter(str: string) {\n return str.slice(0, 1).toLocaleUpperCase() + str.slice(1);\n}\n","/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {createFetchRequest} from \"./dom/request/fetch.js\";\nimport {xhrRequest} from \"./dom/request/xhr.js\";\nimport {StorageFactory} from \"../../matrix/storage/idb/StorageFactory\";\nimport {SessionInfoStorage} from \"../../matrix/sessioninfo/localstorage/SessionInfoStorage\";\nimport {SettingsStorage} from \"./dom/SettingsStorage.js\";\nimport {Encoding} from \"./utils/Encoding.js\";\nimport {OlmWorker} from \"../../matrix/e2ee/OlmWorker.js\";\nimport {IDBLogPersister} from \"../../logging/IDBLogPersister\";\nimport {ConsoleReporter} from \"../../logging/ConsoleReporter\";\nimport {Logger} from \"../../logging/Logger\";\nimport {RootView} from \"./ui/RootView.js\";\nimport {Clock} from \"./dom/Clock.js\";\nimport {ServiceWorkerHandler} from \"./dom/ServiceWorkerHandler.js\";\nimport {NotificationService} from \"./dom/NotificationService.js\";\nimport {History} from \"./dom/History.js\";\nimport {OnlineStatus} from \"./dom/OnlineStatus.js\";\nimport {Crypto} from \"./dom/Crypto.js\";\nimport {estimateStorageUsage} from \"./dom/StorageEstimate.js\";\nimport {WorkerPool} from \"./dom/WorkerPool.js\";\nimport {BlobHandle} from \"./dom/BlobHandle.js\";\nimport {hasReadPixelPermission, ImageHandle, VideoHandle} from \"./dom/ImageHandle.js\";\nimport {downloadInIframe} from \"./dom/download.js\";\nimport {Disposables} from \"../../utils/Disposables\";\nimport {parseHTML} from \"./parsehtml.js\";\nimport {handleAvatarError} from \"./ui/avatar\";\nimport {MediaDevicesWrapper} from \"./dom/MediaDevices\";\nimport {DOMWebRTC} from \"./dom/WebRTC\";\nimport {ThemeLoader} from \"./theming/ThemeLoader\";\nimport {TimeFormatter} from \"./dom/TimeFormatter\";\nimport {copyPlaintext} from \"./dom/utils\";\n\nfunction addScript(src) {\n return new Promise(function (resolve, reject) {\n var s = document.createElement(\"script\");\n s.setAttribute(\"src\", src );\n s.onload=resolve;\n s.onerror=reject;\n document.body.appendChild(s);\n });\n}\n\nasync function loadOlm(olmPaths) {\n // make crypto.getRandomValues available without\n // a prefix on IE11, needed by olm to work\n if (window.msCrypto && !window.crypto) {\n window.crypto = window.msCrypto;\n }\n if (olmPaths) {\n if (window.WebAssembly) {\n await addScript(olmPaths.wasmBundle);\n await window.Olm.init({locateFile: () => olmPaths.wasm});\n } else {\n await addScript(olmPaths.legacyBundle);\n await window.Olm.init();\n }\n return window.Olm;\n }\n return null;\n}\n// turn asset path to absolute path if it isn't already\n// so it can be loaded independent of base\nfunction assetAbsPath(assetPath) {\n if (!assetPath.startsWith(\"/\")) {\n return new URL(assetPath, document.location.href).pathname;\n }\n return assetPath;\n}\n\nasync function loadOlmWorker(assetPaths) {\n const workerPool = new WorkerPool(assetPaths.worker, 4);\n await workerPool.init();\n await workerPool.sendAll({\n type: \"load_olm\",\n path: assetAbsPath(assetPaths.olm.legacyBundle)\n });\n const olmWorker = new OlmWorker(workerPool);\n return olmWorker;\n}\n\n// needed for mobile Safari which shifts the layout viewport up without resizing it\n// when the keyboard shows (see https://bugs.webkit.org/show_bug.cgi?id=141832)\nfunction adaptUIOnVisualViewportResize(container) {\n if (!window.visualViewport) {\n return;\n }\n const handler = () => {\n const sessionView = container.querySelector('.SessionView');\n if (!sessionView) {\n return;\n }\n\n const scrollable = container.querySelector('.bottom-aligned-scroll');\n let scrollTopBefore, heightBefore, heightAfter;\n\n if (scrollable) {\n scrollTopBefore = scrollable.scrollTop;\n heightBefore = scrollable.offsetHeight;\n }\n\n // Ideally we'd use window.visualViewport.offsetTop but that seems to occasionally lag\n // behind (last tested on iOS 14.4 simulator) so we have to compute the offset manually\n const offsetTop = sessionView.offsetTop + sessionView.offsetHeight - window.visualViewport.height;\n\n container.style.setProperty('--ios-viewport-height', window.visualViewport.height.toString() + 'px');\n container.style.setProperty('--ios-viewport-top', offsetTop.toString() + 'px');\n\n if (scrollable) {\n heightAfter = scrollable.offsetHeight;\n scrollable.scrollTop = scrollTopBefore + heightBefore - heightAfter;\n }\n };\n window.visualViewport.addEventListener('resize', handler);\n return () => {\n window.visualViewport.removeEventListener('resize', handler);\n };\n}\n\nexport class Platform {\n constructor({ container, assetPaths, config, configURL, logger, options = null, cryptoExtras = null }) {\n this._container = container;\n this._assetPaths = assetPaths;\n this._config = config;\n this._configURL = configURL;\n this.settingsStorage = new SettingsStorage(\"hydrogen_setting_v1_\");\n this.clock = new Clock();\n this.encoding = new Encoding();\n this.random = Math.random;\n this.logger = logger ?? this._createLogger(options?.development);\n this.history = new History();\n this.onlineStatus = new OnlineStatus();\n this.timeFormatter = new TimeFormatter();\n this._serviceWorkerHandler = null;\n this.sessionInfoStorage = new SessionInfoStorage(\n \"hydrogen_sessions_v1\"\n );\n if (assetPaths.serviceWorker && \"serviceWorker\" in navigator) {\n this._serviceWorkerHandler = new ServiceWorkerHandler(\n this.sessionInfoStorage\n );\n this._serviceWorkerHandler.registerAndStart(assetPaths.serviceWorker);\n }\n this.notificationService = undefined;\n // Only try to use crypto when olm is provided\n if(this._assetPaths.olm) {\n this.crypto = new Crypto(cryptoExtras);\n }\n this.storageFactory = new StorageFactory(this._serviceWorkerHandler);\n this.estimateStorageUsage = estimateStorageUsage;\n if (typeof fetch === \"function\") {\n this.request = createFetchRequest(this.clock.createTimeout, this._serviceWorkerHandler);\n } else {\n this.request = xhrRequest;\n }\n const isIE11 = !!window.MSInputMethodContext && !!document.documentMode;\n this.isIE11 = isIE11;\n // From https://stackoverflow.com/questions/9038625/detect-if-device-is-ios/9039885\n const isIOS = /iPad|iPhone|iPod/.test(navigator.platform) || (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1) && !window.MSStream;\n this.isIOS = isIOS;\n this._disposables = new Disposables();\n this._olmPromise = undefined;\n this._workerPromise = undefined;\n this.mediaDevices = new MediaDevicesWrapper(navigator.mediaDevices);\n this.webRTC = new DOMWebRTC();\n this._themeLoader = import.meta.env.DEV? null: new ThemeLoader(this);\n }\n\n async init() {\n try {\n await this.logger.run(\"Platform init\", async (log) => {\n if (!this._config) {\n if (!this._configURL) {\n throw new Error(\"Neither config nor configURL was provided!\");\n }\n const {status, body}= await this.request(this._configURL, {method: \"GET\", format: \"json\", cache: true}).response();\n if (status === 404) {\n throw new Error(`Could not find ${this._configURL}. Did you copy over config.sample.json?`);\n } else if (status >= 400) {\n throw new Error(`Got status ${status} while trying to fetch ${this._configURL}`);\n }\n this._config = body;\n }\n this.notificationService = new NotificationService(\n this._serviceWorkerHandler,\n this._config.push\n );\n if (this._themeLoader) {\n const manifests = this.config[\"themeManifests\"];\n await this._themeLoader?.init(manifests, log);\n const { themeName, themeVariant } = await this._themeLoader.getActiveTheme();\n log.log({ l: \"Active theme\", name: themeName, variant: themeVariant });\n await this._themeLoader.setTheme(themeName, themeVariant, log);\n }\n });\n } catch (err) {\n this._container.innerText = err.message;\n throw err;\n }\n }\n\n _createLogger(isDevelopment) {\n const logger = new Logger({platform: this});\n // Make sure that loginToken does not end up in the logs\n const transformer = (item) => {\n if (item.e?.stack) {\n item.e.stack = item.e.stack.replace(/\\/\\?loginToken=(.+)/, \"?loginToken=\");\n }\n return item;\n };\n const logPersister = new IDBLogPersister({name: \"hydrogen_logs\", platform: this, serializedTransformer: transformer});\n logger.addReporter(logPersister);\n if (isDevelopment) {\n logger.addReporter(new ConsoleReporter());\n }\n return logger;\n }\n\n get updateService() {\n return this._serviceWorkerHandler;\n }\n\n loadOlm() {\n if (!this._olmPromise) {\n this._olmPromise = loadOlm(this._assetPaths.olm);\n }\n return this._olmPromise;\n }\n\n get config() {\n return this._config;\n }\n\n async loadOlmWorker() {\n if (!window.WebAssembly) {\n if (!this._workerPromise) {\n this._workerPromise = loadOlmWorker(this._assetPaths);\n }\n return this._workerPromise;\n }\n }\n\n createAndMountRootView(vm) {\n if (this.isIE11) {\n this._container.className += \" legacy\";\n }\n if (this.isIOS) {\n this._container.className += \" ios\";\n const disposable = adaptUIOnVisualViewportResize(this._container);\n if (disposable) {\n this._disposables.track(disposable);\n }\n }\n this._container.addEventListener(\"error\", handleAvatarError, true);\n this._disposables.track(() => this._container.removeEventListener(\"error\", handleAvatarError, true));\n window.__hydrogenViewModel = vm;\n const view = new RootView(vm);\n this._container.appendChild(view.mount());\n }\n\n setNavigation(navigation) {\n this._serviceWorkerHandler?.setNavigation(navigation);\n }\n\n createBlob(buffer, mimetype) {\n return BlobHandle.fromBuffer(buffer, mimetype);\n }\n\n saveFileAs(blobHandle, filename) {\n if (navigator.msSaveBlob) {\n navigator.msSaveBlob(blobHandle.nativeBlob, filename);\n } else {\n downloadInIframe(this._container, this._assetPaths.downloadSandbox, blobHandle, filename, this.isIOS);\n }\n }\n\n async copyPlaintext(text) {\n return await copyPlaintext(text);\n }\n\n restart() {\n document.location.reload();\n }\n\n openFile(mimeType = null) {\n const input = document.createElement(\"input\");\n input.setAttribute(\"type\", \"file\");\n input.className = \"hidden\";\n if (mimeType) {\n input.setAttribute(\"accept\", mimeType);\n }\n const promise = new Promise(resolve => {\n const checkFile = () => {\n input.removeEventListener(\"change\", checkFile, true);\n const file = input.files[0];\n this._container.removeChild(input);\n if (file) {\n // ok to not filter mimetypes as these are local files\n resolve({name: file.name, blob: BlobHandle.fromBlobUnsafe(file)});\n } else {\n resolve();\n }\n }\n input.addEventListener(\"change\", checkFile, true);\n });\n // IE11 needs the input to be attached to the document\n this._container.appendChild(input);\n input.click();\n return promise;\n }\n\n openUrl(url) {\n location.href = url;\n }\n\n parseHTML(html) {\n return parseHTML(html);\n }\n\n async loadImage(blob) {\n return ImageHandle.fromBlob(blob);\n }\n\n async loadVideo(blob) {\n return VideoHandle.fromBlob(blob);\n }\n\n hasReadPixelPermission() {\n return hasReadPixelPermission();\n }\n\n get devicePixelRatio() {\n return window.devicePixelRatio || 1;\n }\n\n get version() {\n return DEFINE_VERSION;\n }\n\n get themeLoader() {\n return this._themeLoader;\n }\n\n async replaceStylesheet(newPath, log) {\n const error = await this.logger.wrapOrRun(log, { l: \"replaceStylesheet\", location: newPath, }, async (l) => {\n let error;\n const head = document.querySelector(\"head\");\n // remove default theme \n document.querySelectorAll(\".theme\").forEach(e => e.remove());\n // add new theme\n const styleTag = document.createElement(\"link\");\n styleTag.href = newPath;\n styleTag.rel = \"stylesheet\";\n styleTag.type = \"text/css\";\n styleTag.className = \"theme\";\n const promise = new Promise(resolve => {\n styleTag.onerror = () => {\n error = new Error(`Failed to load stylesheet from ${newPath}`);\n l.catch(error);\n resolve();\n };\n styleTag.onload = () => {\n resolve();\n };\n });\n head.appendChild(styleTag);\n await promise;\n return error;\n });\n if (error) {\n throw error;\n }\n }\n\n get description() {\n return \"web-\" + (navigator.userAgent ?? \"\");\n }\n\n dispose() {\n this._disposables.dispose();\n }\n}\n\nimport {LogItem} from \"../../logging/LogItem\";\nexport function tests() {\n return {\n \"loginToken should not be in logs\": (assert) => {\n const logPersister = Object.create(IDBLogPersister.prototype);\n logPersister._queuedItems = [];\n logPersister.options = {\n serializedTransformer: (item) => {\n if (item.e?.stack) {\n item.e.stack = item.e.stack.replace(/(?<=\\/\\?loginToken=).+/, \"\");\n }\n return item;\n }\n };\n const logger = { _now() {return 5;} };\n const logItem = new LogItem(\"test\", 1, logger);\n logItem.error = new Error();\n logItem.error.stack = \"main http://localhost:3000/src/main.js:55\\n http://localhost:3000/?loginToken=secret:26\"\n logPersister.reportItem(logItem, null, false);\n const item = logPersister._queuedItems.pop();\n assert.strictEqual(item.json.search(\"secret\"), -1);\n }\n };\n}\n","export default \"__VITE_ASSET__e1b1bc02__\"","export default \"__VITE_ASSET__48a866e9__\"","export default \"__VITE_ASSET__bdb9a925__\"","export default \"__VITE_ASSET__3fc8dbfe__\"","export default \"__VITE_ASSET__cf9a793b__\"","export default \"__VITE_ASSET__bc22f405__\"","// @ts-ignore\nimport _downloadSandboxPath from \"../../assets/download-sandbox.html?url\";\n// @ts-ignore\nimport _workerPath from \"../../worker/main.js?url\";\n// @ts-ignore\nimport olmWasmPath from \"@matrix-org/olm/olm.wasm?url\";\n// @ts-ignore\nimport olmJsPath from \"@matrix-org/olm/olm.js?url\";\n// @ts-ignore\nimport olmLegacyJsPath from \"@matrix-org/olm/olm_legacy.js?url\";\n\nexport default {\n downloadSandbox: _downloadSandboxPath,\n worker: _workerPath,\n olm: {\n wasm: olmWasmPath,\n legacyBundle: olmLegacyJsPath,\n wasmBundle: olmJsPath,\n }\n};\n","\n import {main} from \"./main\";\n import {Platform} from \"./Platform\";\n import configURL from \"./assets/config.json?url\";\n import assetPaths from \"./sdk/paths/vite\";\n assetPaths.serviceWorker = \"sw.js\";\n const platform = new Platform({\n container: document.body,\n assetPaths,\n configURL, \n options: {development: import.meta.env.DEV}\n });\n main(platform);\n "],"names":["Request","stringify","DecryptionError","anotherjson","EVENT_TYPE","Range","encodeKey","decodeKey","require$$0","require$$2","MEMBER_EVENT_TYPE","NullLoggerInstance","EVENT_ENCRYPTED_TYPE","POWERLEVELS_EVENT_TYPE","Session","Decryption","DecryptionChanges","Encryption","DecryptionPreparation","Curve25519.Algorithm","Curve25519.BackupEncryption","OlmDecryption","OlmEncryption","MegOlmKeyLoader","MegOlmEncryption","MegOlmDecryption","ssssKeyFromCredential","ssssWriteKey","ssssRemoveKey","E2EEAccount","ssssReadKey","createSSSSKeyFromDehydratedDeviceKey","Status","tileClassForEntry","defaultTileClassForEntry","RequestResult","base64","text","ErrorView","disableTargetCallback","DOMPurify","offColorModule","pkg.offColor","pkg.default"],"mappings":"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"} \ No newline at end of file diff --git a/hydrogen/assets/main.bdb9a925.js b/hydrogen/assets/main.bdb9a925.js new file mode 100644 index 0000000..9b5560c --- /dev/null +++ b/hydrogen/assets/main.bdb9a925.js @@ -0,0 +1,177 @@ +/* +Copyright 2020 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +function asErrorMessage(err) { + return { + type: "error", + message: err.message, + stack: err.stack + }; +} + +function asSuccessMessage(payload) { + return { + type: "success", + payload + }; +} + +class MessageHandler { + constructor() { + this._olm = null; + this._randomValues = self.crypto ? null : []; + } + + _feedRandomValues(randomValues) { + if (this._randomValues) { + this._randomValues.push(...randomValues); + } + } + + _checkRandomValuesUsed() { + if (this._randomValues && this._randomValues.length !== 0) { + throw new Error(`${this._randomValues.length} random values left`); + } + } + + _getRandomValues(typedArray) { + if (!(typedArray instanceof Uint8Array)) { + throw new Error("only Uint8Array is supported: " + JSON.stringify({ + Int8Array: typedArray instanceof Int8Array, + Uint8Array: typedArray instanceof Uint8Array, + Int16Array: typedArray instanceof Int16Array, + Uint16Array: typedArray instanceof Uint16Array, + Int32Array: typedArray instanceof Int32Array, + Uint32Array: typedArray instanceof Uint32Array, + })); + } + if (this._randomValues.length === 0) { + throw new Error("no more random values, needed one of length " + typedArray.length); + } + const precalculated = this._randomValues.shift(); + if (precalculated.length !== typedArray.length) { + throw new Error(`typedArray length (${typedArray.length}) does not match precalculated length (${precalculated.length})`); + } + // copy values + for (let i = 0; i < typedArray.length; ++i) { + typedArray[i] = precalculated[i]; + } + return typedArray; + } + + handleEvent(e) { + if (e.type === "message") { + this._handleMessage(e.data); + } + } + + _sendReply(refMessage, reply) { + reply.replyToId = refMessage.id; + self.postMessage(reply); + } + + _toMessage(fn) { + try { + const payload = fn(); + if (payload instanceof Promise) { + return payload.then( + payload => asSuccessMessage(payload), + err => asErrorMessage(err) + ); + } else { + return asSuccessMessage(payload); + } + } catch (err) { + return asErrorMessage(err); + } + } + + _loadOlm(path) { + return this._toMessage(async () => { + if (!self.crypto) { + self.crypto = {getRandomValues: this._getRandomValues.bind(this)}; + } + // mangle the globals enough to make olm believe it is running in a browser + self.window = self; + self.document = {}; + self.importScripts(path); + const olm = self.Olm; + await olm.init(); + this._olm = olm; + }); + } + + _megolmDecrypt(sessionKey, ciphertext) { + return this._toMessage(() => { + const session = new this._olm.InboundGroupSession(); + try { + session.import_session(sessionKey); + // returns object with plaintext and message_index + return session.decrypt(ciphertext); + } finally { + session.free(); + } + }); + } + + _olmCreateAccountAndOTKs(randomValues, otkAmount) { + return this._toMessage(() => { + this._feedRandomValues(randomValues); + const account = new this._olm.Account(); + try { + account.create(); + account.generate_one_time_keys(otkAmount); + this._checkRandomValuesUsed(); + return account.pickle(""); + } finally { + account.free(); + } + }); + } + + _olmCreateOutbound(randomValues, accountPickle, theirIdentityKey, theirOneTimeKey) { + return this._toMessage(() => { + this._feedRandomValues(randomValues); + const account = new this._olm.Account(); + const newSession = new this._olm.Session(); + try { + account.unpickle("", accountPickle); + newSession.create_outbound(account, theirIdentityKey, theirOneTimeKey); + return newSession.pickle(""); + } finally { + account.free(); + newSession.free(); + } + }); + } + + async _handleMessage(message) { + const {type} = message; + if (type === "ping") { + this._sendReply(message, {type: "success"}); + } else if (type === "load_olm") { + this._sendReply(message, await this._loadOlm(message.path)); + } else if (type === "megolm_decrypt") { + this._sendReply(message, this._megolmDecrypt(message.sessionKey, message.ciphertext)); + } else if (type === "olm_create_account_otks") { + this._sendReply(message, this._olmCreateAccountAndOTKs(message.randomValues, message.otkAmount)); + } else if (type === "olm_create_outbound") { + this._sendReply(message, this._olmCreateOutbound(message.randomValues, message.accountPickle, message.theirIdentityKey, message.theirOneTimeKey)); + } + } +} + +self.addEventListener("message", new MessageHandler()); diff --git a/hydrogen/assets/manifest.1f23c85b.json b/hydrogen/assets/manifest.1f23c85b.json new file mode 100644 index 0000000..9c0665c --- /dev/null +++ b/hydrogen/assets/manifest.1f23c85b.json @@ -0,0 +1 @@ +{"name":"Hydrogen","short_name":"Hydrogen","display":"standalone","description":"Lightweight matrix client with legacy and mobile browser support","start_url":"../index.html","icons":[{"src":"icon.8024c299.png","sizes":"384x384","type":"image/png"},{"src":"icon-maskable.965d12c4.png","sizes":"384x384","type":"image/png","purpose":"maskable"}],"theme_color":"#0DBD8B"} \ No newline at end of file diff --git a/hydrogen/assets/mic-muted-2617055184.e8d1962f.svg b/hydrogen/assets/mic-muted-2617055184.e8d1962f.svg new file mode 100644 index 0000000..fc97b49 --- /dev/null +++ b/hydrogen/assets/mic-muted-2617055184.e8d1962f.svg @@ -0,0 +1,19 @@ + + + + + + diff --git a/hydrogen/assets/mic-muted-2638557456.4d8c99b4.svg b/hydrogen/assets/mic-muted-2638557456.4d8c99b4.svg new file mode 100644 index 0000000..54c528e --- /dev/null +++ b/hydrogen/assets/mic-muted-2638557456.4d8c99b4.svg @@ -0,0 +1,19 @@ + + + + + + diff --git a/hydrogen/assets/mic-muted-3642419863.228ee86f.svg b/hydrogen/assets/mic-muted-3642419863.228ee86f.svg new file mode 100644 index 0000000..df6f739 --- /dev/null +++ b/hydrogen/assets/mic-muted-3642419863.228ee86f.svg @@ -0,0 +1,19 @@ + + + + + + diff --git a/hydrogen/assets/mic-muted-4213153786.513608a5.svg b/hydrogen/assets/mic-muted-4213153786.513608a5.svg new file mode 100644 index 0000000..e3f96aa --- /dev/null +++ b/hydrogen/assets/mic-muted-4213153786.513608a5.svg @@ -0,0 +1,19 @@ + + + + + + diff --git a/hydrogen/assets/mic-muted.56aa03b9.svg b/hydrogen/assets/mic-muted.56aa03b9.svg new file mode 100644 index 0000000..3dc5929 --- /dev/null +++ b/hydrogen/assets/mic-muted.56aa03b9.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/hydrogen/assets/mic-unmuted-211198830.1fde69c5.svg b/hydrogen/assets/mic-unmuted-211198830.1fde69c5.svg new file mode 100644 index 0000000..ed148ff --- /dev/null +++ b/hydrogen/assets/mic-unmuted-211198830.1fde69c5.svg @@ -0,0 +1,16 @@ + + + + + diff --git a/hydrogen/assets/mic-unmuted-3178778883.b8f57412.svg b/hydrogen/assets/mic-unmuted-3178778883.b8f57412.svg new file mode 100644 index 0000000..145810c --- /dev/null +++ b/hydrogen/assets/mic-unmuted-3178778883.b8f57412.svg @@ -0,0 +1,16 @@ + + + + + diff --git a/hydrogen/assets/mic-unmuted.c180f63a.svg b/hydrogen/assets/mic-unmuted.c180f63a.svg new file mode 100644 index 0000000..ca00f25 --- /dev/null +++ b/hydrogen/assets/mic-unmuted.c180f63a.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/hydrogen/assets/olm.3fc8dbfe.wasm b/hydrogen/assets/olm.3fc8dbfe.wasm new file mode 100644 index 0000000000000000000000000000000000000000..971fe9ace7c7f9a39b4883481d754c9a612a4485 GIT binary patch literal 153573 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�^x#TX0~{y}>J(@rX-yX{3793YeN-|~Djc|} ztwgoW6S#30C4sw2QB8cmqB_xu&DCVYji}HVCerCNh!?X0BDE}sU`geh!^qARLt<$r zL5HNM>B)G0=XK;2%o>Sus)`)A4A*uTlSqK}%OnwNmU+dO9R`k!O>A~Vtb+upH7Snq z2tedVP4>qhsB*7Rlk5y?iUdu3+r}5;59t#V-#)@j;u{jq7i%QGjezs!P8ZQv^9Pkt zSc%xJ2^GX{ri<}>$q7jN=mhIdJs#xUiY}c66$wH&g%#7Kx(8KqIwl4LOJvw0B&u{W z(;Q@`$=FpI8xXL+qe^KuYimT6_CW@OeV{23Rm!nZMU^t>`%tA;Sj9eD(lVSc85sBi zj4Dgc%aXOnA|-qR!U4`phe8ap3iDzs=cObbt&{xbQQ^F#OZdR$kg$OVCaP7cfu1Cg zwsJ@7R`2lTk%8T3naaiqMVMX->=|v`l11LCQM$w&?O|O6%ZF@cQ4DDercb0~bPwm5 zJk)w$X)Z{E+zja`2h>+&J^K_$4JVd2_%4+-pRc$oyc6m_8ecx zLyyWGk4>7lHhAnr)u}zy%Y*eCEcOae4~tV`_H?)n4BmdMsM%h-h(ac8yC0!Qg}t#=VVRmd(bj3WjwW{8oB zDk8%b6TO*?kU_&l|8k|4=wf?R+!S_(&Z>GlMnl<(#>5RtULF_v@)mEY6%Sp}0*msP zxguo&QslBiiXv@Cl&u&{swltv9^fDN_Y@NpDLI~4rq$OpTl>`@7q zTL>t2<>;q*DbT*B3VBQWVlOe#kI@jrFTxUS2S-7I&(z9t92O)9UJmvAF1dW^!@2QE zj=yV84qW12l+YQgtD%18lVB`(Z%hKg^>-VbYSQ0Ojpn>n$L!Uidq*)sEXS zK~WfhTG0v&pVu*6`I$xXuPpk9dC`Awr6qRIkFLnm;zf2{g~9w{WB4PM4%sO#rFXe- zI1*?~p)Rxoe?xCdtB6Xb#LgUxpv-Z}tHYb|IF*v=WNw{7!Owc!Fm=jWY;YQj>7F>( z=J51V*z?X54f}Tqz+TR+k7VC@SAjzbg5;W;tPgXZcp|*HvOj1wx=RI9$y|pZsDZc} z3N{7FLs6*7WVo~bj=;-JYD$&&%TCft-cuL`X}6Fl1OCL3O_v9m{gHRWuDqz&BAj0P z%V(3l(1-;tx%glS*Qf|Q;JKjX_M#oE$0Bc-(R^4r%EQ-N%xG1=C1#9l^FD%~po-^G zeH;^H=wLGRj-({h_EX4FAGUObwddlv;tYw#@TcD7!oXx_2usOv#R1S^Eq$q_FLXl& znAVsUY6LoKWKg@PFqoOt+J#Ja7KUI$V(mKcLo{kiaVTj_9uEnI_5_3H3UoS2i!*_= z-8L%GtuO_zQULVBe63Lj@XuHWSQv{Zfl+|YejUh+YtW<@nudpwJq70nP0%Q1Kn3cg zS`)P#=|pa&32SKqYlu17Os%U8>u3c)L>;pv6o+a}SU0y=BY125F_3U@Y2`TH@Mqp+ z#U0L-)-<2Z?XJMEwi{rEsqof>Bf%i2QxBmX=k{8L^mX^s%vR^?c8oY z)<90wu1Xaz4(s=79MWBLZm}t-QI1K}0Q6XhGZ`NsX_}A@D29mhIu9+# z(lF$}XF#k@M@x~XyWR7Y6o1=czHzD2=AwKX4~YVs%3NVeRa4wUk4`2gI4{}VL*Bd9ef3W?CpQBaK-DFars(||FRJKhEU z0+?7|*q0NNv2IVHPVy0ATub%g5=KUZ@h{1-zt3NQ;H)oz3{~0`3)3t|s(G299`>j=v1f^(c9>^d=`<0`Jr?2LkW@9! zDH7a zSJxLaRKDPzU_ibNvoiD@BS=}$>JBZ*9Kbw9s8azzF|)1RumDH6OFZCDZx2VS)G4hl zWs`E1Yei23IB7tx;Za)_sLf6_5~qzosVc45frb;3dV5o-Jd_*%I4$2`igFu5P?dvD&i)9YSjw|ZL?liMLhzZ zzbUQM!?PP&i>gEXB^7m~I*f`i}7vXCxJH=1I(H!lOb zLMYjYp$U>}0_rl{>kSd40O7ERQkd-*(@AU^nKLdnjRwI7!xlo^VJ)+TkP#%B1JNNM z1iX&*yFM$F2S!@$6%0)*$Gz^BHg#tdTE8X=%`=BpC=`Q4e( zHY8}foNZ>1kDg{&nRXZ=?uauetXNTqd0DjcL5bCBhmYNrBsyD`T&_G7mFjY5cDR!2 zX%<^JIi6t?+An?qg)Gh|<}M$|QqaAL(q`W0nSZA?PIkuVOxS{YS`Q?8nR(%s1L!@g zs}5eS>6x$aB4(75J%pMU&7XgOM^|--k{9;+ZgZnI%DaIRJ#G{X2wzM1x+r`#;rB%0 zrG&3g`Sx@{Nq8K1 z5^laljxQ87G)(|^66dAi5R2jweHN>u|4_OdSMEBC7SH65!iZ+}6}O{KrQ&BUt1Zk1 zuQ;7gO_2183S>e@3xwi|QgJ+mlq)ix?DetdtOChjD&U6-kf?U-mDcuPdT}Y3gcn{v z$yZL7mDb`4KP^f@`n#|R%1EQ7u~fXHOi**C7ze zD;IgZmNH#oj36bBZN>rL9O}Fq_%4Y%o-t|&glL9JawQ^J7}?;vbfDKsVzx3xdk2lu zR2)>@>jy|Q1Qh!yu)VZ6e^>}H@TQFzydZq_>i4wjT%GhnEaWh0^MsOJe)!@oocKd2 z1o;TFYw-{8V}_NJmZUPoSfV+uo#bDQC{E+5Bm{@d!`tgb-U%>D+#wT?Wejt1jUzD% zC}TL{87fTVj}j5lHQ|^aaO_1m&g~~Y{+La;F(@h1GcEM;`|{gsn}cYfHnCF{b2;J! z&Xf44nAg#H8nM`^&nC*f@OhHk?sd!}KHwD7sxN6kcBGCi+A2dF4WimwOfv|R!H33O zv<6-~uqp)!73<){wp2D?*!e6(F$HTbIfm8GQsnfE+-s|(q)7Zr6xp?n`$72qwAY!I;HcQO^-uI&-&56t5sWxR>1;Iz$!6# z2xfvKKACif^sLn23famMTL2||q2ACIWd(P)xpUQuh&j-+CFVe0aPL9>NS(I5jNK11 z-r)<^MDq$!Dzag@&j+5@GDWC{;MG^7EJcv!8#20$BO%d$Q9IQZ-3`F@3j|Sqg0p%! z-M*ABZjT9{6(qM-+40@wji{y6iB8uNZUQ!j?n4d;4ah<3(n_=t@qI)Kl70H5bR`X; z6$ib(TIf2bUs@t7%(cdjm`6G(t4>KoY{j5O$O2k(AJc8EJ9E$|VOR!k2Js*a*W^Cz zJA`4XB@JJx?Zp@EE8`356uOe7gVQ5y8Syizh~o2Y=Mm!k_F^I@ty=iGm+2c56U0JT-x^Uh!#Gy9?_jP0t~Dy6Sb5%Ecerh zWLCrD(2Tljht}PuwO%wF>n0{f4B40%a~6b40SPj4cil1oxuDa`=B1MKd`ZtX&u6X% zGm`1Tk{L-jG9&qf8OhZQ`#LZf(g^F+`WrD3SHfNjUq^UF6n+ok@+HQmX4sb(5adhw9tu~#^paKU8+$GM(J)4)rfcH5AIfeD=&rQP|6kLD!vPx;fU)>&_LJn&fVC?iA%wtNVwM)6DYm$P}1xZ}-xLA$p_= zjC|X@ByJ)ei9(AWegU%^PAzb`9-};MBjI^H=Us*I?8~BQguy36#fm2>JT&JVuPsi3(}ow^BhFs1fi zr-UwZB-^M{V;X?;zdE=S7ZgqMUFs0 zq(j3*R;-0-_i_**k46ZPho@O-s00G!Q3nB92REvNL^MSG2N5EiA!Trs$YpRju0$k* z%5jzCq45Co2qjt+T?{BEEm1?h99N=&rgEGW8DXCRi^n8NsYszcZZsmniWIWz%h|0+ zp*UBLvmztpaYn;2k;%&w(n@Zdt62S2lL(P z{&DwD@*Q_BRzYP4@ZA~}xnuc`J0Sm~`EF(Zxcevh?pBq$WBG2Cii}C>Rb*z2-b$Gn z%SGZUWhS?QR#Dgv(RcqsnYsLR!5v3;?P%Ps*zvf#;XfRAy{`-ImhO1mE!*+9!&&(s z&3E%?J~nA=Z6l0!zz|{K4(GbXl(=IB=0*S6csup=z}p!+9B*gsaJqHf4w7ZR+cQw8}X=Z21o|Ml_flO5J z1WzuYxS9!`d`z*2MU%$nS?d5O@i0A7nehmLtfkR?UpI<+t;y5MVf}s-6}w=fQN0$V zSrQtymE%K>)>spguH>F!8AV%S9RB)vR3IOt5^ECLf$>#F8ntmz>aM_|(hiDCqu25- zs`*-`Q7TQCs~Dq{95c)yxP}2r=k;uocTAm1rs&PSS)pG}_Dp?YMs0A8fjqDKQxdLE59 z>9t4&{7~i?9P)8jfg_UvxX9zN7!jZq|8;8_Hkvt11;fe_Og029(JLMj0~S*Y`0?u; zu$XQLns_k;G6fMd$EnTHKf!}8f}!O&Lp_MI#paetI|xgoUGvn7e!UX?g1d-bY-@$9 z31pRM*}2*U`Z7@xXPJci5|L{HfnLKx(V`uj*3c|u-lAvY7hGD$A zDM}Zu)lmO!xFSf{Gl>Z!QR zYI@)!skEfUE8U}FnM_-0En0Ltf~})qX^gaV^9zVX8%^z;RYtp#h*E;@lK=gC4Z8&lI-78U)xBHrFylQ`i== zDQpYb6t;zI3fn?%3fqEi3fqEi3fqD505!nTl`!nW#IIaq)x3U$mZYq_`&#!<$! zor!AAL@`m#eQ%n3R=cD5X!_6-Xmkn#A%v$&BpTG#A$~2Nave4t>Ik;5Z_IlW_ec=c{g!d%e$-!-c6j=@vf;k z-c6k5c#l=R+F#GRJPLd_aoWJUyx+W=IBn!zQ%1a-IBnuxW(92&uuf301SeZ~!@Rwg zJ+gR5f|Lb6K#lc^9VK-%RVuuw$FAo9++ED7v*sMB#8S;N zj1%ncFS1s)-nMhVP`Rp)iC6oW+}1}UK5Iu&pKo-g=XR#OBMSef97gk8}Qc~M`f!d@Oz=10=Mj4vo1bS6a9J0tG%Z$(BV`n#KQiuaPxd_24wEVeRD3{>aE13)?LktwCT7Aw^dM2* zr32mseHJ1Bqi|EKPPFioCb?*ny<`E+c3m^e0Zq9ia(nje$+nk8kBO`Is~`m81tETb z5Iwhb@>Sa_it%bPaoaHS{JvEH%A9eOAw zd2z9mX3m^3v-EcK5r-Z%b<*tPC(Ts-Rb|C-)5GbW>Y6lt#&L&FnLRU{e%Op@-i+gB z9ev!a*%ObOJbBX0*|TQMn0@TDaOzZR=MmHU{dC0i$*!|U96mjqb==HJ_BM6W;o+et zl_26866oS=Ko+Yt)$=bS$0>_v0t2dAHP+S%s@XP305iFzF6)`6e8A&>N#%o}Wmj z(wUlUZC$Rup|L4HVBny^I}I7y+~N`pYaPDxE+c|Mao3T%?Y>9bs69uIY2RyaHNn37 zp64a_OY)cEPkRg+bAByehsNCP{>F^w4dGA!`J|g$<9S)a=kv_*)b~rHI8o%x88c=X zo@R!#4xIw=mdI2kc;06gpS0zQ`QP>)Ja?xpO?6$~sI|VgV$<8VJaEv;Eg$ar#uo3h zKYr!DhACTIYR_A}vhkH~fAz{OA8mf0x8&^oy;JKS^ltyoU$=a0YVRvubAGgCmzPuC z`|Ce}kZ;QEanf(^eWmUvAK!A}_xF5dm%&eYGkcR>$CJPJE_i$AmVKYQVT*U}m;JZ3 zE~kh2+>e@zpJ@BeioLIz_{5yw?0U^%V|(^KaM}ys{Oj8LANbz8F1_u0_y2s{{ZoGb zrbmt+-?Bdancoih?Mc_qX!+!=mmTu{=1b4{?$d7>e%HiA@|G2M)@*p_ym^!SH(fsP z>U*D`{?HZsjQsI^Tb};X#r4OX_pS?nxA4sm&HvN~haC9Ir+(18|G>v~yFK&l_1Erx z_BR*)_WCb=>&V}J^owU-|NL{i%@}v(;Sc@h{->{g_g8NGV$+-(?!Msho9aiNpBR18 zd1HRwe);nsKlje13y*y2ui=Bw-m&_W`;Q%P`FEH7dC^@zJoDExk2!cne&74r&-uze zs}3prb;Y_plB=I@{LMp;Ejj7oN8Y#Ujla)r{K{^(*L~pdYi@t~yvvdsk2(EonR(|n z*1c`isKGDq{jJGY)O~i3-M_l~DdP&Qd;Mz9M^AqFoH5gW`049z9MmxG*dLt!$#>6M zP&a4Qy%!wxg}SaqKmEk74&Upmk6e1-{+A8DV$A&apOO6S)SEUve6!y%@qwex9JcD3 z552U0-n)-_q~oDknOlyT`&jeL-#pW@>HSaU@0fGk$jpbI*)!-l;fnnmUtII#7xtaE zvMaxC{kPT(`QoiD$KDkllbt(umkX$!VKYaYx zuL_?#^3Dy@7d&_R1v9>O!<%kdbMG_1KX0$IUcUD?Z~paV?^}54-a`*P@ATUi&%bN) zO@kM&Tl&KIGlpdok6qoi%jvuRWy?d$fBxWQKltU`qi@~m?O(a~Pq+N}q0z_Af9`jS zd%kkRX}ka88wc<4wVFrP79Lx3<&(Soa^n-vT>RZ%EPnFbUoV+)@gF{a-q87XzHM{n z<15zP{N;;Julq#9pC3xCIAlQU;ll^*pX+H|dU0ykKV0y=whxSatn_amv0!g7yx-5?afCa09?jo@gxmRRE#g?Hgx_!h2(XW>}*J^i8!F8p2hd0+1E-!}S{@7%TMYnOfX;=i19_~v__ zy7`kg+&X{lXaDwr-48hAPmk|++fRPmvtgf|QjhKWrREQ&KTHR8r`BQJ|`uaoTkDPkqH`o8>&c7Zy?G0B<`g3B*(Fc8O z)iJkpzVH1vj{Cy{pZRVfzvcJedZK>N3$s6T*w9CBzvPW)yt!q;sh7@pwz%i=Ws`rs zX7CT*lKbAqeJ9i%kr{c)Bj3LJt=C-l{M&!FZtOYld3yRCbB}-V7jxe6iR|YW@3z}=&@{f(D?SI1OuKeQ8AN|owD+ZkXfA78a`d!}n^KTs2 z_QR`hdRN24Kb?41_~G`Z)w8}Z1QLjaI}~A3JI^!Vuam!C{#yAvfWNu?ZQ$=N{-*Kw z5&pcHwOvnl9B|vXhdXci=%v5^&R;KjZv17}@4e-n`@Q$j!yf&?&%ZwF!fW^a_#?Z% z@z+zY%T4^tm!@a;y6Mce{~LMlqBq@q#5wPNa<};}{qc+|&ss6$sasEZ{LOPd^ZvQ> zrX2mZUw!VoZ`o<`3AexJ#-+e9eq-}}KV9&_yB8LJcF+D-{P@pfHw{1khvy#t+hILBkNWbv z&im|J8}Dp>sP*OJ4?gNE-+FuSk?*a2W$_ayzc}LitKP7z=COS~H86kD9=$KjKJ}O- zceLDpWJCK;-tn;yeD#LktlW6uv`_5$ht=zT`GtcnKla0?4IQ1j%r+ z^OO_Mnm4dDJa*0{gLgT3`uw>=c0P8}lD9Swp1bgrDZ_@&S#r$e;R7#u>*QIx47lLz zqfQPwmaksFvG|4$f8qPT9(llJAOG6RyYK(*dmj5;+d=o;@cf274|(uIKYwP-gpXhK z%AqX*=kEXLetUiGm7A|Vp#4jK_~d2dM!x*$)vG4#@rQ3- z`tgH`zy8(-?>o5gv;VvP^PQ(2c;OemH}Uj+=Y8hs!_FLa&P|U^o)esT_gAOP9dW|@ zo;&iqA*WpStEpWL;dNW4pPf2##cz*ZykOUF-!=2XceMTBwpo{)w*OZ@d;G;`9sKC$ zPF#3G)6YI|@&#{6{o=+`=1*$*+xy=bm)!U#1M0H|4nxB#)YZ)Gt;vPFgtq zw^y{BuxQ##?;U*7;=>+$cYqB zE+79w?tve#82Q(hhkkU;-hUjrcICA9JhSMLTMoPOdy60a`0VQ+@A}GZ$1nfl8SCyo z`=%dH|Jo-{z4JGnkKcLWXJ4B6jXUN)@P|{@uSq}sQ07}-sQu6d*;Di z*4;69!+nK6Uv=W$`?NJ%bK=(fBoSf*YEbg=4IE-Irpc(d-o0J zp1$eD_r7z%!oU3SJ?~xo_7`7T`l%yM{=r|~xn|-C>tDX?mf4+;ymINCv!*@Xdi@K3 z`fk{=;wLYEXU2#dU-{A6H}Cw>KmFo~V+Va`-S>X|_5s&^as6`_487*NPrNv1r}uyR zD}V0JU4H8)@7<@i_nuoHKBVc2&wOrGd&89v-+SAx$@leMer2tH^}Ck6yQbz{@4xPb zozhob|Iuq&54`K5!|QGuzv}#{HJ?1>o^y}MKlsK^yzS(jKmCT=PwYPU!~5KN%&Bkq z(Ab-fym;gl``>)%qEYW2{ptNiy!FXZtKT^IydUm;|L(PmpJ@Ng-ihK}Idd~UDsuW$P6cdkC|BPYG|gLlrocJ|-C{E-WiJ8{PstmneotZzuWZS#MMVV_pzsHe{sad5B@Oq{EVNx=aE5w zoc7bDU)|-ULx1yym)`iT@P&JS-|_6>KfmMGdwgTkFIN6!&$SnR{qTc6^^Ui%n?Ck| zg-f0|ZqK{Uy!acZ6h3~|g2ztJUoo-g(XQ5IQ!n^pPv&E9IscKx4evj?``b-t{9oPw zBks@Na{AskVEkNYrV$Ou5K%~zu|$zVR5DbQ24m5HQYs0RDMLv}M4>1tgc2o%LW2g4 zib|3ul)}26`}O{QpX2!xKKF4S*HL@zy?@yE8m@D=*4|z$>|Qp+y?o5B+>tvghWox# zaQ-;e^t-lW?Sw@Q`dh2!+V^Q}uGU;LFfMxiMfR}$f^~#=#-}TGN92>cV(f!P$MT4E zPp2O$JG1(s>dERT%Ot%EuOe4n*F2kld{L>*$4f^S)~qTGKV_V4o_8Q@$?L_hP98Gv z_4*bcWJdd2ZiOywa_)W)!Vy`zDoHgdMy7mXjh7t1&we>_O|({;1(CSB~Neh zRe$$)vzFcT-Sd9D_4R!LAEvFX(Yv~D=ZGPcDN%hLYydNSXT3S21hm8K- z+}OuNx_W;68YKCL{(Y144ZnZ$tF*_3$BCUITo2#L{65m@RNRBlW9^h5yp5|9uo8BQ9tkEG{BgXT>BG1nt6t zMhOW2cg=rS8lF*;7%%z%KOKVm4g2rtu>Sy;*nfw`Ac&GMEL4+VLt$8{CNVUrI_!Fg!R_Lh}Fp=YQ=2uy=2&1QYNb&!$R@kpJ)4|AN@?|1}Gupy|8d zjFB+xpDHnV#D9nX7sUR{G6V?mf8YNP*8cxMu>faHlNhv6P|JOHnnYnA3)VZqvbrbI z?@77Lp>{SNni){8(R^r|#k0nEGcubWM_vYFVR>dDc^gXN+U^PxKBfWxmY*bk>=bmB zp5xI^GX$MdV^4p|k>9O-X>;jcs12Cl%`J11)aWFO6`jbc zSWYrw{ZO?qqo-@Uu(s(IE`2Cwxkd4G&d7{X8l@@B!ikyH^dSG*E@)JrNA%Qg9v!=l zbTY4FkW31UR>!iwdCE{RoXL&bpJ95)FBa!lhjDJhNmu?lGAc~)^{xYYI%l!DHpgIv z)pR6w6E>Xm;oJP5;z6nb4XCZb`Ge}r;cqXZq89MZV1bY|=Mtvh%%YRQ_t>Ge?~!@$ z93QwPNu_ZsF-bQH&MTDAajBfjvrE`gjnx=#sK#c!Gso*g;ry1n0;P`E=C@S~X=UFY zl+;~7@PRZoZ<-=rPu62ua(|)KT*|yMz3|}PBZgfy(6o=hFSR)c81{z$Ox}xWb>sNz zw&CcH&1dcV+h~S!0>Aa?0&ThX0iVM5(LSRKJpES)J~t_{in-tDL-HJY@TC-c55!Q= z#v|mmUk8H{ACkyHCvJS#p7sp+%&L0MP(kuoww+BTjTB=v&6r1(4aU4^jxkB|<0M~H zMg_z7)5dZK61zJduY`)ITm1l68J|tRn_sXX86W)F8buj7P;z<=^ zWV$GXg=bgLG*u5Qezct4+5SP~w=g`oH4l4!c49-!AZ$r?!q=k?EKsWuLeXa-e^!j% z?;DBc)Kv1?4f4zDRGN|M@xV)}AC z2KNfr)bW8dXq%!F1ZPP?T2Qk>bSJ==|{9>~z}C$|uOX$xOh zaff#8i)LS^-9n&fC#z_0LyAxhv|Q$suu(A$a&aTeHaV(v&Hg`|H`2uZ@=b1K0+4?b zUpwPybW{x694=1$@)B;+-vn!AZ7iM_OV1Rxu^^)$%GO>(qW6xG>cDI4wur@{7Ec6N zN5FRROZ+ptjM3x`&jAjjFnYEXYkA9h!sUQBbL&PWrAKM_Dzk{NW=zTk|(cpP)LV~?$j zaeB7~9HXR3p-Bl^RiEIwyp88v7)t4y4kS5D2?uifxp9sj4o|Y=0WSKe=t^YqpN;T; zHBX*0s6&uV1;;ylx_@bi*mYuaeg2kEPqg zL{R<9n*UYN$Lxw&3f?>i4ddi^#KJZxow>$#c?aP4-vMm4e?j?SpSX^CIzoqv@tsMf zl-K^8bsJuU=A{{QVbN@=zCM93yMGVWMkdU9pEJrH)X)a?FVrc({l8W`BzwzSOt$<3 zZrhna*ZwzTqptG25+l0vQ;J{HdEW`-3hRFzx;i@+P`YaYUHKJ+Ks(QkN)UKdHI{boC+=+NoZTz+m~KaQ<8 zWIp=!^ed+mV=A)fz#v6fT)c)AwXUq~?J}BmV=L`36+@H#3{rljNGcUJH2>}ivicN9 z%MT{ufT|2O9z9Q${#Tf}9dLG449`9Iho%&m(VzVdh;cUHMIw#lus9bdGGgeE+!qoo z< zt%#n^a*vNDy@r)IBGZQ*zT;p%kVOuk|8muC0~p*1plEkH5^s6O9P_3SwB~ZdfnkvS zbB=0vmXgq&8+=+&7QU%O(4@XFG7TF-TU`l#wnH#;nmPt4cVUR$0$8t{2+y1M@zf-T zUS5u;d7?>JF(1}Vr0-P8lloiZS&{QyeeUw^0!9&ej}8qKBNg9!gS}%7Hk~( z9xtRWaE;ZiZ4Vk%gE8hb?qt#KeWD&+#j>VXSO)N1v7OpB@FmTW# z%b~_BwDT#|{*^^s?L0bq^a)vQ*$D?>Gqly0(&IaCnf~Q+8rEHbq@WY9+t!2ZOMfuc zOBs!pml4=njZdQs@pV)bc}*3f9?2Orez-7>{+Y%{jr~OrD+2fw-$-N#?qMVP83Iw0 z7lt7dlBWgQ&U;ko ztin#OCcgD!Auaza#V(rElKimsEG)r+9;63jKxa1E+RAv!g3FlPrOPg7O{DTEYuLE^ zeI&Oh*cq)+)6)&&X^`*!q!gY zf1QCnazp5mix@o&vckl>Eo{P8Q`B4w!7ug87#HcluTMLTf=*Ljc}@uGMibfL$`q`< zvzC8-KyLc{4jQx(ntFidgC9OTQERk$IpGgCf3hbBV)PGH)n*AR0&JM}uk7 zEeQ(yv4-w`siZgO;;FMzkY}&E#6{z*DQQA0jHYd&QM1%|yYo6y^Gjs9yQab`WD24~ zl<=i!Jy$ubDtNvDeB$R|@*eC-V}|+Tyu&hP9sZ7PKC9)|WUVQElRUB3UOMewRN z5g1#%W+lBz7^)e@8s1xD&!;Qc=X6kDIcsB$pTwx>lOMCG(1S;)HM9L$NLmuAENDjt zY&@jcW{o!#_+~mcr#jMEDocUto2h$50b)OkV7qoZ%ysiO{>zVP$RSOPuyd#RzF(N}tBLej^D()1jG)QdisW1wN9)Rz zDLz7o4hXBT9UtB3xmg;PZN85mGc<8WaVo7!{>NtR%BCr^*Q0XBU6Pn1f`+eVC~+#_ zJ&FOCmSe{YMN<)aR}LN~<@8SPE*r8)36iJEx%%v4(qH6*oDp$wj^7RO;oi7ZR?lNa zs%Y0QGv=k|hr7?$@^Y!WSoyAqmj~(L>z|R#VfJ}yCn?IaSxt74!MGFai8kj%I={yn zr{k??ANg>7e)pJt0jv-Heu)upJnDm{~ri?BK%{Ad$ zO_$P7SxeqrdYC$d?~_FH9r|3C&1AGjBd+oV7xNxMI$b944BAO%U0?7dH4p(N)0k4q z57;Lv@=+~gAa#5%OSqLmNqJ`Ucli?>^?w1=kq$IHs-M-K*@T7JSIDRH6N1vhf$RW$ zJJyDWG2yU!nN5$9OlfK30jv-npbUW}U|Vkyo{T$2)e1dWbj*@}5AvnqMdz5>OKB1w zegIdzh44W76xFIqL4IKbU#c_=>zd}WH~t4ORpBFQoL^$(^5G;mYCmEOD&aP!1@~?e zoAvi8>fWUDdzTH#GG;KIS6{)cj{>nxVjQXFIUyl_66CE#SbT;X943aKt*03SzH;c{ z9yEA{JrnB`Cd-fuyy9O1E%I-`uZ_zvT6r30J8LP;#s+^Unn597gUnXABc$yJO|~C{ z$EIzxM8Hpc*&@PMd^v%eGv=|gj@~3as*&AzcZ%H7D(L>9Yd96w$c9y~q+J)rGpB8D zkh05*-F&wk1uv}FyoHN!Y=%2~(RYB3HZ<_d9!0pgiCD-aSL7csr@)eEisO&DzT^*# zt?}SvstoaJ*dFeu|AHFy9`PQV7x0r_&LgGY!I*2ZFMB>xNvt7zW#NQL&mZx#3nt)r zmmyW1K1_2|r}LLSrPz^rgJSE4pmzUWe%&>eR@MGy-6=K1HgPx|+r4Xv!#BzSNObmq{R0=o)iRgVr#O2cxj{NG#v~ zq=Y7@xTCU0fyyK*_+}w*wB`lV$D2FpyTw{sa@-!5bDptiDIJn}x*ID)i>P0G6nhZx z6&sU=@mu9rX>$89+Gw|qo*vkU0I7GlaqbE}OI@aSmwiY*>;N{W`LIhn520Fe8t+SZ zM`a$P;UUvRw$hVWUi}X6A}bQJ{Xsu|CPB%1H@)4n56@b1aDS5otD59M7gt`wx3;nL zE-j5Bv;QD{AQZhLx5GbYCk-l%q(qrpfP))(iHS08zbTZH<%|iRW1(rWgumBm$Mk)_ z__RBsNS^eSE*sv)KI2NVwHQQ)Tpal4U7>iZwU^&DSV*gMWT<=i4>~wZlpm=2LDxnx zZtLBR-uzygE$vOOuEZcthT(*(FV-MGP)J3S!nWr{G8nt|huS70{y zBuREWf<)0wdYGNTZjZY|&&=vr->n)bCTa63v9BoHznC6w&_v+Phs;omLwZ3V<0Ebf z^147iQgZ=~T6vI9$sL1%!ya6v@HDn1CZOn_GHsip%I%x1@lN^xmCfEqA4j&~V_qQs zJ$S&*Z1G0>g^5&FWlFf{!eK3mxqSf1H4_R%MS6;h`L;cLkm~pouWW*Z8?r-|J?Z2zMEJ$WeQWj z-c5STo4EgvEPAmajSikzOJO#1SVX=M75=`=PhSgzMA9c5R3Aa?<|#ToaUyA2$Mb|+ zwQw@2!1`iyTrqpiZm3s~F@b~+1kh7<0^wHGRM}z5_65#F)}HIMTGWUt1{YJgTQG7H zrm@RkjB#z@E53f-Hl)wXX2yZuq`az< zKUpS6%{QNOFTtx!4BO`L@{yMirDw;dj~+!C`{QYxa3=zHIkOtwLFDXkgBv{EPdn-p z*z!+z(DLae^u4O-@9*KP;>jC~eICO7jI${*c_N?fv>qSTxA3EE3u0^)(YbFS{T2QS zky*oO)t);DoivN2G6L|~BZW5IZzT2aKj~-kC;nS@JZ?Lmqh;T;$!pa(?vn5wMLUaG zlUN2q^%MEM4X5z));9V!-Jg~?XTa;|Lo|%7#1yejP?Fxr7FVruUN2<2 z-b)}dj`N@V7u`JloB}-M>8|es99dn0W5UX0qd6Mmqa{hP>mtJ5?qo}L8_@76uKd`= zmt_C(6UE$CMO>;PpYA=FBgE+t zAEL@e9Y0Nxnevd0Ka5|iA90`jZM47I0du_CXxNwvzIcW>-Mo01pI6O?QJM|C(zs2- zoUN!d^B>)suFj5?_@hG5H;1-d!j_31d~n1f=vMmC*W0tm>8JtvswdNz>UQ)!3q)@C zYFxj&f#k~UNoLt+SWmgY@*^0%Tl9-}4X&p7Vddob&;_}z-}uJ07g3`5mV1|UQDJx!Ef)k0f`9NI78Q8b6qv8$rcOpCDV{lPmu<0b(s1aP8z|se!@iM2CgzT5MNq%vo%%+QM&XO%{aA-78~Y4&(we(1}AenUvJV& zwWK!VWO{ob6}3Ngp!8F~-`B68I8g_FF7iDt^FlT&@HnnE=wZmtkyNifor=S^Q2WVD zXuthM;>&Efruj+Kn;j(O8w=1rbQozp`iV@>EvVl74;SX9^Ks|Yp_m`ezIV^TiN!)# zAD=`k&t&jLx^Gca6vTG!mcgu3^Vo>rK6HR8$kD$T_A@1i9_4b;~khQ-76S$Am`Ku!)`@6Ja;po?wJbG`sjTpDHZ$ zNLJ(&Ovij;FRS{|dewwQK7Eaz;9IN>!ydE3Cx^(`~*h2?t&@pYQ ztW0Gehj!54$T{S{eleNuzs2{`CL9cHB}wx%3>?bCvHW7ens%J;m7Pdqa`r)5(1*&q zzOk04iIlI>#N7mWR7G7k%{d#2Y_F9(%&v$|8Af7+tP^dV_LI3hTLHdClvlXjrKQPo zJod#)`fhs~IZ2-MD*6a-vaQ2Wtz|5}u98Z!glK#FY*HT^#B!(|8ddr@W}Qi&R<)C* zaTJ|=D$Rz4h$3*GCRr}Lgxf!kSs~rq5QwaMC--4V1@2boYC9&G7(oMkmnkV^QSvvkMvC2eIq-H`<>3ipBby zkp0AXmSPxA9o@HhL4F>ZOpfvCy*uf-?qvjL-i6iQi`*uwj&3dei?j0rFmbUCS2s?j z1hciIy6Fw6&Qw8)oFf`L{*k4nfYTX8{M%Ajh!*X}s=y;y?L2}P$sNI__|32=UO|V8 zzLV5oDH?yn4VN~qp-GS3**O;#x)EiDUF$;W%JYR7x^FDCifrb|dz~QQI{34>Gby1p zmKw%6Q}w0mh`JDms$pkYo~I2WM_=Vd^2*qL_%qFFv8UkVH?-kl3|XK4%eRcT#TCcF zcu*ZpUAy+erD7&sf4ZBUU*Aa9F4L%ZzF<7)`s3NCOXN1Iok=R+pvi$ntoh|=JZXBu zH^qEIZ}mgwIx>ge#cqUIX9S9_dO_#LAky^`=S$~&rt>+CIBb7}Ha{!DIM-&%pL(Bd zD)q*$MHfikT8V5fZeX=OC+PI9BKo^~fF`^%#j)T(5>4}G>y|r0s(AzNT69RTo_*%w zKHKO_IkBM3B~-Il@E!rVWK2JImi@LeMd8;(cG7hY`ubJb^d1XR{<;+otCm3iwL2^) z3-sQHE9rULcv}4V1pn}E50;GjM%zxCBfiCsSA<@|#mpZ5WcVSPxbqIKcyvR^Es{;V zUX2@L8v^QW}*P7d##qDijS61>21 z4gGr~OP)POaEpD;i)AxlIYJ*#w%sKE8;-m*_$21^9OY{62jLzykGYqJ(Zi%}QWbtd zk45}QL!uYIw(n(9gRYY3yXhobu#BwyceApv7+8sx@Z$m;lr$@uYxf;SMOHaZKiZCu z{5L3~i{zh}LPTd4o+#euwf8|*vBMFU^@HY>Jg0R__2HtRg(<$#!>|GJG?VlC-$atY!4)@guT} zZlL@94Xj0gy-nxN;%Nqtu=lMg9(Vqu`BK$*v1kspjl0b>YMM~Iqm70yXr=2jU$WpP zA<}*8ie()q=-j0m-kFp}f3iOEaVOtXwbU`z{lWsHCpz(wZ7(tZdoA_OorIGzCn?52 z2~#^Z^1*`jwOp}_O|HE|7vE}fxnbG#bHXfsLOL2<4}^Ghjy`T27(x@z%%O8#HSp0n zgH;#Q*@^aWxNi8(vcv~t!I2)kpR546f~zcfR0fp_cvrQOYn0BfP|_Y<+Emh!zb@n#V#S4i8PO`O$*guz0~~`=u|m%V^T$N9 z!rQg9VdZh08UKJ16$D!spSy?S`W93@*-^mLxsv{GQzW;{V8T}EB)$C_KU!u<_aB9@ z$@TG6xBU<6^a#KL5l1Z8_LOLO%tFk3=GU)&FfT_>^ zj89jmLB8D$I*})tolrZfAG+{G3M(+>R|(boUcmLa%CHL1#}d_5tXcR8cGkzxZ0`m1 zHYx+3$43&s+si(ue#QisIDU7kIb1fbWRJV|(PPQ^n8*q+EbSWg33$n?EgJ;yV|Ywu z+SgfF_(HneQ;iYv0VqGdk1aA;hr-KgENa74oOc(Z$%8woiU#QJ0ux&HYXuv)BTEys zK2xv8AG)Zb$pT{Llgq@F2iLGvqeOl~?f(_9gUJXg=%*7htf`Lt6N3Dk;m4 zKv38U+TtU^o|~P(lN4Q&u{?{`wX<2HW)ecw)u}^!1`=gChDQkUklao(?vqDH^8rfL z@<4*qAM!Q%jUS?Cc<<*6RFjy>{~W(gL*pJ({FK{t;mRofW9NFRSMXr66<^>Q^ML0@ zfSx;VBbyUXDb;8{cX@0Ct?IG(d*?Eqn76PFwFZ>6iLxUC-^vXyD_Wdu4~@gG(RJP$ z@pFxNY=b)KRW72vxnVT%zArDDAxd{jKMFX{#YC&Z*uc@Ra9kVAq%Dkb_|O&XvD<{{ zVaIVkDTZvPu7}A54NR8ypsFK|RGY8JQ)g>}JCU;Yl#t8H_v}@hI> zAFnUer}1tt`5zZAG&K%kKJ!GVE@w6O2p)y3SFh=K=sC2_zDx794RL-)BGs;8&|HPf89#vnFu^C?yb$)V8m2KA54;-)bLRBW=8iWE#C zE-lMSEzQWfIGgtWaHWngAA0HAMn{M0(ZpImI(tu_cMTmQC=YXF6O~nIH?t#$tzRhb zvL4Hh??OSrTvE8B37ZwsOx>&!Kcl`vUegktfx7(j!AbOcj~(+r?2Tle&4j;Mkz2|a z_GffDg8J?F>PH7)_P_us2Qsi}<`KSg%qP@+oyUedFB5pFVi7WI1jKY_lZ?#?q)gDm z>g#){;Zqxlmb1%m&pN;%a-5^Xqc$sgvuc98^`@DSdblRpm8b2?a;p!^~fetZ@G8di2 zty#aZ_gWfR4VQqrdNvEc5=ReP-Lay11ewe{g;9b%ZhDW*pqk0)w4vcOlRGI%#_8P@ z=lu&}J6+hV2Ys}1MhC4fy-Ve;$1zz|0;VI*!StXp-mZw|Cxb`8#65|BQrDwF!sn?6mH5(sW&VOw~DISvWv!atXGSo$8AEuGQqQ7GoMtNQ^_D8hc2vr!j}4! zp~SD3hnA>P)VyhIgK-5(4z;Gg7jDqMA`jAEX+@v?-EiOGFU|BC&*N)Xks2FCs_{1{ z-Z_!aKfQ#qZ^*)RzzBJU+F6F5_&lOI&W~?g`%+8I>9;rZcgSeIBsL1IPj$J~Z#y!mT)|RO z?oq6^5qvd^u^_R8Q2GiDnbX+PYpWo3_Y}#Q<6k$(-(E6>A+OU&m z8D4?Dbu0P)JIDWiJw*9#YRqbd3B3~3iMjmip%Fui=(|xCZ1W3PV^W|XUn#(xmcw9c zA7bZIb^KU-hwW^-h*zomm`dzJO4VFLw$+LB`}|52a5o6+PQ^(lLt1cVB$l|?q4k(6 zbGtX6-Un5)o{|kvv8`h1r(9^yW`XuJP)EscgrR>f4oj1!QKy>)eK)(nub${fWNR~m z$4;R;@q6K^Q-PqSL44taA8`HrlkT{@qSY6cFl`lS3@rP=+p~=5LjN$dqz$1uwGMcH z_9gpuCph1`0ZTi3x!1Y_kb8fIQZ@dfd3`T4KF~)6D`qiK2{F3ha068p$rO@3h@l9` zy5q`DglrP<>pxifmfQGtQ3of5{765+hE+)lc%up-_WmZvG~oj7BP&qHJRi}ckH;}3 zbuUl%vlZ}fchR@vIYzbl;0r29Z?ZB1oX^m?#fw>3{cl|GD^470_Ja@Od`c$yhl$hv?0Y1!H6M|}(^0b~leNgEk!kvQ49 zRg2_hmygP-pK2AoFoflgivxBw>MQ|<0 z@vt#;=Y7g?>e}V)|7KM0UM{Gn0xn-zO{trQ43Ezv5Z*go$cPQm( z5rwD1Ftc;2ryRLfFKH zwZHen&taN;?^#Lg8oid5e^;b4&C)z*(@Y9E=fe|Xv>|W0jT*EhL4G4C>Twj^vUtQo z(uYHB(`I&Iyfn-%y0f+K+9*3Vo?jR6F6=`*UnG-4i4uBrS#3ToeIiM@!bfRj#26aB zbujfF{7n0%9Kfd;3S4F4IGoRTNX7-jksF+gdYwKb-nM5C5lai-%CbvV0*!QDKmTLn zM%v=mTxaSBIQ8VSUs0a8E$~0(jeSYYma0rmZ#e#KYr%OtN$Twh=M{-v)U{;?kG*-Z!k^g*WVCK>o0roK&Ci2isUr}D-lT5lSi zv+H7kgV)hUlOlFgkOw_EzlX%-<#9CEj?Hp%L>Ch1?2|x*xJJS3-)-0)&PMpiS!ght z#al9(X>$4toc(i<3=i$#2Usi;wQlm4{4D(uK7>pjL~B+VAWeQA@xwxhFQ1H%zu|n+ zOiPLmS%tSZJIH?eeL6hlD!97`o3*?O_gd=MH~VKK|3i}%oGGNq-s zvl82w#o}U|E&RdHh=f9z1AiX}!bvoUR8>sr{lr=}Mac#U3-kEk`c4{TRmtyP*^YU; zpCe^>H3hq2)H?ErEwQB_beqnbI`hQ}-)dx>@2ta}U-*W7jL1|42}jpRT~& z(gnQy(^lGLKNhleqL}f8gFLL@EmcX$ic@%Y&RFUg5l**r1b(x&nfy?h2W+xknP~AS zJgAbQFOjV{(Y_z2#a_}-^9MX4y@2F)rju4#BbLP#BIWB@D0%20Cr6B=Li=&<^Fh2p z4O8fOi;iM18u`-$O3f26$>IsAPJhR{Y#V9J;2EUeV1|qzH!<$86bb1B;CQG4gu82y z)ErE`725bBQAE%7Te16bx9Ha#1(p{7o(4-7FsHfR6n4mlkJnMakI41(PgfEuiHo?F zvNhcsHIc5Lc!+sfQLr8hEKf9o(dL(=@Zlx%eW4`a?h1L=Crh#)ElyTBUGygB5ZOzu zMfH>z=;V|DJ*n98xDS_i?tyBkKnF>QM6D5{wfe14beKeq`>wId%mlg|qk%cMuc5VT zGut;(3_4;XXr^KZRVlaffW)&H*182}#U|mpV;E~Xq=tH_AH-#4AguqLxd`}Fy~A19 z;343jip!z7`W|Kae&M4&?4)aTu6$`{E)9&GOOc^A^jLm38ypuyvK|9aoSR8k9pW)V z`Ui%F{o#w+9+8^tRip?zP;8PeSGfC-@^jWOf8V1NrM-)41^A<=Q;0#;m1cL?^Cjo) zQC_=(`N$a4n)s(w*k%b;tx1AB!yiXiYVm|VO>B(+i|vV__}3JIg*TSNa_Mj?DiueY z%Q>>2U`zbUTwWXOjN=jaxq|#-sLfTTEJrgKW`3lGq)9ZvU?cl-x(h2@_Vb13*JF%R zG(P>ANp0_i=yYK{#ow*tLSGbcZ{J%1jt!xJB~je5>94>mCC@c&OXys~Dz-XA8Qm{5 zu+_7TG&cM4DgFZ#I=zRB^(WAY9f#;t+-+zlza;DWlk{riWt_~8BN4AqxciS3@brd! zv8o|`zQghJmnyoni|Oiu0qB=>VxNkfU>CR+KIn=kT!sfy(_04|Exp6N(1=D`fz^3Xjg5k_+kk@#yX9{ewpQaz^g7k_{k15wn`T0!SZ-ePo@H%!c|SiAFj zs1F=s4zhxpi+UA!Rus~{y^qL9ZX(_+>_@oGafBFzvTa{C4)zqUUJ#e$lMqJt}F zcgi>19(0sa&SbFJze4Ha+6QdYyk6S*QlD16386}@7IvaJo9c7^kmV66x)*tk=x8e5W56Q}2L&M=()fnN*X1MPQZ zv@m=OUA}yXZMuGtlH`LZV5VTa=g2Z8EeU#X=QRs`ElHc?B2nXH4t3{K+yR=D*KftQ zMViw$wM+ApjN zdX1j25)|xOgR>*AVr#A@6t!;Cu|)@wzH}cyt8ftSn=fKq^kuBxJ|C&i#ps63S~kln z6a7=XXy@Qcni)QgEtqi+&p!<2lB${gFXlG6D2{-g~k${|H;_Uv#|0otD(k zfOxMtHXezy7KEc4GK9z zEyw3E!ICU^c44G-Bb`n!SI-C)#SkC#{=F`UR3m z_e+*#q)qv!HuJ0>p%kW|z?VC&gZH0{?E5SMj~`w{hhFs3k%gWts&y{9s&@;#!=q?n z&{Fm{aTHBCEY56S=g?o@E|&354O8Q@Ecyy7{s0f#J(%XgL)87@2N~vk!n^KG zd{f8``d*NS*~2U`&VLI{X-b9ngR$&OYzXbmEPwz!(gD>hy7BrPihPvVtVaUBTF)CE zY}A4Ys$7dCKEOlq}bW4)FqXM)km6Z!&d_*+SwQ zE>iRA8oC-}fnwV?tgGe@UEXqr%}g^R-5m+cs@@gvC+>vzyg3jZGZNopU*c9t433)2 zz^S$4kl!;1WtvCWhNKL%L~Umd&zf<};u-JyaFCp)3iE^)TKFfso}FImi}~S`*@A5f z^ys<=-~Y`C7UfRlr@xL?o%qE*`XrN7eh7P~--$168)$ro99{Q3$?on|MeNiYymS3_ zxXyph6o)Jp__A~mf7pd4?9t!}8wGiBnLJD{&BIX-V}5S?MQVQ?1NpLxbY#_M{ztE(tRTs0 zek|-j3VsWCq;q-?DZ+6K&b@hnf0ImbX3bt)e3gMg2l~lM!5@U_QXwK`!@UN{15NKG#_*nXtdXRRURKe|l9)4oz1iF6p8s5F#j6TH)Y}1*!n7m{z zyx$a353b?*Pi5rq`Gf=R7wE*Sbf&*gilXPuWwW&Nar^xkay@pFl3icY&Z{}FG3}vu zyKQKIpX8|p_GD?J4Uz3eq{xXEE|e$p`W-a6e>uASwb6M#7w?OIGDpox8Cq_+HC8y#*S{Rv5LIWkp)E~{Y z6ssw5&s*9n>w`;sBIxkUoit1^7Tm0EBBtgj2@gI<+BcO+|H=#sIuOI{2WMgMjm5C~ zSc!AC&zV$$AwFB_(A(QaG%Hh|o!>H@_Fim6SD!#X%S)r2Fdja={pa2rU1{sUwM~CiR2)nd>h#cczX*!BQ|n;2AGI5SAHjs z<~AYBR4&Ca(OPaY`zA~q*D~*?Pr!3Fv)lbiWPkY~w;QyB?%J8rQfG5owlIkIY8b+~ zJCOHAZJ}v1i@DyGHe5`JC+nVZa93rZ^ry7@t`twy55m6h-LN%V0E1;dv@h2UdxxZ< zzNZui$7}FQQ`B%X+=FSwxs&hRZ!jy8q``{$Ozm4a)=aEmS{ruKD+Ohq(4LDkll@tH zZX|3cKB7fyZV7U7C4R_%F?B|((5%<-crnt8w4~lbpq?lzxTAJ7S`RRSQwWA&u1wt5Qyp_Kh8ASL08t_uKp2FQY)m$5m zkAKUVp6Gaif9fZK-fO}&wiq6ICD^&*1D`PBG4(pnp?k;W=Z7KYyBcK0OjqKHD(~kIdoL|f#enODHxR~=Fmycpmnh{U+%O@#=3COcnr^t<| zbRPK>$vvsjHjVv?#W_!`B&pD-m!lFrSyr#W*kQJDT2n!Y2FI?hB>$(pe|duS<~ zo$UB|=_oWlu0`0lX@Wd?1UFF{OT!l0@zHbgk!tXprHgjs#^$rM(lVHW>MPlk#2|r= z>_mz@XU8n$$h%yxoF<2T3G(LfkI$)0mEjuxcN;f3&2ze7!HT>hd zcig8l^E7!)ssddieReUT2meCWVdnB?Xy(?_*c5HLRO&;;D)l7$`yLx4zL{d4|E9}t zHq$nqN9G1Yke0NWIfVZqL-9)(bo9EQ9`p-(DjDQd#?aKO=Fp4mWq*wB;??-UWZ`y_ za<9s;CP9s--;6W-@Q`>cx|0OOf4i{GaUC0|T@8ozuV_+$9^?$YaaFgQz9$LO-DgD1 z@F4&Av;~|0eW7rbofsIif@ukguKjGI*~qoysJh%xQ1256eY->w4NQkjh9v)Yv{#@{ zYI3s<(C-aP$hqM-9*GeXi7&?6L-}l7#Y-Hl*oeBwddREZ=6P=An7aD}uT1rZgRT+t zy8IoI3)4wsfglgq_>>yorqWcQla%CKMn5wnFh=JBHSJO0%A1QI*L#ja1Umo)gnVKv z44u$^a6AdQ8NhglAm{QNi8I5k`17k@=+FawRF$Ms^Vu>!_|PMGrDn3xl4I%a77J*v zj-r6Ef_jpeV3NCcoHev6VS?8!y7~7uEe(6eg9cP!YTnLjn}?HHK{7d;bx{7u2HKII zOB2H!So>u?a@n*FZl4C>b6Y(w+U=!f9`Uqj{U91~W;|`F5aj(WTX|gX4cPVV;Wryb zQ|+L+?Do6W@N1HxQ9gUIS0aMlpV3I$UOnd52kpX&m1UTIF_jcv`0`aT>9Cc4%7#Yd zVPofclK5tVwc&dyDWn4WhhE@nV-Ut3^x+#{>0tYpQko}rmZm1uk^lFT$bYZRHGXYH z{O{E`zoeM%d!=HD`D6T8HV%=Oijeo>D*H9F6H<1){CJlZy|A80*Hry*;8hH}W44u& z6DRNw>^AMvk-?Fs=WshWhr9G%f!rf=I=7;WqAjigGZSe{)LJaIm&OJWH}2#WN&PEY z=%4rrRQPY;D&F5ZzT{ zHEP$uGqR5y?`@^0fdY?nNjf&_2C-YG-_gETZzy3?IP_0P@+JCHuunIYdf#uRJKseG zy1x(P#wKHb=OsFoRfrb{tm$j;CsGbbrq?^P;kQYTc-&xCclH5Q9GT1O?;oWi>sd5< z{2y9Wq035(H^K6jJXvF>UWYy62>W zNLv?}Xt$8~1#e1SqKND3-eR_(UZ6wS5uVXSaJmqP39dEVYgZDP-6!5N_a4aXR;d`q_ z?cNl}KH_{zF7*yQ$n<6eV&TU=EZ2BIS{wJH$-DqZf`iz|VL4EnFFfz)$&~h2k}F1x zqc)>E@N%0^KlAS}tM1FlpZy0>YaZa{kSU0&a-rijyD6sVEGk}~WHR@v>E=W$K=B^= z)g-Z^8atSXX5-P~wa~a4N0Flgpxv3lM;INUDdD-izjP3ayh54kjRu@^$)VW3RMHHU z7xGL?Df;OSekx%Qex7(m`_6=6ecV$nW|T_*E~KE%Y%UZG=RxJO9kt$&CsNi$+nFg55tJz3cT-{5jw3vI+(zd~yHrAYmnV({5I3nNS7k#Xb> zX&TE((VQBSy$M){Kn9QMpX?o_k3@)Jn1H zR0rE)Qbx{ZX|yHs2I7vivWEpnXqR~)iyIh0XHRS4iFY@(c`oC_Eo8Ab@EfLTKBVd8 z2{?Nwh0+I2XA5kmLTT+vq}TgW*dhn+RV(C{ei`#vcXLWj`++*w9mwrii2JKSIM)1sWJ) zK;d=bO49sf_A5GtE-2Dv8h`o&v#GBjn?gNqaJUH1r|DAQ&z-n?@h1!4Blu%->+$rw z&_%Y>5xVS|WSO*<(xdj$<;!9iSz1HqGCSz3e-^Ddm&W6TenIw{W>z!bALHcLlVV^H zt__Oem!uBh?2~bnEs;Y0eRwh?h}M;r4niy z^^VNVw$bpAV4Ny8qKMUjyeFjyZzDq~cHU*Ee7B~NGvkHa)oCc6xr@Ntzsql0<#4jI`r%lE)NW9}G9%u=j z^Wd$}oY={uYl?(>Zw3#Ie2xfZZ5FFnhmFh5vEmy!WFD&yyRarGJ=De5vU@PCs^p@+ z88{>4Vg)6cT+T0L;dSxItd-#oUv1zu;u;t2HKU&8H=(sb6m-{@mI}T21%qF)w8J%& zWpEg8C7tN$gi^Ym+6B3$d+hZ4Ec$cRk)<5_1NGf8%(-U{=^2mZqcWb*Ua|Ll{*Kl3 zpyeF?nJSTQ?qZ6t*TQGJ6h2d5i(ct^LH$QBOa*>&aQshfpIA%&Irziua_hR}t<9@uSEfZIEefKtQKYXbj_8wl-knf=YRP+B}J6Qk7sqy`!FCcm2cJ&A?f|o=;`L= zf)?`~C)0FkcTWt~&ihK9&7OZHhM5H1HW76K)Edpmpv|Hb?zi&^&S`WkegKM z@tl6E)-#s}>rtWk1ao{`!F|rsOzWYr61vh>btSZB^cr?yMIBujQ^^!!UCAdhgNKz_ zkje!K@;dySYBJ9;wm2FT#+WA7K5S z;om=XzVnnVkeL*Us4jF11woZD>ZBio4=g^cV59A`>%XVCZB z1YGNTi>#I6ysjV`ic z*8OqxLfeFn4_-;;61UjDXDdj~%>u!!fF$?pGpivd(f>K04PBZ>YcHrqbm3 zxbI|3L*1ol{NNQh6!aTv9nNHYZzv?n#*;{fKeac%X93UF3th?=EcbxmyKX5JzK?3O z;;{m=AKi|WXnn&KpdzVzB=^oCZjEFl-X@#AtB_e7C~y9U|FnNydN z7r(gK0;3*_vLJmW>R&vbFZ^*0NwQVk@K!j@3mQnPJX&aH;#4}ZMhpu_3!d!NaG2TU zfui#fy(F7&Um1j!^DQjYsuiWuKiJuwO1QiEJ>9)HjPl*YnXF-eaQD26lz;$4=C0;T zez{_lha~FW&q1ojH+Zgc#f0Hrxc_St)mfdu(&`>;y=u>bV`Av%VJTKuqDZA)quJKM z-^gSA2^RTx2>nX9!8d#OQ9;BRK2>{-pkL0U=~^q0@GzdNg*?$sX&E+XX)Q{444FT8 zO`FB{aNjN0@voS8;_JDjz4R~B7W5*C1v|L)7EOG;*TatC5H+5Zr50^@@?-6&yc#R? zx5RnY(1*C`ypyF#_aS|~7$2i+1c^xl(Br5}qsK?F+tCta@BfmWlUHvkcEn0|zx+cL-vBFJ(9pK^pfxlCc#KG*tWLJ?xo7JsJAf@2*uquAj z$Q5<^~tqw}~IywI4p$fAHBK zM?iPPb=2?7r4e5z^8aMgsE!|Dp;NZe>6Ncg{Z{DDHO0VHB2 zXw|WF?Cy9$qd!!VfzZ2(6twEbNo%lL?H&7KAWLtn1BH24_{A;5K#|of`-^}PGkK`CGHyyYFu$b9=+<9GF9SU&%q4`Xe~(A& z@e{Q0!d5}+&ZiGPH!)dxH!m_arwM!CbJH=2$QC-FOP>8Bm(>@TY|#{YqyLDF{%K98 zs-;NRx)PGB?<2Tz4?K%cGQYcvu=MC%`VzC9{488h8m>xC;+c54B?QB^sF3~B%P4M- zCWF$GIQ+X$;Oz||=|2zXxELp;B6+NTSwq&rni!cqo=()4vp?T@&}ck?-_8!j&zG9) z*eX?$yGb}pt4_ZFI=D2_VM)okDrDX46FNMb%3SiMSy42>4zypkJMwu_)vt&bfa z^@?@}l(Dh=CkE}`2kXyONFMr-*8N&Wp;@c>jP{FE@u3_Z$!F>H7GJuuR2xqQY0}ag z9oQ##9#I0XCfPqu=zrMLf4qoWoK7Y`)swvBh8Zq@xj-(%ThYC*6t%jQwna{UO7t`S%{u z+nz!HNlMYqMc-NAE?v@}dWmki{GtKsIna=bpn_xf5ZdcPjy9iB9rIjxp1xQWyO{PI ze~*~%Haa@Jh?^@rVy{Okl#W{Az_@6%TbZH6aX7nECWk+DL41?n8dL~=k4#1eom_c? zZ#Xjq@AFb=M~f~LCv^(vng^1CR5;S$>QSRbhPtWYba5(=8qEf!G`2%$kX~u%vZ0Rm>H51+Y>89F={{>xIcZOmOH_Dz z_!^7~?!<~nWnnAJXznZM3PwWqY)4WhW?nQx%(Z^XksV6!6H{TCw0Y-MCfCZ<#97(J^oMslWn~*sz+e6mNlQWf}Y4J(tES)S zpwr{Q8fPuQC7a9a%iBgM?LI;C2CE7)V>jFGltQLEwsWn4bFne~G!xk!fUZFsm}jp( z_!$efa;Pln{M^XwYZ~c?raE^%bqW5jmDn(uEG!>kN;#5SXy&Y7$hDPY<&R*vuPlN7 zQb#=Bjd7I3Jy!DSbTXjr3JERNPz1Z6D|104DQ_+*pBqH3B2H2=Cjg%hd358DdREaK);M z&gLG*<=|!XYt><-zgdmqr5E|*D=9SO(lb6DCA4sTROMu;mC~BM=MT6CD z(kfx@^~(N3mJ1Hj;xGMpowtDE$F62-LWkX|;{WsWG6YZh&NLU9qc80&24*PJw@bF% z_EtX?8e8GZ_L;P4Tsax!dSb@6!F2W3AIR?vLqp~idX!?vySG%+!}SjI#BLL||CHof z`vg7>+k%Zek5++hCkfEtP#!R9Tr zg6%^`?%6klCT_D~qhCjm!fRQ_>poXjtkPlu7b12W$ZMz>EG7X7C| z%ca(Eb0Oa@o}$F+-Rh`ab|V|5SwW&TQaIMBLsEjD`1}4tR6aCD*VVDW za66N^`WCO#wAuP)hmmW@I;SES2Qg+D2quHjkQ&>^po+`nu--n`j(M_B# z5PHr10`qLEKfQeDMp^{}Y4ub!uDJCCq+AOHCQdW{Ey-rL-8|{Ih!5Mf@;D7Y_mtVF z|0AttIW~9Lcbch~haVNeG{B*h7yWz&UBS1HQf;DwYE6jLNYT-`>3r??*VO!aGR@Z1 zz~x;VAffgS1~lq+ z_P{nbTk2bSjULI@KtV*v``gyjndoPH=QTO%5zesmy;4Z$Tlu_!3n}pJUApfOO=>>! z{LsU{bmDd~KXQLAqQ2dss4eR-Bj5y^R2D~%HcsPfh6bYYh6Pn!jTDxY2|LxwHp6n* zU-ne?2dc9hX?EgmxcfSy)#W>_(zW5nemR_toL&L(6%N5O9s?2*l(5R+$!5jhPXLuXp( z5`c=i!-Zr(`B>b)QZinZfM#bko}0>nz%) zP*~~VLgVez=u@L6`}5~J!qT*$II;vw>fW+u3t>*5RVQ@VAE2=BpK!krw300cvGhs~ z9SRM^Q5Q%2d~gMwE|v&=SBqnjt&|&fnwe{dW8KwM6qt>|N7=iOm3}O+PAU-bC6;D) z-4dR`Eezij&#+L)ca_gWN0$hChs03A`f8ki9m4yX$I{GmeYmdu0Bv)GY{b!nLhh-P zNjxtgL&xP*-j+;{iY73hx1FT09gk{g1V^SPh>Dl zyI5=}v)~PyS5f(c*jw#-g!;w8c-V;9k|WMOV~w5EfD%-Fr%TJW(qM5|90 zJ=}K$k$x?7U&oQDKhHsGiXT(kypKjYiSm=D?Xi2V;Hf&f&UnVr zI`(qZ@%19L{AtFL>%-yPH5-=BwlMPVVisSdY1%4P{C$;*D$SAn(L~`s>8?jxOjRIf zZOO-tl}2Gx74M2K60%;c^ybhIvS08DvIc+9a?qdI%CDrCC7OJ7-VwU{;V3&X%#KP_ z!+Gwl59IE20i1&tqvnFDvXz0 zsS$LiZi?R~M;|Mau)|mZVejvu-Len|_PjyF;4{eoe^z2cIzeU@-{Y_iK69HfdEYja zEWS+5nn&>_T8c)^6{8tLtN5HBYLssj%(h2=rLneZ{71x4$m%E2N3Tcp$2zjBqn z%r`{PrChT3ww!%Q2%$0~H&%VQnoPc4W;u^fKt^mmBwmJ-&!clpR$GO}>~&?=tLDMJ zzk<$&UcvA5Gd$kNl$!M&__jm3G--v9cfEZ8;x423^1`iXVIJfv%=4a&CKO&E@LLlu z@hDMqTz%rm*4{rrCJCRJZtFKVj2eyRTaJ+Q@8Rne3+Th$f812yWBymSj6HBm!t9ny zY`>N|Sq$;VxQ%&)!t zNdGm2lGBP-)LM^b79XbIYyLA3oCW$&4RGy`RRgg+fnzRlpNr_ht=N%#dYk+l}bO z{l8dPQ33Hu@ob5%Io&GIMTEes-JIA(jiuV8J8C&MFDRg4B1Js$f)^b+@rSwF>R^7W zBn$Z*iai%yS%7N3z%h8m%`=yx^!FDgt0zuLuT>~wr!~DB`UXeL+{o#o3r3pz<7WDO z7Ib2ups`x;w=&Xj_&JFsoN7c+umR?v90n0T`1yH4&T>i@J<9DB`men@=#7c zjX7ccRAe@RcoYN-kCP|H&^rJ9u{OTrNigE-G);i9oaJ{B|29o z#U&~Ac72{gk_q9D_gzI=-z33q4qJa{1eJZ?ssqEq2knZos6_me@DF*!IA zW~;rR-Trd;ery&iRGW-UjWO(Cxix0a-A}gywh8=lGrqX14c&8{xtU4_2G|I_zBDTw zGmIn!*D;v9br_p07e|X4e7VMnO%!=GhWU<ibmcK*F*Bm1 zQ*a#Dg4d^Fka&g2djEBZjvdY=-T%;(oYOek978?^MlgJri|^ki@^Lze7$w!tuIfFc zi3cOldLaOIPwluj7lBQNBlmZ-!8MN|G%}`#dg?^T++imze`Ly}Hr66(yAdn(3=(`- zaMRJI_>*y(`-kgMw26?3n3{y7Tp_ElFcckL|Hwf71>F_U9tY;NQi^OgB(4_Fxt;If z5gq`S{Wbi~aaZ^&f585g!{F{J&#WIUr?hT44E$jr_^W4F-Azuddk(Rn4cRzuv7i65 zOrwn%cUb3JD>&;Vqx8TKNFF#wuYy0ouKGOM8XMv5b%9^nVNY}34`A;C3laWeKbN#O z!aQ+Xo_0nQB{v+%IMIzNRc7-s=9T0d=t(9fi!t>0G928Kh0YNg{6OneD!&lUp2jW| z`pS#wzkM4?=I0OQo3j-n3Wt$n+(_C_ZCItT9n6n5uvcP@^x3_US-1E>e1jMp;Kb;Z z>0!+IeHZn2JlOm^R}>Vt@{wi#QM802TX()z;Kd!|+G5LLu+f|D>0PCx$rXHc>I8bZ z(F2n_>S#@@54-ba8PX!F(O9wyaw~;CquDq5qO*^S&yJvu=oIFX8IIILQY^qIh`w4) zVSTQHsqpa$<}YwXZ^)UDhLJb6+?tA>Z7p=USWMVt`kt!zXnv)(pC+7eAW7$GbU(P5 zZ~kM7%6*5ZJbDH_`!?GeBZ%_MQ2XW24KXAZu34Q8(Lvhz$ z)93Ba=)R>Lw<*%b(M&IP+#!k%AE_tDVW(+c-y#YZwoSfpj-~O#doV}vcwQ84pm|Tf z@~ifLA#CnN?l*x8QL~wOv~^LWd;!g$l1W`N6!oWqCEgzOnv8?*l2PX_iqu-l`_zVzyxSGQ6IcZ|6MLR! z9f?V=>=8Ci48wEIa7B1P{A3o_IIm2S9pQmJez@0-B#QzKD7V>sWxxS8Jm-NBEX zT!%w5Z&O}Q9ZKcGsrrr3V_TigkM&NV@e2xB=-JJb_)4DVB)@@7t|9T#*|gU3A+;M>gHNrNv5GN`>BIDd}j9RpZ-X>OKfSLie zuZrSx!ZyKbbCb{o6!s`RU`P`W6!LgUOvy6>vxKf=x4xePZ>x}^-$^6(c;NT%EbcrofLb;+vJck(@a(f3GP+yvru`ea_ddc}p?kMw zz6K87Jjeai=D@c_hIedyOLiANFcFb&a9Ux*&F41Kp!z1RrBH)i+P-YWA%^SaKS;Yh z0oh)|F}NX(X3Zex>3JEV%WCm*Ll=eBEoVJ9waIk%Z|)}|iPgIcab%AZqS`;Podss7 zX*XeSi>|^kUmfbsY1m}5l>4^a#bd=5KDuEdKL0BeX1OJJCfvD0w&s)jPeU4o+N9pwtJZH13NxPbh7n$KLw{rtx9O%@1cKN^{UWUX{L^+`|Ix zD1LRAF#9oS6lvUsW@R_OQszhxm&~Kd0&BQAaz4v4&75R!_caXa=Q9ce1& z7c;{sX?lI#);vK6J;`UT z_o2bB>gb_cKX&dP!9&*0L74D;em7YT2W3j(A9Ia7hs(3e<`b~%*B)xl=p`e!yS)6G zAJw>C!s}Hn7}HS8%bZqYm5~@7%-T%X#w9~Gc?WbxO0vyG_Yk!3GD`_5A(zxE#4fE8 zcnP}9L}Nd;`bqOT(NKZ)nSsR3pJ~jO4=lmH2{CuSjM_DI$yGg;pYb9CN zHKRu$*xNLS^7Vzn8Mi!`dIhgHqAP$MHU3BwV@27)R5`R73BCWk({%CrQOwB|71-`! z{8ViQ-P=)$kO>xu-J*uz7hmbi(rB6`unqrP@QSy-PoV9>-}UFUzT{&e>s+<-e$ApAEH?B^VCc$g>!Nk@4ncGtnJ=dqj-U& z1b^RrvH{6hrQzn5we&)1HBU4y!Gf>EnCmTf_Ks$mwJA!qnJ8MLh)j33l@q7(S^t*v^m_K%uY*F-wt1vIX@6g#T5~G zWf*)mknOr?4S#_V7}Dm773w{7vA&ID-6d#!%yLwHZ==);3Q&)A#g4LEYH8ZU#|k=6 zn&MHoDHvgZ@jcqH)q=LRijj>{D?TN!Ve?*yBJ^7*6na0?Lc1%xyQdtfuFpA=-09_D zPDiA@Y4hzvP_5dBJBJS-Vbv+Y7g1(XuSUXPvKwo4xdrn>?l_*dlq?(W@@*O6w4i4w zT8_$4_u>Hl-oFBd_U~Ec;V_)Yw7{&flGNoH!OCu}!1;Tpk=-DIOXuBLQ{FN1dy$X# z+ZVv-yCHWNeFHh_lB{Z&(BZb+AncvmPj%8;+vH_n)HRl`_^i8yU60h+Ewlf3qDt{r$DvohXeRc1d_Djo`b zzrExTJC;IE<lieT4X7=o87s;tHf|-#ch0R`#E=fqkuJUFH^jdIC|8B zXyb=)Bvq^MifBVDvOL9Ji!f>o*}#I#_TbA|1`B~Rl76lf*`sFTvq(8>IGvBRLYHuw zWdxQ5SaMt0)8sdNESo4-g|YG_INq*_dd)x@x8gNbrS|e$ml|o_>uqdjPB)Tfd}PzM z>_@7M9ofF!0pF#>&Go;*|CYe>xY|dKQ=)nAli5hgaN{*5IgmRZ$l`@PYreOqGl{e_ zbk1fgU6D@037Lu1`}8h~FV0|A6O}0G%m@Vh8%m?<%mvQVagvpL&f;IL6n0~&)8IW3 zv|m1xmrNOsfga-^uN02*Z{A!>!w~-0U6A;}j;t((@TTd5DCJlXUnlIDI-s|R7mruN z%qM%;U#(;uIpNH!$~~z`ERkQ0n+|ui-*o(7C=M=7b zN(26_d5$ls4(!f@1axf6U_FJu=bGZAFoJKoe%h8pG9bF2%zWF-6*6!ooBoH zV*c=WSX?!L=Ls*?_Cy0WXFW#r085+>iRSjr%V=kvCVvBEFyF(mFAshJ{dN2NbU%B3w+*@ z!K-+t_(FPr@hbg}F2oL%NM?5HCEgC|nQkKPMFXnO6iYw^P$zn*qgA5JWl>0o8DRM z;=RXERzJ=o^HMM~>KBPF-%r!d7jY~9N@BZy&>*#5ij=aT2|^#}YnvZZ#qy9-e+X_u zhS+XK2}{;|N@lt3TxUcCbw#POSDWWh;Eq##%zrB>u74vFI}wRF$`fd^;7f`<^`$ep zZzy(zH}77kiM#!7O#Mz7C2f)w7%DF)FykK!n7a=rbso~ZY=4sIJW4NxJYe9tc7Ezy z7V3uQV(+wxm@xSjm(^KAC34D`?%+gzTOTly{ITR_@g7AbkMR7YFZq;2(V>Y>>`{R~ zZBOc9t?Ty+42IG4^7=;f%zDQnlpC>E$XO;_8IQL;BgrF249gF?@8~(TH8gG%<93 z1zo9nj-HY#R%4V1o%s7)UGUqsUk;Ktl1rcXNdy4=@kl;9=(V0QVvxSHk3 z2KCOz@@_+};I}U1=23ypK{@0GD|jgXWetR%zmaf8L3_g2stY;KEO_uG7U0$qFE6_!>`fz2laGI>nJy$zY=lJ z2Qb4YlWEZS2Xy^*Jo)RsA{8O0b;Eomr;u36p486m`fD)5^B=kH)4}tpg7?@k22Q*7+qz)#Newub^AE4_Kwh235Trqq4cIp#2P{y_~G(v~d zrBUv*F?S!m4eRea0u&<-sSaCd-34+A6n?M4*grpIrmqhFfS44DZHbQVdF@* z){$->UqWJKNt93}EO@r$Mqm z__2vIsU%m0cYA5#;jU%;p{p_EjJuh9aXMYwbd47FxRbK$87vU|VOnp%H=K&ZL!&RO zeTo)MD{jTfeFgY5y&t1C#gb!x4Kwwc4bfXmp?kZS_TK-?>gzXAu+(dQ<VsCk4+zrIR>q~MA*$$(5y!{CZ9*1%meN$ zVvmRxB|dGGBu4&snS8s|XmMo>E=UbS&ZRn*IBF0{nf=F9pMIrT$EWcpXZ29?Y#2Lv z%^JUjs(R9BK<{w8;!HysnBydb-YCdJ<*OjndWFxd= zBS@(BV!BxoaT62P6?lb8jE=IsRVK7`Q4yEbtS6t3CwOsB0BH|PLw4*X%xNxViS>f_ VJZ=;-$~UBDAyz?bfJovg_CKal+~oiO literal 0 HcmV?d00001 diff --git a/hydrogen/assets/olm.cf9a793b.js b/hydrogen/assets/olm.cf9a793b.js new file mode 100644 index 0000000..f84c1b4 --- /dev/null +++ b/hydrogen/assets/olm.cf9a793b.js @@ -0,0 +1,162 @@ +// @license magnet:?xt=urn:btih:8e4f440f4c65981c5bf93c76d35135ba5064d8b7&dn=apache-2.0.txt Apache-2.0 +// @source: https://gitlab.matrix.org/matrix-org/olm/-/tree/3.2.15 + +var Olm = (function() { +var olm_exports = {}; +var onInitSuccess; +var onInitFail; + +var Module = (() => { + var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined; + if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename; + return ( +function(Module) { + Module = Module || {}; + + +var a;a||(a=typeof Module !== 'undefined' ? Module : {});var aa,ca;a.ready=new Promise(function(b,c){aa=b;ca=c});var g;if("undefined"!==typeof window)g=function(b){window.crypto.getRandomValues(b)};else if(module.exports){var da=require("crypto");g=function(b){var c=da.randomBytes(b.length);b.set(c)}}else throw Error("Cannot find global to attach library to");if("undefined"!==typeof OLM_OPTIONS)for(var ea in OLM_OPTIONS)OLM_OPTIONS.hasOwnProperty(ea)&&(a[ea]=OLM_OPTIONS[ea]); +a.onRuntimeInitialized=function(){h=a._olm_error();olm_exports.PRIVATE_KEY_LENGTH=a._olm_pk_private_key_length();onInitSuccess&&onInitSuccess()};a.onAbort=function(b){onInitFail&&onInitFail(b)};var fa=Object.assign({},a),ha="object"==typeof window,l="function"==typeof importScripts,ia="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,m="",ja,ka,la,fs,ma,na; +if(ia)m=l?require("path").dirname(m)+"/":__dirname+"/",na=()=>{ma||(fs=require("fs"),ma=require("path"))},ja=function(b,c){na();b=ma.normalize(b);return fs.readFileSync(b,c?void 0:"utf8")},la=b=>{b=ja(b,!0);b.buffer||(b=new Uint8Array(b));return b},ka=(b,c,d)=>{na();b=ma.normalize(b);fs.readFile(b,function(e,f){e?d(e):c(f.buffer)})},1{var c=new XMLHttpRequest;c.open("GET",b,!1);c.send(null);return c.responseText},l&&(la=b=>{var c=new XMLHttpRequest;c.open("GET",b,!1);c.responseType="arraybuffer";c.send(null);return new Uint8Array(c.response)}), +ka=(b,c,d)=>{var e=new XMLHttpRequest;e.open("GET",b,!0);e.responseType="arraybuffer";e.onload=()=>{200==e.status||0==e.status&&e.response?c(e.response):d()};e.onerror=d;e.send(null)};a.print||console.log.bind(console);var n=a.printErr||console.warn.bind(console);Object.assign(a,fa);fa=null;var q;a.wasmBinary&&(q=a.wasmBinary);var noExitRuntime=a.noExitRuntime||!0;"object"!=typeof WebAssembly&&r("no native wasm support detected"); +var oa,pa=!1,qa="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0; +function t(b,c){if(b){var d=u,e=b+c;for(c=b;d[c]&&!(c>=e);)++c;if(16f?e+=String.fromCharCode(f):(f-=65536,e+=String.fromCharCode(55296|f>>10,56320|f&1023))}}else e+=String.fromCharCode(f)}b=e}}else b="";return b} +function ra(b,c,d,e){if(!(0=p){var w=b.charCodeAt(++k);p=65536+((p&1023)<<10)|w&1023}if(127>=p){if(d>=e)break;c[d++]=p}else{if(2047>=p){if(d+1>=e)break;c[d++]=192|p>>6}else{if(65535>=p){if(d+2>=e)break;c[d++]=224|p>>12}else{if(d+3>=e)break;c[d++]=240|p>>18;c[d++]=128|p>>12&63}c[d++]=128|p>>6&63}c[d++]=128|p&63}}c[d]=0;return d-f}function v(b,c,d){return ra(b,u,c,d)} +function x(b){for(var c=0,d=0;d=e?c++:2047>=e?c+=2:55296<=e&&57343>=e?(c+=4,++d):c+=3}return c}var sa,y,u,ta,z,ua,va,wa;function xa(){var b=oa.buffer;sa=b;a.HEAP8=y=new Int8Array(b);a.HEAP16=ta=new Int16Array(b);a.HEAP32=z=new Int32Array(b);a.HEAPU8=u=new Uint8Array(b);a.HEAPU16=new Uint16Array(b);a.HEAPU32=ua=new Uint32Array(b);a.HEAPF32=va=new Float32Array(b);a.HEAPF64=wa=new Float64Array(b)}var za=[],Aa=[],Ba=[]; +function Ca(){var b=a.preRun.shift();za.unshift(b)}var A=0,Da=null,B=null;function r(b){if(a.onAbort)a.onAbort(b);b="Aborted("+b+")";n(b);pa=!0;b=new WebAssembly.RuntimeError(b+". Build with -sASSERTIONS for more info.");ca(b);throw b;}function Ea(){return C.startsWith("data:application/octet-stream;base64,")}var C;C="olm.wasm";if(!Ea()){var Fa=C;C=a.locateFile?a.locateFile(Fa,m):m+Fa} +function Ga(){var b=C;try{if(b==C&&q)return new Uint8Array(q);if(la)return la(b);throw"both async and sync fetching of the wasm failed";}catch(c){r(c)}} +function Ha(){if(!q&&(ha||l)){if("function"==typeof fetch&&!C.startsWith("file://"))return fetch(C,{credentials:"same-origin"}).then(function(b){if(!b.ok)throw"failed to load wasm binary file at '"+C+"'";return b.arrayBuffer()}).catch(function(){return Ga()});if(ka)return new Promise(function(b,c){ka(C,function(d){b(new Uint8Array(d))},c)})}return Promise.resolve().then(function(){return Ga()})}var Ia;function Ja(b){for(;0>0];case "i8":return y[b>>0];case "i16":return ta[b>>1];case "i32":return z[b>>2];case "i64":return z[b>>2];case "float":return va[b>>2];case "double":return wa[b>>3];case "*":return ua[b>>2];default:r("invalid type for getValue: "+c)}return null} +function D(b){var c="i8";c.endsWith("*")&&(c="*");switch(c){case "i1":y[b>>0]=0;break;case "i8":y[b>>0]=0;break;case "i16":ta[b>>1]=0;break;case "i32":z[b>>2]=0;break;case "i64":Ia=[0,0];z[b>>2]=Ia[0];z[b+4>>2]=Ia[1];break;case "float":va[b>>2]=0;break;case "double":wa[b>>3]=0;break;case "*":ua[b>>2]=0;break;default:r("invalid type for setValue: "+c)}}function La(b,c,d){for(var e=0;e>0]=b.charCodeAt(e);d||(y[c>>0]=0)} +function Ma(b,c,d){d=Array(0>>=0;if(2147483648=d;d*=2){var e=c*(1+.2/d);e=Math.min(e,b+100663296);var f=Math;e=Math.max(b,e);f=f.min.call(f,2147483648,e+(65536-e%65536)%65536);a:{try{oa.grow(f-sa.byteLength+65535>>>16);xa();var k=1;break a}catch(p){}k=void 0}if(k)return!0}return!1}}; +(function(){function b(f){a.asm=f.exports;oa=a.asm.c;xa();Aa.unshift(a.asm.d);A--;a.monitorRunDependencies&&a.monitorRunDependencies(A);0==A&&(null!==Da&&(clearInterval(Da),Da=null),B&&(f=B,B=null,f()))}function c(f){b(f.instance)}function d(f){return Ha().then(function(k){return WebAssembly.instantiate(k,e)}).then(function(k){return k}).then(f,function(k){n("failed to asynchronously prepare wasm: "+k);r(k)})}var e={a:Na};A++;a.monitorRunDependencies&&a.monitorRunDependencies(A);if(a.instantiateWasm)try{return a.instantiateWasm(e, +b)}catch(f){return n("Module.instantiateWasm callback failed with error: "+f),!1}(function(){return q||"function"!=typeof WebAssembly.instantiateStreaming||Ea()||C.startsWith("file://")||ia||"function"!=typeof fetch?d(c):fetch(C,{credentials:"same-origin"}).then(function(f){return WebAssembly.instantiateStreaming(f,e).then(c,function(k){n("wasm streaming compile failed: "+k);n("falling back to ArrayBuffer instantiation");return d(c)})})})().catch(ca);return{}})(); +a.___wasm_call_ctors=function(){return(a.___wasm_call_ctors=a.asm.d).apply(null,arguments)};a._olm_get_library_version=function(){return(a._olm_get_library_version=a.asm.f).apply(null,arguments)};a._olm_error=function(){return(a._olm_error=a.asm.g).apply(null,arguments)};a._olm_account_last_error=function(){return(a._olm_account_last_error=a.asm.h).apply(null,arguments)};a.__olm_error_to_string=function(){return(a.__olm_error_to_string=a.asm.i).apply(null,arguments)}; +a._olm_account_last_error_code=function(){return(a._olm_account_last_error_code=a.asm.j).apply(null,arguments)};a._olm_session_last_error=function(){return(a._olm_session_last_error=a.asm.k).apply(null,arguments)};a._olm_session_last_error_code=function(){return(a._olm_session_last_error_code=a.asm.l).apply(null,arguments)};a._olm_utility_last_error=function(){return(a._olm_utility_last_error=a.asm.m).apply(null,arguments)}; +a._olm_utility_last_error_code=function(){return(a._olm_utility_last_error_code=a.asm.n).apply(null,arguments)};a._olm_account_size=function(){return(a._olm_account_size=a.asm.o).apply(null,arguments)};a._olm_session_size=function(){return(a._olm_session_size=a.asm.p).apply(null,arguments)};a._olm_utility_size=function(){return(a._olm_utility_size=a.asm.q).apply(null,arguments)};a._olm_account=function(){return(a._olm_account=a.asm.r).apply(null,arguments)}; +a._olm_session=function(){return(a._olm_session=a.asm.s).apply(null,arguments)};a._olm_utility=function(){return(a._olm_utility=a.asm.t).apply(null,arguments)};a._olm_clear_account=function(){return(a._olm_clear_account=a.asm.u).apply(null,arguments)};a._olm_clear_session=function(){return(a._olm_clear_session=a.asm.v).apply(null,arguments)};a._olm_clear_utility=function(){return(a._olm_clear_utility=a.asm.w).apply(null,arguments)}; +a._olm_pickle_account_length=function(){return(a._olm_pickle_account_length=a.asm.x).apply(null,arguments)};a._olm_pickle_session_length=function(){return(a._olm_pickle_session_length=a.asm.y).apply(null,arguments)};a._olm_pickle_account=function(){return(a._olm_pickle_account=a.asm.z).apply(null,arguments)};a._olm_pickle_session=function(){return(a._olm_pickle_session=a.asm.A).apply(null,arguments)};a._olm_unpickle_account=function(){return(a._olm_unpickle_account=a.asm.B).apply(null,arguments)}; +a._olm_unpickle_session=function(){return(a._olm_unpickle_session=a.asm.C).apply(null,arguments)};a._olm_create_account_random_length=function(){return(a._olm_create_account_random_length=a.asm.D).apply(null,arguments)};a._olm_create_account=function(){return(a._olm_create_account=a.asm.E).apply(null,arguments)};a._olm_account_identity_keys_length=function(){return(a._olm_account_identity_keys_length=a.asm.F).apply(null,arguments)}; +a._olm_account_identity_keys=function(){return(a._olm_account_identity_keys=a.asm.G).apply(null,arguments)};a._olm_account_signature_length=function(){return(a._olm_account_signature_length=a.asm.H).apply(null,arguments)};a._olm_account_sign=function(){return(a._olm_account_sign=a.asm.I).apply(null,arguments)};a._olm_account_one_time_keys_length=function(){return(a._olm_account_one_time_keys_length=a.asm.J).apply(null,arguments)}; +a._olm_account_one_time_keys=function(){return(a._olm_account_one_time_keys=a.asm.K).apply(null,arguments)};a._olm_account_mark_keys_as_published=function(){return(a._olm_account_mark_keys_as_published=a.asm.L).apply(null,arguments)};a._olm_account_max_number_of_one_time_keys=function(){return(a._olm_account_max_number_of_one_time_keys=a.asm.M).apply(null,arguments)}; +a._olm_account_generate_one_time_keys_random_length=function(){return(a._olm_account_generate_one_time_keys_random_length=a.asm.N).apply(null,arguments)};a._olm_account_generate_one_time_keys=function(){return(a._olm_account_generate_one_time_keys=a.asm.O).apply(null,arguments)};a._olm_account_generate_fallback_key_random_length=function(){return(a._olm_account_generate_fallback_key_random_length=a.asm.P).apply(null,arguments)}; +a._olm_account_generate_fallback_key=function(){return(a._olm_account_generate_fallback_key=a.asm.Q).apply(null,arguments)};a._olm_account_fallback_key_length=function(){return(a._olm_account_fallback_key_length=a.asm.R).apply(null,arguments)};a._olm_account_fallback_key=function(){return(a._olm_account_fallback_key=a.asm.S).apply(null,arguments)};a._olm_account_unpublished_fallback_key_length=function(){return(a._olm_account_unpublished_fallback_key_length=a.asm.T).apply(null,arguments)}; +a._olm_account_unpublished_fallback_key=function(){return(a._olm_account_unpublished_fallback_key=a.asm.U).apply(null,arguments)};a._olm_account_forget_old_fallback_key=function(){return(a._olm_account_forget_old_fallback_key=a.asm.V).apply(null,arguments)};a._olm_create_outbound_session_random_length=function(){return(a._olm_create_outbound_session_random_length=a.asm.W).apply(null,arguments)};a._olm_create_outbound_session=function(){return(a._olm_create_outbound_session=a.asm.X).apply(null,arguments)}; +a._olm_create_inbound_session=function(){return(a._olm_create_inbound_session=a.asm.Y).apply(null,arguments)};a._olm_create_inbound_session_from=function(){return(a._olm_create_inbound_session_from=a.asm.Z).apply(null,arguments)};a._olm_session_id_length=function(){return(a._olm_session_id_length=a.asm._).apply(null,arguments)};a._olm_session_id=function(){return(a._olm_session_id=a.asm.$).apply(null,arguments)}; +a._olm_session_has_received_message=function(){return(a._olm_session_has_received_message=a.asm.aa).apply(null,arguments)};a._olm_session_describe=function(){return(a._olm_session_describe=a.asm.ba).apply(null,arguments)};a._olm_matches_inbound_session=function(){return(a._olm_matches_inbound_session=a.asm.ca).apply(null,arguments)};a._olm_matches_inbound_session_from=function(){return(a._olm_matches_inbound_session_from=a.asm.da).apply(null,arguments)}; +a._olm_remove_one_time_keys=function(){return(a._olm_remove_one_time_keys=a.asm.ea).apply(null,arguments)};a._olm_encrypt_message_type=function(){return(a._olm_encrypt_message_type=a.asm.fa).apply(null,arguments)};a._olm_encrypt_random_length=function(){return(a._olm_encrypt_random_length=a.asm.ga).apply(null,arguments)};a._olm_encrypt_message_length=function(){return(a._olm_encrypt_message_length=a.asm.ha).apply(null,arguments)}; +a._olm_encrypt=function(){return(a._olm_encrypt=a.asm.ia).apply(null,arguments)};a._olm_decrypt_max_plaintext_length=function(){return(a._olm_decrypt_max_plaintext_length=a.asm.ja).apply(null,arguments)};a._olm_decrypt=function(){return(a._olm_decrypt=a.asm.ka).apply(null,arguments)};a._olm_sha256_length=function(){return(a._olm_sha256_length=a.asm.la).apply(null,arguments)};a._olm_sha256=function(){return(a._olm_sha256=a.asm.ma).apply(null,arguments)}; +a._olm_ed25519_verify=function(){return(a._olm_ed25519_verify=a.asm.na).apply(null,arguments)};a._olm_pk_encryption_last_error=function(){return(a._olm_pk_encryption_last_error=a.asm.oa).apply(null,arguments)};a._olm_pk_encryption_last_error_code=function(){return(a._olm_pk_encryption_last_error_code=a.asm.pa).apply(null,arguments)};a._olm_pk_encryption_size=function(){return(a._olm_pk_encryption_size=a.asm.qa).apply(null,arguments)}; +a._olm_pk_encryption=function(){return(a._olm_pk_encryption=a.asm.ra).apply(null,arguments)};a._olm_clear_pk_encryption=function(){return(a._olm_clear_pk_encryption=a.asm.sa).apply(null,arguments)};a._olm_pk_encryption_set_recipient_key=function(){return(a._olm_pk_encryption_set_recipient_key=a.asm.ta).apply(null,arguments)};a._olm_pk_key_length=function(){return(a._olm_pk_key_length=a.asm.ua).apply(null,arguments)}; +a._olm_pk_ciphertext_length=function(){return(a._olm_pk_ciphertext_length=a.asm.va).apply(null,arguments)};a._olm_pk_mac_length=function(){return(a._olm_pk_mac_length=a.asm.wa).apply(null,arguments)};a._olm_pk_encrypt_random_length=function(){return(a._olm_pk_encrypt_random_length=a.asm.xa).apply(null,arguments)};a._olm_pk_encrypt=function(){return(a._olm_pk_encrypt=a.asm.ya).apply(null,arguments)}; +a._olm_pk_decryption_last_error=function(){return(a._olm_pk_decryption_last_error=a.asm.za).apply(null,arguments)};a._olm_pk_decryption_last_error_code=function(){return(a._olm_pk_decryption_last_error_code=a.asm.Aa).apply(null,arguments)};a._olm_pk_decryption_size=function(){return(a._olm_pk_decryption_size=a.asm.Ba).apply(null,arguments)};a._olm_pk_decryption=function(){return(a._olm_pk_decryption=a.asm.Ca).apply(null,arguments)}; +a._olm_clear_pk_decryption=function(){return(a._olm_clear_pk_decryption=a.asm.Da).apply(null,arguments)};a._olm_pk_private_key_length=function(){return(a._olm_pk_private_key_length=a.asm.Ea).apply(null,arguments)};a._olm_pk_generate_key_random_length=function(){return(a._olm_pk_generate_key_random_length=a.asm.Fa).apply(null,arguments)};a._olm_pk_key_from_private=function(){return(a._olm_pk_key_from_private=a.asm.Ga).apply(null,arguments)}; +a._olm_pk_generate_key=function(){return(a._olm_pk_generate_key=a.asm.Ha).apply(null,arguments)};a._olm_pickle_pk_decryption_length=function(){return(a._olm_pickle_pk_decryption_length=a.asm.Ia).apply(null,arguments)};a._olm_pickle_pk_decryption=function(){return(a._olm_pickle_pk_decryption=a.asm.Ja).apply(null,arguments)};a._olm_unpickle_pk_decryption=function(){return(a._olm_unpickle_pk_decryption=a.asm.Ka).apply(null,arguments)}; +a._olm_pk_max_plaintext_length=function(){return(a._olm_pk_max_plaintext_length=a.asm.La).apply(null,arguments)};a._olm_pk_decrypt=function(){return(a._olm_pk_decrypt=a.asm.Ma).apply(null,arguments)};a._olm_pk_get_private_key=function(){return(a._olm_pk_get_private_key=a.asm.Na).apply(null,arguments)};a._olm_pk_signing_size=function(){return(a._olm_pk_signing_size=a.asm.Oa).apply(null,arguments)};a._olm_pk_signing=function(){return(a._olm_pk_signing=a.asm.Pa).apply(null,arguments)}; +a._olm_pk_signing_last_error=function(){return(a._olm_pk_signing_last_error=a.asm.Qa).apply(null,arguments)};a._olm_pk_signing_last_error_code=function(){return(a._olm_pk_signing_last_error_code=a.asm.Ra).apply(null,arguments)};a._olm_clear_pk_signing=function(){return(a._olm_clear_pk_signing=a.asm.Sa).apply(null,arguments)};a._olm_pk_signing_seed_length=function(){return(a._olm_pk_signing_seed_length=a.asm.Ta).apply(null,arguments)}; +a._olm_pk_signing_public_key_length=function(){return(a._olm_pk_signing_public_key_length=a.asm.Ua).apply(null,arguments)};a._olm_pk_signing_key_from_seed=function(){return(a._olm_pk_signing_key_from_seed=a.asm.Va).apply(null,arguments)};a._olm_pk_signature_length=function(){return(a._olm_pk_signature_length=a.asm.Wa).apply(null,arguments)};a._olm_pk_sign=function(){return(a._olm_pk_sign=a.asm.Xa).apply(null,arguments)}; +a._olm_inbound_group_session_size=function(){return(a._olm_inbound_group_session_size=a.asm.Ya).apply(null,arguments)};a._olm_inbound_group_session=function(){return(a._olm_inbound_group_session=a.asm.Za).apply(null,arguments)};a._olm_clear_inbound_group_session=function(){return(a._olm_clear_inbound_group_session=a.asm._a).apply(null,arguments)};a._olm_inbound_group_session_last_error=function(){return(a._olm_inbound_group_session_last_error=a.asm.$a).apply(null,arguments)}; +a._olm_inbound_group_session_last_error_code=function(){return(a._olm_inbound_group_session_last_error_code=a.asm.ab).apply(null,arguments)};a._olm_init_inbound_group_session=function(){return(a._olm_init_inbound_group_session=a.asm.bb).apply(null,arguments)};a._olm_import_inbound_group_session=function(){return(a._olm_import_inbound_group_session=a.asm.cb).apply(null,arguments)}; +a._olm_pickle_inbound_group_session_length=function(){return(a._olm_pickle_inbound_group_session_length=a.asm.db).apply(null,arguments)};a._olm_pickle_inbound_group_session=function(){return(a._olm_pickle_inbound_group_session=a.asm.eb).apply(null,arguments)};a._olm_unpickle_inbound_group_session=function(){return(a._olm_unpickle_inbound_group_session=a.asm.fb).apply(null,arguments)}; +a._olm_group_decrypt_max_plaintext_length=function(){return(a._olm_group_decrypt_max_plaintext_length=a.asm.gb).apply(null,arguments)};a._olm_group_decrypt=function(){return(a._olm_group_decrypt=a.asm.hb).apply(null,arguments)};a._olm_inbound_group_session_id_length=function(){return(a._olm_inbound_group_session_id_length=a.asm.ib).apply(null,arguments)};a._olm_inbound_group_session_id=function(){return(a._olm_inbound_group_session_id=a.asm.jb).apply(null,arguments)}; +a._olm_inbound_group_session_first_known_index=function(){return(a._olm_inbound_group_session_first_known_index=a.asm.kb).apply(null,arguments)};a._olm_inbound_group_session_is_verified=function(){return(a._olm_inbound_group_session_is_verified=a.asm.lb).apply(null,arguments)};a._olm_export_inbound_group_session_length=function(){return(a._olm_export_inbound_group_session_length=a.asm.mb).apply(null,arguments)}; +a._olm_export_inbound_group_session=function(){return(a._olm_export_inbound_group_session=a.asm.nb).apply(null,arguments)};a._olm_outbound_group_session_size=function(){return(a._olm_outbound_group_session_size=a.asm.ob).apply(null,arguments)};a._olm_outbound_group_session=function(){return(a._olm_outbound_group_session=a.asm.pb).apply(null,arguments)};a._olm_clear_outbound_group_session=function(){return(a._olm_clear_outbound_group_session=a.asm.qb).apply(null,arguments)}; +a._olm_outbound_group_session_last_error=function(){return(a._olm_outbound_group_session_last_error=a.asm.rb).apply(null,arguments)};a._olm_outbound_group_session_last_error_code=function(){return(a._olm_outbound_group_session_last_error_code=a.asm.sb).apply(null,arguments)};a._olm_pickle_outbound_group_session_length=function(){return(a._olm_pickle_outbound_group_session_length=a.asm.tb).apply(null,arguments)}; +a._olm_pickle_outbound_group_session=function(){return(a._olm_pickle_outbound_group_session=a.asm.ub).apply(null,arguments)};a._olm_unpickle_outbound_group_session=function(){return(a._olm_unpickle_outbound_group_session=a.asm.vb).apply(null,arguments)};a._olm_init_outbound_group_session_random_length=function(){return(a._olm_init_outbound_group_session_random_length=a.asm.wb).apply(null,arguments)}; +a._olm_init_outbound_group_session=function(){return(a._olm_init_outbound_group_session=a.asm.xb).apply(null,arguments)};a._olm_group_encrypt_message_length=function(){return(a._olm_group_encrypt_message_length=a.asm.yb).apply(null,arguments)};a._olm_group_encrypt=function(){return(a._olm_group_encrypt=a.asm.zb).apply(null,arguments)};a._olm_outbound_group_session_id_length=function(){return(a._olm_outbound_group_session_id_length=a.asm.Ab).apply(null,arguments)}; +a._olm_outbound_group_session_id=function(){return(a._olm_outbound_group_session_id=a.asm.Bb).apply(null,arguments)};a._olm_outbound_group_session_message_index=function(){return(a._olm_outbound_group_session_message_index=a.asm.Cb).apply(null,arguments)};a._olm_outbound_group_session_key_length=function(){return(a._olm_outbound_group_session_key_length=a.asm.Db).apply(null,arguments)};a._olm_outbound_group_session_key=function(){return(a._olm_outbound_group_session_key=a.asm.Eb).apply(null,arguments)}; +a._olm_sas_last_error=function(){return(a._olm_sas_last_error=a.asm.Fb).apply(null,arguments)};a._olm_sas_last_error_code=function(){return(a._olm_sas_last_error_code=a.asm.Gb).apply(null,arguments)};a._olm_sas_size=function(){return(a._olm_sas_size=a.asm.Hb).apply(null,arguments)};a._olm_sas=function(){return(a._olm_sas=a.asm.Ib).apply(null,arguments)};a._olm_clear_sas=function(){return(a._olm_clear_sas=a.asm.Jb).apply(null,arguments)}; +a._olm_create_sas_random_length=function(){return(a._olm_create_sas_random_length=a.asm.Kb).apply(null,arguments)};a._olm_create_sas=function(){return(a._olm_create_sas=a.asm.Lb).apply(null,arguments)};a._olm_sas_pubkey_length=function(){return(a._olm_sas_pubkey_length=a.asm.Mb).apply(null,arguments)};a._olm_sas_get_pubkey=function(){return(a._olm_sas_get_pubkey=a.asm.Nb).apply(null,arguments)};a._olm_sas_set_their_key=function(){return(a._olm_sas_set_their_key=a.asm.Ob).apply(null,arguments)}; +a._olm_sas_is_their_key_set=function(){return(a._olm_sas_is_their_key_set=a.asm.Pb).apply(null,arguments)};a._olm_sas_generate_bytes=function(){return(a._olm_sas_generate_bytes=a.asm.Qb).apply(null,arguments)};a._olm_sas_mac_length=function(){return(a._olm_sas_mac_length=a.asm.Rb).apply(null,arguments)};a._olm_sas_calculate_mac_fixed_base64=function(){return(a._olm_sas_calculate_mac_fixed_base64=a.asm.Sb).apply(null,arguments)}; +a._olm_sas_calculate_mac=function(){return(a._olm_sas_calculate_mac=a.asm.Tb).apply(null,arguments)};a._olm_sas_calculate_mac_long_kdf=function(){return(a._olm_sas_calculate_mac_long_kdf=a.asm.Ub).apply(null,arguments)};a._malloc=function(){return(a._malloc=a.asm.Vb).apply(null,arguments)};a._free=function(){return(a._free=a.asm.Wb).apply(null,arguments)}; +var Oa=a.stackSave=function(){return(Oa=a.stackSave=a.asm.Xb).apply(null,arguments)},Pa=a.stackRestore=function(){return(Pa=a.stackRestore=a.asm.Yb).apply(null,arguments)},Qa=a.stackAlloc=function(){return(Qa=a.stackAlloc=a.asm.Zb).apply(null,arguments)};a.UTF8ToString=t;a.stringToUTF8=v;a.intArrayFromString=Ma;a.writeAsciiToMemory=La;a.ALLOC_STACK=1;var Ra;B=function Sa(){Ra||Ta();Ra||(B=Sa)}; +function Ta(){function b(){if(!Ra&&(Ra=!0,a.calledRun=!0,!pa)){Ja(Aa);aa(a);if(a.onRuntimeInitialized)a.onRuntimeInitialized();if(a.postRun)for("function"==typeof a.postRun&&(a.postRun=[a.postRun]);a.postRun.length;){var c=a.postRun.shift();Ba.unshift(c)}Ja(Ba)}}if(!(0 { + var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined; + if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename; + return ( +function(Module) { + Module = Module || {}; + + +var a;a||(a=typeof Module !== 'undefined' ? Module : {});var aa,ba;a.ready=new Promise(function(b,c){aa=b;ba=c});var g;if("undefined"!==typeof window)g=function(b){window.crypto.getRandomValues(b)};else if(module.exports){var ca=require("crypto");g=function(b){var c=ca.randomBytes(b.length);b.set(c)}}else throw Error("Cannot find global to attach library to");if("undefined"!==typeof OLM_OPTIONS)for(var ea in OLM_OPTIONS)OLM_OPTIONS.hasOwnProperty(ea)&&(a[ea]=OLM_OPTIONS[ea]); +a.onRuntimeInitialized=function(){h=a._olm_error();olm_exports.PRIVATE_KEY_LENGTH=a._olm_pk_private_key_length();onInitSuccess&&onInitSuccess()};a.onAbort=function(b){onInitFail&&onInitFail(b)};var fa=Object.assign({},a),ha="object"==typeof window,l="function"==typeof importScripts,ia="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,m="",ja,ka,la,fs,ma,na; +if(ia)m=l?require("path").dirname(m)+"/":__dirname+"/",na=()=>{ma||(fs=require("fs"),ma=require("path"))},ja=function(b,c){var d=n(b);if(d)return c?d:d.toString();na();b=ma.normalize(b);return fs.readFileSync(b,c?void 0:"utf8")},la=b=>{b=ja(b,!0);b.buffer||(b=new Uint8Array(b));return b},ka=(b,c,d)=>{var e=n(b);e&&c(e);na();b=ma.normalize(b);fs.readFile(b,function(f,k){f?d(f):c(k.buffer)})},1{try{var c=new XMLHttpRequest;c.open("GET",b,!1);c.send(null);return c.responseText}catch(f){if(b=n(b)){c=[];for(var d=0;d{try{var c=new XMLHttpRequest;c.open("GET",b,!1);c.responseType="arraybuffer";c.send(null);return new Uint8Array(c.response)}catch(d){if(b=n(b))return b;throw d;}}),ka=(b,c,d)=>{var e=new XMLHttpRequest;e.open("GET",b,!0);e.responseType="arraybuffer";e.onload=()=>{if(200==e.status||0==e.status&&e.response)c(e.response); +else{var f=n(b);f?c(f.buffer):d()}};e.onerror=d;e.send(null)};a.print||console.log.bind(console);var r=a.printErr||console.warn.bind(console);Object.assign(a,fa);fa=null;var t;a.wasmBinary&&(t=a.wasmBinary);var noExitRuntime=a.noExitRuntime||!0;function pa(){this.buffer=new ArrayBuffer(qa/65536*65536)}function ra(){this.exports=( +// EMSCRIPTEN_START_ASM +function instantiate(ea){function c(d){d.set=function(a,b){this[a]=b};d.get=function(a){return this[a]};return d}var e;var f=new Uint8Array(123);for(var a=25;a>=0;--a){f[48+a]=52+a;f[65+a]=a;f[97+a]=26+a}f[43]=62;f[47]=63;function l(m,n,o){var g,h,a=0,i=n,j=o.length,k=n+(j*3>>2)-(o[j-2]=="=")-(o[j-1]=="=");for(;a>4;if(i>2;if(i>2]=G[b+24|0]|G[b+25|0]<<8|(G[b+26|0]<<16|G[b+27|0]<<24);F[g+28>>2]=d;d=G[b+20|0]|G[b+21|0]<<8|(G[b+22|0]<<16|G[b+23|0]<<24);F[g+16>>2]=G[b+16|0]|G[b+17|0]<<8|(G[b+18|0]<<16|G[b+19|0]<<24);F[g+20>>2]=d;d=G[b+4|0]|G[b+5|0]<<8|(G[b+6|0]<<16|G[b+7|0]<<24);f=G[b|0]|G[b+1|0]<<8|(G[b+2|0]<<16|G[b+3|0]<<24);F[g>>2]=f;F[g+4>>2]=d;d=G[b+12|0]|G[b+13|0]<<8|(G[b+14|0]<<16|G[b+15|0]<<24);F[g+8>>2]=G[b+8|0]|G[b+9|0]<<8|(G[b+10|0]<<16|G[b+11|0]<<24);F[g+12>>2]=d;D[g|0]=f&248;D[g+31|0]=G[g+31|0]&63|64;e=G[c+3|0];b=G[c+2|0];d=b>>>16|0;F[g+112>>2]=e<<24&50331648|(G[c|0]|G[c+1|0]<<8|b<<16);F[g+116>>2]=d;b=G[c+4|0];f=b>>>24|0;e=b<<8|e;b=G[c+5|0];d=b>>>16|0;e=e|b<<16;d=d|f;n=G[c+6|0];b=n;f=b>>>8|0;h=b<<24;b=d|f;d=e|h;F[g+120>>2]=((b&3)<<30|d>>>2)&33554431;F[g+124>>2]=0;b=G[c+7|0];f=b>>>24|0;e=b<<8|n;b=G[c+8|0];d=b>>>16|0;e=e|b<<16;d=d|f;n=G[c+9|0];b=n;f=b>>>8|0;h=b<<24;b=d|f;d=e|h;F[g+128>>2]=((b&7)<<29|d>>>3)&67108863;F[g+132>>2]=0;b=G[c+10|0];f=b>>>24|0;e=b<<8|n;b=G[c+11|0];d=b>>>16|0;e=e|b<<16;d=d|f;n=G[c+12|0];b=n;f=b>>>8|0;h=b<<24;b=d|f;d=e|h;F[g+136>>2]=((b&31)<<27|d>>>5)&33554431;F[g+140>>2]=0;b=G[c+13|0];f=b>>>24|0;e=b<<8|n;b=G[c+14|0];d=b>>>16|0;e=e|b<<16;d=d|f;b=G[c+15|0];f=b>>>8|0;n=b<<24;b=d|f;f=e|n;F[g+144>>2]=(b&63)<<26|f>>>6;F[g+148>>2]=b>>>6;e=G[c+19|0];b=G[c+18|0];f=b>>>16|0;F[g+152>>2]=e<<24&16777216|(G[c+16|0]|G[c+17|0]<<8|b<<16);F[g+156>>2]=f;b=G[c+20|0];d=b>>>24|0;f=b<<8|e;b=d;e=f;f=G[c+21|0];d=f>>>16|0;f=e|f<<16;e=b|d;n=G[c+22|0];b=n;d=b>>>8|0;h=b<<24;b=d|e;d=f|h;F[g+160>>2]=((b&1)<<31|d>>>1)&67108863;F[g+164>>2]=0;b=G[c+23|0];d=b>>>24|0;e=b<<8|n;b=G[c+24|0];f=b>>>16|0;e=e|b<<16;f=d|f;n=G[c+25|0];b=n;d=b>>>8|0;h=b<<24;b=d|f;d=e|h;F[g+168>>2]=((b&7)<<29|d>>>3)&33554431;F[g+172>>2]=0;b=G[c+26|0];d=b>>>24|0;f=b<<8|n;b=d;e=f;f=G[c+27|0];d=f>>>16|0;f=e|f<<16;e=b|d;n=G[c+28|0];b=n;d=b>>>8|0;h=b<<24;b=d|e;d=f|h;F[g+176>>2]=((b&15)<<28|d>>>4)&67108863;F[g+180>>2]=0;b=G[c+29|0];d=b>>>24|0;e=b<<8|n;b=G[c+30|0];f=b>>>16|0;e=e|b<<16;f=d|f;b=G[c+31|0];d=b>>>8|0;c=b<<24|e;b=d|f;F[g+184>>2]=((b&63)<<26|c>>>6)&33554431;F[g+188>>2]=0;w=g+1152|0;qa(w,0,152);F[g+1152>>2]=1;F[g+1156>>2]=0;b=g+992|0;qa(b,0,152);F[g+992>>2]=1;F[g+996>>2]=0;c=g+832|0;qa(c,0,152);n=g+672|0;qa(n,0,152);l=g+512|0;qa(l,0,152);F[g+512>>2]=1;F[g+516>>2]=0;C=g+352|0;qa(C,0,152);U=g+192|0;qa(U,0,152);F[g+192>>2]=1;F[g+196>>2]=0;qa(g+1392|0,0,72);m=g+1312|0;ja(m,g+112|0,80);Na=g+2512|0;while(1){va=G[(g-ua|0)+31|0];xa=0;while(1){z=n;I=0-((va&128)>>>7|0)|0;n=m;f=F[n>>2];e=F[b>>2];d=I&(f^e);h=b;e=d^e;F[b>>2]=e;F[b+4>>2]=e>>31;d=d^f;F[n>>2]=d;F[n+4>>2]=d>>31;f=F[n+8>>2];e=F[b+8>>2];d=I&(f^e);e=d^e;F[b+8>>2]=e;F[b+12>>2]=e>>31;d=d^f;F[n+8>>2]=d;F[n+12>>2]=d>>31;f=F[n+16>>2];e=F[b+16>>2];d=I&(f^e);e=d^e;F[b+16>>2]=e;F[b+20>>2]=e>>31;d=d^f;F[n+16>>2]=d;F[n+20>>2]=d>>31;f=F[n+24>>2];e=F[b+24>>2];d=I&(f^e);e=d^e;F[b+24>>2]=e;F[b+28>>2]=e>>31;d=d^f;F[n+24>>2]=d;F[n+28>>2]=d>>31;f=F[n+32>>2];e=F[b+32>>2];d=I&(f^e);e=d^e;F[b+32>>2]=e;F[b+36>>2]=e>>31;d=d^f;F[n+32>>2]=d;F[n+36>>2]=d>>31;f=F[n+40>>2];e=F[b+40>>2];d=I&(f^e);e=d^e;F[b+40>>2]=e;F[b+44>>2]=e>>31;d=d^f;F[n+40>>2]=d;F[n+44>>2]=d>>31;f=F[n+48>>2];e=F[b+48>>2];d=I&(f^e);e=d^e;F[b+48>>2]=e;F[b+52>>2]=e>>31;d=d^f;F[n+48>>2]=d;F[n+52>>2]=d>>31;f=F[n+56>>2];e=F[b+56>>2];d=I&(f^e);e=d^e;F[b+56>>2]=e;F[b+60>>2]=e>>31;d=d^f;F[n+56>>2]=d;F[n+60>>2]=d>>31;f=F[n+64>>2];e=F[b+64>>2];d=I&(f^e);e=d^e;F[b+64>>2]=e;F[b+68>>2]=e>>31;d=d^f;F[n+64>>2]=d;F[n+68>>2]=d>>31;f=F[n+72>>2];e=F[b+72>>2];d=I&(f^e);e=d^e;F[b+72>>2]=e;F[b+76>>2]=e>>31;d=d^f;F[n+72>>2]=d;F[n+76>>2]=d>>31;i=w;f=F[i>>2];e=F[c>>2];d=I&(f^e);e=d^e;F[c>>2]=e;F[c+4>>2]=e>>31;d=d^f;F[i>>2]=d;F[i+4>>2]=d>>31;f=F[i+8>>2];e=F[c+8>>2];d=I&(f^e);e=d^e;F[c+8>>2]=e;F[c+12>>2]=e>>31;d=d^f;F[i+8>>2]=d;F[i+12>>2]=d>>31;f=F[i+16>>2];e=F[c+16>>2];d=I&(f^e);e=d^e;F[c+16>>2]=e;F[c+20>>2]=e>>31;d=d^f;F[i+16>>2]=d;F[i+20>>2]=d>>31;f=F[i+24>>2];e=F[c+24>>2];d=I&(f^e);e=d^e;F[c+24>>2]=e;F[c+28>>2]=e>>31;d=d^f;F[i+24>>2]=d;F[i+28>>2]=d>>31;f=F[i+32>>2];e=F[c+32>>2];d=I&(f^e);e=d^e;F[c+32>>2]=e;F[c+36>>2]=e>>31;d=d^f;F[i+32>>2]=d;F[i+36>>2]=d>>31;d=F[i+40>>2];t=F[c+40>>2];q=I&(d^t);d=d^q;F[i+40>>2]=d;F[i+44>>2]=d>>31;d=F[i+48>>2];A=F[c+48>>2];B=I&(d^A);d=d^B;F[i+48>>2]=d;F[i+52>>2]=d>>31;d=F[i+56>>2];k=c;x=F[c+56>>2];u=I&(d^x);d=d^u;F[i+56>>2]=d;F[i+60>>2]=d>>31;d=F[i+64>>2];M=F[c+64>>2];y=I&(d^M);d=d^y;F[i+64>>2]=d;F[i+68>>2]=d>>31;d=F[i+72>>2];Q=F[c+72>>2];v=I&(d^Q);d=d^v;F[i+72>>2]=d;F[i+76>>2]=d>>31;N=F[c+4>>2];O=F[b+4>>2];e=N+O|0;s=F[c>>2];w=F[b>>2];f=w;d=s+f|0;F[b>>2]=d;F[b+4>>2]=d>>>0>>0?e+1|0:e;P=F[c+12>>2];J=F[b+12>>2];e=P+J|0;c=F[c+8>>2];m=F[b+8>>2];d=m;b=c+d|0;F[h+8>>2]=b;F[h+12>>2]=b>>>0>>0?e+1|0:e;V=F[k+20>>2];E=F[h+20>>2];d=V+E|0;j=F[k+16>>2];p=F[h+16>>2];f=p;b=j+f|0;F[h+16>>2]=b;F[h+20>>2]=b>>>0>>0?d+1|0:d;Y=F[k+28>>2];X=F[h+28>>2];f=Y+X|0;o=F[k+24>>2];r=F[h+24>>2];d=r;b=o+d|0;F[h+24>>2]=b;F[h+28>>2]=b>>>0>>0?f+1|0:f;b=F[k+32>>2];W=F[k+36>>2];f=F[h+40>>2];d=q^t;q=d;e=f+d|0;S=F[h+44>>2];T=d>>31;d=S+T|0;F[h+40>>2]=e;F[h+44>>2]=e>>>0>>0?d+1|0:d;t=F[h+48>>2];e=A^B;B=e;d=t+e|0;R=F[h+52>>2];Z=e>>31;e=R+Z|0;F[h+48>>2]=d;F[h+52>>2]=d>>>0>>0?e+1|0:e;A=F[h+56>>2];e=x^u;u=e;d=A+e|0;aa=F[h+60>>2];ba=e>>31;e=aa+ba|0;F[h+56>>2]=d;F[h+60>>2]=d>>>0>>0?e+1|0:e;x=F[h+64>>2];d=y^M;y=d;e=x+d|0;K=F[h+68>>2];H=d>>31;d=K+H|0;F[h+64>>2]=e;F[h+68>>2]=e>>>0>>0?d+1|0:d;d=F[h+72>>2];e=v^Q;v=e;M=d+e|0;ca=F[h+76>>2];da=e>>31;e=ca+da|0;F[h+72>>2]=M;F[h+76>>2]=v>>>0>M>>>0?e+1|0:e;ea=F[h+36>>2];e=ea+W|0;M=F[h+32>>2];Q=M+b|0;F[h+32>>2]=Q;F[h+36>>2]=M>>>0>Q>>>0?e+1|0:e;F[k+72>>2]=d-v;F[k+76>>2]=ca-((d>>>0>>0)+da|0);F[k+64>>2]=x-y;F[k+68>>2]=K-((x>>>0>>0)+H|0);F[k+56>>2]=A-u;F[k+60>>2]=aa-((u>>>0>A>>>0)+ba|0);F[k+48>>2]=t-B;F[k+52>>2]=R-((t>>>0>>0)+Z|0);F[k+40>>2]=f-q;F[k+44>>2]=S-((f>>>0>>0)+T|0);F[k+32>>2]=M-b;F[k+36>>2]=ea-((b>>>0>M>>>0)+W|0);F[k+24>>2]=r-o;F[k+28>>2]=X-((o>>>0>r>>>0)+Y|0);F[k+16>>2]=p-j;F[k+20>>2]=E-((j>>>0>p>>>0)+V|0);F[k+8>>2]=m-c;F[k+12>>2]=J-((c>>>0>m>>>0)+P|0);F[k>>2]=w-s;F[k+4>>2]=O-((s>>>0>w>>>0)+N|0);Q=F[i+4>>2];N=F[n+4>>2];d=Q+N|0;b=F[i>>2];c=F[n>>2];f=b+c|0;F[n>>2]=f;F[n+4>>2]=c>>>0>f>>>0?d+1|0:d;O=F[i+12>>2];P=F[n+12>>2];e=O+P|0;s=F[i+8>>2];w=F[n+8>>2];f=w;d=s+f|0;F[n+8>>2]=d;F[n+12>>2]=d>>>0>>0?e+1|0:e;J=F[i+20>>2];V=F[n+20>>2];f=J+V|0;m=F[i+16>>2];j=F[n+16>>2];e=j;d=m+e|0;F[n+16>>2]=d;F[n+20>>2]=d>>>0>>0?f+1|0:f;E=F[i+28>>2];Y=F[n+28>>2];d=E+Y|0;p=F[i+24>>2];o=F[n+24>>2];e=o;f=p+e|0;F[n+24>>2]=f;F[n+28>>2]=e>>>0>f>>>0?d+1|0:d;X=F[i+36>>2];S=F[n+36>>2];e=X+S|0;r=F[i+32>>2];q=F[n+32>>2];f=q;d=r+f|0;F[n+32>>2]=d;F[n+36>>2]=d>>>0>>0?e+1|0:e;T=F[i+44>>2];R=F[n+44>>2];d=T+R|0;t=F[i+40>>2];B=F[n+40>>2];e=B;f=t+e|0;F[n+40>>2]=f;F[n+44>>2]=e>>>0>f>>>0?d+1|0:d;Z=F[i+52>>2];aa=F[n+52>>2];e=Z+aa|0;A=F[i+48>>2];u=F[n+48>>2];f=u;d=A+f|0;F[n+48>>2]=d;F[n+52>>2]=d>>>0>>0?e+1|0:e;ba=F[i+60>>2];K=F[n+60>>2];f=ba+K|0;x=F[i+56>>2];y=F[n+56>>2];e=y;d=x+e|0;F[n+56>>2]=d;F[n+60>>2]=d>>>0>>0?f+1|0:f;H=F[i+68>>2];ca=F[n+68>>2];d=H+ca|0;f=F[i+64>>2];v=F[n+64>>2];e=f+v|0;F[n+64>>2]=e;F[n+68>>2]=e>>>0>>0?d+1|0:d;da=F[i+76>>2];ea=F[n+76>>2];e=da+ea|0;d=F[i+72>>2];M=F[n+72>>2];W=d+M|0;F[n+72>>2]=W;F[n+76>>2]=M>>>0>W>>>0?e+1|0:e;F[i+72>>2]=M-d;F[i+76>>2]=ea-((d>>>0>M>>>0)+da|0);F[i+64>>2]=v-f;F[i+68>>2]=ca-((f>>>0>v>>>0)+H|0);F[i+56>>2]=y-x;F[i+60>>2]=K-((x>>>0>y>>>0)+ba|0);F[i+48>>2]=u-A;F[i+52>>2]=aa-((u>>>0>>0)+Z|0);F[i+40>>2]=B-t;F[i+44>>2]=R-((t>>>0>B>>>0)+T|0);F[i+32>>2]=q-r;F[i+36>>2]=S-((q>>>0>>0)+X|0);F[i+24>>2]=o-p;F[i+28>>2]=Y-((p>>>0>o>>>0)+E|0);F[i+16>>2]=j-m;F[i+20>>2]=V-((j>>>0>>0)+J|0);F[i+8>>2]=w-s;F[i+12>>2]=P-((s>>>0>w>>>0)+O|0);F[i>>2]=c-b;F[i+4>>2]=N-((b>>>0>c>>>0)+Q|0);ya=g+1952|0;ta(ya,n,k);ca=g+1792|0;ta(ca,h,i);Oa=F[g+2024>>2];t=F[g+2028>>2];B=F[g+2016>>2];Pa=F[g+2020>>2];da=F[g+2096>>2];ea=F[g+2100>>2];A=F[g+2008>>2];Qa=F[g+2012>>2];ha=F[g+2088>>2];ia=F[g+2092>>2];u=F[g+2e3>>2];Ra=F[g+2004>>2];ka=F[g+2080>>2];la=F[g+2084>>2];x=F[g+1992>>2];Sa=F[g+1996>>2];ma=F[g+2072>>2];ra=F[g+2076>>2];y=F[g+1984>>2];Ta=F[g+1988>>2];na=F[g+2064>>2];za=F[g+2068>>2];v=F[g+1976>>2];Ua=F[g+1980>>2];oa=F[g+2056>>2];pa=F[g+2060>>2];s=F[g+1968>>2];H=F[g+1972>>2];q=F[g+2048>>2];R=F[g+2052>>2];w=F[g+1960>>2];fa=F[g+1964>>2];Z=F[g+2040>>2];aa=F[g+2044>>2];j=F[g+1952>>2];sa=F[g+1956>>2];ba=F[g+2032>>2];K=F[g+2036>>2];F[g+2032>>2]=0;F[g+2036>>2]=0;Va=F[g+1864>>2];M=F[g+1868>>2];W=F[g+1856>>2];Wa=F[g+1860>>2];Aa=F[g+1936>>2];Ba=F[g+1940>>2];Q=F[g+1848>>2];Xa=F[g+1852>>2];Ca=F[g+1928>>2];Da=F[g+1932>>2];N=F[g+1840>>2];Ya=F[g+1844>>2];Ea=F[g+1920>>2];Fa=F[g+1924>>2];O=F[g+1832>>2];Za=F[g+1836>>2];Ga=F[g+1912>>2];Ha=F[g+1916>>2];P=F[g+1824>>2];_a=F[g+1828>>2];Ia=F[g+1904>>2];Ja=F[g+1908>>2];J=F[g+1816>>2];$a=F[g+1820>>2];Ka=F[g+1896>>2];La=F[g+1900>>2];b=F[g+1808>>2];d=F[g+1812>>2];f=F[g+1888>>2];e=F[g+1892>>2];c=F[g+1800>>2];Y=F[g+1804>>2];p=F[g+1880>>2];o=F[g+1884>>2];m=F[g+1792>>2];X=F[g+1796>>2];V=F[g+1872>>2];E=F[g+1876>>2];F[g+1872>>2]=0;F[g+1876>>2]=0;d=d+e|0;r=b+f|0;d=r>>>0>>0?d+1|0:d;f=se(f,e,18,0);b=f+r|0;e=$+d|0;S=b;r=b>>>0>>0?e+1|0:e;f=o+Y|0;b=c+p|0;f=b>>>0>>0?f+1|0:f;c=se(p,o,18,0);b=c+b|0;d=$+f|0;o=b;c=b>>>0>>0?d+1|0:d;e=E+X|0;b=m+V|0;e=b>>>0>>0?e+1|0:e;f=se(V,E,18,0);b=f+b|0;d=$+e|0;d=b>>>0>>0?d+1|0:d;V=d;m=d>>31>>>6|0;f=m+b|0;p=f;e=f>>>0>>0?d+1|0:d;E=e;d=e>>26;m=(e&67108863)<<6|f>>>26;e=m+o|0;f=c+d|0;c=e;f=e>>>0>>0?f+1|0:f;Y=f;e=f;m=e>>31>>>7|0;d=m+c|0;o=d;e=d>>>0>>0?e+1|0:e;X=e;f=e>>25;m=(e&33554431)<<7|d>>>25;e=m+S|0;d=f+r|0;f=e;d=e>>>0>>0?d+1|0:d;e=d;r=d>>31>>>6|0;m=r+f|0;Ma=m;d=m>>>0>>0?d+1|0:d;m=d;r=e;e=Ma&-67108864;d=r-((e>>>0>f>>>0)+d|0)|0;S=f-e|0;T=d;f=H+R|0;d=q+s|0;f=d>>>0>>0?f+1|0:f;s=se(q,R,18,0);d=s+d|0;e=$+f|0;H=d;R=d>>>0>>0?e+1|0:e;d=aa+fa|0;f=w+Z|0;d=f>>>0>>0?d+1|0:d;e=se(Z,aa,18,0);f=e+f|0;d=$+d|0;d=e>>>0>f>>>0?d+1|0:d;q=f;e=K+sa|0;f=j+ba|0;e=f>>>0>>0?e+1|0:e;w=se(ba,K,18,0);s=w+f|0;f=$+e|0;f=s>>>0>>0?f+1|0:f;Z=f;e=f;j=e>>31>>>6|0;w=j+s|0;r=w;e=j>>>0>r>>>0?e+1|0:e;aa=e;f=e>>26;w=(e&67108863)<<6|r>>>26;e=w+q|0;d=d+f|0;d=e>>>0>>0?d+1|0:d;w=e;ba=d;j=d>>31>>>7|0;f=j+w|0;q=f;e=f>>>0>>0?d+1|0:d;K=e;d=e>>25;e=(e&33554431)<<7|f>>>25;f=e+H|0;d=d+R|0;d=e>>>0>f>>>0?d+1|0:d;e=f;R=d>>31>>>6|0;j=R+e|0;fa=j;f=j>>>0>>0?d+1|0:d;j=f;R=fa&-67108864;H=e-R|0;sa=H+S|0;f=d-((e>>>0>>0)+f|0)|0;d=f+T|0;F[g+1968>>2]=sa;F[g+1972>>2]=H>>>0>sa>>>0?d+1|0:d;F[g+1808>>2]=H-S;F[g+1812>>2]=f-((H>>>0>>0)+T|0);f=La+$a|0;d=J+Ka|0;f=d>>>0>>0?f+1|0:f;J=se(Ka,La,18,0);e=J+d|0;d=$+f|0;d=e>>>0>>0?d+1|0:d;f=e;e=m>>26;m=(m&67108863)<<6|Ma>>>26;f=f+m|0;e=d+e|0;e=f>>>0>>0?e+1|0:e;d=e;J=d>>31>>>7|0;m=f+J|0;R=m;d=m>>>0>>0?d+1|0:d;m=d;H=e;e=R&-33554432;d=H-((e>>>0>f>>>0)+d|0)|0;J=f-e|0;S=d;e=pa+Ua|0;d=v+oa|0;e=d>>>0>>0?e+1|0:e;v=se(oa,pa,18,0);f=v+d|0;d=$+e|0;d=f>>>0>>0?d+1|0:d;e=f;f=j>>26;j=(j&67108863)<<6|fa>>>26;e=e+j|0;d=d+f|0;f=e;d=e>>>0>>0?d+1|0:d;v=d>>31>>>7|0;j=e+v|0;H=j;e=j>>>0>>0?d+1|0:d;j=e;pa=H&-33554432;T=f-pa|0;oa=T+J|0;d=d-((f>>>0>>0)+e|0)|0;f=d+S|0;F[g+1976>>2]=oa;F[g+1980>>2]=T>>>0>oa>>>0?f+1|0:f;F[g+1816>>2]=T-J;F[g+1820>>2]=d-((J>>>0>T>>>0)+S|0);e=Ja+_a|0;d=P+Ia|0;e=d>>>0

    >>0?d+1|0:d;b=c;c=se(o,f,18,0);b=b+c|0;d=$+d|0;d=b>>>0>>0?d+1|0:d;o=d;p=d>>31>>>6|0;c=p+b|0;f=c>>>0

    >>0?d+1|0:d;p=c;t=f;d=f>>26;f=(f&67108863)<<6|c>>>26;c=f+e|0;e=d+m|0;m=c;B=c>>>0>>0?e+1|0:e;c=q&-33554432;q=w-c|0;A=ba-((c>>>0>w>>>0)+K|0)|0;f=(j&33554431)<<7|y>>>25;d=r&-67108864;w=s-d|0;c=f+w|0;e=j>>25;d=e+(Z-((d>>>0>s>>>0)+aa|0)|0)|0;d=c>>>0>>0?d+1|0:d;f=se(f,e,18,0);c=f+c|0;d=$+d|0;d=c>>>0>>0?d+1|0:d;w=d;s=d>>31>>>6|0;f=s+c|0;e=f>>>0>>0?d+1|0:d;s=f;d=q;q=(e&67108863)<<6|f>>>26;r=d+q|0;f=(e>>26)+A|0;f=q>>>0>r>>>0?f+1|0:f;A=r+m|0;q=f;d=f+B|0;F[g+1960>>2]=A;F[g+1964>>2]=r>>>0>A>>>0?d+1|0:d;f=p&-67108864;d=b-f|0;p=s&-67108864;s=c-p|0;j=d+s|0;b=o-((b>>>0>>0)+t|0)|0;c=w-((c>>>0

    >>0)+e|0)|0;f=b+c|0;F[g+1952>>2]=j;F[g+1956>>2]=j>>>0>>0?f+1|0:f;F[g+1800>>2]=r-m;F[g+1804>>2]=q-((m>>>0>r>>>0)+B|0);F[g+1792>>2]=s-d;F[g+1796>>2]=c-((d>>>0>s>>>0)+b|0);X=g+1472|0;ga(X,ya);b=g+1632|0;ga(b,ca);ta(ca,b,g+112|0);m=F[g+1856>>2];S=F[g+1860>>2];y=F[g+1936>>2];v=F[g+1940>>2];j=F[g+1848>>2];T=F[g+1852>>2];M=F[g+1928>>2];W=F[g+1932>>2];p=F[g+1840>>2];R=F[g+1844>>2];Q=F[g+1920>>2];N=F[g+1924>>2];o=F[g+1832>>2];Z=F[g+1836>>2];O=F[g+1912>>2];P=F[g+1916>>2];r=F[g+1824>>2];aa=F[g+1828>>2];J=F[g+1904>>2];V=F[g+1908>>2];q=F[g+1816>>2];ba=F[g+1820>>2];E=F[g+1896>>2];Y=F[g+1900>>2];b=F[g+1808>>2];d=F[g+1812>>2];f=F[g+1888>>2];e=F[g+1892>>2];c=F[g+1800>>2];x=F[g+1804>>2];w=F[g+1880>>2];B=F[g+1884>>2];s=F[g+1792>>2];K=F[g+1796>>2];A=F[g+1872>>2];u=F[g+1876>>2];F[g+1872>>2]=0;F[g+1876>>2]=0;d=d+e|0;t=b+f|0;d=t>>>0>>0?d+1|0:d;f=se(f,e,18,0);b=f+t|0;e=$+d|0;H=b;t=b>>>0>>0?e+1|0:e;f=x+B|0;b=c+w|0;f=b>>>0>>0?f+1|0:f;c=se(w,B,18,0);b=c+b|0;d=$+f|0;w=b;c=b>>>0>>0?d+1|0:d;e=u+K|0;b=s+A|0;e=b>>>0>>0?e+1|0:e;f=se(A,u,18,0);b=f+b|0;d=$+e|0;d=b>>>0>>0?d+1|0:d;B=d;s=d>>31>>>6|0;f=s+b|0;e=f>>>0>>0?d+1|0:d;s=f;A=e;d=e>>26;u=w;w=(e&67108863)<<6|f>>>26;e=u+w|0;f=c+d|0;c=e;f=e>>>0>>0?f+1|0:f;u=f;w=f>>31>>>7|0;d=w+e|0;e=f;e=d>>>0>>0?e+1|0:e;w=d;x=e;f=e>>25;K=(e&33554431)<<7|d>>>25;e=K+H|0;d=f+t|0;f=e;d=e>>>0>>0?d+1|0:d;e=d;K=d>>31>>>6|0;t=K+f|0;d=t>>>0>>0?d+1|0:d;K=t&-67108864;F[g+1808>>2]=f-K;F[g+1812>>2]=e-((f>>>0>>0)+d|0);f=Y+ba|0;e=q+E|0;f=e>>>0>>0?f+1|0:f;E=se(E,Y,18,0);q=E+e|0;e=$+f|0;e=q>>>0>>0?e+1|0:e;t=(d&67108863)<<6|t>>>26;q=t+q|0;d=(d>>26)+e|0;f=q;d=f>>>0>>0?d+1|0:d;e=d;t=d>>31>>>7|0;q=t+f|0;d=q>>>0>>0?d+1|0:d;t=q&-33554432;F[g+1816>>2]=f-t;F[g+1820>>2]=e-((f>>>0>>0)+d|0);e=V+aa|0;f=r+J|0;e=f>>>0>>0?e+1|0:e;r=se(J,V,18,0);f=r+f|0;e=$+e|0;e=f>>>0>>0?e+1|0:e;q=(d&33554431)<<7|q>>>25;r=q+f|0;d=(d>>25)+e|0;f=r;d=q>>>0>f>>>0?d+1|0:d;e=d;q=d>>31>>>6|0;r=q+f|0;d=q>>>0>r>>>0?d+1|0:d;q=r&-67108864;F[g+1824>>2]=f-q;F[g+1828>>2]=e-((f>>>0>>0)+d|0);f=P+Z|0;e=o+O|0;f=e>>>0>>0?f+1|0:f;q=se(O,P,18,0);o=q+e|0;e=$+f|0;e=o>>>0>>0?e+1|0:e;r=(d&67108863)<<6|r>>>26;o=r+o|0;d=(d>>26)+e|0;f=o;d=f>>>0>>0?d+1|0:d;e=d;r=d>>31>>>7|0;o=r+f|0;d=o>>>0>>0?d+1|0:d;r=o&-33554432;F[g+1832>>2]=f-r;F[g+1836>>2]=e-((f>>>0>>0)+d|0);e=N+R|0;f=p+Q|0;e=f>>>0

    >>0?e+1|0:e;p=se(Q,N,18,0);f=p+f|0;e=$+e|0;e=f>>>0

    >>0?e+1|0:e;o=(d&33554431)<<7|o>>>25;p=o+f|0;d=(d>>25)+e|0;f=p;d=f>>>0>>0?d+1|0:d;e=d;o=d>>31>>>6|0;p=o+f|0;d=p>>>0>>0?d+1|0:d;o=p&-67108864;F[g+1840>>2]=f-o;F[g+1844>>2]=e-((f>>>0>>0)+d|0);f=T+W|0;e=j+M|0;f=e>>>0>>0?f+1|0:f;o=se(M,W,18,0);j=o+e|0;e=$+f|0;e=j>>>0>>0?e+1|0:e;p=(d&67108863)<<6|p>>>26;j=p+j|0;d=(d>>26)+e|0;f=j;d=f>>>0

    >>0?d+1|0:d;e=d;p=d>>31>>>7|0;j=p+f|0;d=j>>>0

    >>0?d+1|0:d;p=j&-33554432;F[g+1848>>2]=f-p;F[g+1852>>2]=e-((f>>>0

    >>0)+d|0);e=v+S|0;f=m+y|0;e=f>>>0>>0?e+1|0:e;m=se(y,v,18,0);f=m+f|0;e=$+e|0;e=f>>>0>>0?e+1|0:e;j=(d&33554431)<<7|j>>>25;m=j+f|0;d=(d>>25)+e|0;f=m;d=j>>>0>f>>>0?d+1|0:d;e=d;p=d>>31>>>6|0;j=p+f|0;d=j>>>0

    >>0?d+1|0:d;p=j&-67108864;F[g+1856>>2]=f-p;F[g+1860>>2]=e-((f>>>0

    >>0)+d|0);e=d>>26;m=(d&67108863)<<6|j>>>26;d=m+F[g+1864>>2]|0;f=e+F[g+1868>>2]|0;f=d>>>0>>0?f+1|0:f;p=f>>31>>>7|0;j=p+d|0;e=f;e=j>>>0

    >>0?e+1|0:e;p=j&-33554432;F[g+1864>>2]=d-p;F[g+1868>>2]=f-((d>>>0

    >>0)+e|0);d=w&-33554432;w=c-d|0;m=u-((c>>>0>>0)+x|0)|0;d=e>>25;e=(e&33554431)<<7|j>>>25;f=s&-67108864;s=b-f|0;c=e+s|0;f=(B-((b>>>0>>0)+A|0)|0)+d|0;f=c>>>0>>0?f+1|0:f;b=c;c=se(e,d,18,0);b=b+c|0;e=$+f|0;e=b>>>0>>0?e+1|0:e;f=e;d=e;e=d>>31>>>6|0;c=e+b|0;d=c>>>0>>0?d+1|0:d;e=(d>>26)+m|0;j=(d&67108863)<<6|c>>>26;w=j+w|0;F[g+1800>>2]=w;F[g+1804>>2]=j>>>0>w>>>0?e+1|0:e;c=c&-67108864;F[g+1792>>2]=b-c;F[g+1796>>2]=f-((b>>>0>>0)+d|0);m=ja(z,X,80);w=l;E=ja(l,ca,80);c=g+2272|0;ga(c,h);Y=g+2112|0;ga(Y,k);b=C;ta(b,c,Y);j=F[b+64>>2];T=F[b+68>>2];y=F[b+144>>2];v=F[b+148>>2];p=F[b+56>>2];R=F[b+60>>2];M=F[b+136>>2];W=F[b+140>>2];o=F[b+48>>2];Z=F[b+52>>2];Q=F[b+128>>2];N=F[b+132>>2];r=F[b+40>>2];aa=F[b+44>>2];O=F[b+120>>2];P=F[b+124>>2];q=F[b+32>>2];ba=F[b+36>>2];J=F[b+112>>2];V=F[b+116>>2];z=F[b+24>>2];K=F[b+28>>2];X=F[b+104>>2];S=F[b+108>>2];c=F[b+16>>2];d=F[b+20>>2];e=F[b+96>>2];s=F[b+100>>2];f=F[b+8>>2];x=F[b+12>>2];C=F[b+88>>2];B=F[b+92>>2];l=F[b>>2];H=F[b+4>>2];A=F[b+80>>2];u=F[b+84>>2];F[b+80>>2]=0;F[b+84>>2]=0;d=d+s|0;t=c+e|0;d=t>>>0>>0?d+1|0:d;s=se(e,s,18,0);c=s+t|0;e=$+d|0;ca=c;t=c>>>0>>0?e+1|0:e;e=x+B|0;c=f+C|0;e=c>>>0>>0?e+1|0:e;f=se(C,B,18,0);c=f+c|0;d=$+e|0;x=c;C=c>>>0>>0?d+1|0:d;f=u+H|0;c=l+A|0;f=c>>>0>>0?f+1|0:f;e=se(A,u,18,0);c=e+c|0;d=$+f|0;d=c>>>0>>0?d+1|0:d;B=d;l=d>>31>>>6|0;f=l+c|0;s=f;e=f>>>0>>0?d+1|0:d;A=e;l=(e&67108863)<<6|f>>>26;f=l+x|0;e=(e>>26)+C|0;e=f>>>0>>0?e+1|0:e;l=f;u=e;f=e;e=e>>31>>>7|0;d=e+l|0;C=d;f=d>>>0>>0?f+1|0:f;x=f;e=f>>25;H=(f&33554431)<<7|d>>>25;f=H+ca|0;d=e+t|0;d=f>>>0>>0?d+1|0:d;e=d;H=d>>31>>>6|0;t=H+f|0;d=t>>>0>>0?d+1|0:d;H=t&-67108864;F[b+16>>2]=f-H;F[b+20>>2]=e-((f>>>0>>0)+d|0);e=K+S|0;f=z+X|0;e=f>>>0>>0?e+1|0:e;X=se(X,S,18,0);z=X+f|0;f=$+e|0;f=z>>>0>>0?f+1|0:f;t=(d&67108863)<<6|t>>>26;z=t+z|0;d=(d>>26)+f|0;f=z;d=t>>>0>f>>>0?d+1|0:d;e=d;t=d>>31>>>7|0;z=t+f|0;d=t>>>0>z>>>0?d+1|0:d;t=z&-33554432;F[b+24>>2]=f-t;F[b+28>>2]=e-((f>>>0>>0)+d|0);e=V+ba|0;f=q+J|0;e=f>>>0>>0?e+1|0:e;t=se(J,V,18,0);q=t+f|0;f=$+e|0;f=q>>>0>>0?f+1|0:f;z=(d&33554431)<<7|z>>>25;q=z+q|0;d=(d>>25)+f|0;f=q;d=f>>>0>>0?d+1|0:d;e=d;z=d>>31>>>6|0;q=z+f|0;d=q>>>0>>0?d+1|0:d;z=q&-67108864;F[b+32>>2]=f-z;F[b+36>>2]=e-((f>>>0>>0)+d|0);e=P+aa|0;f=r+O|0;e=f>>>0>>0?e+1|0:e;z=se(O,P,18,0);r=z+f|0;f=$+e|0;f=r>>>0>>0?f+1|0:f;q=(d&67108863)<<6|q>>>26;r=q+r|0;d=(d>>26)+f|0;f=r;d=q>>>0>f>>>0?d+1|0:d;e=d;q=d>>31>>>7|0;r=q+f|0;d=q>>>0>r>>>0?d+1|0:d;q=r&-33554432;F[b+40>>2]=f-q;F[b+44>>2]=e-((f>>>0>>0)+d|0);e=N+Z|0;f=o+Q|0;e=f>>>0>>0?e+1|0:e;q=se(Q,N,18,0);o=q+f|0;f=$+e|0;f=o>>>0>>0?f+1|0:f;r=(d&33554431)<<7|r>>>25;o=r+o|0;d=(d>>25)+f|0;f=o;d=f>>>0>>0?d+1|0:d;e=d;r=d>>31>>>6|0;o=r+f|0;d=o>>>0>>0?d+1|0:d;r=o&-67108864;F[b+48>>2]=f-r;F[b+52>>2]=e-((f>>>0>>0)+d|0);e=R+W|0;f=p+M|0;e=f>>>0

    >>0?e+1|0:e;r=se(M,W,18,0);p=r+f|0;f=$+e|0;f=p>>>0>>0?f+1|0:f;o=(d&67108863)<<6|o>>>26;p=o+p|0;d=(d>>26)+f|0;f=p;d=f>>>0>>0?d+1|0:d;e=d;o=d>>31>>>7|0;p=o+f|0;d=p>>>0>>0?d+1|0:d;o=p&-33554432;F[b+56>>2]=f-o;F[b+60>>2]=e-((f>>>0>>0)+d|0);e=v+T|0;f=j+y|0;e=f>>>0>>0?e+1|0:e;o=se(y,v,18,0);j=o+f|0;f=$+e|0;f=j>>>0>>0?f+1|0:f;p=(d&33554431)<<7|p>>>25;j=p+j|0;d=(d>>25)+f|0;f=j;d=f>>>0

    >>0?d+1|0:d;e=d;o=d>>31>>>6|0;p=o+f|0;d=p>>>0>>0?d+1|0:d;o=p&-67108864;F[b+64>>2]=f-o;F[b+68>>2]=e-((f>>>0>>0)+d|0);e=d>>26;j=(d&67108863)<<6|p>>>26;d=j+F[b+72>>2]|0;e=e+F[b+76>>2]|0;e=d>>>0>>0?e+1|0:e;o=e>>31>>>7|0;p=o+d|0;f=p>>>0>>0?e+1|0:e;o=p&-33554432;F[b+72>>2]=d-o;F[b+76>>2]=e-((d>>>0>>0)+f|0);d=C&-33554432;j=l-d|0;o=u-((d>>>0>l>>>0)+x|0)|0;d=f>>25;l=(f&33554431)<<7|p>>>25;e=s&-67108864;s=c-e|0;f=l+s|0;e=(B-((c>>>0>>0)+A|0)|0)+d|0;d=se(l,d,18,0);c=d+f|0;e=$+(f>>>0>>0?e+1|0:e)|0;e=c>>>0>>0?e+1|0:e;s=e;d=e;e=d>>31>>>6|0;f=e+c|0;l=f;d=e>>>0>f>>>0?d+1|0:d;p=(d&67108863)<<6|f>>>26;j=p+j|0;f=(d>>26)+o|0;F[b+8>>2]=j;F[b+12>>2]=j>>>0

    >>0?f+1|0:f;f=l&-67108864;F[b>>2]=c-f;F[b+4>>2]=s-((c>>>0>>0)+d|0);j=F[g+2316>>2];H=F[g+2312>>2];d=H;f=F[g+2152>>2];c=j-(F[g+2156>>2]+(d>>>0>>0)|0)|0;X=d-f|0;p=c;F[g+2152>>2]=X;F[g+2156>>2]=c;o=F[g+2308>>2];ca=F[g+2304>>2];d=ca;f=F[g+2144>>2];c=o-(F[g+2148>>2]+(d>>>0>>0)|0)|0;S=d-f|0;r=c;F[g+2144>>2]=S;F[g+2148>>2]=c;q=F[g+2300>>2];da=F[g+2296>>2];d=da;f=F[g+2136>>2];c=q-(F[g+2140>>2]+(d>>>0>>0)|0)|0;T=d-f|0;z=c;F[g+2136>>2]=T;F[g+2140>>2]=c;d=F[g+2292>>2];f=F[g+2288>>2];l=F[g+2128>>2];e=d-(F[g+2132>>2]+(f>>>0>>0)|0)|0;C=f-l|0;F[g+2128>>2]=C;F[g+2132>>2]=e;ea=F[g+2284>>2];t=F[g+2280>>2];c=t;s=F[g+2120>>2];l=ea-(F[g+2124>>2]+(c>>>0>>0)|0)|0;O=c-s|0;F[g+2120>>2]=O;F[g+2124>>2]=l;ha=F[g+2276>>2];B=F[g+2272>>2];c=B;A=F[g+2112>>2];s=ha-(F[g+2116>>2]+(c>>>0>>0)|0)|0;P=c-A|0;F[g+2112>>2]=P;F[g+2116>>2]=s;A=F[g+2324>>2];ia=F[g+2320>>2];u=ia;x=F[g+2160>>2];c=A-(F[g+2164>>2]+(u>>>0>>0)|0)|0;R=u-x|0;u=c;F[g+2160>>2]=R;F[g+2164>>2]=c;x=F[g+2332>>2];ka=F[g+2328>>2];y=ka;v=F[g+2168>>2];c=x-(F[g+2172>>2]+(y>>>0>>0)|0)|0;Z=y-v|0;y=c;F[g+2168>>2]=Z;F[g+2172>>2]=c;v=F[g+2340>>2];la=F[g+2336>>2];M=la;W=F[g+2176>>2];c=v-(F[g+2180>>2]+(M>>>0>>0)|0)|0;aa=M-W|0;M=c;F[g+2176>>2]=aa;F[g+2180>>2]=c;W=F[g+2348>>2];ma=F[g+2344>>2];Q=ma;N=F[g+2184>>2];c=W-(F[g+2188>>2]+(Q>>>0>>0)|0)|0;ba=Q-N|0;Q=c;F[g+2184>>2]=ba;F[g+2188>>2]=c;qa(Na,0,72);N=d;V=se(C,e,121665,0);K=$;l=se(O,l,121665,0);C=$;c=se(P,s,121665,0);d=$;ra=d;s=d>>31>>>6|0;e=s+c|0;d=e>>>0>>0?d+1|0:d;s=e;O=d;e=d>>26;P=l;l=(d&67108863)<<6|s>>>26;d=P+l|0;e=e+C|0;e=d>>>0>>0?e+1|0:e;l=d;P=e;d=e;C=d>>31>>>7|0;e=C+l|0;d=e>>>0>>0?d+1|0:d;C=e;J=d;fa=f;e=d>>25;f=V;V=(d&33554431)<<7|C>>>25;d=f+V|0;f=e+K|0;f=d>>>0>>0?f+1|0:f;V=fa+d|0;e=f+N|0;e=d>>>0>V>>>0?e+1|0:e;N=V;na=f>>31>>>6|0;K=na+d|0;d=f;d=K>>>0>>0?d+1|0:d;f=K&-67108864;F[g+2448>>2]=N-f;F[g+2452>>2]=e-((f>>>0>N>>>0)+d|0);f=d;d=d>>26;N=(f&67108863)<<6|K>>>26;e=se(T,z,121665,0)+N|0;f=d+$|0;d=e;z=d+da|0;f=d>>>0>>0?f+1|0:f;e=f+q|0;q=z;z=d>>>0>q>>>0?e+1|0:e;e=f;f=e>>31>>>7|0;d=f+d|0;e=d>>>0>>0?e+1|0:e;f=d;d=d&-33554432;F[g+2456>>2]=q-d;F[g+2460>>2]=z-((d>>>0>q>>>0)+e|0);d=e;e=d>>25;q=(d&33554431)<<7|f>>>25;d=se(S,r,121665,0)+q|0;f=e+$|0;e=d;r=d+ca|0;f=d>>>0>>0?f+1|0:f;d=f+o|0;d=e>>>0>r>>>0?d+1|0:d;o=r;z=f>>31>>>6|0;q=z+e|0;e=f;e=q>>>0>>0?e+1|0:e;f=q;q=f&-67108864;F[g+2464>>2]=o-q;F[g+2468>>2]=d-((o>>>0>>0)+e|0);d=e;e=d>>26;o=(d&67108863)<<6|f>>>26;d=se(X,p,121665,0)+o|0;f=e+$|0;f=d>>>0>>0?f+1|0:f;p=d+H|0;e=f+j|0;e=d>>>0>p>>>0?e+1|0:e;j=p;r=f>>31>>>7|0;o=r+d|0;d=f;d=o>>>0>>0?d+1|0:d;f=o&-33554432;F[g+2472>>2]=j-f;F[g+2476>>2]=e-((f>>>0>j>>>0)+d|0);f=d;d=d>>25;p=(f&33554431)<<7|o>>>25;e=se(R,u,121665,0)+p|0;f=d+$|0;d=e;j=d+ia|0;f=d>>>0

    >>0?f+1|0:f;e=f+A|0;e=d>>>0>j>>>0?e+1|0:e;p=e;e=f;f=e>>31>>>6|0;d=f+d|0;e=d>>>0>>0?e+1|0:e;f=d;d=d&-67108864;F[g+2480>>2]=j-d;F[g+2484>>2]=p-((d>>>0>j>>>0)+e|0);d=e;e=d>>26;p=(d&67108863)<<6|f>>>26;d=se(Z,y,121665,0)+p|0;f=e+$|0;e=d;j=d+ka|0;f=d>>>0

    >>0?f+1|0:f;d=f+x|0;d=e>>>0>j>>>0?d+1|0:d;r=f>>31>>>7|0;o=r+e|0;e=f;e=o>>>0>>0?e+1|0:e;f=o;o=f&-33554432;F[g+2488>>2]=j-o;F[g+2492>>2]=d-((j>>>0>>0)+e|0);d=e;e=d>>25;p=(d&33554431)<<7|f>>>25;d=se(aa,M,121665,0)+p|0;f=e+$|0;f=d>>>0

    >>0?f+1|0:f;j=d+la|0;e=f+v|0;e=d>>>0>j>>>0?e+1|0:e;r=f>>31>>>6|0;o=r+d|0;d=f;d=o>>>0>>0?d+1|0:d;f=o&-67108864;F[g+2496>>2]=j-f;F[g+2500>>2]=e-((f>>>0>j>>>0)+d|0);f=d;d=d>>26;p=(f&67108863)<<6|o>>>26;e=se(ba,Q,121665,0)+p|0;f=d+$|0;d=e;j=d+ma|0;f=d>>>0

    >>0?f+1|0:f;e=f+W|0;e=d>>>0>j>>>0?e+1|0:e;p=e;e=f;f=e>>31>>>7|0;d=f+d|0;e=d>>>0>>0?e+1|0:e;f=d&-33554432;F[g+2504>>2]=j-f;F[g+2508>>2]=p-((f>>>0>j>>>0)+e|0);f=P+ea|0;l=l+t|0;f=l>>>0>>0?f+1|0:f;C=C&-33554432;j=l-C|0;p=f-((l>>>0>>0)+J|0)|0;f=e>>25;l=(e&33554431)<<7|d>>>25;d=s&-67108864;s=c-d|0;e=l+s|0;d=(ra-((c>>>0>>0)+O|0)|0)+f|0;f=se(l,f,18,0);c=f+e|0;d=$+(e>>>0>>0?d+1|0:d)|0;d=c>>>0>>0?d+1|0:d;l=d>>31>>>6|0;e=l+c|0;f=e>>>0>>0?d+1|0:d;l=e;e=(f>>26)+p|0;o=(f&67108863)<<6|l>>>26;j=o+j|0;F[g+2440>>2]=j;F[g+2444>>2]=j>>>0>>0?e+1|0:e;d=d+ha|0;c=c+B|0;d=c>>>0>>0?d+1|0:d;e=l&-67108864;F[g+2432>>2]=c-e;F[g+2436>>2]=d-((c>>>0>>0)+f|0);c=U;ta(c,Y,g+2432|0);j=F[c+64>>2];S=F[c+68>>2];y=F[c+144>>2];v=F[c+148>>2];p=F[c+56>>2];T=F[c+60>>2];M=F[c+136>>2];W=F[c+140>>2];o=F[c+48>>2];R=F[c+52>>2];Q=F[c+128>>2];N=F[c+132>>2];r=F[c+40>>2];Z=F[c+44>>2];O=F[c+120>>2];P=F[c+124>>2];q=F[c+32>>2];aa=F[c+36>>2];J=F[c+112>>2];V=F[c+116>>2];z=F[c+24>>2];ba=F[c+28>>2];Y=F[c+104>>2];X=F[c+108>>2];d=F[c+16>>2];f=F[c+20>>2];e=F[c+96>>2];C=F[c+100>>2];l=F[c+8>>2];x=F[c+12>>2];U=F[c+88>>2];B=F[c+92>>2];s=F[c>>2];K=F[c+4>>2];A=F[c+80>>2];u=F[c+84>>2];F[c+80>>2]=0;F[c+84>>2]=0;f=f+C|0;t=d+e|0;f=t>>>0>>0?f+1|0:f;C=se(e,C,18,0);d=C+t|0;e=$+f|0;H=d;t=d>>>0>>0?e+1|0:e;d=x+B|0;f=l+U|0;d=f>>>0>>0?d+1|0:d;e=se(U,B,18,0);f=e+f|0;d=$+d|0;d=e>>>0>f>>>0?d+1|0:d;U=f;e=u+K|0;f=s+A|0;e=f>>>0>>0?e+1|0:e;s=se(A,u,18,0);l=s+f|0;f=$+e|0;f=l>>>0>>0?f+1|0:f;B=f;C=f>>31>>>6|0;s=C+l|0;e=f;e=s>>>0>>0?e+1|0:e;C=s;A=e;f=e>>26;s=(e&67108863)<<6|s>>>26;e=s+U|0;d=d+f|0;d=e>>>0>>0?d+1|0:d;s=e;u=d;U=d>>31>>>7|0;f=U+e|0;e=f>>>0>>0?d+1|0:d;U=f;x=e;d=e>>25;e=(e&33554431)<<7|f>>>25;f=e+H|0;d=d+t|0;d=e>>>0>f>>>0?d+1|0:d;e=f;K=d>>31>>>6|0;t=K+e|0;f=t>>>0>>0?d+1|0:d;K=t&-67108864;F[c+16>>2]=e-K;F[c+20>>2]=d-((e>>>0>>0)+f|0);d=X+ba|0;e=z+Y|0;d=e>>>0>>0?d+1|0:d;Y=se(Y,X,18,0);z=Y+e|0;e=$+d|0;e=z>>>0>>0?e+1|0:e;t=(f&67108863)<<6|t>>>26;z=t+z|0;f=(f>>26)+e|0;e=z;f=t>>>0>e>>>0?f+1|0:f;d=f;t=d>>31>>>7|0;z=t+e|0;d=t>>>0>z>>>0?d+1|0:d;t=z&-33554432;F[c+24>>2]=e-t;F[c+28>>2]=f-((e>>>0>>0)+d|0);e=V+aa|0;f=q+J|0;e=f>>>0>>0?e+1|0:e;q=se(J,V,18,0);f=q+f|0;e=$+e|0;e=f>>>0>>0?e+1|0:e;H=f;f=d;d=d>>25;q=(f&33554431)<<7|z>>>25;f=H+q|0;d=d+e|0;d=f>>>0>>0?d+1|0:d;e=f;z=d>>31>>>6|0;q=z+e|0;f=q>>>0>>0?d+1|0:d;z=q&-67108864;F[c+32>>2]=e-z;F[c+36>>2]=d-((e>>>0>>0)+f|0);d=P+Z|0;e=r+O|0;d=e>>>0>>0?d+1|0:d;z=se(O,P,18,0);r=z+e|0;e=$+d|0;e=r>>>0>>0?e+1|0:e;q=(f&67108863)<<6|q>>>26;r=q+r|0;f=(f>>26)+e|0;e=r;f=q>>>0>e>>>0?f+1|0:f;d=f;q=d>>31>>>7|0;r=q+e|0;d=q>>>0>r>>>0?d+1|0:d;q=r&-33554432;F[c+40>>2]=e-q;F[c+44>>2]=f-((e>>>0>>0)+d|0);e=N+R|0;f=o+Q|0;e=f>>>0>>0?e+1|0:e;o=se(Q,N,18,0);f=o+f|0;e=$+e|0;e=f>>>0>>0?e+1|0:e;q=f;f=d;d=d>>25;o=(f&33554431)<<7|r>>>25;f=q+o|0;d=d+e|0;d=f>>>0>>0?d+1|0:d;e=f;r=d>>31>>>6|0;o=r+e|0;f=o>>>0>>0?d+1|0:d;r=o&-67108864;F[c+48>>2]=e-r;F[c+52>>2]=d-((e>>>0>>0)+f|0);d=T+W|0;e=p+M|0;d=e>>>0

    >>0?d+1|0:d;r=se(M,W,18,0);p=r+e|0;e=$+d|0;e=p>>>0>>0?e+1|0:e;o=(f&67108863)<<6|o>>>26;p=o+p|0;f=(f>>26)+e|0;e=p;f=e>>>0>>0?f+1|0:f;d=f;o=d>>31>>>7|0;p=o+e|0;d=p>>>0>>0?d+1|0:d;o=p&-33554432;F[c+56>>2]=e-o;F[c+60>>2]=f-((e>>>0>>0)+d|0);e=v+S|0;f=j+y|0;e=f>>>0>>0?e+1|0:e;j=se(y,v,18,0);f=j+f|0;e=$+e|0;e=f>>>0>>0?e+1|0:e;q=f;f=d;d=d>>25;j=(f&33554431)<<7|p>>>25;f=q+j|0;d=d+e|0;d=f>>>0>>0?d+1|0:d;e=c;j=f;o=d>>31>>>6|0;p=o+f|0;f=p>>>0>>0?d+1|0:d;o=p&-67108864;F[e+64>>2]=j-o;F[e+68>>2]=d-((j>>>0>>0)+f|0);e=f>>26;j=(f&67108863)<<6|p>>>26;f=j+F[c+72>>2]|0;d=e+F[c+76>>2]|0;d=f>>>0>>0?d+1|0:d;o=d>>31>>>7|0;p=o+f|0;e=p>>>0>>0?d+1|0:d;o=p&-33554432;F[c+72>>2]=f-o;F[c+76>>2]=d-((f>>>0>>0)+e|0);d=U&-33554432;U=s-d|0;j=u-((d>>>0>s>>>0)+x|0)|0;d=e>>25;s=(e&33554431)<<7|p>>>25;C=C&-67108864;p=l-C|0;e=s+p|0;f=d;d=d+(B-((l>>>0>>0)+A|0)|0)|0;l=se(s,f,18,0);f=l+e|0;e=$+(e>>>0

    >>0?d+1|0:d)|0;e=f>>>0>>0?e+1|0:e;s=e;d=e;l=d>>31>>>6|0;e=l+f|0;d=e>>>0>>0?d+1|0:d;l=e;e=(d>>26)+j|0;p=(d&67108863)<<6|l>>>26;U=p+U|0;F[c+8>>2]=U;F[c+12>>2]=p>>>0>U>>>0?e+1|0:e;e=l&-67108864;F[c>>2]=f-e;F[c+4>>2]=s-((e>>>0>f>>>0)+d|0);f=F[m>>2];e=F[b>>2];d=I&(f^e);e=d^e;F[b>>2]=e;F[b+4>>2]=e>>31;d=d^f;F[m>>2]=d;F[m+4>>2]=d>>31;f=F[m+8>>2];e=F[b+8>>2];d=I&(f^e);e=d^e;F[b+8>>2]=e;F[b+12>>2]=e>>31;d=d^f;F[m+8>>2]=d;F[m+12>>2]=d>>31;f=F[m+16>>2];e=F[b+16>>2];d=I&(f^e);e=d^e;F[b+16>>2]=e;F[b+20>>2]=e>>31;d=d^f;F[m+16>>2]=d;F[m+20>>2]=d>>31;f=F[m+24>>2];e=F[b+24>>2];d=I&(f^e);e=d^e;F[b+24>>2]=e;F[b+28>>2]=e>>31;d=d^f;F[m+24>>2]=d;F[m+28>>2]=d>>31;f=F[m+32>>2];e=F[b+32>>2];d=I&(f^e);e=d^e;F[b+32>>2]=e;F[b+36>>2]=e>>31;d=d^f;F[m+32>>2]=d;F[m+36>>2]=d>>31;f=F[m+40>>2];e=F[b+40>>2];d=I&(f^e);e=d^e;F[b+40>>2]=e;F[b+44>>2]=e>>31;d=d^f;F[m+40>>2]=d;F[m+44>>2]=d>>31;f=F[m+48>>2];e=F[b+48>>2];d=I&(f^e);e=d^e;F[b+48>>2]=e;F[b+52>>2]=e>>31;d=d^f;F[m+48>>2]=d;F[m+52>>2]=d>>31;f=F[m+56>>2];e=F[b+56>>2];d=I&(f^e);e=d^e;F[b+56>>2]=e;F[b+60>>2]=e>>31;d=d^f;F[m+56>>2]=d;F[m+60>>2]=d>>31;f=F[m+64>>2];e=F[b+64>>2];d=I&(f^e);e=d^e;F[b+64>>2]=e;F[b+68>>2]=e>>31;d=d^f;F[m+64>>2]=d;F[m+68>>2]=d>>31;f=F[m+72>>2];e=F[b+72>>2];d=I&(f^e);e=d^e;F[b+72>>2]=e;F[b+76>>2]=e>>31;d=d^f;F[m+72>>2]=d;F[m+76>>2]=d>>31;f=F[E>>2];e=F[c>>2];d=I&(f^e);e=d^e;F[c>>2]=e;F[c+4>>2]=e>>31;d=d^f;F[E>>2]=d;F[E+4>>2]=d>>31;f=F[E+8>>2];e=F[c+8>>2];d=I&(f^e);e=d^e;F[c+8>>2]=e;F[c+12>>2]=e>>31;d=d^f;F[E+8>>2]=d;F[E+12>>2]=d>>31;f=F[E+16>>2];e=F[c+16>>2];d=I&(f^e);e=d^e;F[c+16>>2]=e;F[c+20>>2]=e>>31;d=d^f;F[E+16>>2]=d;F[E+20>>2]=d>>31;f=F[E+24>>2];e=F[c+24>>2];d=I&(f^e);e=d^e;F[c+24>>2]=e;F[c+28>>2]=e>>31;d=d^f;F[E+24>>2]=d;F[E+28>>2]=d>>31;f=F[E+32>>2];e=F[c+32>>2];d=I&(f^e);e=d^e;F[c+32>>2]=e;F[c+36>>2]=e>>31;d=d^f;F[E+32>>2]=d;F[E+36>>2]=d>>31;f=F[E+40>>2];e=F[c+40>>2];d=I&(f^e);e=d^e;F[c+40>>2]=e;F[c+44>>2]=e>>31;d=d^f;F[E+40>>2]=d;F[E+44>>2]=d>>31;f=F[E+48>>2];e=F[c+48>>2];d=I&(f^e);e=d^e;F[c+48>>2]=e;F[c+52>>2]=e>>31;d=d^f;F[E+48>>2]=d;F[E+52>>2]=d>>31;f=F[E+56>>2];e=F[c+56>>2];d=I&(f^e);e=d^e;F[c+56>>2]=e;F[c+60>>2]=e>>31;d=d^f;F[E+56>>2]=d;F[E+60>>2]=d>>31;f=F[E+64>>2];e=F[c+64>>2];d=I&(f^e);e=d^e;F[c+64>>2]=e;F[c+68>>2]=e>>31;d=d^f;F[E+64>>2]=d;F[E+68>>2]=d>>31;f=F[E+72>>2];e=F[c+72>>2];d=I&(f^e);e=d^e;F[c+72>>2]=e;F[c+76>>2]=e>>31;d=d^f;F[E+72>>2]=d;F[E+76>>2]=d>>31;va=va<<1;U=k;C=h;l=i;xa=xa+1|0;if((xa|0)!=8){continue}break}ua=ua+1|0;if((ua|0)!=32){continue}break}ja(g+32|0,b,80);d=g+2272|0;ja(d,c,80);h=g+2112|0;ga(h,d);c=g+672|0;ga(c,h);b=g+832|0;ga(b,c);n=g+2432|0;ta(n,b,d);e=F[g+2576>>2];i=F[g+2496>>2];d=e+i|0;k=F[g+2580>>2];f=k+F[g+2500>>2]|0;f=d>>>0>>0?f+1|0:f;i=se(e,k,18,0);d=i+d|0;e=$+f|0;F[g+2496>>2]=d;F[g+2500>>2]=d>>>0>>0?e+1|0:e;e=F[g+2568>>2];i=F[g+2488>>2];f=e+i|0;k=F[g+2572>>2];d=k+F[g+2492>>2]|0;d=f>>>0>>0?d+1|0:d;i=se(e,k,18,0);f=i+f|0;e=$+d|0;F[g+2488>>2]=f;F[g+2492>>2]=f>>>0>>0?e+1|0:e;e=F[g+2560>>2];i=F[g+2480>>2];f=e+i|0;k=F[g+2564>>2];d=k+F[g+2484>>2]|0;d=f>>>0>>0?d+1|0:d;i=se(e,k,18,0);e=i+f|0;f=$+d|0;F[g+2480>>2]=e;F[g+2484>>2]=e>>>0>>0?f+1|0:f;f=F[g+2552>>2];i=F[g+2472>>2];d=f+i|0;k=F[g+2556>>2];e=k+F[g+2476>>2]|0;e=d>>>0>>0?e+1|0:e;i=se(f,k,18,0);f=i+d|0;d=$+e|0;F[g+2472>>2]=f;F[g+2476>>2]=f>>>0>>0?d+1|0:d;f=F[g+2544>>2];i=F[g+2464>>2];d=f+i|0;k=F[g+2548>>2];e=k+F[g+2468>>2]|0;e=d>>>0>>0?e+1|0:e;i=se(f,k,18,0);f=i+d|0;d=$+e|0;F[g+2464>>2]=f;F[g+2468>>2]=f>>>0>>0?d+1|0:d;e=F[g+2536>>2];i=F[g+2456>>2];d=e+i|0;k=F[g+2540>>2];f=k+F[g+2460>>2]|0;f=d>>>0>>0?f+1|0:f;i=se(e,k,18,0);d=i+d|0;e=$+f|0;F[g+2456>>2]=d;F[g+2460>>2]=d>>>0>>0?e+1|0:e;e=F[g+2528>>2];i=F[g+2448>>2];f=e+i|0;k=F[g+2532>>2];d=k+F[g+2452>>2]|0;d=f>>>0>>0?d+1|0:d;i=se(e,k,18,0);f=i+f|0;e=$+d|0;F[g+2448>>2]=f;F[g+2452>>2]=f>>>0>>0?e+1|0:e;e=F[g+2520>>2];i=F[g+2440>>2];f=e+i|0;k=F[g+2524>>2];d=k+F[g+2444>>2]|0;d=f>>>0>>0?d+1|0:d;i=se(e,k,18,0);e=i+f|0;f=$+d|0;F[g+2440>>2]=e;F[g+2444>>2]=e>>>0>>0?f+1|0:f;f=F[g+2512>>2];i=F[g+2432>>2];d=f+i|0;k=F[g+2516>>2];e=k+F[g+2436>>2]|0;e=d>>>0>>0?e+1|0:e;i=se(f,k,18,0);f=i+d|0;d=$+e|0;F[g+2432>>2]=f;F[g+2436>>2]=f>>>0>>0?d+1|0:d;wa(n);i=g+1952|0;ja(i,n,80);ta(n,i,h);f=F[g+2576>>2];h=F[g+2496>>2];d=f+h|0;k=F[g+2580>>2];e=k+F[g+2500>>2]|0;e=d>>>0>>0?e+1|0:e;h=se(f,k,18,0);f=h+d|0;d=$+e|0;F[g+2496>>2]=f;F[g+2500>>2]=f>>>0>>0?d+1|0:d;e=F[g+2568>>2];h=F[g+2488>>2];d=e+h|0;k=F[g+2572>>2];f=k+F[g+2492>>2]|0;f=d>>>0>>0?f+1|0:f;h=se(e,k,18,0);d=h+d|0;e=$+f|0;F[g+2488>>2]=d;F[g+2492>>2]=d>>>0>>0?e+1|0:e;e=F[g+2560>>2];h=F[g+2480>>2];f=e+h|0;k=F[g+2564>>2];d=k+F[g+2484>>2]|0;d=f>>>0>>0?d+1|0:d;h=se(e,k,18,0);f=h+f|0;e=$+d|0;F[g+2480>>2]=f;F[g+2484>>2]=f>>>0>>0?e+1|0:e;e=F[g+2552>>2];h=F[g+2472>>2];f=e+h|0;k=F[g+2556>>2];d=k+F[g+2476>>2]|0;d=f>>>0>>0?d+1|0:d;h=se(e,k,18,0);e=h+f|0;f=$+d|0;F[g+2472>>2]=e;F[g+2476>>2]=e>>>0>>0?f+1|0:f;f=F[g+2544>>2];h=F[g+2464>>2];d=f+h|0;k=F[g+2548>>2];e=k+F[g+2468>>2]|0;e=d>>>0>>0?e+1|0:e;h=se(f,k,18,0);f=h+d|0;d=$+e|0;F[g+2464>>2]=f;F[g+2468>>2]=f>>>0>>0?d+1|0:d;f=F[g+2536>>2];h=F[g+2456>>2];d=f+h|0;k=F[g+2540>>2];e=k+F[g+2460>>2]|0;e=d>>>0>>0?e+1|0:e;h=se(f,k,18,0);f=h+d|0;d=$+e|0;F[g+2456>>2]=f;F[g+2460>>2]=f>>>0>>0?d+1|0:d;e=F[g+2528>>2];h=F[g+2448>>2];d=e+h|0;k=F[g+2532>>2];f=k+F[g+2452>>2]|0;f=d>>>0>>0?f+1|0:f;h=se(e,k,18,0);d=h+d|0;e=$+f|0;F[g+2448>>2]=d;F[g+2452>>2]=d>>>0>>0?e+1|0:e;e=F[g+2520>>2];h=F[g+2440>>2];f=e+h|0;k=F[g+2524>>2];d=k+F[g+2444>>2]|0;d=f>>>0>>0?d+1|0:d;h=se(e,k,18,0);f=h+f|0;e=$+d|0;F[g+2440>>2]=f;F[g+2444>>2]=f>>>0>>0?e+1|0:e;e=F[g+2512>>2];h=F[g+2432>>2];f=e+h|0;k=F[g+2516>>2];d=k+F[g+2436>>2]|0;d=f>>>0>>0?d+1|0:d;h=se(e,k,18,0);e=h+f|0;f=$+d|0;F[g+2432>>2]=e;F[g+2436>>2]=e>>>0>>0?f+1|0:f;wa(n);d=g+1792|0;ja(d,n,80);ga(b,d);ta(n,b,i);f=F[g+2576>>2];h=F[g+2496>>2];d=f+h|0;i=F[g+2580>>2];e=i+F[g+2500>>2]|0;e=d>>>0>>0?e+1|0:e;h=se(f,i,18,0);f=h+d|0;d=$+e|0;F[g+2496>>2]=f;F[g+2500>>2]=f>>>0>>0?d+1|0:d;f=F[g+2568>>2];h=F[g+2488>>2];d=f+h|0;i=F[g+2572>>2];e=i+F[g+2492>>2]|0;e=d>>>0>>0?e+1|0:e;h=se(f,i,18,0);f=h+d|0;d=$+e|0;F[g+2488>>2]=f;F[g+2492>>2]=f>>>0>>0?d+1|0:d;e=F[g+2560>>2];h=F[g+2480>>2];d=e+h|0;i=F[g+2564>>2];f=i+F[g+2484>>2]|0;f=d>>>0>>0?f+1|0:f;h=se(e,i,18,0);d=h+d|0;e=$+f|0;F[g+2480>>2]=d;F[g+2484>>2]=d>>>0>>0?e+1|0:e;e=F[g+2552>>2];h=F[g+2472>>2];f=e+h|0;i=F[g+2556>>2];d=i+F[g+2476>>2]|0;d=f>>>0>>0?d+1|0:d;h=se(e,i,18,0);f=h+f|0;e=$+d|0;F[g+2472>>2]=f;F[g+2476>>2]=f>>>0>>0?e+1|0:e;e=F[g+2544>>2];h=F[g+2464>>2];f=e+h|0;i=F[g+2548>>2];d=i+F[g+2468>>2]|0;d=f>>>0>>0?d+1|0:d;h=se(e,i,18,0);e=h+f|0;f=$+d|0;F[g+2464>>2]=e;F[g+2468>>2]=e>>>0>>0?f+1|0:f;f=F[g+2536>>2];h=F[g+2456>>2];d=f+h|0;i=F[g+2540>>2];e=i+F[g+2460>>2]|0;e=d>>>0>>0?e+1|0:e;h=se(f,i,18,0);f=h+d|0;d=$+e|0;F[g+2456>>2]=f;F[g+2460>>2]=f>>>0>>0?d+1|0:d;f=F[g+2528>>2];h=F[g+2448>>2];d=f+h|0;i=F[g+2532>>2];e=i+F[g+2452>>2]|0;e=d>>>0>>0?e+1|0:e;h=se(f,i,18,0);f=h+d|0;d=$+e|0;F[g+2448>>2]=f;F[g+2452>>2]=f>>>0>>0?d+1|0:d;e=F[g+2520>>2];h=F[g+2440>>2];d=e+h|0;i=F[g+2524>>2];f=i+F[g+2444>>2]|0;f=d>>>0>>0?f+1|0:f;h=se(e,i,18,0);d=h+d|0;e=$+f|0;F[g+2440>>2]=d;F[g+2444>>2]=d>>>0>>0?e+1|0:e;e=F[g+2512>>2];h=F[g+2432>>2];f=e+h|0;i=F[g+2516>>2];d=i+F[g+2436>>2]|0;d=f>>>0>>0?d+1|0:d;h=se(e,i,18,0);f=h+f|0;e=$+d|0;F[g+2432>>2]=f;F[g+2436>>2]=f>>>0>>0?e+1|0:e;wa(n);d=g+1632|0;ja(d,n,80);ga(b,d);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ta(n,b,d);e=F[g+2576>>2];h=F[g+2496>>2];f=e+h|0;i=F[g+2580>>2];d=i+F[g+2500>>2]|0;d=f>>>0>>0?d+1|0:d;h=se(e,i,18,0);e=h+f|0;f=$+d|0;F[g+2496>>2]=e;F[g+2500>>2]=e>>>0>>0?f+1|0:f;f=F[g+2568>>2];h=F[g+2488>>2];d=f+h|0;i=F[g+2572>>2];e=i+F[g+2492>>2]|0;e=d>>>0>>0?e+1|0:e;h=se(f,i,18,0);f=h+d|0;d=$+e|0;F[g+2488>>2]=f;F[g+2492>>2]=f>>>0>>0?d+1|0:d;f=F[g+2560>>2];h=F[g+2480>>2];d=f+h|0;i=F[g+2564>>2];e=i+F[g+2484>>2]|0;e=d>>>0>>0?e+1|0:e;h=se(f,i,18,0);f=h+d|0;d=$+e|0;F[g+2480>>2]=f;F[g+2484>>2]=f>>>0>>0?d+1|0:d;e=F[g+2552>>2];h=F[g+2472>>2];d=e+h|0;i=F[g+2556>>2];f=i+F[g+2476>>2]|0;f=d>>>0>>0?f+1|0:f;h=se(e,i,18,0);d=h+d|0;e=$+f|0;F[g+2472>>2]=d;F[g+2476>>2]=d>>>0>>0?e+1|0:e;e=F[g+2544>>2];h=F[g+2464>>2];f=e+h|0;i=F[g+2548>>2];d=i+F[g+2468>>2]|0;d=f>>>0>>0?d+1|0:d;h=se(e,i,18,0);f=h+f|0;e=$+d|0;F[g+2464>>2]=f;F[g+2468>>2]=f>>>0>>0?e+1|0:e;e=F[g+2536>>2];h=F[g+2456>>2];f=e+h|0;i=F[g+2540>>2];d=i+F[g+2460>>2]|0;d=f>>>0>>0?d+1|0:d;h=se(e,i,18,0);e=h+f|0;f=$+d|0;F[g+2456>>2]=e;F[g+2460>>2]=e>>>0>>0?f+1|0:f;f=F[g+2528>>2];h=F[g+2448>>2];d=f+h|0;i=F[g+2532>>2];e=i+F[g+2452>>2]|0;e=d>>>0>>0?e+1|0:e;h=se(f,i,18,0);f=h+d|0;d=$+e|0;F[g+2448>>2]=f;F[g+2452>>2]=f>>>0>>0?d+1|0:d;f=F[g+2520>>2];h=F[g+2440>>2];d=f+h|0;i=F[g+2524>>2];e=i+F[g+2444>>2]|0;e=d>>>0>>0?e+1|0:e;h=se(f,i,18,0);f=h+d|0;d=$+e|0;F[g+2440>>2]=f;F[g+2444>>2]=f>>>0>>0?d+1|0:d;e=F[g+2512>>2];h=F[g+2432>>2];d=e+h|0;i=F[g+2516>>2];f=i+F[g+2436>>2]|0;f=d>>>0>>0?f+1|0:f;h=se(e,i,18,0);d=h+d|0;e=$+f|0;F[g+2432>>2]=d;F[g+2436>>2]=d>>>0>>0?e+1|0:e;wa(n);h=g+1472|0;ja(h,n,80);ga(b,h);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ta(n,c,h);e=F[g+2576>>2];i=F[g+2496>>2];f=e+i|0;k=F[g+2580>>2];d=k+F[g+2500>>2]|0;d=f>>>0>>0?d+1|0:d;i=se(e,k,18,0);f=i+f|0;e=$+d|0;F[g+2496>>2]=f;F[g+2500>>2]=f>>>0>>0?e+1|0:e;e=F[g+2568>>2];i=F[g+2488>>2];f=e+i|0;k=F[g+2572>>2];d=k+F[g+2492>>2]|0;d=f>>>0>>0?d+1|0:d;i=se(e,k,18,0);e=i+f|0;f=$+d|0;F[g+2488>>2]=e;F[g+2492>>2]=e>>>0>>0?f+1|0:f;f=F[g+2560>>2];i=F[g+2480>>2];d=f+i|0;k=F[g+2564>>2];e=k+F[g+2484>>2]|0;e=d>>>0>>0?e+1|0:e;i=se(f,k,18,0);f=i+d|0;d=$+e|0;F[g+2480>>2]=f;F[g+2484>>2]=f>>>0>>0?d+1|0:d;f=F[g+2552>>2];i=F[g+2472>>2];d=f+i|0;k=F[g+2556>>2];e=k+F[g+2476>>2]|0;e=d>>>0>>0?e+1|0:e;i=se(f,k,18,0);f=i+d|0;d=$+e|0;F[g+2472>>2]=f;F[g+2476>>2]=f>>>0>>0?d+1|0:d;e=F[g+2544>>2];i=F[g+2464>>2];d=e+i|0;k=F[g+2548>>2];f=k+F[g+2468>>2]|0;f=d>>>0>>0?f+1|0:f;i=se(e,k,18,0);d=i+d|0;e=$+f|0;F[g+2464>>2]=d;F[g+2468>>2]=d>>>0>>0?e+1|0:e;e=F[g+2536>>2];i=F[g+2456>>2];f=e+i|0;k=F[g+2540>>2];d=k+F[g+2460>>2]|0;d=f>>>0>>0?d+1|0:d;i=se(e,k,18,0);f=i+f|0;e=$+d|0;F[g+2456>>2]=f;F[g+2460>>2]=f>>>0>>0?e+1|0:e;e=F[g+2528>>2];i=F[g+2448>>2];f=e+i|0;k=F[g+2532>>2];d=k+F[g+2452>>2]|0;d=f>>>0>>0?d+1|0:d;i=se(e,k,18,0);e=i+f|0;f=$+d|0;F[g+2448>>2]=e;F[g+2452>>2]=e>>>0>>0?f+1|0:f;f=F[g+2520>>2];i=F[g+2440>>2];d=f+i|0;k=F[g+2524>>2];e=k+F[g+2444>>2]|0;e=d>>>0>>0?e+1|0:e;i=se(f,k,18,0);f=i+d|0;d=$+e|0;F[g+2440>>2]=f;F[g+2444>>2]=f>>>0>>0?d+1|0:d;f=F[g+2512>>2];i=F[g+2432>>2];d=f+i|0;k=F[g+2516>>2];e=k+F[g+2436>>2]|0;e=d>>>0>>0?e+1|0:e;i=se(f,k,18,0);f=i+d|0;d=$+e|0;F[g+2432>>2]=f;F[g+2436>>2]=f>>>0>>0?d+1|0:d;wa(n);d=g+1312|0;ja(d,n,80);ga(b,d);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ta(n,c,d);e=F[g+2576>>2];i=F[g+2496>>2];d=e+i|0;k=F[g+2580>>2];f=k+F[g+2500>>2]|0;f=d>>>0>>0?f+1|0:f;i=se(e,k,18,0);d=i+d|0;e=$+f|0;F[g+2496>>2]=d;F[g+2500>>2]=d>>>0>>0?e+1|0:e;e=F[g+2568>>2];i=F[g+2488>>2];f=e+i|0;k=F[g+2572>>2];d=k+F[g+2492>>2]|0;d=f>>>0>>0?d+1|0:d;i=se(e,k,18,0);f=i+f|0;e=$+d|0;F[g+2488>>2]=f;F[g+2492>>2]=f>>>0>>0?e+1|0:e;e=F[g+2560>>2];i=F[g+2480>>2];f=e+i|0;k=F[g+2564>>2];d=k+F[g+2484>>2]|0;d=f>>>0>>0?d+1|0:d;i=se(e,k,18,0);e=i+f|0;f=$+d|0;F[g+2480>>2]=e;F[g+2484>>2]=e>>>0>>0?f+1|0:f;f=F[g+2552>>2];i=F[g+2472>>2];d=f+i|0;k=F[g+2556>>2];e=k+F[g+2476>>2]|0;e=d>>>0>>0?e+1|0:e;i=se(f,k,18,0);f=i+d|0;d=$+e|0;F[g+2472>>2]=f;F[g+2476>>2]=f>>>0>>0?d+1|0:d;f=F[g+2544>>2];i=F[g+2464>>2];d=f+i|0;k=F[g+2548>>2];e=k+F[g+2468>>2]|0;e=d>>>0>>0?e+1|0:e;i=se(f,k,18,0);f=i+d|0;d=$+e|0;F[g+2464>>2]=f;F[g+2468>>2]=f>>>0>>0?d+1|0:d;e=F[g+2536>>2];i=F[g+2456>>2];d=e+i|0;k=F[g+2540>>2];f=k+F[g+2460>>2]|0;f=d>>>0>>0?f+1|0:f;i=se(e,k,18,0);d=i+d|0;e=$+f|0;F[g+2456>>2]=d;F[g+2460>>2]=d>>>0>>0?e+1|0:e;e=F[g+2528>>2];i=F[g+2448>>2];f=e+i|0;k=F[g+2532>>2];d=k+F[g+2452>>2]|0;d=f>>>0>>0?d+1|0:d;i=se(e,k,18,0);f=i+f|0;e=$+d|0;F[g+2448>>2]=f;F[g+2452>>2]=f>>>0>>0?e+1|0:e;e=F[g+2520>>2];i=F[g+2440>>2];f=e+i|0;k=F[g+2524>>2];d=k+F[g+2444>>2]|0;d=f>>>0>>0?d+1|0:d;i=se(e,k,18,0);e=i+f|0;f=$+d|0;F[g+2440>>2]=e;F[g+2444>>2]=e>>>0>>0?f+1|0:f;f=F[g+2512>>2];i=F[g+2432>>2];d=f+i|0;k=F[g+2516>>2];e=k+F[g+2436>>2]|0;e=d>>>0>>0?e+1|0:e;i=se(f,k,18,0);f=i+d|0;d=$+e|0;F[g+2432>>2]=f;F[g+2436>>2]=f>>>0>>0?d+1|0:d;wa(n);ja(b,n,80);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ta(n,b,h);f=F[g+2576>>2];h=F[g+2496>>2];d=f+h|0;i=F[g+2580>>2];e=i+F[g+2500>>2]|0;e=d>>>0>>0?e+1|0:e;h=se(f,i,18,0);f=h+d|0;d=$+e|0;F[g+2496>>2]=f;F[g+2500>>2]=f>>>0>>0?d+1|0:d;e=F[g+2568>>2];h=F[g+2488>>2];d=e+h|0;i=F[g+2572>>2];f=i+F[g+2492>>2]|0;f=d>>>0>>0?f+1|0:f;h=se(e,i,18,0);d=h+d|0;e=$+f|0;F[g+2488>>2]=d;F[g+2492>>2]=d>>>0>>0?e+1|0:e;e=F[g+2560>>2];h=F[g+2480>>2];f=e+h|0;i=F[g+2564>>2];d=i+F[g+2484>>2]|0;d=f>>>0>>0?d+1|0:d;h=se(e,i,18,0);f=h+f|0;e=$+d|0;F[g+2480>>2]=f;F[g+2484>>2]=f>>>0>>0?e+1|0:e;e=F[g+2552>>2];h=F[g+2472>>2];f=e+h|0;i=F[g+2556>>2];d=i+F[g+2476>>2]|0;d=f>>>0>>0?d+1|0:d;h=se(e,i,18,0);e=h+f|0;f=$+d|0;F[g+2472>>2]=e;F[g+2476>>2]=e>>>0>>0?f+1|0:f;f=F[g+2544>>2];h=F[g+2464>>2];d=f+h|0;i=F[g+2548>>2];e=i+F[g+2468>>2]|0;e=d>>>0>>0?e+1|0:e;h=se(f,i,18,0);f=h+d|0;d=$+e|0;F[g+2464>>2]=f;F[g+2468>>2]=f>>>0>>0?d+1|0:d;f=F[g+2536>>2];h=F[g+2456>>2];d=f+h|0;i=F[g+2540>>2];e=i+F[g+2460>>2]|0;e=d>>>0>>0?e+1|0:e;h=se(f,i,18,0);f=h+d|0;d=$+e|0;F[g+2456>>2]=f;F[g+2460>>2]=f>>>0>>0?d+1|0:d;e=F[g+2528>>2];h=F[g+2448>>2];d=e+h|0;i=F[g+2532>>2];f=i+F[g+2452>>2]|0;f=d>>>0>>0?f+1|0:f;h=se(e,i,18,0);d=h+d|0;e=$+f|0;F[g+2448>>2]=d;F[g+2452>>2]=d>>>0>>0?e+1|0:e;e=F[g+2520>>2];h=F[g+2440>>2];f=e+h|0;i=F[g+2524>>2];d=i+F[g+2444>>2]|0;d=f>>>0>>0?d+1|0:d;h=se(e,i,18,0);f=h+f|0;e=$+d|0;F[g+2440>>2]=f;F[g+2444>>2]=f>>>0>>0?e+1|0:e;e=F[g+2512>>2];h=F[g+2432>>2];f=e+h|0;i=F[g+2516>>2];d=i+F[g+2436>>2]|0;d=f>>>0>>0?d+1|0:d;h=se(e,i,18,0);e=h+f|0;f=$+d|0;F[g+2432>>2]=e;F[g+2436>>2]=e>>>0>>0?f+1|0:f;wa(n);d=g+1152|0;ja(d,n,80);ga(b,d);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ta(n,c,d);f=F[g+2576>>2];h=F[g+2496>>2];d=f+h|0;i=F[g+2580>>2];e=i+F[g+2500>>2]|0;e=d>>>0>>0?e+1|0:e;h=se(f,i,18,0);f=h+d|0;d=$+e|0;F[g+2496>>2]=f;F[g+2500>>2]=f>>>0>>0?d+1|0:d;f=F[g+2568>>2];h=F[g+2488>>2];d=f+h|0;i=F[g+2572>>2];e=i+F[g+2492>>2]|0;e=d>>>0>>0?e+1|0:e;h=se(f,i,18,0);f=h+d|0;d=$+e|0;F[g+2488>>2]=f;F[g+2492>>2]=f>>>0>>0?d+1|0:d;e=F[g+2560>>2];h=F[g+2480>>2];d=e+h|0;i=F[g+2564>>2];f=i+F[g+2484>>2]|0;f=d>>>0>>0?f+1|0:f;h=se(e,i,18,0);d=h+d|0;e=$+f|0;F[g+2480>>2]=d;F[g+2484>>2]=d>>>0>>0?e+1|0:e;e=F[g+2552>>2];h=F[g+2472>>2];f=e+h|0;i=F[g+2556>>2];d=i+F[g+2476>>2]|0;d=f>>>0>>0?d+1|0:d;h=se(e,i,18,0);f=h+f|0;e=$+d|0;F[g+2472>>2]=f;F[g+2476>>2]=f>>>0>>0?e+1|0:e;e=F[g+2544>>2];h=F[g+2464>>2];f=e+h|0;i=F[g+2548>>2];d=i+F[g+2468>>2]|0;d=f>>>0>>0?d+1|0:d;h=se(e,i,18,0);e=h+f|0;f=$+d|0;F[g+2464>>2]=e;F[g+2468>>2]=e>>>0>>0?f+1|0:f;f=F[g+2536>>2];h=F[g+2456>>2];d=f+h|0;i=F[g+2540>>2];e=i+F[g+2460>>2]|0;e=d>>>0>>0?e+1|0:e;h=se(f,i,18,0);f=h+d|0;d=$+e|0;F[g+2456>>2]=f;F[g+2460>>2]=f>>>0>>0?d+1|0:d;f=F[g+2528>>2];h=F[g+2448>>2];d=f+h|0;i=F[g+2532>>2];e=i+F[g+2452>>2]|0;e=d>>>0>>0?e+1|0:e;h=se(f,i,18,0);f=h+d|0;d=$+e|0;F[g+2448>>2]=f;F[g+2452>>2]=f>>>0>>0?d+1|0:d;e=F[g+2520>>2];h=F[g+2440>>2];d=e+h|0;i=F[g+2524>>2];f=i+F[g+2444>>2]|0;f=d>>>0>>0?f+1|0:f;h=se(e,i,18,0);d=h+d|0;e=$+f|0;F[g+2440>>2]=d;F[g+2444>>2]=d>>>0>>0?e+1|0:e;e=F[g+2512>>2];h=F[g+2432>>2];f=e+h|0;i=F[g+2516>>2];d=i+F[g+2436>>2]|0;d=f>>>0>>0?d+1|0:d;h=se(e,i,18,0);f=h+f|0;e=$+d|0;F[g+2432>>2]=f;F[g+2436>>2]=f>>>0>>0?e+1|0:e;wa(n);d=g+992|0;ja(d,n,80);ga(c,d);ga(b,c);c=2;while(1){b=c>>>0<98;d=g+672|0;f=g+832|0;ga(d,f);ga(f,d);c=c+2|0;if(b){continue}break}n=g+2432|0;c=g+832|0;ta(n,c,g+992|0);f=F[g+2576>>2];e=F[g+2496>>2];b=f+e|0;h=F[g+2580>>2];d=h+F[g+2500>>2]|0;d=b>>>0>>0?d+1|0:d;e=se(f,h,18,0);b=e+b|0;f=$+d|0;F[g+2496>>2]=b;F[g+2500>>2]=b>>>0>>0?f+1|0:f;d=F[g+2568>>2];f=F[g+2488>>2];b=d+f|0;h=F[g+2572>>2];e=h+F[g+2492>>2]|0;e=b>>>0>>0?e+1|0:e;f=se(d,h,18,0);b=f+b|0;d=$+e|0;F[g+2488>>2]=b;F[g+2492>>2]=b>>>0>>0?d+1|0:d;d=F[g+2560>>2];f=F[g+2480>>2];b=d+f|0;h=F[g+2564>>2];e=h+F[g+2484>>2]|0;e=b>>>0>>0?e+1|0:e;f=se(d,h,18,0);b=f+b|0;d=$+e|0;F[g+2480>>2]=b;F[g+2484>>2]=b>>>0>>0?d+1|0:d;d=F[g+2552>>2];e=F[g+2472>>2];b=d+e|0;h=F[g+2556>>2];f=h+F[g+2476>>2]|0;f=b>>>0>>0?f+1|0:f;d=se(d,h,18,0);b=d+b|0;e=$+f|0;F[g+2472>>2]=b;F[g+2476>>2]=b>>>0>>0?e+1|0:e;f=F[g+2544>>2];e=F[g+2464>>2];b=f+e|0;h=F[g+2548>>2];d=h+F[g+2468>>2]|0;d=b>>>0>>0?d+1|0:d;f=se(f,h,18,0);b=f+b|0;e=$+d|0;F[g+2464>>2]=b;F[g+2468>>2]=b>>>0>>0?e+1|0:e;f=F[g+2536>>2];e=F[g+2456>>2];b=f+e|0;h=F[g+2540>>2];d=h+F[g+2460>>2]|0;d=b>>>0>>0?d+1|0:d;e=se(f,h,18,0);b=e+b|0;f=$+d|0;F[g+2456>>2]=b;F[g+2460>>2]=b>>>0>>0?f+1|0:f;d=F[g+2528>>2];f=F[g+2448>>2];b=d+f|0;h=F[g+2532>>2];e=h+F[g+2452>>2]|0;e=b>>>0>>0?e+1|0:e;f=se(d,h,18,0);b=f+b|0;d=$+e|0;F[g+2448>>2]=b;F[g+2452>>2]=b>>>0>>0?d+1|0:d;d=F[g+2520>>2];f=F[g+2440>>2];b=d+f|0;h=F[g+2524>>2];e=h+F[g+2444>>2]|0;e=b>>>0>>0?e+1|0:e;f=se(d,h,18,0);b=f+b|0;d=$+e|0;F[g+2440>>2]=b;F[g+2444>>2]=b>>>0>>0?d+1|0:d;d=F[g+2512>>2];e=F[g+2432>>2];b=d+e|0;h=F[g+2516>>2];f=h+F[g+2436>>2]|0;f=b>>>0>>0?f+1|0:f;d=se(d,h,18,0);b=d+b|0;e=$+f|0;F[g+2432>>2]=b;F[g+2436>>2]=b>>>0>>0?e+1|0:e;wa(n);b=g+672|0;ja(b,n,80);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ta(n,b,g+1152|0);e=F[g+2576>>2];h=F[g+2496>>2];f=e+h|0;i=F[g+2580>>2];d=i+F[g+2500>>2]|0;d=f>>>0>>0?d+1|0:d;h=se(e,i,18,0);f=h+f|0;e=$+d|0;F[g+2496>>2]=f;F[g+2500>>2]=f>>>0>>0?e+1|0:e;e=F[g+2568>>2];h=F[g+2488>>2];f=e+h|0;i=F[g+2572>>2];d=i+F[g+2492>>2]|0;d=f>>>0>>0?d+1|0:d;h=se(e,i,18,0);e=h+f|0;f=$+d|0;F[g+2488>>2]=e;F[g+2492>>2]=e>>>0>>0?f+1|0:f;f=F[g+2560>>2];h=F[g+2480>>2];d=f+h|0;i=F[g+2564>>2];e=i+F[g+2484>>2]|0;e=d>>>0>>0?e+1|0:e;h=se(f,i,18,0);f=h+d|0;d=$+e|0;F[g+2480>>2]=f;F[g+2484>>2]=f>>>0>>0?d+1|0:d;f=F[g+2552>>2];h=F[g+2472>>2];d=f+h|0;i=F[g+2556>>2];e=i+F[g+2476>>2]|0;e=d>>>0>>0?e+1|0:e;h=se(f,i,18,0);f=h+d|0;d=$+e|0;F[g+2472>>2]=f;F[g+2476>>2]=f>>>0>>0?d+1|0:d;e=F[g+2544>>2];h=F[g+2464>>2];d=e+h|0;i=F[g+2548>>2];f=i+F[g+2468>>2]|0;f=d>>>0>>0?f+1|0:f;h=se(e,i,18,0);d=h+d|0;e=$+f|0;F[g+2464>>2]=d;F[g+2468>>2]=d>>>0>>0?e+1|0:e;e=F[g+2536>>2];h=F[g+2456>>2];f=e+h|0;i=F[g+2540>>2];d=i+F[g+2460>>2]|0;d=f>>>0>>0?d+1|0:d;h=se(e,i,18,0);f=h+f|0;e=$+d|0;F[g+2456>>2]=f;F[g+2460>>2]=f>>>0>>0?e+1|0:e;e=F[g+2528>>2];h=F[g+2448>>2];f=e+h|0;i=F[g+2532>>2];d=i+F[g+2452>>2]|0;d=f>>>0>>0?d+1|0:d;h=se(e,i,18,0);e=h+f|0;f=$+d|0;F[g+2448>>2]=e;F[g+2452>>2]=e>>>0>>0?f+1|0:f;f=F[g+2520>>2];h=F[g+2440>>2];d=f+h|0;i=F[g+2524>>2];e=i+F[g+2444>>2]|0;e=d>>>0>>0?e+1|0:e;h=se(f,i,18,0);f=h+d|0;d=$+e|0;F[g+2440>>2]=f;F[g+2444>>2]=f>>>0>>0?d+1|0:d;f=F[g+2512>>2];h=F[g+2432>>2];d=f+h|0;i=F[g+2516>>2];e=i+F[g+2436>>2]|0;e=d>>>0>>0?e+1|0:e;h=se(f,i,18,0);f=h+d|0;d=$+e|0;F[g+2432>>2]=f;F[g+2436>>2]=f>>>0>>0?d+1|0:d;wa(n);ja(c,n,80);ga(b,c);ga(c,b);ga(b,c);ga(c,b);ga(b,c);ta(n,b,g+1792|0);c=F[g+2576>>2];d=F[g+2496>>2];b=c+d|0;e=F[g+2580>>2];f=e+F[g+2500>>2]|0;f=b>>>0>>0?f+1|0:f;c=se(c,e,18,0);b=c+b|0;e=$+f|0;F[g+2496>>2]=b;F[g+2500>>2]=b>>>0>>0?e+1|0:e;c=F[g+2568>>2];f=F[g+2488>>2];b=c+f|0;e=F[g+2572>>2];d=e+F[g+2492>>2]|0;d=b>>>0>>0?d+1|0:d;c=se(c,e,18,0);b=c+b|0;e=$+d|0;F[g+2488>>2]=b;F[g+2492>>2]=b>>>0>>0?e+1|0:e;c=F[g+2560>>2];f=F[g+2480>>2];b=c+f|0;e=F[g+2564>>2];d=e+F[g+2484>>2]|0;d=b>>>0>>0?d+1|0:d;c=se(c,e,18,0);b=c+b|0;f=$+d|0;F[g+2480>>2]=b;F[g+2484>>2]=b>>>0>>0?f+1|0:f;c=F[g+2552>>2];d=F[g+2472>>2];b=c+d|0;f=F[g+2556>>2];e=f+F[g+2476>>2]|0;e=b>>>0>>0?e+1|0:e;c=se(c,f,18,0);b=c+b|0;d=$+e|0;F[g+2472>>2]=b;F[g+2476>>2]=b>>>0>>0?d+1|0:d;c=F[g+2544>>2];d=F[g+2464>>2];b=c+d|0;f=F[g+2548>>2];e=f+F[g+2468>>2]|0;e=b>>>0>>0?e+1|0:e;c=se(c,f,18,0);b=c+b|0;d=$+e|0;F[g+2464>>2]=b;F[g+2468>>2]=b>>>0>>0?d+1|0:d;c=F[g+2536>>2];d=F[g+2456>>2];b=c+d|0;e=F[g+2540>>2];f=e+F[g+2460>>2]|0;f=b>>>0>>0?f+1|0:f;c=se(c,e,18,0);b=c+b|0;e=$+f|0;F[g+2456>>2]=b;F[g+2460>>2]=b>>>0>>0?e+1|0:e;c=F[g+2528>>2];f=F[g+2448>>2];b=c+f|0;e=F[g+2532>>2];d=e+F[g+2452>>2]|0;d=b>>>0>>0?d+1|0:d;c=se(c,e,18,0);b=c+b|0;e=$+d|0;F[g+2448>>2]=b;F[g+2452>>2]=b>>>0>>0?e+1|0:e;c=F[g+2520>>2];f=F[g+2440>>2];b=c+f|0;e=F[g+2524>>2];d=e+F[g+2444>>2]|0;d=b>>>0>>0?d+1|0:d;c=se(c,e,18,0);b=c+b|0;f=$+d|0;F[g+2440>>2]=b;F[g+2444>>2]=b>>>0>>0?f+1|0:f;c=F[g+2512>>2];d=F[g+2432>>2];b=c+d|0;f=F[g+2516>>2];e=f+F[g+2436>>2]|0;e=b>>>0>>0?e+1|0:e;c=se(c,f,18,0);b=c+b|0;d=$+e|0;F[g+2432>>2]=b;F[g+2436>>2]=b>>>0>>0?d+1|0:d;wa(n);b=g+512|0;ja(b,n,80);ta(n,g+32|0,b);c=F[g+2576>>2];d=F[g+2496>>2];b=c+d|0;f=F[g+2580>>2];e=f+F[g+2500>>2]|0;e=b>>>0>>0?e+1|0:e;c=se(c,f,18,0);b=c+b|0;d=$+e|0;F[g+2496>>2]=b;F[g+2500>>2]=b>>>0>>0?d+1|0:d;c=F[g+2568>>2];d=F[g+2488>>2];b=c+d|0;e=F[g+2572>>2];f=e+F[g+2492>>2]|0;f=b>>>0>>0?f+1|0:f;c=se(c,e,18,0);b=c+b|0;e=$+f|0;F[g+2488>>2]=b;F[g+2492>>2]=b>>>0>>0?e+1|0:e;c=F[g+2560>>2];f=F[g+2480>>2];b=c+f|0;e=F[g+2564>>2];d=e+F[g+2484>>2]|0;d=b>>>0>>0?d+1|0:d;c=se(c,e,18,0);b=c+b|0;e=$+d|0;F[g+2480>>2]=b;F[g+2484>>2]=b>>>0>>0?e+1|0:e;c=F[g+2552>>2];f=F[g+2472>>2];b=c+f|0;e=F[g+2556>>2];d=e+F[g+2476>>2]|0;d=b>>>0>>0?d+1|0:d;c=se(c,e,18,0);b=c+b|0;f=$+d|0;F[g+2472>>2]=b;F[g+2476>>2]=b>>>0>>0?f+1|0:f;c=F[g+2544>>2];d=F[g+2464>>2];b=c+d|0;f=F[g+2548>>2];e=f+F[g+2468>>2]|0;e=b>>>0>>0?e+1|0:e;c=se(c,f,18,0);b=c+b|0;d=$+e|0;F[g+2464>>2]=b;F[g+2468>>2]=b>>>0>>0?d+1|0:d;c=F[g+2536>>2];d=F[g+2456>>2];b=c+d|0;f=F[g+2540>>2];e=f+F[g+2460>>2]|0;e=b>>>0>>0?e+1|0:e;c=se(c,f,18,0);b=c+b|0;d=$+e|0;F[g+2456>>2]=b;F[g+2460>>2]=b>>>0>>0?d+1|0:d;c=F[g+2528>>2];d=F[g+2448>>2];b=c+d|0;e=F[g+2532>>2];f=e+F[g+2452>>2]|0;f=b>>>0>>0?f+1|0:f;c=se(c,e,18,0);b=c+b|0;e=$+f|0;F[g+2448>>2]=b;F[g+2452>>2]=b>>>0>>0?e+1|0:e;c=F[g+2520>>2];f=F[g+2440>>2];b=c+f|0;e=F[g+2524>>2];d=e+F[g+2444>>2]|0;d=b>>>0>>0?d+1|0:d;c=se(c,e,18,0);b=c+b|0;e=$+d|0;F[g+2440>>2]=b;F[g+2444>>2]=b>>>0>>0?e+1|0:e;c=F[g+2512>>2];f=F[g+2432>>2];b=c+f|0;e=F[g+2516>>2];d=e+F[g+2436>>2]|0;d=b>>>0>>0?d+1|0:d;c=se(c,e,18,0);b=c+b|0;f=$+d|0;F[g+2432>>2]=b;F[g+2436>>2]=b>>>0>>0?f+1|0:f;wa(n);ja(g+2272|0,n,80);b=F[g+2272>>2];s=b>>31&b;c=F[g+2280>>2]+(s>>26)|0;w=c>>31&c;d=F[g+2288>>2]+(w>>25)|0;C=d>>31&d;f=F[g+2296>>2]+(C>>26)|0;U=f>>31&f;e=F[g+2304>>2]+(U>>25)|0;m=e>>31&e;n=F[g+2312>>2]+(m>>26)|0;j=n>>31&n;h=F[g+2320>>2]+(j>>25)|0;p=h>>31&h;i=F[g+2328>>2]+(p>>26)|0;o=i>>31&i;k=F[g+2336>>2]+(o>>25)|0;r=k>>31&k;l=F[g+2344>>2]+(r>>26)|0;q=l>>31&l;b=L(q>>25,19)+(b-(s&-67108864)|0)|0;z=b>>31&b;c=(z>>26)+(c-(w&-33554432)|0)|0;s=c>>31&c;u=c-(s&-33554432)|0;y=b-(z&-67108864)|0;q=l-(q&-33554432)|0;b=(d-(C&-67108864)|0)+(s>>25)|0;l=b>>31&b;c=(f-(U&-33554432)|0)+(l>>26)|0;s=c>>31&c;d=(e-(m&-67108864)|0)+(s>>25)|0;w=d>>31&d;f=(n-(j&-33554432)|0)+(w>>26)|0;C=f>>31&f;e=(h-(p&-67108864)|0)+(C>>25)|0;U=e>>31&e;n=(i-(o&-33554432)|0)+(U>>26)|0;m=n>>31&n;h=(k-(r&-67108864)|0)+(m>>25)|0;j=h>>31&h;i=q+(j>>26)|0;p=i>>31&i;k=y+L(p>>25,19)|0;o=k>>31&k;k=k-(o&-67108864)|0;o=(u+(o>>26)|0)+(k>>26)|0;b=(o>>25)+(b-(l&-67108864)|0)|0;l=(b>>26)+(c-(s&-33554432)|0)|0;s=(l>>25)+(d-(w&-67108864)|0)|0;w=(s>>26)+(f-(C&-33554432)|0)|0;C=(w>>25)+(e-(U&-67108864)|0)|0;n=(C>>26)+(n-(m&-33554432)|0)|0;h=(n>>25)+(h-(j&-67108864)|0)|0;i=(h>>26)+(i-(p&-33554432)|0)|0;U=L(i>>25,19)+(k&67108863)|0;c=(U>>26)+(o&33554431)|0;d=(c>>25)+(b&67108863)|0;f=(d>>26)+(l&33554431)|0;e=(f>>25)+(s&67108863)|0;b=(e>>26)+(w&33554431)|0;j=b&33554431;m=i&33554431;p=h&67108863;q=n&33554431;n=(C&67108863)+(b>>25)|0;h=q+(n>>26)|0;i=p+(h>>25)|0;k=m+(i>>26)|0;l=k<<16&(k|-33554432);l=l<<8&l;l=l<<4&l;l=l<<2&l;m=l<<1&l;l=(i|-67108864)&i<<16;l=l<<8&l;l=l<<4&l;l=l<<2&l;m=(m&(l<<1&l))>>31;w=L(k>>25,19)+(U&67108863)|0;l=(c|-33554432)&c<<16;l=l<<8&l;l=l<<4&l;l=l<<2&l;p=(w-67108845>>31^-1)&(l<<1&l)>>31;l=(d|-67108864)&d<<16;l=l<<8&l;l=l<<4&l;l=l<<2&l;p=p&(l<<1&l)>>31;l=(f|-33554432)&f<<16;l=l<<8&l;l=l<<4&l;l=l<<2&l;p=p&(l<<1&l)>>31;l=(e|-67108864)&e<<16;l=l<<8&l;l=l<<4&l;l=l<<2&l;b=(b|-33554432)&b<<16;b=b<<8&b;b=b<<4&b;b=b<<2&b;p=p&(l<<1&l)>>31&(b<<1&b)>>31;b=(n|-67108864)&n<<16;b=b<<8&b;b=b<<4&b;b=b<<2&b;p=p&(b<<1&b)>>31;b=(h|-33554432)&h<<16;b=b<<8&b;b=b<<4&b;b=b<<2&b;l=m&(p&(b<<1&b)>>31);b=l&33554431;s=j-b|0;D[a+16|0]=s;e=e-l|0;D[a+15|0]=e>>>18;D[a+14|0]=e>>>10;D[a+13|0]=e>>>2;w=w-(l&67108845)|0;D[a|0]=w;k=(k&33554431)-b|0;D[a+31|0]=k>>>18;D[a+30|0]=k>>>10;D[a+29|0]=k>>>2;l=l&67108863;i=(i&67108863)-l|0;D[a+27|0]=i>>>12;D[a+26|0]=i>>>4;h=(h&33554431)-b|0;D[a+24|0]=h>>>13;D[a+23|0]=h>>>5;n=(n&67108863)-l|0;D[a+21|0]=n>>>15;D[a+20|0]=n>>>7;D[a+18|0]=s>>>16;D[a+17|0]=s>>>8;f=(f&33554431)-b|0;D[a+11|0]=f>>>11;D[a+10|0]=f>>>3;d=(d&67108863)-l|0;D[a+8|0]=d>>>13;D[a+7|0]=d>>>5;b=(c&33554431)-b|0;D[a+5|0]=b>>>14;D[a+4|0]=b>>>6;D[a+2|0]=w>>>16;D[a+1|0]=w>>>8;D[a+28|0]=k<<6|i>>>20;D[a+25|0]=i<<4|h>>>21;D[a+22|0]=h<<3|n>>>23;D[a+19|0]=n<<1|s>>>24;D[a+12|0]=e<<6|f>>>19;D[a+9|0]=f<<5|d>>>21;D[a+6|0]=d<<3|b>>>22;D[a+3|0]=b<<2|w>>>24;_=g+2592|0}function bb(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,eb=0,fb=0,gb=0,hb=0;h=_-624|0;_=h;F[h+352>>2]=327033209;F[h+356>>2]=1541459225;F[h+344>>2]=-79577749;F[h+348>>2]=528734635;F[h+336>>2]=725511199;F[h+340>>2]=-1694144372;F[h+328>>2]=-1377402159;F[h+332>>2]=1359893119;F[h+320>>2]=1595750129;F[h+324>>2]=-1521486534;F[h+312>>2]=-23791573;F[h+316>>2]=1013904242;F[h+304>>2]=-2067093701;F[h+308>>2]=-1150833019;F[h+360>>2]=0;F[h+296>>2]=-205731576;F[h+300>>2]=1779033703;F[h+288>>2]=0;F[h+292>>2]=0;q=a+32|0;D[h+364|0]=G[q+32|0];D[h+365|0]=G[q+33|0];D[h+366|0]=G[q+34|0];o=h+364|0;D[(o+F[h+360>>2]|0)+3|0]=G[q+35|0];D[(F[h+360>>2]+o|0)+4|0]=G[q+36|0];D[(F[h+360>>2]+o|0)+5|0]=G[q+37|0];D[(F[h+360>>2]+o|0)+6|0]=G[q+38|0];D[(F[h+360>>2]+o|0)+7|0]=G[q+39|0];D[(F[h+360>>2]+o|0)+8|0]=G[q+40|0];D[(F[h+360>>2]+o|0)+9|0]=G[q+41|0];D[(F[h+360>>2]+o|0)+10|0]=G[q+42|0];D[(F[h+360>>2]+o|0)+11|0]=G[q+43|0];D[(F[h+360>>2]+o|0)+12|0]=G[q+44|0];D[(F[h+360>>2]+o|0)+13|0]=G[q+45|0];D[(F[h+360>>2]+o|0)+14|0]=G[q+46|0];D[(F[h+360>>2]+o|0)+15|0]=G[q+47|0];D[(F[h+360>>2]+o|0)+16|0]=G[q+48|0];D[(F[h+360>>2]+o|0)+17|0]=G[q+49|0];D[(F[h+360>>2]+o|0)+18|0]=G[q+50|0];D[(F[h+360>>2]+o|0)+19|0]=G[q+51|0];D[(F[h+360>>2]+o|0)+20|0]=G[q+52|0];D[(F[h+360>>2]+o|0)+21|0]=G[q+53|0];D[(F[h+360>>2]+o|0)+22|0]=G[q+54|0];D[(F[h+360>>2]+o|0)+23|0]=G[q+55|0];D[(F[h+360>>2]+o|0)+24|0]=G[q+56|0];D[(F[h+360>>2]+o|0)+25|0]=G[q+57|0];D[(F[h+360>>2]+o|0)+26|0]=G[q+58|0];D[(F[h+360>>2]+o|0)+27|0]=G[q+59|0];D[(F[h+360>>2]+o|0)+28|0]=G[q+60|0];D[(F[h+360>>2]+o|0)+29|0]=G[q+61|0];D[(F[h+360>>2]+o|0)+30|0]=G[q+62|0];D[(F[h+360>>2]+o|0)+31|0]=G[q+63|0];e=F[h+360>>2]+32|0;F[h+360>>2]=e;if((e|0)==128){ua(h+288|0,o);F[h+360>>2]=0;e=F[h+292>>2];f=F[h+288>>2]+1024|0;e=f>>>0<1024?e+1|0:e;F[h+288>>2]=f;F[h+292>>2]=e}a:{if(!b|!c){break a}i=F[h+360>>2];if(i>>>0>128){break a}g=c;k=b;while(1){b:{if(!(g>>>0<128|i)){ua(h+288|0,k);e=F[h+292>>2];f=F[h+288>>2]+1024|0;e=f>>>0<1024?e+1|0:e;F[h+288>>2]=f;F[h+292>>2]=e;g=g-128|0;k=k+128|0;break b}e=128-i|0;r=e>>>0>g>>>0?g:e;c:{if(!r){break c}l=r&3;n=0;d:{if(r-1>>>0<3){p=0;break d}f=r&-4;p=0;m=0;while(1){e=i+p|0;i=h+364|0;D[e+i|0]=G[k+p|0];e=p|1;D[i+(e+F[h+360>>2]|0)|0]=G[e+k|0];e=p|2;D[i+(e+F[h+360>>2]|0)|0]=G[e+k|0];e=p|3;D[i+(e+F[h+360>>2]|0)|0]=G[e+k|0];p=p+4|0;i=F[h+360>>2];m=m+4|0;if((f|0)!=(m|0)){continue}break}}if(!l){break c}while(1){D[((i+p|0)+h|0)+364|0]=G[k+p|0];p=p+1|0;i=F[h+360>>2];n=n+1|0;if((l|0)!=(n|0)){continue}break}}g=g-r|0;k=k+r|0;e=i+r|0;F[h+360>>2]=e;if((e|0)!=128){break b}ua(h+288|0,o);F[h+360>>2]=0;f=F[h+292>>2];e=F[h+288>>2]+1024|0;f=e>>>0<1024?f+1|0:f;F[h+288>>2]=e;F[h+292>>2]=f}if(!g){break a}i=F[h+360>>2];continue}}e=h+160|0;db(h+288|0,e);mb(e);Nb(h,e);g=h+224|0;nb(g,h+80|0);f=h+544|0;ha(f,h,g);e=h+496|0;ha(e,h+40|0,g);Ga(d,e);Ga(h+592|0,f);D[d+31|0]=G[d+31|0]^G[h+592|0]<<7;F[h+352>>2]=327033209;F[h+356>>2]=1541459225;F[h+344>>2]=-79577749;F[h+348>>2]=528734635;F[h+336>>2]=725511199;F[h+340>>2]=-1694144372;F[h+328>>2]=-1377402159;F[h+332>>2]=1359893119;F[h+320>>2]=1595750129;F[h+324>>2]=-1521486534;F[h+312>>2]=-23791573;F[h+316>>2]=1013904242;F[h+304>>2]=-2067093701;F[h+308>>2]=-1150833019;F[h+296>>2]=-205731576;F[h+300>>2]=1779033703;F[h+288>>2]=0;F[h+292>>2]=0;F[h+360>>2]=0;D[h+364|0]=G[d|0];D[h+365|0]=G[d+1|0];D[h+366|0]=G[d+2|0];D[h+367|0]=G[d+3|0];e=h+364|0;D[(e+F[h+360>>2]|0)+4|0]=G[d+4|0];D[(e+F[h+360>>2]|0)+5|0]=G[d+5|0];D[(e+F[h+360>>2]|0)+6|0]=G[d+6|0];D[(e+F[h+360>>2]|0)+7|0]=G[d+7|0];D[(e+F[h+360>>2]|0)+8|0]=G[d+8|0];D[(e+F[h+360>>2]|0)+9|0]=G[d+9|0];D[(e+F[h+360>>2]|0)+10|0]=G[d+10|0];D[(e+F[h+360>>2]|0)+11|0]=G[d+11|0];D[(e+F[h+360>>2]|0)+12|0]=G[d+12|0];D[(e+F[h+360>>2]|0)+13|0]=G[d+13|0];D[(e+F[h+360>>2]|0)+14|0]=G[d+14|0];D[(e+F[h+360>>2]|0)+15|0]=G[d+15|0];D[(e+F[h+360>>2]|0)+16|0]=G[d+16|0];D[(e+F[h+360>>2]|0)+17|0]=G[d+17|0];D[(e+F[h+360>>2]|0)+18|0]=G[d+18|0];D[(e+F[h+360>>2]|0)+19|0]=G[d+19|0];D[(e+F[h+360>>2]|0)+20|0]=G[d+20|0];D[(e+F[h+360>>2]|0)+21|0]=G[d+21|0];D[(e+F[h+360>>2]|0)+22|0]=G[d+22|0];D[(e+F[h+360>>2]|0)+23|0]=G[d+23|0];D[(e+F[h+360>>2]|0)+24|0]=G[d+24|0];D[(e+F[h+360>>2]|0)+25|0]=G[d+25|0];D[(e+F[h+360>>2]|0)+26|0]=G[d+26|0];D[(e+F[h+360>>2]|0)+27|0]=G[d+27|0];D[(e+F[h+360>>2]|0)+28|0]=G[d+28|0];D[(e+F[h+360>>2]|0)+29|0]=G[d+29|0];D[(e+F[h+360>>2]|0)+30|0]=G[d+30|0];D[(e+F[h+360>>2]|0)+31|0]=G[d+31|0];g=32;e=F[h+360>>2]+32|0;F[h+360>>2]=e;if((e|0)==128){ua(h+288|0,o);F[h+360>>2]=0;e=F[h+292>>2];f=F[h+288>>2]+1024|0;e=f>>>0<1024?e+1|0:e;F[h+288>>2]=f;F[h+292>>2]=e}e:{if(!a){break e}k=F[h+360>>2];if(k>>>0>128){break e}while(1){f:{if(!(g>>>0<128|k)){ua(h+288|0,a);e=F[h+292>>2];f=F[h+288>>2]+1024|0;e=f>>>0<1024?e+1|0:e;F[h+288>>2]=f;F[h+292>>2]=e;g=g-128|0;a=a+128|0;break f}e=128-k|0;i=e>>>0>g>>>0?g:e;g:{if(!i){break g}m=i&3;l=0;h:{if(i-1>>>0<3){p=0;break h}f=i&-4;p=0;n=0;while(1){e=k+p|0;k=h+364|0;D[e+k|0]=G[a+p|0];e=p|1;D[k+(e+F[h+360>>2]|0)|0]=G[a+e|0];e=p|2;D[k+(e+F[h+360>>2]|0)|0]=G[a+e|0];e=p|3;D[k+(e+F[h+360>>2]|0)|0]=G[a+e|0];p=p+4|0;k=F[h+360>>2];n=n+4|0;if((f|0)!=(n|0)){continue}break}}if(!m){break g}while(1){D[((k+p|0)+h|0)+364|0]=G[a+p|0];p=p+1|0;k=F[h+360>>2];l=l+1|0;if((m|0)!=(l|0)){continue}break}}g=g-i|0;a=a+i|0;e=i+k|0;F[h+360>>2]=e;if((e|0)!=128){break f}ua(h+288|0,o);F[h+360>>2]=0;f=F[h+292>>2];e=F[h+288>>2]+1024|0;f=e>>>0<1024?f+1|0:f;F[h+288>>2]=e;F[h+292>>2]=f}if(!g){break e}k=F[h+360>>2];continue}}i:{if(!b|!c){break i}a=F[h+360>>2];if(a>>>0>128){break i}while(1){j:{if(!(c>>>0<128|a)){ua(h+288|0,b);e=F[h+292>>2];a=F[h+288>>2]+1024|0;e=a>>>0<1024?e+1|0:e;F[h+288>>2]=a;F[h+292>>2]=e;c=c-128|0;b=b+128|0;break j}e=128-a|0;k=c>>>0>>0?c:e;k:{if(!k){break k}f=k&3;i=0;l:{if(k-1>>>0<3){p=0;break l}e=k&-4;p=0;l=0;while(1){g=h+364|0;D[g+(a+p|0)|0]=G[b+p|0];a=p|1;D[g+(a+F[h+360>>2]|0)|0]=G[a+b|0];a=p|2;D[g+(a+F[h+360>>2]|0)|0]=G[a+b|0];a=p|3;D[g+(a+F[h+360>>2]|0)|0]=G[a+b|0];p=p+4|0;a=F[h+360>>2];l=l+4|0;if((e|0)!=(l|0)){continue}break}}if(!f){break k}while(1){D[((a+p|0)+h|0)+364|0]=G[b+p|0];p=p+1|0;a=F[h+360>>2];i=i+1|0;if((f|0)!=(i|0)){continue}break}}c=c-k|0;b=b+k|0;a=a+k|0;F[h+360>>2]=a;if((a|0)!=128){break j}ua(h+288|0,o);F[h+360>>2]=0;e=F[h+292>>2];a=F[h+288>>2]+1024|0;e=a>>>0<1024?e+1|0:e;F[h+288>>2]=a;F[h+292>>2]=e}if(!c){break i}a=F[h+360>>2];continue}}t=h+224|0;db(h+288|0,t);mb(t);b=G[q+24|0];a=b>>>24|0;f=G[q+23|0];c=f|b<<8;b=a;e=c;c=G[q+25|0];a=c>>>16|0;g=e|c<<16;e=a|b;r=G[q+26|0];c=r;a=c>>>8|0;c=c<<24;e=a|e;a=c|g;L=((e&31)<<27|a>>>5)&2097151;c=G[t+27|0];a=c>>>24|0;g=G[t+26|0];c=g|c<<8;i=G[t+28|0];b=i;e=b>>>16|0;b=b<<16;e=a|e;a=b|c;N=((e&3)<<30|a>>>2)&2097151;l=se(L,0,N,0);m=$;c=0;x=c;O=f<<16&2031616|(G[q+21|0]|G[q+22|0]<<8);k=O;b=G[t+29|0];a=b>>>24|0;e=i|b<<8;b=a;c=e;e=G[t+30|0];a=e>>>16|0;f=c|e<<16;e=a|b;b=G[t+31|0];a=b>>>8|0;b=b<<24;c=a|e;a=b|f;P=(c&127)<<25|a>>>7;Q=c>>>7|0;a=se(k,x,P,Q);b=a+l|0;f=$+m|0;n=b;b=a>>>0>b>>>0?f+1|0:f;a=G[q+27|0];f=a>>>24|0;i=G[q+28|0];c=i;e=c>>>16|0;c=r|a<<8|c<<16;e=e|f;R=((e&3)<<30|c>>>2)&2097151;l=R;e=0;a=G[t+24|0];f=a>>>24|0;k=G[t+23|0];m=k|a<<8;c=G[t+25|0];a=c>>>16|0;m=m|c<<16;c=a|f|g>>>8;S=((c&31)<<27|(g<<24|m)>>>5)&2097151;a=se(l,e,S,0);c=a+n|0;e=$+b|0;m=c;g=a>>>0>c>>>0?e+1|0:e;a=G[q+29|0];e=a>>>24|0;b=i|a<<8;a=e;c=b;b=G[q+30|0];e=b>>>16|0;c=c|b<<16;b=a|e;a=G[q+31|0];e=a>>>8|0;a=a<<24|c;b=b|e;f=b>>>7|0;c=(b&127)<<25|a>>>7;b=f;T=k<<16&2031616|(G[t+21|0]|G[t+22|0]<<8);e=se(c,f,T,0);f=e+m|0;a=$+g|0;l=f;m=e>>>0>f>>>0?a+1|0:a;f=se(O,x,N,x);k=$;a=G[q+19|0];e=a>>>24|0;p=G[q+18|0];g=p|a<<8;a=e;n=f;f=G[q+20|0];e=f>>>16|0;f=f<<16;i=a|e;e=f|g;U=(i&7)<<29|e>>>3;H=i>>>3|0;e=se(U,H,P,Q);f=n+e|0;a=$+k|0;a=e>>>0>f>>>0?a+1|0:a;e=se(L,x,S,j);g=e+f|0;f=$+a|0;f=e>>>0>g>>>0?f+1|0:f;a=se(R,j,T,j);g=a+g|0;e=$+f|0;f=g;g=a>>>0>f>>>0?e+1|0:e;e=G[t+19|0];a=e>>>24|0;o=G[t+18|0];k=o|e<<8;i=f;e=G[t+20|0];f=e>>>16|0;e=e<<16;f=a|f;a=e|k;V=(f&7)<<29|a>>>3;W=f>>>3|0;a=se(c,b,V,W);f=i+a|0;e=$+g|0;k=f;e=a>>>0>f>>>0?e+1|0:e;r=e;n=e-((f>>>0<4293918720)-1|0)|0;e=n>>21;u=f- -1048576|0;a=(n&2097151)<<11|u>>>21;g=a+l|0;f=e+m|0;f=a>>>0>g>>>0?f+1|0:f;i=f;l=f-((g>>>0<4293918720)-1|0)|0;e=l>>21;s=g- -1048576|0;z=(l&2097151)<<11|s>>>21;m=e;a=se(N,x,R,j);e=$;f=a;a=se(L,x,P,Q);f=f+a|0;e=$+e|0;e=a>>>0>f>>>0?e+1|0:e;a=f;f=se(S,j,c,b);v=a+f|0;a=$+e|0;a=f>>>0>v>>>0?a+1|0:a;f=z;e=v;w=e- -1048576|0;v=w&-2097152;z=e-v|0;y=f+z|0;f=a-((e>>>0<4293918720)-1|0)|0;e=(a-((f&2147483647)+(e>>>0>>0)|0)|0)+m|0;Da=y;e=y>>>0>>0?e+1|0:e;Ea=e;y=se(y,e,470296,0);v=$;e=se(N,x,c,b);a=$;m=e;e=se(P,Q,R,j);m=m+e|0;a=$+a|0;a=e>>>0>m>>>0?a+1|0:a;e=m;m=(f&2097151)<<11|w>>>21;z=e+m|0;f=(f>>>21|0)+a|0;e=z;Fa=e- -1048576|0;f=m>>>0>e>>>0?f+1|0:f;z=f-((e>>>0<4293918720)-1|0)|0;I=z;a=s&-2097152;m=i-((a>>>0>g>>>0)+l|0)|0;ya=g-a|0;Ha=m;a=f;f=Fa&-2097152;a=a-((z&2147483647)+(f>>>0>e>>>0)|0)|0;za=e-f|0;Ia=a;e=se(za,a,666643,0);f=e+y|0;a=$+v|0;a=e>>>0>f>>>0?a+1|0:a;e=f;f=se(ya,m,654183,0);g=e+f|0;e=$+a|0;y=g;i=f>>>0>g>>>0?e+1|0:e;a=u&-2097152;u=k-a|0;s=r-((a>>>0>k>>>0)+n|0)|0;l=se(N,x,U,H);k=$;a=G[q+16|0];e=a>>>24|0;m=G[q+15|0];g=m|a<<8;f=G[q+17|0];a=f>>>16|0;g=g|f<<16;e=a|e|p>>>8;X=((e&63)<<26|(p<<24|g)>>>6)&2097151;e=se(X,0,P,Q);f=e+l|0;a=$+k|0;a=e>>>0>f>>>0?a+1|0:a;e=se(O,x,S,j);g=e+f|0;f=$+a|0;f=e>>>0>g>>>0?f+1|0:f;e=se(L,x,T,j);g=e+g|0;a=$+f|0;a=e>>>0>g>>>0?a+1|0:a;f=se(R,j,V,W);g=f+g|0;e=$+a|0;n=g;g=f>>>0>g>>>0?e+1|0:e;a=G[t+16|0];f=a>>>24|0;l=G[t+15|0];k=l|a<<8;e=G[t+17|0];a=e>>>16|0;k=k|e<<16;e=a|f|o>>>8;Y=((e&63)<<26|(o<<24|k)>>>6)&2097151;a=se(c,b,Y,0);f=a+n|0;e=$+g|0;o=f;k=a>>>0>f>>>0?e+1|0:e;a=se(N,x,X,j);r=$;n=a;e=G[q+14|0];f=e>>>24|0;g=G[q+13|0];a=g|e<<8|m<<16;e=m>>>16|f;Z=((e&1)<<31|a>>>1)&2097151;e=se(Z,0,P,Q);f=n+e|0;a=$+r|0;a=e>>>0>f>>>0?a+1|0:a;e=se(S,j,U,H);f=e+f|0;a=$+a|0;a=e>>>0>f>>>0?a+1|0:a;e=se(O,x,T,j);m=e+f|0;f=$+a|0;f=e>>>0>m>>>0?f+1|0:f;a=se(L,x,V,W);m=a+m|0;e=$+f|0;e=a>>>0>m>>>0?e+1|0:e;a=se(R,j,Y,j);f=a+m|0;e=$+e|0;r=f;a=a>>>0>f>>>0?e+1|0:e;e=G[t+14|0];f=e>>>24|0;m=G[t+13|0];n=m|e<<8;e=l>>>16|0;l=l<<16;f=e|f;e=l|n;aa=((f&1)<<31|e>>>1)&2097151;e=se(c,b,aa,0);f=e+r|0;a=$+a|0;r=f;a=e>>>0>f>>>0?a+1|0:a;l=a;B=a-((f>>>0<4293918720)-1|0)|0;C=f- -1048576|0;a=C;a=(B&2097151)<<11|a>>>21;n=a+o|0;f=(B>>21)+k|0;f=a>>>0>n>>>0?f+1|0:f;v=f;z=f-((n>>>0<4293918720)-1|0)|0;e=z>>21;A=n- -1048576|0;f=(z&2097151)<<11|A>>>21;k=f+u|0;a=e+s|0;Ja=k;a=f>>>0>k>>>0?a+1|0:a;Ka=a;e=se(k,a,-997805,-1);f=e+y|0;a=$+i|0;w=f;o=e>>>0>f>>>0?a+1|0:a;a=G[q+3|0];e=a>>>24|0;f=G[q+2|0];i=f|a<<8;k=G[q+4|0];a=k>>>16|0;p=i|k<<16;i=a|e;k=G[q+5|0];a=k;e=a>>>8|0;a=a<<24|p;e=e|i;ba=((e&31)<<27|a>>>5)&2097151;a=se(ba,0,T,j);e=$;i=a;ca=f<<16&2031616|(G[q|0]|G[q+1|0]<<8);a=se(ca,0,S,j);i=i+a|0;f=$+e|0;f=a>>>0>i>>>0?f+1|0:f;a=i;e=f;i=G[q+6|0];f=i>>>24|0;p=k|i<<8;s=a;i=G[q+7|0];k=i;a=k>>>16|0;k=k<<16;f=a|f;a=k|p;da=((f&3)<<30|a>>>2)&2097151;a=se(da,0,V,W);f=s+a|0;e=$+e|0;k=f;f=a>>>0>f>>>0?e+1|0:e;a=G[q+8|0];e=a>>>24|0;s=i|a<<8;i=G[q+9|0];a=i>>>16|0;p=s|i<<16;i=a|e;s=k;k=G[q+10|0];a=k;e=a>>>8|0;a=a<<24|p;e=e|i;ea=((e&127)<<25|a>>>7)&2097151;a=se(ea,0,Y,j);i=s+a|0;e=$+f|0;p=i;f=a>>>0>i>>>0?e+1|0:e;a=G[q+11|0];e=a>>>24|0;k=k|a<<8;a=e;i=k;k=G[q+12|0];e=k>>>16|0;i=i|k<<16;k=a|e;e=g<<24;g=g>>>8|k;a=e|i;fa=((g&15)<<28|a>>>4)&2097151;a=se(fa,0,aa,j);e=a+p|0;f=$+f|0;s=e;k=a>>>0>e>>>0?f+1|0:f;a=G[t+11|0];e=a>>>24|0;i=G[t+10|0];f=i|a<<8;p=G[t+12|0];a=p>>>16|0;p=f|p<<16;e=a|e|m>>>8;ga=((e&15)<<28|(m<<24|p)>>>4)&2097151;e=se(Z,j,ga,0);f=e+s|0;a=$+k|0;s=f;m=e>>>0>f>>>0?a+1|0:a;f=G[t+8|0];e=f>>>24|0;k=G[t+7|0];a=k|f<<8;p=G[t+9|0];f=p>>>16|0;p=a|p<<16;f=e|f|i>>>8;a=i<<24|p;ia=((f&127)<<25|a>>>7)&2097151;a=se(X,j,ia,0);f=a+s|0;e=$+m|0;g=a>>>0>f>>>0?e+1|0:e;a=G[t+6|0];e=a>>>24|0;i=G[t+5|0];m=i|a<<8;e=k>>>16|e;a=k<<16|m;ja=((e&3)<<30|a>>>2)&2097151;e=se(U,H,ja,0);f=e+f|0;a=$+g|0;u=f;m=e>>>0>f>>>0?a+1|0:a;e=G[t+3|0];a=e>>>24|0;g=G[t+2|0];f=g|e<<8;p=G[t+4|0];e=p>>>16|0;s=f|p<<16;f=a|e|i>>>8;a=i<<24|s;ka=((f&31)<<27|a>>>5)&2097151;a=se(O,x,ka,0);e=a+u|0;f=$+m|0;f=a>>>0>e>>>0?f+1|0:f;la=g<<16&2031616|(G[t|0]|G[t+1|0]<<8);a=se(L,x,la,0);g=a+e|0;e=$+f|0;i=g;f=a>>>0>g>>>0?e+1|0:e;e=G[h+184|0];a=e>>>24|0;g=G[h+183|0];k=g|e<<8;e=a;m=k;k=G[h+185|0];a=k>>>16|0;m=m|k<<16;k=a|e;La=G[h+186|0];e=La;a=e>>>8|0;e=e<<24;k=a|k;a=e|m;a=((k&31)<<27|a>>>5)&2097151;k=a+i|0;e=f;m=k;k=a>>>0>k>>>0?e+1|0:e;f=G[h+181|0]|G[h+182|0]<<8;a=se(V,W,ba,j);e=$;s=f;f=a;a=se(T,j,ca,j);i=f+a|0;f=$+e|0;f=a>>>0>i>>>0?f+1|0:f;e=se(da,j,Y,j);i=e+i|0;a=$+f|0;a=e>>>0>i>>>0?a+1|0:a;f=se(aa,j,ea,j);i=f+i|0;e=$+a|0;e=f>>>0>i>>>0?e+1|0:e;f=se(fa,j,ga,j);i=f+i|0;a=$+e|0;a=f>>>0>i>>>0?a+1|0:a;f=se(Z,j,ia,j);i=f+i|0;e=$+a|0;e=f>>>0>i>>>0?e+1|0:e;a=se(X,j,ja,j);i=a+i|0;f=$+e|0;f=a>>>0>i>>>0?f+1|0:f;e=se(U,H,ka,j);i=e+i|0;a=$+f|0;a=e>>>0>i>>>0?a+1|0:a;f=se(O,x,la,j);i=f+i|0;e=$+a|0;e=f>>>0>i>>>0?e+1|0:e;f=i;i=s+f|0;a=f>>>0>i>>>0?e+1|0:e;f=g<<16&2031616;g=f+i|0;e=a;e=f>>>0>g>>>0?e+1|0:e;f=e;u=e-((g>>>0<4293918720)-1|0)|0;e=u>>>21|0;a=m;y=g- -1048576|0;m=(u&2097151)<<11|y>>>21;i=a+m|0;a=e+k|0;a=i>>>0>>0?a+1|0:a;m=i;k=i;i=i+w|0;e=a;a=e+o|0;a=i>>>0>>0?a+1|0:a;k=e;e=m;m=k-((e>>>0<4293918720)-1|0)|0;Ma=e- -1048576|0;e=i;k=Ma&-2097152;E=e-k|0;ma=a-((e>>>0>>0)+m|0)|0;s=g;p=f;a=se(ya,Ha,470296,0);e=$;f=a;a=se(Da,Ea,666643,0);f=f+a|0;e=$+e|0;e=a>>>0>f>>>0?e+1|0:e;a=f;f=se(Ja,Ka,654183,0);g=a+f|0;a=$+e|0;J=g;o=f>>>0>g>>>0?a+1|0:a;a=se(Y,j,ba,j);e=$;f=a;a=se(V,W,ca,j);f=f+a|0;e=$+e|0;e=a>>>0>f>>>0?e+1|0:e;a=f;f=se(da,j,aa,j);g=a+f|0;a=$+e|0;a=f>>>0>g>>>0?a+1|0:a;e=se(ga,j,ea,j);g=e+g|0;f=$+a|0;f=e>>>0>g>>>0?f+1|0:f;a=se(ia,j,fa,j);g=a+g|0;e=$+f|0;e=a>>>0>g>>>0?e+1|0:e;f=se(Z,j,ja,j);g=f+g|0;a=$+e|0;a=f>>>0>g>>>0?a+1|0:a;f=se(X,j,ka,j);g=f+g|0;e=$+a|0;e=f>>>0>g>>>0?e+1|0:e;f=se(U,H,la,j);g=f+g|0;a=$+e|0;e=g;f=f>>>0>e>>>0?a+1|0:a;g=G[h+179|0];a=g>>>24|0;i=G[h+178|0];k=i|g<<8;t=e;g=G[h+180|0];e=g>>>16|0;g=g<<16;w=a|e;e=g|k;e=(w&7)<<29|e>>>3;g=t+e|0;f=(w>>>3|0)+f|0;q=g;k=e>>>0>g>>>0?f+1|0:f;a=se(aa,j,ba,j);e=$;f=a;a=se(Y,j,ca,j);f=f+a|0;e=$+e|0;e=a>>>0>f>>>0?e+1|0:e;a=se(da,j,ga,j);f=a+f|0;e=$+e|0;e=a>>>0>f>>>0?e+1|0:e;a=f;f=se(ia,j,ea,j);g=a+f|0;a=$+e|0;a=f>>>0>g>>>0?a+1|0:a;e=se(fa,j,ja,j);f=e+g|0;a=$+a|0;a=e>>>0>f>>>0?a+1|0:a;e=se(Z,j,ka,j);g=e+f|0;f=$+a|0;f=e>>>0>g>>>0?f+1|0:f;a=se(X,j,la,j);g=a+g|0;e=$+f|0;t=g;g=a>>>0>g>>>0?e+1|0:e;e=G[h+176|0];a=e>>>24|0;ra=G[h+175|0];w=ra|e<<8;e=G[h+177|0];f=e>>>16|0;w=w|e<<16;e=a|f|i>>>8;a=((e&63)<<26|(i<<24|w)>>>6)&2097151;f=a+t|0;e=g;t=f;e=a>>>0>f>>>0?e+1|0:e;i=e;na=e-((f>>>0<4293918720)-1|0)|0;e=na>>>21|0;Xa=f- -1048576|0;a=(na&2097151)<<11|Xa>>>21;g=a+q|0;f=e+k|0;w=g;f=a>>>0>g>>>0?f+1|0:f;wa=f;pa=f-((g>>>0<4293918720)-1|0)|0;e=pa>>>21|0;Na=g- -1048576|0;a=(pa&2097151)<<11|Na>>>21;f=a+J|0;e=e+o|0;e=a>>>0>f>>>0?e+1|0:e;g=f+s|0;a=e+p|0;e=g;f=f>>>0>e>>>0?a+1|0:a;a=y&-2097152;k=f-((a>>>0>e>>>0)+u|0)|0;y=e-a|0;Ya=y- -1048576|0;a=Ya;M=k-((y>>>0<4293918720)-1|0)|0;e=M>>21;a=(M&2097151)<<11|a>>>21;f=a+E|0;e=e+ma|0;p=f;e=a>>>0>f>>>0?e+1|0:e;g=e;Oa=e-((f>>>0<4293918720)-1|0)|0;e=Oa>>21;Za=f- -1048576|0;K=(Oa&2097151)<<11|Za>>>21;s=e;a=A&-2097152;xa=n-a|0;sa=v-((a>>>0>n>>>0)+z|0)|0;o=se(P,Q,c,b);a=$;qa=a;v=a-((o>>>0<4293918720)-1|0)|0;Aa=o- -1048576|0;a=Aa;Ba=(v&2097151)<<11|a>>>21;e=v>>>21|0;Pa=e;e=se(Ba,e,-683901,-1);f=e+r|0;a=$+l|0;a=e>>>0>f>>>0?a+1|0:a;e=C&-2097152;z=f-e|0;u=a-((e>>>0>f>>>0)+B|0)|0;a=se(N,x,Z,j);e=$;f=a;a=se(P,Q,fa,j);l=f+a|0;f=$+e|0;f=a>>>0>l>>>0?f+1|0:f;a=se(S,j,X,j);l=a+l|0;e=$+f|0;e=a>>>0>l>>>0?e+1|0:e;f=se(T,j,U,H);l=f+l|0;a=$+e|0;a=f>>>0>l>>>0?a+1|0:a;e=se(O,x,V,W);f=e+l|0;a=$+a|0;a=e>>>0>f>>>0?a+1|0:a;e=f;f=se(L,x,Y,j);l=e+f|0;e=$+a|0;e=f>>>0>l>>>0?e+1|0:e;a=se(R,j,aa,j);l=a+l|0;f=$+e|0;f=a>>>0>l>>>0?f+1|0:f;a=se(c,b,ga,j);l=a+l|0;e=$+f|0;n=l;l=a>>>0>l>>>0?e+1|0:e;e=se(N,x,fa,j);a=$;f=e;e=se(P,Q,ea,j);f=f+e|0;a=$+a|0;a=e>>>0>f>>>0?a+1|0:a;e=se(S,j,Z,j);f=e+f|0;a=$+a|0;a=e>>>0>f>>>0?a+1|0:a;e=f;f=se(T,j,X,j);r=e+f|0;e=$+a|0;e=f>>>0>r>>>0?e+1|0:e;a=se(U,H,V,W);r=a+r|0;f=$+e|0;f=a>>>0>r>>>0?f+1|0:f;a=se(O,x,Y,j);r=a+r|0;e=$+f|0;e=a>>>0>r>>>0?e+1|0:e;f=se(L,x,aa,j);r=f+r|0;a=$+e|0;a=f>>>0>r>>>0?a+1|0:a;e=se(R,j,ga,j);f=e+r|0;a=$+a|0;a=e>>>0>f>>>0?a+1|0:a;e=f;f=se(c,b,ia,j);r=e+f|0;e=$+a|0;ta=r;e=f>>>0>r>>>0?e+1|0:e;ma=e;a=r;J=e-((a>>>0<4293918720)-1|0)|0;va=a- -1048576|0;e=va;f=(J&2097151)<<11|e>>>21;n=f+n|0;e=(J>>21)+l|0;r=n;e=f>>>0>n>>>0?e+1|0:e;q=e;C=e-((n>>>0<4293918720)-1|0)|0;oa=n- -1048576|0;e=oa;f=(C&2097151)<<11|e>>>21;l=f+z|0;e=(C>>21)+u|0;n=l;e=f>>>0>l>>>0?e+1|0:e;A=e;B=e-((l>>>0<4293918720)-1|0)|0;E=l- -1048576|0;e=E;f=(B&2097151)<<11|e>>>21;l=f+xa|0;e=(B>>21)+sa|0;Qa=l;e=f>>>0>l>>>0?e+1|0:e;Ra=e;e=se(l,e,-683901,-1);f=e+K|0;a=$+s|0;K=f;z=e>>>0>f>>>0?a+1|0:a;a=se(S,j,ba,j);e=$;f=a;a=se(N,x,ca,j);f=f+a|0;e=$+e|0;e=a>>>0>f>>>0?e+1|0:e;a=se(T,j,da,j);l=a+f|0;f=$+e|0;f=a>>>0>l>>>0?f+1|0:f;e=se(V,W,ea,j);l=e+l|0;a=$+f|0;a=e>>>0>l>>>0?a+1|0:a;f=se(Y,j,fa,j);l=f+l|0;e=$+a|0;e=f>>>0>l>>>0?e+1|0:e;f=se(Z,j,aa,j);l=f+l|0;a=$+e|0;a=f>>>0>l>>>0?a+1|0:a;f=se(X,j,ga,j);l=f+l|0;e=$+a|0;e=f>>>0>l>>>0?e+1|0:e;a=se(U,H,ia,j);l=a+l|0;f=$+e|0;f=a>>>0>l>>>0?f+1|0:f;e=se(O,x,ja,j);l=e+l|0;a=$+f|0;a=e>>>0>l>>>0?a+1|0:a;f=se(L,x,ka,j);l=f+l|0;e=$+a|0;e=f>>>0>l>>>0?e+1|0:e;f=se(R,j,la,j);l=f+l|0;a=$+e|0;e=l;f=f>>>0>e>>>0?a+1|0:a;l=G[h+187|0];a=l>>>24|0;s=La|l<<8;u=e;ab=G[h+188|0];l=ab;e=l>>>16|0;l=l<<16;e=a|e;a=l|s;a=((e&3)<<30|a>>>2)&2097151;l=u+a|0;e=f;e=a>>>0>l>>>0?e+1|0:e;u=l;s=e;xa=se(za,Ia,470296,0);sa=$;e=Aa&-2097152;a=o-e|0;o=qa-((v&2147483647)+(e>>>0>o>>>0)|0)|0;f=(I&2097151)<<11|Fa>>>21;v=f+a|0;a=(I>>>21|0)+o|0;Sa=v;a=f>>>0>v>>>0?a+1|0:a;Ta=a;a=se(v,a,666643,0);f=a+xa|0;e=$+sa|0;e=a>>>0>f>>>0?e+1|0:e;a=f;f=se(Da,Ea,654183,0);o=a+f|0;a=$+e|0;a=f>>>0>o>>>0?a+1|0:a;e=se(ya,Ha,-997805,-1);o=e+o|0;f=$+a|0;f=e>>>0>o>>>0?f+1|0:f;a=se(Ja,Ka,136657,0);o=a+o|0;e=$+f|0;e=a>>>0>o>>>0?e+1|0:e;bb=l- -1048576|0;f=s-((l>>>0<4293918720)-1|0)|0;l=f;a=m>>>21|0;m=(m&2097151)<<11|Ma>>>21;o=o+m|0;a=a+e|0;a=m>>>0>o>>>0?a+1|0:a;m=o;o=m+u|0;e=a+s|0;e=m>>>0>o>>>0?e+1|0:e;a=bb&-2097152;m=o-a|0;s=m+K|0;e=e-((a>>>0>o>>>0)+f|0)|0;a=e+z|0;a=m>>>0>s>>>0?a+1|0:a;f=s;s=e;e=m;m=s-((e>>>0<4293918720)-1|0)|0;cb=e- -1048576|0;e=f;f=cb&-2097152;a=a-((e>>>0>>0)+m|0)|0;v=e-f|0;qa=v;K=a;o=g;a=E&-2097152;E=n-a|0;I=A-((a>>>0>n>>>0)+B|0)|0;e=se(Sa,Ta,-683901,-1);a=$;f=e;e=se(Ba,Pa,136657,0);f=f+e|0;a=$+a|0;a=e>>>0>f>>>0?a+1|0:a;f=f+r|0;e=a+q|0;e=f>>>0>>0?e+1|0:e;a=oa&-2097152;A=f-a|0;B=e-((a>>>0>f>>>0)+C|0)|0;a=se(Ba,Pa,-997805,-1);f=a+ta|0;e=$+ma|0;e=a>>>0>f>>>0?e+1|0:e;a=f;f=se(Sa,Ta,136657,0);g=a+f|0;a=$+e|0;a=f>>>0>g>>>0?a+1|0:a;f=se(za,Ia,-683901,-1);g=f+g|0;e=$+a|0;e=f>>>0>g>>>0?e+1|0:e;f=g;a=va&-2097152;s=f-a|0;r=e-((a>>>0>f>>>0)+J|0)|0;a=se(N,x,ea,j);e=$;f=a;a=se(P,Q,da,j);g=f+a|0;f=$+e|0;f=a>>>0>g>>>0?f+1|0:f;e=se(S,j,fa,j);g=e+g|0;a=$+f|0;a=e>>>0>g>>>0?a+1|0:a;f=se(T,j,Z,j);g=f+g|0;e=$+a|0;e=f>>>0>g>>>0?e+1|0:e;a=se(X,j,V,W);f=a+g|0;e=$+e|0;e=a>>>0>f>>>0?e+1|0:e;a=f;f=se(U,H,Y,j);g=a+f|0;a=$+e|0;a=f>>>0>g>>>0?a+1|0:a;e=se(O,x,aa,j);g=e+g|0;f=$+a|0;f=e>>>0>g>>>0?f+1|0:f;e=se(L,x,ga,j);g=e+g|0;a=$+f|0;a=e>>>0>g>>>0?a+1|0:a;f=se(R,j,ia,j);g=f+g|0;e=$+a|0;e=f>>>0>g>>>0?e+1|0:e;a=se(c,b,ja,j);f=a+g|0;e=$+e|0;n=f;g=a>>>0>f>>>0?e+1|0:e;e=se(N,x,da,j);a=$;f=e;e=se(P,Q,ba,j);f=f+e|0;a=$+a|0;a=e>>>0>f>>>0?a+1|0:a;e=se(S,j,ea,j);u=e+f|0;f=$+a|0;f=e>>>0>u>>>0?f+1|0:f;e=se(T,j,fa,j);u=e+u|0;a=$+f|0;a=e>>>0>u>>>0?a+1|0:a;f=se(V,W,Z,j);u=f+u|0;e=$+a|0;e=f>>>0>u>>>0?e+1|0:e;a=se(X,j,Y,j);f=a+u|0;e=$+e|0;e=a>>>0>f>>>0?e+1|0:e;a=f;f=se(U,H,aa,j);u=a+f|0;a=$+e|0;a=f>>>0>u>>>0?a+1|0:a;e=se(O,x,ga,j);u=e+u|0;f=$+a|0;f=e>>>0>u>>>0?f+1|0:f;e=se(L,x,ia,j);u=e+u|0;a=$+f|0;a=e>>>0>u>>>0?a+1|0:a;f=se(R,j,ja,j);u=f+u|0;e=$+a|0;e=f>>>0>u>>>0?e+1|0:e;a=se(c,b,ka,j);f=a+u|0;e=$+e|0;z=f;e=a>>>0>f>>>0?e+1|0:e;xa=e;sa=e-((f>>>0<4293918720)-1|0)|0;e=sa>>21;eb=f- -1048576|0;a=(sa&2097151)<<11|eb>>>21;n=a+n|0;f=e+g|0;u=n;f=a>>>0>n>>>0?f+1|0:f;Aa=f;ta=f-((n>>>0<4293918720)-1|0)|0;e=ta>>21;fb=n- -1048576|0;a=(ta&2097151)<<11|fb>>>21;f=a+s|0;e=e+r|0;s=f;e=a>>>0>f>>>0?e+1|0:e;va=e;oa=e-((f>>>0<4293918720)-1|0)|0;e=oa>>21;Fa=f- -1048576|0;a=(oa&2097151)<<11|Fa>>>21;g=a+A|0;f=e+B|0;f=a>>>0>g>>>0?f+1|0:f;r=f;n=f-((g>>>0<4293918720)-1|0)|0;e=n>>21;A=g- -1048576|0;a=(n&2097151)<<11|A>>>21;f=a+E|0;e=e+I|0;Ua=f;e=a>>>0>f>>>0?e+1|0:e;Va=e;e=se(f,e,-683901,-1);a=$;f=e;e=se(Qa,Ra,136657,0);f=f+e|0;a=$+a|0;a=e>>>0>f>>>0?a+1|0:a;e=f;p=e+p|0;f=a+o|0;gb=p;E=e>>>0>p>>>0?f+1|0:f;I=y;B=k;f=se(Ua,Va,136657,0);k=$;a=A&-2097152;e=r-((a>>>0>g>>>0)+n|0)|0;Ca=g-a|0;Wa=e;a=f;f=se(Qa,Ra,-997805,-1);g=a+f|0;a=$+k|0;a=f>>>0>g>>>0?a+1|0:a;f=se(Ca,e,-683901,-1);g=f+g|0;e=$+a|0;hb=g;y=f>>>0>g>>>0?e+1|0:e;a=se(Ja,Ka,470296,0);e=$;f=a;a=se(ya,Ha,666643,0);g=f+a|0;f=$+e|0;e=g+w|0;a=wa+(a>>>0>g>>>0?f+1|0:f)|0;a=e>>>0>>0?a+1|0:a;f=e;e=Na&-2097152;_a=f-e|0;$a=a-((e>>>0>f>>>0)+pa|0)|0;C=se(Ja,Ka,666643,0);A=$;a=se(ba,j,ga,j);e=$;f=a;a=se(aa,j,ca,j);f=f+a|0;e=$+e|0;e=a>>>0>f>>>0?e+1|0:e;a=se(da,j,ia,j);g=a+f|0;f=$+e|0;f=a>>>0>g>>>0?f+1|0:f;e=se(ea,j,ja,j);g=e+g|0;a=$+f|0;a=e>>>0>g>>>0?a+1|0:a;f=se(fa,j,ka,j);g=f+g|0;e=$+a|0;e=f>>>0>g>>>0?e+1|0:e;f=se(Z,j,la,j);g=f+g|0;a=$+e|0;a=f>>>0>g>>>0?a+1|0:a;f=a;e=G[h+174|0];a=e>>>24|0;k=G[h+173|0];n=k|e<<8;e=ra>>>16|a;a=ra<<16|n;a=((e&1)<<31|a>>>1)&2097151;g=a+g|0;e=f;w=g;g=a>>>0>g>>>0?e+1|0:e;a=se(ia,j,ba,j);e=$;f=a;a=se(ca,j,ga,j);n=f+a|0;f=$+e|0;f=a>>>0>n>>>0?f+1|0:f;e=se(da,j,ja,j);n=e+n|0;a=$+f|0;a=e>>>0>n>>>0?a+1|0:a;f=se(ea,j,ka,j);n=f+n|0;e=$+a|0;e=f>>>0>n>>>0?e+1|0:e;f=se(fa,j,la,j);n=f+n|0;a=$+e|0;o=n;f=f>>>0>o>>>0?a+1|0:a;e=G[h+171|0];a=e>>>24|0;ra=G[h+170|0];r=ra|e<<8;n=G[h+172|0];e=n>>>16|0;r=r|n<<16;n=a|e;e=k<<24;k=k>>>8|n;a=e|r;a=((k&15)<<28|a>>>4)&2097151;k=a+o|0;e=f;p=k;e=a>>>0>k>>>0?e+1|0:e;k=e;wa=e-((p>>>0<4293918720)-1|0)|0;Ma=p- -1048576|0;e=Ma;f=(wa&2097151)<<11|e>>>21;n=f+w|0;e=(wa>>>21|0)+g|0;o=n;e=f>>>0>o>>>0?e+1|0:e;pa=e;ma=e-((o>>>0<4293918720)-1|0)|0;La=o- -1048576|0;e=La;f=(ma&2097151)<<11|e>>>21;g=f+C|0;e=(ma>>>21|0)+A|0;e=f>>>0>g>>>0?e+1|0:e;a=g;g=a+t|0;f=e+i|0;e=g;f=a>>>0>e>>>0?f+1|0:f;a=Xa&-2097152;J=f-((a>>>0>e>>>0)+na|0)|0;r=e-a|0;Na=r- -1048576|0;e=Na;q=J-((r>>>0<4293918720)-1|0)|0;a=q>>21;f=(q&2097151)<<11|e>>>21;g=f+_a|0;e=a+$a|0;n=g;e=f>>>0>g>>>0?e+1|0:e;C=e;A=e-((g>>>0<4293918720)-1|0)|0;na=g- -1048576|0;e=na;f=(A&2097151)<<11|e>>>21;g=f+hb|0;e=(A>>21)+y|0;e=f>>>0>g>>>0?e+1|0:e;f=g;g=f+I|0;a=e+B|0;e=g;f=f>>>0>e>>>0?a+1|0:a;a=Ya&-2097152;B=f-((a>>>0>e>>>0)+M|0)|0;i=e-a|0;M=i- -1048576|0;e=M;t=B-((i>>>0<4293918720)-1|0)|0;a=t>>21;f=(t&2097151)<<11|e>>>21;g=f+gb|0;e=a+E|0;e=f>>>0>g>>>0?e+1|0:e;f=g;a=Za&-2097152;w=e-((a>>>0>f>>>0)+Oa|0)|0;e=f-a|0;g=K-((v>>>0<4293918720)-1|0)|0;_a=v- -1048576|0;y=w-((e>>>0<4293918720)-1|0)|0;f=y>>21;I=e- -1048576|0;v=(y&2097151)<<11|I>>>21;E=v+qa|0;a=f+K|0;a=v>>>0>E>>>0?a+1|0:a;v=E;f=_a&-2097152;$a=v-f|0;Xa=a-((f>>>0>v>>>0)+g|0)|0;a=I&-2097152;Ya=e-a|0;Za=w-((a>>>0>e>>>0)+y|0)|0;a=M&-2097152;Oa=i-a|0;qa=B-((a>>>0>i>>>0)+t|0)|0;a=se(Ua,Va,-997805,-1);e=$;f=a;a=se(Qa,Ra,654183,0);i=f+a|0;f=$+e|0;f=a>>>0>i>>>0?f+1|0:f;a=se(Ca,Wa,136657,0);i=a+i|0;e=$+f|0;e=a>>>0>i>>>0?e+1|0:e;a=i+n|0;e=e+C|0;e=a>>>0>>0?e+1|0:e;f=a;a=na&-2097152;K=f-a|0;E=e-((a>>>0>f>>>0)+A|0)|0;a=Fa&-2097152;I=s-a|0;C=va-((a>>>0>s>>>0)+oa|0)|0;a=se(Sa,Ta,-997805,-1);e=$;f=a;a=se(Ba,Pa,654183,0);f=f+a|0;e=$+e|0;e=a>>>0>f>>>0?e+1|0:e;a=se(za,Ia,136657,0);i=a+f|0;f=$+e|0;f=a>>>0>i>>>0?f+1|0:f;e=se(Da,Ea,-683901,-1);i=e+i|0;a=$+f|0;f=i+u|0;e=Aa+(e>>>0>i>>>0?a+1|0:a)|0;e=f>>>0>>0?e+1|0:e;a=fb&-2097152;t=f-a|0;w=e-((a>>>0>f>>>0)+ta|0)|0;a=se(Sa,Ta,654183,0);e=$;f=a;a=se(Ba,Pa,470296,0);f=f+a|0;e=$+e|0;e=a>>>0>f>>>0?e+1|0:e;a=f;f=se(za,Ia,-997805,-1);i=a+f|0;a=$+e|0;a=f>>>0>i>>>0?a+1|0:a;f=i+z|0;e=a+xa|0;a=se(Da,Ea,136657,0);i=a+f|0;f=$+(f>>>0>>0?e+1|0:e)|0;f=a>>>0>i>>>0?f+1|0:f;e=se(ya,Ha,-683901,-1);i=e+i|0;a=$+f|0;a=e>>>0>i>>>0?a+1|0:a;f=i;e=eb&-2097152;s=f-e|0;n=a-((e>>>0>f>>>0)+sa|0)|0;e=se(N,x,ba,j);a=$;f=e;e=se(P,Q,ca,j);f=f+e|0;a=$+a|0;a=e>>>0>f>>>0?a+1|0:a;e=se(S,j,da,j);i=e+f|0;f=$+a|0;f=e>>>0>i>>>0?f+1|0:f;e=se(T,j,ea,j);i=e+i|0;a=$+f|0;a=e>>>0>i>>>0?a+1|0:a;f=se(V,W,fa,j);i=f+i|0;e=$+a|0;e=f>>>0>i>>>0?e+1|0:e;a=se(Y,j,Z,j);f=a+i|0;e=$+e|0;e=a>>>0>f>>>0?e+1|0:e;a=f;f=se(X,j,aa,j);i=a+f|0;a=$+e|0;a=f>>>0>i>>>0?a+1|0:a;e=se(U,H,ga,j);i=e+i|0;f=$+a|0;f=e>>>0>i>>>0?f+1|0:f;e=se(O,x,ia,j);i=e+i|0;a=$+f|0;a=e>>>0>i>>>0?a+1|0:a;f=se(L,x,ja,j);i=f+i|0;e=$+a|0;e=f>>>0>i>>>0?e+1|0:e;a=se(R,j,ka,j);f=a+i|0;e=$+e|0;b=se(c,b,la,j);c=b+f|0;a=$+(a>>>0>f>>>0?e+1|0:e)|0;i=c;b=b>>>0>c>>>0?a+1|0:a;c=G[h+189|0];a=c>>>24|0;f=ab|c<<8;c=G[h+190|0];e=c>>>16|0;f=f|c<<16;e=a|e;v=i;c=G[h+191|0];a=c>>>8|0;c=c<<24;i=a|e;a=c|f;a=(i&127)<<25|a>>>7;c=v+a|0;f=(i>>>7|0)+b|0;f=a>>>0>c>>>0?f+1|0:f;b=(l&2097151)<<11|bb>>>21;c=b+c|0;a=(l>>>21|0)+f|0;i=c;a=b>>>0>c>>>0?a+1|0:a;y=a;v=a-((c>>>0<4293918720)-1|0)|0;A=c- -1048576|0;a=A;a=(v&2097151)<<11|a>>>21;b=a+s|0;e=(v>>21)+n|0;l=b;e=a>>>0>b>>>0?e+1|0:e;z=e;u=e-((b>>>0<4293918720)-1|0)|0;e=u>>21;B=b- -1048576|0;b=(u&2097151)<<11|B>>>21;c=b+t|0;a=e+w|0;a=b>>>0>c>>>0?a+1|0:a;b=c;s=a;c=a-((b>>>0<4293918720)-1|0)|0;a=b- -1048576|0;e=(c>>21)+C|0;f=(c&2097151)<<11|a>>>21;n=f+I|0;na=n;e=f>>>0>n>>>0?e+1|0:e;oa=e;e=se(n,e,-683901,-1);n=e+K|0;f=$+E|0;w=n;n=e>>>0>n>>>0?f+1|0:f;f=se(Ua,Va,654183,0);e=$;a=a&-2097152;c=s-((a>>>0>b>>>0)+c|0)|0;M=b-a|0;E=c;b=se(Qa,Ra,470296,0);f=b+f|0;a=$+e|0;a=b>>>0>f>>>0?a+1|0:a;b=se(Ca,Wa,-997805,-1);e=b+f|0;a=$+a|0;a=b>>>0>e>>>0?a+1|0:a;b=e+r|0;e=a+J|0;e=b>>>0>>0?e+1|0:e;a=se(na,oa,136657,0);f=b;b=Na&-2097152;r=a+(f-b|0)|0;f=$+(e-((b>>>0>f>>>0)+q|0)|0)|0;f=a>>>0>r>>>0?f+1|0:f;a=se(M,c,-683901,-1);b=a+r|0;e=$+f|0;c=b;e=a>>>0>b>>>0?e+1|0:e;s=e;r=e-((b>>>0<4293918720)-1|0)|0;a=r>>21;t=b- -1048576|0;b=(r&2097151)<<11|t>>>21;e=b+w|0;f=a+n|0;f=b>>>0>e>>>0?f+1|0:f;b=e;n=f;f=f-((e>>>0<4293918720)-1|0)|0;a=f>>21;w=e- -1048576|0;H=(f&2097151)<<11|w>>>21;C=H+Oa|0;e=a+qa|0;xa=C;H=C>>>0>>0?e+1|0:e;a=w&-2097152;sa=b-a|0;Aa=n-((a>>>0>b>>>0)+f|0)|0;a=t&-2097152;ta=c-a|0;va=s-((a>>>0>c>>>0)+r|0)|0;b=se(Ua,Va,470296,0);a=$;c=b;b=se(Qa,Ra,666643,0);c=c+b|0;a=$+a|0;a=b>>>0>c>>>0?a+1|0:a;b=se(Ca,Wa,654183,0);c=b+c|0;a=$+a|0;a=b>>>0>c>>>0?a+1|0:a;b=c+o|0;e=a+pa|0;e=b>>>0>>0?e+1|0:e;a=La&-2097152;s=b-a|0;o=e-((a>>>0>b>>>0)+ma|0)|0;a=B&-2097152;r=l-a|0;n=z-((a>>>0>l>>>0)+u|0)|0;b=se(Sa,Ta,470296,0);a=$;c=b;b=se(Ba,Pa,666643,0);c=c+b|0;a=$+a|0;a=b>>>0>c>>>0?a+1|0:a;b=se(za,Ia,654183,0);c=b+c|0;a=$+a|0;a=b>>>0>c>>>0?a+1|0:a;b=se(Da,Ea,-997805,-1);c=b+c|0;e=$+a|0;e=b>>>0>c>>>0?e+1|0:e;a=se(ya,Ha,136657,0);b=a+c|0;e=$+e|0;e=a>>>0>b>>>0?e+1|0:e;a=se(Ja,Ka,-683901,-1);b=a+b|0;f=$+e|0;f=a>>>0>b>>>0?f+1|0:f;b=b+i|0;a=f+y|0;a=b>>>0>>0?a+1|0:a;e=b;c=A&-2097152;b=(m&2097151)<<11|cb>>>21;f=(e-c|0)+b|0;e=(a-((c>>>0>e>>>0)+v|0)|0)+(m>>21)|0;l=f;e=b>>>0>f>>>0?e+1|0:e;t=e;u=e-((f>>>0<4293918720)-1|0)|0;a=u>>21;C=f- -1048576|0;b=(u&2097151)<<11|C>>>21;c=b+r|0;e=a+n|0;qa=c;e=b>>>0>c>>>0?e+1|0:e;I=e;b=se(c,e,-683901,-1);c=b+s|0;a=$+o|0;a=b>>>0>c>>>0?a+1|0:a;b=se(na,oa,-997805,-1);c=b+c|0;e=$+a|0;e=b>>>0>c>>>0?e+1|0:e;a=se(M,E,136657,0);b=a+c|0;f=$+e|0;z=b;s=a>>>0>b>>>0?f+1|0:f;n=p;i=k;b=se(ba,j,ja,j);a=$;c=b;b=se(ca,j,ia,j);c=c+b|0;a=$+a|0;a=b>>>0>c>>>0?a+1|0:a;b=se(da,j,ka,j);c=b+c|0;e=$+a|0;e=b>>>0>c>>>0?e+1|0:e;b=se(ea,j,la,j);c=b+c|0;a=$+e|0;m=c;b=b>>>0>c>>>0?a+1|0:a;c=G[h+168|0];a=c>>>24|0;k=G[h+167|0];f=k|c<<8;c=G[h+169|0];e=c>>>16|0;f=f|c<<16;e=a|e|ra>>>8;a=ra<<24|f;a=((e&127)<<25|a>>>7)&2097151;c=a+m|0;e=b;r=c;c=a>>>0>c>>>0?e+1|0:e;a=se(ba,j,ka,j);b=$;e=a;a=se(ca,j,ja,j);e=e+a|0;f=$+b|0;f=a>>>0>e>>>0?f+1|0:f;a=se(da,j,la,j);b=a+e|0;e=$+f|0;f=b;b=a>>>0>f>>>0?e+1|0:e;a=G[h+166|0];e=a>>>24|0;w=G[h+165|0];m=w|a<<8;e=k>>>16|e;a=k<<16|m;e=((e&3)<<30|a>>>2)&2097151;f=e+f|0;a=b;m=f;a=e>>>0>f>>>0?a+1|0:a;b=a;y=a-((f>>>0<4293918720)-1|0)|0;ma=f- -1048576|0;a=ma;a=(y&2097151)<<11|a>>>21;f=a+r|0;e=(y>>>21|0)+c|0;k=f;e=a>>>0>f>>>0?e+1|0:e;v=e;p=e-((f>>>0<4293918720)-1|0)|0;e=p>>>21|0;J=f- -1048576|0;c=(p&2097151)<<11|J>>>21;f=c+n|0;a=e+i|0;a=c>>>0>f>>>0?a+1|0:a;c=se(Ua,Va,666643,0);e=Ma&-2097152;i=c+(f-e|0)|0;e=$+(a-((e>>>0>f>>>0)+wa|0)|0)|0;e=c>>>0>i>>>0?e+1|0:e;a=se(Ca,Wa,470296,0);c=a+i|0;e=$+e|0;e=a>>>0>c>>>0?e+1|0:e;a=c;c=se(qa,I,136657,0);f=a+c|0;a=$+e|0;a=c>>>0>f>>>0?a+1|0:a;c=se(na,oa,654183,0);e=c+f|0;f=$+a|0;f=c>>>0>e>>>0?f+1|0:f;c=se(M,E,-997805,-1);e=c+e|0;a=$+f|0;q=e;a=c>>>0>e>>>0?a+1|0:a;o=a;r=o-((e>>>0<4293918720)-1|0)|0;A=e- -1048576|0;a=A;a=(r&2097151)<<11|a>>>21;c=a+z|0;e=(r>>21)+s|0;e=a>>>0>c>>>0?e+1|0:e;B=c- -1048576|0;a=B;n=e-((c>>>0<4293918720)-1|0)|0;f=n>>21;i=(n&2097151)<<11|a>>>21;s=i+ta|0;a=f+va|0;ta=s;z=i>>>0>s>>>0?a+1|0:a;i=c;f=e;c=C&-2097152;a=l-c|0;e=t-((c>>>0>l>>>0)+u|0)|0;l=a;a=g>>21;c=(g&2097151)<<11|_a>>>21;g=l+c|0;e=a+e|0;e=c>>>0>g>>>0?e+1|0:e;u=e;s=e-((g>>>0<4293918720)-1|0)|0;a=s>>21;C=g- -1048576|0;K=(s&2097151)<<11|C>>>21;pa=a;c=se(K,a,-683901,-1);e=c+i|0;a=$+f|0;a=c>>>0>e>>>0?a+1|0:a;c=B&-2097152;va=e-c|0;ra=a-((c>>>0>e>>>0)+n|0)|0;a=se(K,pa,136657,0);c=a+q|0;e=$+o|0;e=a>>>0>c>>>0?e+1|0:e;a=A&-2097152;wa=c-a|0;q=e-((a>>>0>c>>>0)+r|0)|0;a=se(Ca,Wa,666643,0);c=J&-2097152;f=a+(k-c|0)|0;e=$+(v-((c>>>0>k>>>0)+p|0)|0)|0;e=a>>>0>f>>>0?e+1|0:e;a=se(qa,I,-997805,-1);c=a+f|0;f=$+e|0;f=a>>>0>c>>>0?f+1|0:f;a=c;c=se(na,oa,470296,0);e=a+c|0;a=$+f|0;a=c>>>0>e>>>0?a+1|0:a;c=se(M,E,654183,0);f=c+e|0;e=$+a|0;v=f;i=c>>>0>f>>>0?e+1|0:e;k=b;b=se(ba,j,la,j);a=$;c=b;b=se(ca,j,ka,j);c=c+b|0;a=$+a|0;n=c;f=b>>>0>c>>>0?a+1|0:a;b=se(ca,j,la,j);l=G[h+162|0];a=l;a=a<<16&2031616|(G[h+160|0]|G[h+161|0]<<8);c=b+a|0;e=$;e=a>>>0>c>>>0?e+1|0:e;p=e;o=e-((c>>>0<4293918720)-1|0)|0;a=o>>>21|0;A=c- -1048576|0;b=(o&2097151)<<11|A>>>21;e=b+n|0;a=a+f|0;n=e;e=b>>>0>e>>>0?a+1|0:a;b=G[h+163|0];a=b>>>24|0;f=l|b<<8;b=a;l=f;f=G[h+164|0];a=f>>>16|0;l=l|f<<16;b=a|b|w>>>8;a=((b&31)<<27|(w<<24|l)>>>5)&2097151;b=a+n|0;e=a>>>0>b>>>0?e+1|0:e;r=e;n=e-((b>>>0<4293918720)-1|0)|0;f=n>>>21|0;B=b- -1048576|0;e=(n&2097151)<<11|B>>>21;m=e+m|0;a=f+k|0;a=e>>>0>m>>>0?a+1|0:a;f=se(qa,I,654183,0);k=m;e=ma&-2097152;m=f+(k-e|0)|0;e=$+(a-((e>>>0>k>>>0)+y|0)|0)|0;a=se(na,oa,666643,0);k=a+m|0;f=$+(f>>>0>m>>>0?e+1|0:e)|0;f=a>>>0>k>>>0?f+1|0:f;e=se(M,E,470296,0);k=e+k|0;a=$+f|0;t=k;a=e>>>0>k>>>0?a+1|0:a;l=a;a=k;m=l-((a>>>0<4293918720)-1|0)|0;w=a- -1048576|0;a=w;e=(m&2097151)<<11|a>>>21;k=e+v|0;a=(m>>21)+i|0;y=k;a=e>>>0>k>>>0?a+1|0:a;e=a;a=k;k=e-((a>>>0<4293918720)-1|0)|0;v=a- -1048576|0;a=v;i=(k&2097151)<<11|a>>>21;J=i+wa|0;a=(k>>21)+q|0;ma=J;i=i>>>0>J>>>0?a+1|0:a;a=se(K,pa,-997805,-1);f=a+y|0;e=$+e|0;e=a>>>0>f>>>0?e+1|0:e;a=v&-2097152;J=f-a|0;q=e-((a>>>0>f>>>0)+k|0)|0;a=se(K,pa,654183,0);f=a+t|0;e=$+l|0;e=a>>>0>f>>>0?e+1|0:e;a=w&-2097152;y=f-a|0;v=e-((a>>>0>f>>>0)+m|0)|0;e=se(qa,I,470296,0);a=B&-2097152;f=e+(b-a|0)|0;a=$+(r-((a>>>0>b>>>0)+n|0)|0)|0;a=e>>>0>f>>>0?a+1|0:a;b=se(M,E,666643,0);e=b+f|0;f=$+a|0;f=b>>>0>e>>>0?f+1|0:f;k=e;a=se(qa,I,666643,0);b=A&-2097152;m=a+(c-b|0)|0;e=$+(p-((o&4095)+(b>>>0>c>>>0)|0)|0)|0;b=m;e=a>>>0>b>>>0?e+1|0:e;l=e;m=e-((b>>>0<4293918720)-1|0)|0;a=m>>21;o=b- -1048576|0;c=(m&2097151)<<11|o>>>21;e=c+k|0;f=a+f|0;f=c>>>0>e>>>0?f+1|0:f;k=f;a=e;f=f-((e>>>0<4293918720)-1|0)|0;n=e- -1048576|0;c=n;c=(f&2097151)<<11|c>>>21;p=c+y|0;e=(f>>21)+v|0;e=c>>>0>p>>>0?e+1|0:e;c=e;e=se(K,pa,470296,0);r=e+a|0;a=$+k|0;a=e>>>0>r>>>0?a+1|0:a;k=n&-2097152;e=r-k|0;f=a-((k>>>0>r>>>0)+f|0)|0;n=e;a=se(K,pa,666643,0);e=o&-2097152;k=a+(b-e|0)|0;e=$+(l-((b>>>0>>0)+m|0)|0)|0;m=k;b=k;e=a>>>0>b>>>0?e+1|0:e;a=e>>21;b=(e&2097151)<<11|b>>>21;e=n+b|0;a=a+f|0;a=b>>>0>e>>>0?a+1|0:a;k=e;b=e;e=a>>21;a=(a&2097151)<<11|b>>>21;b=a+p|0;f=c+e|0;f=a>>>0>b>>>0?f+1|0:f;t=b;b=(f&2097151)<<11|b>>>21;c=b+J|0;e=(f>>21)+q|0;w=c;a=c;e=b>>>0>a>>>0?e+1|0:e;b=(e&2097151)<<11|a>>>21;c=b+ma|0;a=(e>>21)+i|0;a=b>>>0>c>>>0?a+1|0:a;y=c;b=c;e=a>>21;a=(a&2097151)<<11|b>>>21;b=a+va|0;e=e+ra|0;e=a>>>0>b>>>0?e+1|0:e;v=b;b=(e&2097151)<<11|b>>>21;c=b+ta|0;a=(e>>21)+z|0;a=b>>>0>c>>>0?a+1|0:a;z=c;b=c;e=a>>21;a=(a&2097151)<<11|b>>>21;b=a+sa|0;f=e+Aa|0;f=a>>>0>b>>>0?f+1|0:f;p=b;b=(f&2097151)<<11|b>>>21;c=b+xa|0;e=(f>>21)+H|0;o=c;a=c;e=b>>>0>a>>>0?e+1|0:e;b=(e&2097151)<<11|a>>>21;c=b+Ya|0;a=(e>>21)+Za|0;a=b>>>0>c>>>0?a+1|0:a;r=c;b=c;e=a>>21;a=(a&2097151)<<11|b>>>21;b=a+$a|0;e=e+Xa|0;e=a>>>0>b>>>0?e+1|0:e;n=b;a=e>>21;e=(e&2097151)<<11|b>>>21;c=C&-2097152;b=g-c|0;e=e+b|0;f=(u-((c>>>0>g>>>0)+s|0)|0)+a|0;i=e;f=b>>>0>e>>>0?f+1|0:f;s=(f&2097151)<<11|e>>>21;e=f>>21;l=e;a=m&2097151;b=se(s,e,666643,0)+a|0;e=$;m=b;e=a>>>0>b>>>0?e+1|0:e;b=e;D[d+32|0]=m;D[d+33|0]=(e&255)<<24|m>>>8;c=k&2097151;e=se(s,l,470296,0)+c|0;a=$;a=c>>>0>e>>>0?a+1|0:a;c=(b&2097151)<<11|m>>>21;g=c+e|0;f=(b>>21)+a|0;k=g;a=g;f=c>>>0>a>>>0?f+1|0:f;D[d+36|0]=(f&2047)<<21|a>>>11;D[d+35|0]=(f&7)<<29|a>>>3;a=t&2097151;c=se(s,l,654183,0)+a|0;e=$;e=a>>>0>c>>>0?e+1|0:e;a=e;e=f>>21;t=c;c=(f&2097151)<<11|g>>>21;f=t+c|0;a=a+e|0;g=f;a=c>>>0>f>>>0?a+1|0:a;c=a;D[d+38|0]=(a&63)<<26|f>>>6;e=0;k=k&2097151;a=k;D[d+34|0]=((b&65535)<<16|m>>>16)&31|a<<5;b=w&2097151;f=se(s,l,-997805,-1)+b|0;a=$;a=b>>>0>f>>>0?a+1|0:a;b=a;a=c>>21;c=(c&2097151)<<11|g>>>21;m=c+f|0;f=a+b|0;f=c>>>0>m>>>0?f+1|0:f;c=m;a=c;D[d+41|0]=(f&511)<<23|a>>>9;D[d+40|0]=(f&1)<<31|a>>>1;b=0;m=g&2097151;g=m;D[d+37|0]=(e&524287)<<13|k>>>19|g<<2;a=y&2097151;g=se(s,l,136657,0)+a|0;e=$;e=a>>>0>g>>>0?e+1|0:e;a=f;f=a>>21;a=(a&2097151)<<11|c>>>21;g=a+g|0;e=e+f|0;e=a>>>0>g>>>0?e+1|0:e;a=g;D[d+44|0]=(e&4095)<<20|a>>>12;D[d+43|0]=(e&15)<<28|a>>>4;f=0;k=c&2097151;c=k;D[d+39|0]=(b&16383)<<18|m>>>14|c<<7;b=v&2097151;c=se(s,l,-683901,-1)+b|0;a=$;a=b>>>0>c>>>0?a+1|0:a;b=e;e=e>>21;b=(b&2097151)<<11|g>>>21;c=b+c|0;a=a+e|0;a=b>>>0>c>>>0?a+1|0:a;e=c;D[d+46|0]=(a&127)<<25|e>>>7;g=g&2097151;D[d+42|0]=(f&131071)<<15|k>>>17|g<<4;b=a;a=a>>21;b=(b&2097151)<<11|e>>>21;k=b+(z&2097151)|0;c=0;f=a+c|0;f=b>>>0>k>>>0?f+1|0:f;a=k;D[d+49|0]=(f&1023)<<22|a>>>10;D[d+48|0]=(f&3)<<30|a>>>2;m=e&2097151;e=m;D[d+45|0]=(c&1048575)<<12|g>>>20|e<<1;a=f>>21;c=(f&2097151)<<11|k>>>21;f=c+(p&2097151)|0;b=0;e=a+b|0;e=c>>>0>f>>>0?e+1|0:e;a=f;D[d+52|0]=(e&8191)<<19|a>>>13;c=e;D[d+51|0]=(e&31)<<27|a>>>5;f=0;k=k&2097151;e=k;D[d+47|0]=(b&32767)<<17|m>>>15|e<<6;b=(c&2097151)<<11|a>>>21;m=b+(o&2097151)|0;e=c>>21;e=b>>>0>m>>>0?e+1|0:e;D[d+53|0]=m;D[d+50|0]=(f&262143)<<14|k>>>18|a<<3;b=e;a=m;D[d+54|0]=(e&255)<<24|a>>>8;a=(e&2097151)<<11|a>>>21;g=a+(r&2097151)|0;f=e>>21;f=a>>>0>g>>>0?f+1|0:f;a=g;D[d+57|0]=(f&2047)<<21|a>>>11;c=a;D[d+56|0]=(f&7)<<29|a>>>3;a=f>>21;c=(f&2097151)<<11|c>>>21;f=c+(n&2097151)|0;e=a;e=c>>>0>f>>>0?e+1|0:e;a=f;D[d+59|0]=(e&63)<<26|a>>>6;k=g&2097151;a=k;D[d+55|0]=((b&65535)<<16|m>>>16)&31|a<<5;a=e>>21;b=(e&2097151)<<11|f>>>21;e=b+(i&2097151)|0;c=0;a=a+c|0;a=b>>>0>e>>>0?a+1|0:a;D[d+63|0]=(a&131071)<<15|e>>>17;D[d+62|0]=(a&511)<<23|e>>>9;D[d+61|0]=(a&1)<<31|e>>>1;b=0;g=f&2097151;f=g;D[d+58|0]=(c&524287)<<13|k>>>19|f<<2;D[d+60|0]=(b&16383)<<18|f>>>14|e<<7;_=h+624|0}function hb(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;j=_-768|0;_=j;a:{if(G[d+63|0]>31){break a}i=_-272|0;_=i;W=G[a+31|0];V=G[a+30|0];S=G[a+6|0];T=G[a+5|0];U=G[a+9|0];n=G[a+8|0];C=G[a+12|0];I=G[a+11|0];x=G[a+15|0];y=G[a+14|0];A=G[a+28|0];z=G[a+27|0];v=G[a+25|0];o=G[a+24|0];M=G[a|0]|G[a+1|0]<<8|(G[a+2|0]<<16|G[a+3|0]<<24);B=G[a+29|0];w=G[a+4|0];t=G[a+7|0];r=G[a+10|0];s=G[a+13|0];p=G[a+26|0];l=G[a+23|0];q=j+128|0;R=q+40|0;k=R;f=G[a+21|0];g=f>>>17|0;e=f<<15;f=g;K=e;e=G[a+20|0];g=e>>>25|0;N=K|e<<7;e=f|g;f=G[a+22|0];g=f>>>9|0;f=f<<23|N;K=e|g;h=f;f=0;O=G[a+16|0]|G[a+17|0]<<8|(G[a+18|0]<<16|G[a+19|0]<<24);g=O+16777216|0;f=g>>>0<16777216?1:f;N=g;e=g;g=f>>>25|0;f=(f&33554431)<<7|e>>>25;e=h+f|0;g=g+K|0;g=e>>>0>>0?g+1|0:g;f=e+33554432|0;g=f>>>0<33554432?g+1|0:g;K=f;f=g;g=e;e=K&-67108864;F[k+24>>2]=g-e;g=o>>>19|0;o=o<<13;e=g;g=l>>>27|0;l=l<<5|o;e=e|g;g=v>>>11|0;v=v<<21|l;o=v+((f&67108863)<<6|K>>>26)|0;g=e|g;e=o;f=v+16777216|0;g=f>>>0<16777216?g+1|0:g;o=f;f=g;g=e;e=o&1040187392;F[k+28>>2]=g-e;e=p>>>28|0;p=z<<12|p<<4;l=e|z>>>20|A>>>12;g=f>>>25|0;f=(f&33554431)<<7|o>>>25;e=f+(A<<20|p)|0;g=g+l|0;g=e>>>0>>0?g+1|0:g;f=g;g=e+33554432|0;f=g>>>0<33554432?f+1|0:f;K=g;o=f;f=g&-67108864;F[k+32>>2]=e-f;p=y<<10|s<<2|x<<18;l=y>>>22|s>>>30|x>>>14;e=I<<11|r<<3;f=I>>>21|r>>>29;r=C<<19|e;e=C>>>13|f;g=r+16777216|0;e=g>>>0<16777216?e+1|0:e;z=g;f=g;g=e>>>25|0;f=(e&33554431)<<7|f>>>25;e=f+p|0;g=g+l|0;g=e>>>0>>0?g+1|0:g;f=e;e=e+33554432|0;g=e>>>0<33554432?g+1|0:g;x=e;p=g;g=f;f=e&-67108864;F[k+16>>2]=g-f;f=n>>>19|t>>>27;t=n<<13|t<<5|U<<21;l=U>>>11|f;s=T<<14|w<<6|S<<22;e=T>>>18|w>>>26|S>>>10;g=s+16777216|0;e=g>>>0<16777216?e+1|0:e;v=g;f=e>>>25|0;e=(e&33554431)<<7|g>>>25;t=e+t|0;g=f+l|0;g=e>>>0>t>>>0?g+1|0:g;f=t;e=f+33554432|0;g=e>>>0<33554432?g+1|0:g;y=e;l=g;g=f;f=e&-67108864;F[k+8>>2]=g-f;f=V>>>22|B>>>30;g=o>>>26|0;w=W<<18&33292288|(V<<10|B<<2);o=(o&67108863)<<6|K>>>26;t=w+o|0;o=t;g=f;f=w+16777216|0;g=f>>>0<16777216?g+1|0:g;t=f;f=g;g=o;e=t&33554432;F[k+36>>2]=g-e;e=(p&67108863)<<6|x>>>26;p=e+O|0;F[k+20>>2]=p-(N&-33554432);e=r;l=e+((l&67108863)<<6|y>>>26)|0;F[k+12>>2]=l-(z&234881024);l=s-(v&2113929216)|0;f=se((f&33554431)<<7|t>>>25,f>>>25|0,19,0);e=f+M|0;g=$;g=e>>>0>>0?g+1|0:g;f=e;e=g;g=f+33554432|0;e=g>>>0<33554432?e+1|0:e;e=l+((e&67108863)<<6|g>>>26)|0;F[k+4>>2]=e;k=g&-67108864;F[R>>2]=f-k;F[q+84>>2]=0;F[q+88>>2]=0;F[q+80>>2]=1;F[q+92>>2]=0;F[q+96>>2]=0;F[q+100>>2]=0;F[q+104>>2]=0;F[q+108>>2]=0;F[q+112>>2]=0;F[q+116>>2]=0;M=i+192|0;fa(M,R);P=i+144|0;ha(P,M,1936);K=F[q+116>>2];O=F[q+112>>2];N=F[q+108>>2];W=F[q+104>>2];V=F[q+100>>2];S=F[q+96>>2];T=F[q+92>>2];U=F[q+88>>2];n=F[q+84>>2];C=F[i+228>>2];t=F[i+224>>2];r=F[i+220>>2];s=F[i+216>>2];o=F[i+212>>2];p=F[i+208>>2];l=F[i+204>>2];e=F[i+200>>2];f=F[i+196>>2];k=F[i+192>>2];g=F[q+80>>2];F[i+144>>2]=g+F[i+144>>2];I=k-g|0;F[i+192>>2]=I;x=f-n|0;F[i+196>>2]=x;y=e-U|0;F[i+200>>2]=y;A=l-T|0;F[i+204>>2]=A;z=p-S|0;F[i+208>>2]=z;v=o-V|0;F[i+212>>2]=v;B=s-W|0;F[i+216>>2]=B;w=r-N|0;F[i+220>>2]=w;t=t-O|0;F[i+224>>2]=t;r=C-K|0;F[i+228>>2]=r;s=F[i+148>>2];o=F[i+152>>2];p=F[i+156>>2];l=F[i+160>>2];e=F[i+164>>2];f=F[i+168>>2];k=F[i+172>>2];g=F[i+176>>2];F[i+180>>2]=K+F[i+180>>2];F[i+176>>2]=g+O;F[i+172>>2]=k+N;F[i+168>>2]=f+W;F[i+164>>2]=e+V;F[i+160>>2]=l+S;F[i+156>>2]=p+T;F[i+152>>2]=o+U;F[i+148>>2]=n+s;k=i+96|0;fa(k,P);ha(k,k,P);fa(q,k);ha(q,q,P);ha(q,q,M);f=_-144|0;_=f;g=f+96|0;fa(g,q);e=f+48|0;fa(e,g);fa(e,e);ha(e,q,e);ha(g,g,e);fa(g,g);ha(g,e,g);fa(e,g);fa(e,e);fa(e,e);fa(e,e);fa(e,e);ha(g,e,g);fa(e,g);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);ha(e,e,g);fa(f,e);fa(f,f);fa(f,f);fa(f,f);fa(f,f);fa(f,f);fa(f,f);fa(f,f);fa(f,f);fa(f,f);fa(f,f);fa(f,f);fa(f,f);fa(f,f);fa(f,f);fa(f,f);fa(f,f);fa(f,f);fa(f,f);fa(f,f);ha(e,f,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);ha(g,e,g);fa(e,g);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);ha(e,e,g);fa(f,e);g=1;while(1){fa(f,f);g=g+1|0;if((g|0)!=100){continue}break}e=f+48|0;ha(e,f,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);fa(e,e);g=f+96|0;ha(g,e,g);fa(g,g);fa(g,g);ha(q,g,q);_=f+144|0;ha(q,q,k);ha(q,q,M);g=i+48|0;fa(g,q);ha(g,g,P);F[i+36>>2]=F[i+84>>2]-r;F[i+32>>2]=F[i+80>>2]-t;F[i+28>>2]=F[i+76>>2]-w;F[i+24>>2]=F[i+72>>2]-B;F[i+20>>2]=F[i+68>>2]-v;F[i+16>>2]=F[i+64>>2]-z;F[i+12>>2]=F[i+60>>2]-A;F[i+8>>2]=F[i+56>>2]-y;F[i+4>>2]=F[i+52>>2]-x;F[i>>2]=F[i+48>>2]-I;Ga(i+240|0,i);b:{if(G[i+271|0]|(G[i+270|0]|(G[i+269|0]|(G[i+268|0]|(G[i+267|0]|(G[i+266|0]|(G[i+265|0]|(G[i+264|0]|(G[i+263|0]|(G[i+262|0]|(G[i+261|0]|(G[i+260|0]|(G[i+259|0]|(G[i+258|0]|(G[i+257|0]|(G[i+256|0]|(G[i+255|0]|(G[i+254|0]|(G[i+253|0]|(G[i+252|0]|(G[i+251|0]|(G[i+250|0]|(G[i+249|0]|(G[i+248|0]|(G[i+247|0]|(G[i+246|0]|(G[i+245|0]|(G[i+244|0]|(G[i+243|0]|(G[i+242|0]|(G[i+241|0]|G[i+240|0]))))))))))))))))))))))))))))))){I=F[i+192>>2];x=F[i+48>>2];y=F[i+196>>2];A=F[i+52>>2];z=F[i+200>>2];v=F[i+56>>2];B=F[i+204>>2];w=F[i+60>>2];t=F[i+208>>2];r=F[i+64>>2];s=F[i+212>>2];o=F[i+68>>2];p=F[i+216>>2];l=F[i+72>>2];e=F[i+220>>2];f=F[i+76>>2];k=F[i+224>>2];g=F[i+80>>2];F[i+36>>2]=F[i+228>>2]+F[i+84>>2];F[i+32>>2]=g+k;F[i+28>>2]=e+f;F[i+24>>2]=l+p;F[i+20>>2]=o+s;F[i+16>>2]=r+t;F[i+12>>2]=w+B;F[i+8>>2]=v+z;F[i+4>>2]=y+A;F[i>>2]=x+I;Ga(i+240|0,i);g=-1;if(G[i+271|0]|(G[i+270|0]|(G[i+269|0]|(G[i+268|0]|(G[i+267|0]|(G[i+266|0]|(G[i+265|0]|(G[i+264|0]|(G[i+263|0]|(G[i+262|0]|(G[i+261|0]|(G[i+260|0]|(G[i+259|0]|(G[i+258|0]|(G[i+257|0]|(G[i+256|0]|(G[i+255|0]|(G[i+254|0]|(G[i+253|0]|(G[i+252|0]|(G[i+251|0]|(G[i+250|0]|(G[i+249|0]|(G[i+248|0]|(G[i+247|0]|(G[i+246|0]|(G[i+245|0]|(G[i+244|0]|(G[i+243|0]|(G[i+242|0]|(G[i+241|0]|G[i+240|0]))))))))))))))))))))))))))))))){break b}ha(q,q,1984)}Ga(i+240|0,q);if((D[i+240|0]&1)==(G[a+31|0]>>>7|0)){F[q+36>>2]=0-F[q+36>>2];F[q+32>>2]=0-F[q+32>>2];F[q+28>>2]=0-F[q+28>>2];F[q+24>>2]=0-F[q+24>>2];F[q+20>>2]=0-F[q+20>>2];F[q+16>>2]=0-F[q+16>>2];F[q+12>>2]=0-F[q+12>>2];F[q+8>>2]=0-F[q+8>>2];F[q+4>>2]=0-F[q+4>>2];F[q>>2]=0-F[q>>2]}ha(q+120|0,q,R);g=0}_=i+272|0;if(g){break a}F[j+352>>2]=327033209;F[j+356>>2]=1541459225;F[j+344>>2]=-79577749;F[j+348>>2]=528734635;F[j+336>>2]=725511199;F[j+340>>2]=-1694144372;F[j+328>>2]=-1377402159;F[j+332>>2]=1359893119;s=32;F[j+320>>2]=1595750129;F[j+324>>2]=-1521486534;F[j+312>>2]=-23791573;F[j+316>>2]=1013904242;F[j+304>>2]=-2067093701;F[j+308>>2]=-1150833019;F[j+296>>2]=-205731576;F[j+300>>2]=1779033703;F[j+288>>2]=0;F[j+292>>2]=0;F[j+360>>2]=0;D[j+364|0]=G[d|0];D[j+365|0]=G[d+1|0];D[j+366|0]=G[d+2|0];D[j+367|0]=G[d+3|0];r=j+364|0;D[(r+F[j+360>>2]|0)+4|0]=G[d+4|0];D[(r+F[j+360>>2]|0)+5|0]=G[d+5|0];D[(r+F[j+360>>2]|0)+6|0]=G[d+6|0];D[(r+F[j+360>>2]|0)+7|0]=G[d+7|0];D[(r+F[j+360>>2]|0)+8|0]=G[d+8|0];D[(r+F[j+360>>2]|0)+9|0]=G[d+9|0];D[(r+F[j+360>>2]|0)+10|0]=G[d+10|0];D[(r+F[j+360>>2]|0)+11|0]=G[d+11|0];D[(r+F[j+360>>2]|0)+12|0]=G[d+12|0];D[(r+F[j+360>>2]|0)+13|0]=G[d+13|0];D[(r+F[j+360>>2]|0)+14|0]=G[d+14|0];D[(r+F[j+360>>2]|0)+15|0]=G[d+15|0];D[(r+F[j+360>>2]|0)+16|0]=G[d+16|0];D[(r+F[j+360>>2]|0)+17|0]=G[d+17|0];D[(r+F[j+360>>2]|0)+18|0]=G[d+18|0];D[(r+F[j+360>>2]|0)+19|0]=G[d+19|0];D[(r+F[j+360>>2]|0)+20|0]=G[d+20|0];D[(r+F[j+360>>2]|0)+21|0]=G[d+21|0];D[(r+F[j+360>>2]|0)+22|0]=G[d+22|0];D[(r+F[j+360>>2]|0)+23|0]=G[d+23|0];D[(r+F[j+360>>2]|0)+24|0]=G[d+24|0];D[(r+F[j+360>>2]|0)+25|0]=G[d+25|0];D[(r+F[j+360>>2]|0)+26|0]=G[d+26|0];D[(r+F[j+360>>2]|0)+27|0]=G[d+27|0];D[(r+F[j+360>>2]|0)+28|0]=G[d+28|0];D[(r+F[j+360>>2]|0)+29|0]=G[d+29|0];D[(r+F[j+360>>2]|0)+30|0]=G[d+30|0];D[(r+F[j+360>>2]|0)+31|0]=G[d+31|0];g=F[j+360>>2]+32|0;F[j+360>>2]=g;if((g|0)==128){ua(j+288|0,r);F[j+360>>2]=0;g=F[j+292>>2];k=F[j+288>>2]+1024|0;g=k>>>0<1024?g+1|0:g;F[j+288>>2]=k;F[j+292>>2]=g}c:{if(!a){break c}l=F[j+360>>2];if(l>>>0>128){break c}while(1){d:{if(!(s>>>0<128|l)){ua(j+288|0,a);g=F[j+292>>2];k=F[j+288>>2]+1024|0;g=k>>>0<1024?g+1|0:g;F[j+288>>2]=k;F[j+292>>2]=g;s=s-128|0;a=a+128|0;break d}g=128-l|0;o=g>>>0>s>>>0?s:g;e:{if(!o){break e}e=o&3;p=0;f:{if(o-1>>>0<3){u=0;break f}k=o&-4;u=0;f=0;while(1){g=l+u|0;l=j+364|0;D[g+l|0]=G[a+u|0];g=u|1;D[l+(g+F[j+360>>2]|0)|0]=G[a+g|0];g=u|2;D[l+(g+F[j+360>>2]|0)|0]=G[a+g|0];g=u|3;D[l+(g+F[j+360>>2]|0)|0]=G[a+g|0];u=u+4|0;l=F[j+360>>2];f=f+4|0;if((k|0)!=(f|0)){continue}break}}if(!e){break e}while(1){D[((l+u|0)+j|0)+364|0]=G[a+u|0];u=u+1|0;l=F[j+360>>2];p=p+1|0;if((e|0)!=(p|0)){continue}break}}s=s-o|0;a=a+o|0;g=l+o|0;F[j+360>>2]=g;if((g|0)!=128){break d}ua(j+288|0,r);F[j+360>>2]=0;f=F[j+292>>2];g=F[j+288>>2]+1024|0;f=g>>>0<1024?f+1|0:f;F[j+288>>2]=g;F[j+292>>2]=f}if(!s){break c}l=F[j+360>>2];continue}}g:{if(!b|!c){break g}a=F[j+360>>2];if(a>>>0>128){break g}while(1){h:{if(!(c>>>0<128|a)){ua(j+288|0,b);g=F[j+292>>2];a=F[j+288>>2]+1024|0;g=a>>>0<1024?g+1|0:g;F[j+288>>2]=a;F[j+292>>2]=g;c=c-128|0;b=b+128|0;break h}g=128-a|0;l=c>>>0>>0?c:g;i:{if(!l){break i}f=l&3;k=0;j:{if(l-1>>>0<3){u=0;break j}g=l&-4;u=0;p=0;while(1){e=j+364|0;D[e+(a+u|0)|0]=G[b+u|0];a=u|1;D[e+(a+F[j+360>>2]|0)|0]=G[a+b|0];a=u|2;D[e+(a+F[j+360>>2]|0)|0]=G[a+b|0];a=u|3;D[e+(a+F[j+360>>2]|0)|0]=G[a+b|0];u=u+4|0;a=F[j+360>>2];p=p+4|0;if((g|0)!=(p|0)){continue}break}}if(!f){break i}while(1){D[((a+u|0)+j|0)+364|0]=G[b+u|0];u=u+1|0;a=F[j+360>>2];k=k+1|0;if((f|0)!=(k|0)){continue}break}}c=c-l|0;b=b+l|0;a=a+l|0;F[j+360>>2]=a;if((a|0)!=128){break h}ua(j+288|0,r);F[j+360>>2]=0;g=F[j+292>>2];a=F[j+288>>2]+1024|0;g=a>>>0<1024?g+1|0:g;F[j+288>>2]=a;F[j+292>>2]=g}if(!c){break g}a=F[j+360>>2];continue}}e=j+528|0;db(j+288|0,e);mb(e);g=j+8|0;c=j+128|0;o=d+32|0;b=0;a=0;m=_-2272|0;_=m;while(1){k=m+2016|0;f=e+(b>>>3|0)|0;D[k+b|0]=G[f|0]>>>(b&6)&1;l=k;k=b|1;D[l+k|0]=G[f|0]>>>(k&7)&1;b=b+2|0;if((b|0)!=256){continue}break}while(1){k=a;a=a+1|0;s=k+(m+2016|0)|0;k:{if(!G[s|0]|k>>>0>254){break k}l=(m+2016|0)+a|0;b=D[l|0];l:{if(!b){break l}e=b<<1;f=D[s|0];b=e+f|0;if((b|0)<=15){D[s|0]=b;D[l|0]=0;break l}b=f-e|0;if((b|0)<-15){break k}D[s|0]=b;b=a;while(1){f=(m+2016|0)+b|0;if(!G[f|0]){D[f|0]=1;break l}D[f|0]=0;f=b>>>0<255;b=b+1|0;if(f){continue}break}}if(k>>>0>253){break k}b=k+2|0;p=b+(m+2016|0)|0;f=D[p|0];m:{if(!f){break m}l=f<<2;e=D[s|0];f=l+e|0;if((f|0)>=16){f=e-l|0;if((f|0)<-15){break k}D[s|0]=f;while(1){f=(m+2016|0)+b|0;if(G[f|0]){D[f|0]=0;f=b>>>0<255;b=b+1|0;if(f){continue}break m}break}D[f|0]=1;break m}D[s|0]=f;D[p|0]=0}if(k>>>0>252){break k}b=k+3|0;p=b+(m+2016|0)|0;f=D[p|0];n:{if(!f){break n}l=f<<3;e=D[s|0];f=l+e|0;if((f|0)>=16){f=e-l|0;if((f|0)<-15){break k}D[s|0]=f;while(1){f=(m+2016|0)+b|0;if(G[f|0]){D[f|0]=0;f=b>>>0<255;b=b+1|0;if(f){continue}break n}break}D[f|0]=1;break n}D[s|0]=f;D[p|0]=0}if(k>>>0>251){break k}b=k+4|0;p=b+(m+2016|0)|0;f=D[p|0];o:{if(!f){break o}l=f<<4;e=D[s|0];f=l+e|0;if((f|0)>=16){f=e-l|0;if((f|0)<-15){break k}D[s|0]=f;while(1){f=(m+2016|0)+b|0;if(G[f|0]){D[f|0]=0;f=b>>>0<255;b=b+1|0;if(f){continue}break o}break}D[f|0]=1;break o}D[s|0]=f;D[p|0]=0}if(k>>>0>250){break k}b=k+5|0;p=b+(m+2016|0)|0;f=D[p|0];p:{if(!f){break p}l=f<<5;e=D[s|0];f=l+e|0;if((f|0)>=16){f=e-l|0;if((f|0)<-15){break k}D[s|0]=f;while(1){f=(m+2016|0)+b|0;if(G[f|0]){D[f|0]=0;f=b>>>0<255;b=b+1|0;if(f){continue}break p}break}D[f|0]=1;break p}D[s|0]=f;D[p|0]=0}if(k>>>0>249){break k}b=k+6|0;l=b+(m+2016|0)|0;k=D[l|0];if(!k){break k}e=k<<6;f=D[s|0];k=e+f|0;if((k|0)>=16){k=f-e|0;if((k|0)<-15){break k}D[s|0]=k;while(1){k=(m+2016|0)+b|0;if(G[k|0]){D[k|0]=0;k=b>>>0<255;b=b+1|0;if(k){continue}break k}break}D[k|0]=1;break k}D[s|0]=k;D[l|0]=0}if((a|0)!=256){continue}break}b=0;while(1){a=m+1760|0;k=o+(b>>>3|0)|0;D[a+b|0]=G[k|0]>>>(b&6)&1;f=a;a=b|1;D[f+a|0]=G[k|0]>>>(a&7)&1;b=b+2|0;if((b|0)!=256){continue}break}a=0;while(1){k=a;a=a+1|0;o=k+(m+1760|0)|0;q:{if(!G[o|0]|k>>>0>254){break q}l=(m+1760|0)+a|0;b=D[l|0];r:{if(!b){break r}e=b<<1;f=D[o|0];b=e+f|0;if((b|0)<=15){D[o|0]=b;D[l|0]=0;break r}b=f-e|0;if((b|0)<-15){break q}D[o|0]=b;b=a;while(1){f=(m+1760|0)+b|0;if(!G[f|0]){D[f|0]=1;break r}D[f|0]=0;f=b>>>0<255;b=b+1|0;if(f){continue}break}}if(k>>>0>253){break q}b=k+2|0;p=b+(m+1760|0)|0;f=D[p|0];s:{if(!f){break s}l=f<<2;e=D[o|0];f=l+e|0;if((f|0)>=16){f=e-l|0;if((f|0)<-15){break q}D[o|0]=f;while(1){f=(m+1760|0)+b|0;if(G[f|0]){D[f|0]=0;f=b>>>0<255;b=b+1|0;if(f){continue}break s}break}D[f|0]=1;break s}D[o|0]=f;D[p|0]=0}if(k>>>0>252){break q}b=k+3|0;p=b+(m+1760|0)|0;f=D[p|0];t:{if(!f){break t}l=f<<3;e=D[o|0];f=l+e|0;if((f|0)>=16){f=e-l|0;if((f|0)<-15){break q}D[o|0]=f;while(1){f=(m+1760|0)+b|0;if(G[f|0]){D[f|0]=0;f=b>>>0<255;b=b+1|0;if(f){continue}break t}break}D[f|0]=1;break t}D[o|0]=f;D[p|0]=0}if(k>>>0>251){break q}b=k+4|0;p=b+(m+1760|0)|0;f=D[p|0];u:{if(!f){break u}l=f<<4;e=D[o|0];f=l+e|0;if((f|0)>=16){f=e-l|0;if((f|0)<-15){break q}D[o|0]=f;while(1){f=(m+1760|0)+b|0;if(G[f|0]){D[f|0]=0;f=b>>>0<255;b=b+1|0;if(f){continue}break u}break}D[f|0]=1;break u}D[o|0]=f;D[p|0]=0}if(k>>>0>250){break q}b=k+5|0;p=b+(m+1760|0)|0;f=D[p|0];v:{if(!f){break v}l=f<<5;e=D[o|0];f=l+e|0;if((f|0)>=16){f=e-l|0;if((f|0)<-15){break q}D[o|0]=f;while(1){f=(m+1760|0)+b|0;if(G[f|0]){D[f|0]=0;f=b>>>0<255;b=b+1|0;if(f){continue}break v}break}D[f|0]=1;break v}D[o|0]=f;D[p|0]=0}if(k>>>0>249){break q}b=k+6|0;l=b+(m+1760|0)|0;k=D[l|0];if(!k){break q}e=k<<6;f=D[o|0];k=e+f|0;if((k|0)>=16){k=f-e|0;if((k|0)<-15){break q}D[o|0]=k;while(1){k=(m+1760|0)+b|0;if(G[k|0]){D[k|0]=0;k=b>>>0<255;b=b+1|0;if(k){continue}break q}break}D[k|0]=1;break q}D[o|0]=k;D[l|0]=0}if((a|0)!=256){continue}break}r=m+480|0;Ha(r,c);s=F[c>>2];o=F[c+4>>2];p=F[c+8>>2];l=F[c+12>>2];e=F[c+16>>2];f=F[c+20>>2];k=F[c+24>>2];b=F[c+28>>2];a=F[c+36>>2];F[m+192>>2]=F[c+32>>2];F[m+196>>2]=a;F[m+184>>2]=k;F[m+188>>2]=b;F[m+176>>2]=e;F[m+180>>2]=f;F[m+168>>2]=p;F[m+172>>2]=l;F[m+160>>2]=s;F[m+164>>2]=o;s=F[c+48>>2];o=F[c+52>>2];p=F[c+56>>2];l=F[c+60>>2];a=c- -64|0;e=F[a>>2];f=F[a+4>>2];k=F[c+40>>2];b=F[c+44>>2];a=F[c+76>>2];F[m+232>>2]=F[c+72>>2];F[m+236>>2]=a;F[m+224>>2]=e;F[m+228>>2]=f;F[m+216>>2]=p;F[m+220>>2]=l;F[m+208>>2]=s;F[m+212>>2]=o;F[m+200>>2]=k;F[m+204>>2]=b;s=F[c+88>>2];o=F[c+92>>2];p=F[c+96>>2];l=F[c+100>>2];e=F[c+104>>2];f=F[c+108>>2];k=F[c+80>>2];b=F[c+84>>2];a=F[c+116>>2];F[m+272>>2]=F[c+112>>2];F[m+276>>2]=a;F[m+264>>2]=e;F[m+268>>2]=f;F[m+256>>2]=p;F[m+260>>2]=l;F[m+248>>2]=s;F[m+252>>2]=o;F[m+240>>2]=k;F[m+244>>2]=b;c=m+320|0;b=m+160|0;Sa(c,b);E=m+440|0;ha(m,c,E);J=m+360|0;H=m+400|0;ha(m+40|0,J,H);ha(m+80|0,H,E);ha(m+120|0,c,J);Ia(c,m,r);ha(b,c,E);Q=m+200|0;ha(Q,J,H);i=m+240|0;ha(i,H,E);q=m+280|0;ha(q,c,J);a=m+640|0;Ha(a,b);Ia(c,m,a);ha(b,c,E);ha(Q,J,H);ha(i,H,E);ha(q,c,J);a=m+800|0;Ha(a,b);Ia(c,m,a);ha(b,c,E);ha(Q,J,H);ha(i,H,E);ha(q,c,J);a=m+960|0;Ha(a,b);Ia(c,m,a);ha(b,c,E);ha(Q,J,H);ha(i,H,E);ha(q,c,J);a=m+1120|0;Ha(a,b);Ia(c,m,a);ha(b,c,E);ha(Q,J,H);ha(i,H,E);ha(q,c,J);a=m+1280|0;Ha(a,b);Ia(c,m,a);ha(b,c,E);ha(Q,J,H);ha(i,H,E);ha(q,c,J);a=m+1440|0;Ha(a,b);Ia(c,m,a);ha(b,c,E);ha(Q,J,H);ha(i,H,E);ha(q,c,J);Ha(m+1600|0,b);F[g+32>>2]=0;F[g+36>>2]=0;F[g+24>>2]=0;F[g+28>>2]=0;F[g+16>>2]=0;F[g+20>>2]=0;F[g+8>>2]=0;F[g+12>>2]=0;F[g>>2]=0;F[g+4>>2]=0;F[g+44>>2]=0;F[g+48>>2]=0;F[g+40>>2]=1;F[g+52>>2]=0;F[g+56>>2]=0;F[g+60>>2]=0;F[g+64>>2]=0;F[g+68>>2]=0;F[g+72>>2]=0;F[g+84>>2]=0;F[g+88>>2]=0;F[g+76>>2]=0;F[g+80>>2]=1;F[g+92>>2]=0;F[g+96>>2]=0;F[g+100>>2]=0;F[g+104>>2]=0;F[g+108>>2]=0;F[g+112>>2]=0;F[g+116>>2]=0;W=g+80|0;V=g+40|0;a=255;while(1){w:{x:{if(!(G[(m+2016|0)+a|0]|G[(m+1760|0)+a|0])){b=a-1|0;if(!(G[b+(m+1760|0)|0]?1:G[b+(m+2016|0)|0])){break x}a=b}if((a|0)<0){break w}while(1){Sa(m+320|0,g);b=a;C=D[a+(m+2016|0)|0];y:{if((C|0)>0){a=m+160|0;c=m+320|0;ha(a,c,E);ha(Q,J,H);ha(i,H,E);ha(q,c,J);Ia(c,a,(m+480|0)+L((C&254)>>>1|0,160)|0);break y}if((C|0)>=0){break y}n=m+160|0;h=m+320|0;ha(n,h,E);ha(Q,J,H);ha(i,H,E);ha(q,h,J);x=F[n+44>>2];y=F[n+48>>2];A=F[n+52>>2];z=F[n+56>>2];v=F[n+60>>2];I=n- -64|0;B=F[I>>2];w=F[n+68>>2];t=F[n+72>>2];r=F[n+76>>2];s=F[n+4>>2];o=F[n+8>>2];p=F[n+12>>2];l=F[n+16>>2];e=F[n+20>>2];f=F[n+24>>2];k=F[n+28>>2];c=F[n+32>>2];a=F[n+36>>2];F[h>>2]=F[n>>2]+F[n+40>>2];F[h+36>>2]=a+r;F[h+32>>2]=c+t;F[h+28>>2]=k+w;F[h+24>>2]=f+B;F[h+20>>2]=e+v;F[h+16>>2]=l+z;F[h+12>>2]=p+A;F[h+8>>2]=o+y;F[h+4>>2]=s+x;x=F[n+44>>2];y=F[n+48>>2];A=F[n+52>>2];z=F[n+56>>2];v=F[n+60>>2];B=F[I>>2];w=F[n+68>>2];t=F[n+72>>2];r=F[n>>2];s=F[n+40>>2];o=F[n+4>>2];p=F[n+8>>2];l=F[n+12>>2];e=F[n+16>>2];f=F[n+20>>2];k=F[n+24>>2];c=F[n+28>>2];a=F[n+32>>2];F[h+76>>2]=F[n+76>>2]-F[n+36>>2];F[h+72>>2]=t-a;F[h+68>>2]=w-c;u=h- -64|0;F[u>>2]=B-k;F[h+60>>2]=v-f;F[h+56>>2]=z-e;F[h+52>>2]=A-l;F[h+48>>2]=y-p;F[h+44>>2]=x-o;F[h+40>>2]=s-r;c=(m+480|0)+L((0-C&254)>>>1|0,160)|0;ha(h+80|0,h,c+40|0);a=h+40|0;ha(a,a,c);ha(h+120|0,c+120|0,n+120|0);ha(h,n+80|0,c+80|0);P=F[h+44>>2];R=F[h+84>>2];M=F[h+48>>2];K=F[h+88>>2];O=F[h+52>>2];N=F[h+92>>2];C=F[h+56>>2];I=F[h+96>>2];x=F[h+60>>2];y=F[h+100>>2];A=F[u>>2];z=F[h+104>>2];v=F[h+68>>2];B=F[h+108>>2];w=F[h+72>>2];t=F[h+112>>2];S=F[h>>2];T=F[h+4>>2];U=F[h+8>>2];n=F[h+12>>2];o=F[h+16>>2];p=F[h+20>>2];l=F[h+24>>2];e=F[h+28>>2];f=F[h+32>>2];k=F[h+36>>2];r=F[h+40>>2];s=F[h+80>>2];c=F[h+76>>2];a=F[h+116>>2];F[h+76>>2]=c+a;F[h+72>>2]=t+w;F[h+68>>2]=v+B;F[u>>2]=A+z;F[h+60>>2]=x+y;F[h+56>>2]=C+I;F[h+52>>2]=N+O;F[h+48>>2]=K+M;F[h+44>>2]=P+R;F[h+40>>2]=s+r;F[h+36>>2]=a-c;F[h+32>>2]=t-w;F[h+28>>2]=B-v;F[h+24>>2]=z-A;F[h+20>>2]=y-x;F[h+16>>2]=I-C;F[h+12>>2]=N-O;F[h+8>>2]=K-M;F[h+4>>2]=R-P;F[h>>2]=s-r;C=F[h+156>>2];I=k<<1;F[h+156>>2]=C+I;x=F[h+152>>2];y=f<<1;F[h+152>>2]=x+y;A=F[h+148>>2];z=e<<1;F[h+148>>2]=A+z;v=F[h+144>>2];B=l<<1;F[h+144>>2]=v+B;w=F[h+140>>2];t=p<<1;F[h+140>>2]=w+t;r=F[h+136>>2];s=o<<1;F[h+136>>2]=r+s;o=F[h+132>>2];p=n<<1;F[h+132>>2]=o+p;l=F[h+128>>2];e=U<<1;F[h+128>>2]=l+e;f=F[h+124>>2];k=T<<1;F[h+124>>2]=f+k;c=F[h+120>>2];a=S<<1;F[h+120>>2]=c+a;F[h+112>>2]=y-x;F[h+108>>2]=z-A;F[h+104>>2]=B-v;F[h+100>>2]=t-w;F[h+96>>2]=s-r;F[h+92>>2]=p-o;F[h+88>>2]=e-l;F[h+84>>2]=k-f;F[h+80>>2]=a-c;F[h+116>>2]=I-C}C=D[b+(m+1760|0)|0];z:{if((C|0)>0){a=m+160|0;c=m+320|0;ha(a,c,E);ha(Q,J,H);ha(i,H,E);ha(q,c,J);lb(c,a,L((C&254)>>>1|0,120)+5680|0);break z}if((C|0)>=0){break z}n=m+160|0;h=m+320|0;ha(n,h,E);ha(Q,J,H);ha(i,H,E);ha(q,h,J);x=F[n+44>>2];y=F[n+48>>2];A=F[n+52>>2];z=F[n+56>>2];v=F[n+60>>2];I=n- -64|0;B=F[I>>2];w=F[n+68>>2];t=F[n+72>>2];r=F[n+76>>2];s=F[n+4>>2];o=F[n+8>>2];p=F[n+12>>2];l=F[n+16>>2];e=F[n+20>>2];f=F[n+24>>2];k=F[n+28>>2];c=F[n+32>>2];a=F[n+36>>2];F[h>>2]=F[n>>2]+F[n+40>>2];F[h+36>>2]=a+r;F[h+32>>2]=c+t;F[h+28>>2]=k+w;F[h+24>>2]=f+B;F[h+20>>2]=e+v;F[h+16>>2]=l+z;F[h+12>>2]=p+A;F[h+8>>2]=o+y;F[h+4>>2]=s+x;x=F[n+44>>2];y=F[n+48>>2];A=F[n+52>>2];z=F[n+56>>2];v=F[n+60>>2];B=F[I>>2];w=F[n+68>>2];t=F[n+72>>2];r=F[n>>2];s=F[n+40>>2];o=F[n+4>>2];p=F[n+8>>2];l=F[n+12>>2];e=F[n+16>>2];f=F[n+20>>2];k=F[n+24>>2];c=F[n+28>>2];a=F[n+32>>2];F[h+76>>2]=F[n+76>>2]-F[n+36>>2];F[h+72>>2]=t-a;F[h+68>>2]=w-c;u=h- -64|0;F[u>>2]=B-k;F[h+60>>2]=v-f;F[h+56>>2]=z-e;F[h+52>>2]=A-l;F[h+48>>2]=y-p;F[h+44>>2]=x-o;F[h+40>>2]=s-r;c=L((0-C&254)>>>1|0,120)+5680|0;ha(h+80|0,h,c+40|0);a=h+40|0;ha(a,a,c);ha(h+120|0,c+80|0,n+120|0);S=F[n+84>>2];T=F[n+88>>2];U=F[n+92>>2];o=F[n+96>>2];p=F[n+100>>2];l=F[n+104>>2];e=F[n+108>>2];f=F[n+112>>2];k=F[n+116>>2];P=F[h+44>>2];R=F[h+84>>2];M=F[h+48>>2];K=F[h+88>>2];O=F[h+52>>2];N=F[h+92>>2];C=F[h+56>>2];I=F[h+96>>2];x=F[h+60>>2];y=F[h+100>>2];A=F[u>>2];z=F[h+104>>2];v=F[h+68>>2];B=F[h+108>>2];w=F[h+72>>2];t=F[h+112>>2];n=F[n+80>>2];r=F[h+40>>2];s=F[h+80>>2];c=F[h+76>>2];a=F[h+116>>2];F[h+76>>2]=c+a;F[h+72>>2]=t+w;F[h+68>>2]=v+B;F[u>>2]=A+z;F[h+60>>2]=x+y;F[h+56>>2]=C+I;F[h+52>>2]=N+O;F[h+48>>2]=K+M;F[h+44>>2]=P+R;F[h+40>>2]=s+r;F[h+36>>2]=a-c;F[h+32>>2]=t-w;F[h+28>>2]=B-v;F[h+24>>2]=z-A;F[h+20>>2]=y-x;F[h+16>>2]=I-C;F[h+12>>2]=N-O;F[h+8>>2]=K-M;F[h+4>>2]=R-P;F[h>>2]=s-r;C=F[h+156>>2];I=k<<1;F[h+156>>2]=C+I;x=F[h+152>>2];y=f<<1;F[h+152>>2]=x+y;A=F[h+148>>2];z=e<<1;F[h+148>>2]=A+z;v=F[h+144>>2];B=l<<1;F[h+144>>2]=v+B;w=F[h+140>>2];t=p<<1;F[h+140>>2]=w+t;r=F[h+136>>2];s=o<<1;F[h+136>>2]=r+s;o=F[h+132>>2];p=U<<1;F[h+132>>2]=o+p;l=F[h+128>>2];e=T<<1;F[h+128>>2]=l+e;f=F[h+124>>2];k=S<<1;F[h+124>>2]=f+k;c=F[h+120>>2];a=n<<1;F[h+120>>2]=c+a;F[h+112>>2]=y-x;F[h+108>>2]=z-A;F[h+104>>2]=B-v;F[h+100>>2]=t-w;F[h+96>>2]=s-r;F[h+92>>2]=p-o;F[h+88>>2]=e-l;F[h+84>>2]=k-f;F[h+80>>2]=a-c;F[h+116>>2]=I-C}ha(g,m+320|0,E);ha(V,J,H);ha(W,H,E);a=b-1|0;if((b|0)>0){continue}break}break w}a=a-2|0;if(b){continue}}break}_=m+2272|0;c=j+688|0;nb(c,j+88|0);b=j+640|0;ha(b,g,c);a=j+592|0;ha(a,j+48|0,c);Ga(j+496|0,a);Ga(j+736|0,b);u=!(G[d+1|0]^G[j+497|0]|G[d|0]^G[j+496|0]|G[d+2|0]^G[j+498|0]|G[d+3|0]^G[j+499|0]|G[d+4|0]^G[j+500|0]|G[d+5|0]^G[j+501|0]|G[d+6|0]^G[j+502|0]|G[d+7|0]^G[j+503|0]|G[d+8|0]^G[j+504|0]|G[d+9|0]^G[j+505|0]|G[d+10|0]^G[j+506|0]|G[d+11|0]^G[j+507|0]|G[d+12|0]^G[j+508|0]|G[d+13|0]^G[j+509|0]|G[d+14|0]^G[j+510|0]|G[d+15|0]^G[j+511|0]|G[d+16|0]^G[j+512|0]|G[d+17|0]^G[j+513|0]|G[d+18|0]^G[j+514|0]|G[d+19|0]^G[j+515|0]|G[d+20|0]^G[j+516|0]|G[d+21|0]^G[j+517|0]|G[d+22|0]^G[j+518|0]|G[d+23|0]^G[j+519|0]|G[d+24|0]^G[j+520|0]|G[d+25|0]^G[j+521|0]|G[d+26|0]^G[j+522|0]|G[d+27|0]^G[j+523|0]|G[d+28|0]^G[j+524|0]|G[d+29|0]^G[j+525|0]|G[d+30|0]^G[j+526|0]|G[d+31|0]^(G[j+527|0]^G[j+736|0]<<7&128))}_=j+768|0;return(u|0)!=0}function mb(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0;c=G[a+48|0];b=c>>>24|0;n=G[a+47|0];e=n|c<<8;g=G[a+49|0];h=g;d=h>>>16|0;h=h<<16;d=b|d;c=e|h;H=((d&3)<<30|c>>>2)&2097151;c=se(H,0,136657,0);d=G[a+27|0];b=d>>>24|0;f=G[a+26|0];h=f|d<<8;e=c;Y=G[a+28|0];d=Y;c=d>>>16|0;d=d<<16;c=b|c;b=d|h;c=((c&3)<<30|b>>>2)&2097151;d=e+c|0;b=$;h=d;d=c>>>0>d>>>0?b+1|0:b;c=G[a+50|0];b=c>>>24|0;g=g|c<<8;e=G[a+51|0];c=e>>>16|0;i=g|e<<16;g=b|c;c=h;e=G[a+52|0];b=e>>>8|0;h=e<<24;g=b|g;b=h|i;I=((g&127)<<25|b>>>7)&2097151;b=se(I,0,-997805,-1);h=c+b|0;c=$+d|0;c=b>>>0>h>>>0?c+1|0:c;d=c;b=G[a+53|0];c=b>>>24|0;g=e|b<<8;e=G[a+54|0];b=e>>>16|0;i=g|e<<16;g=b|c;b=h;e=G[a+55|0];c=e>>>8|0;h=e<<24;g=c|g;c=h|i;J=((g&15)<<28|c>>>4)&2097151;c=se(J,0,654183,0);h=b+c|0;b=$+d|0;b=c>>>0>h>>>0?b+1|0:b;c=h;h=b;d=G[a+56|0];b=d>>>24|0;i=e|d<<8;j=c;g=G[a+57|0];e=g;c=e>>>16|0;e=e<<16;d=b|c;c=e|i;K=((d&1)<<31|c>>>1)&2097151;b=se(K,0,470296,0);d=j+b|0;c=$+h|0;i=d;d=b>>>0>d>>>0?c+1|0:c;b=G[a+58|0];c=b>>>24|0;h=g|b<<8;b=c;e=h;h=G[a+59|0];c=h>>>16|0;g=e|h<<16;e=b|c;r=G[a+60|0];h=r;c=h>>>8|0;h=h<<24;e=c|e;c=h|g;L=((e&63)<<26|c>>>6)&2097151;c=se(L,0,666643,0);h=c+i|0;b=$+d|0;b=c>>>0>h>>>0?b+1|0:b;j=h;i=b;k=se(H,o,-997805,-1);b=G[a+24|0];d=b>>>24|0;e=G[a+23|0];g=e|b<<8;b=G[a+25|0];c=b>>>16|0;g=g|b<<16;d=c|d|f>>>8;b=f<<24|g;c=((d&31)<<27|b>>>5)&2097151;d=c+k|0;b=$;b=c>>>0>d>>>0?b+1|0:b;c=d;d=se(I,o,654183,0);f=c+d|0;c=$+b|0;c=d>>>0>f>>>0?c+1|0:c;b=se(J,o,470296,0);d=b+f|0;c=$+c|0;c=b>>>0>d>>>0?c+1|0:c;b=se(K,o,666643,0);f=b+d|0;d=$+c|0;g=f;f=b>>>0>f>>>0?d+1|0:d;b=se(H,o,654183,0);c=e<<16&2031616|(G[a+21|0]|G[a+22|0]<<8);d=b+c|0;b=$;b=c>>>0>d>>>0?b+1|0:b;c=se(I,o,470296,0);d=c+d|0;b=$+b|0;b=c>>>0>d>>>0?b+1|0:b;c=se(J,o,666643,0);e=c+d|0;d=$+b|0;l=e;d=c>>>0>e>>>0?d+1|0:d;e=d;s=d-((l>>>0<4293918720)-1|0)|0;b=s>>>21|0;E=l- -1048576|0;d=(s&2097151)<<11|E>>>21;g=d+g|0;c=b+f|0;c=d>>>0>g>>>0?c+1|0:c;p=c;Z=h- -1048576|0;f=i-((h>>>0<4293918720)-1|0)|0;h=f;k=c-((g>>>0<4293918720)-1|0)|0;q=g- -1048576|0;c=q;c=(k&2097151)<<11|c>>>21;j=c+j|0;d=(k>>21)+i|0;d=c>>>0>j>>>0?d+1|0:d;c=j;b=Z&-2097152;u=c-b|0;w=d-((b>>>0>c>>>0)+f|0)|0;b=G[a+61|0];c=b>>>24|0;f=r|b<<8;d=G[a+62|0];b=d>>>16|0;f=f|d<<16;d=b|c;b=G[a+63|0];c=b>>>8|0;b=b<<24|f;d=c|d;c=d>>>3|0;M=(d&7)<<29|b>>>3;A=c;b=se(M,c,-683901,-1);d=G[a+44|0];c=d;c=c<<16&2031616|(G[a+42|0]|G[a+43|0]<<8);f=b+c|0;b=$;b=c>>>0>f>>>0?b+1|0:b;r=b;j=b-((f>>>0<4293918720)-1|0)|0;t=f- -1048576|0;b=t;x=(j&2097151)<<11|b>>>21;i=j>>21;b=G[a+45|0];c=b>>>24|0;m=d|b<<8;b=G[a+46|0];d=b>>>16|0;m=m|b<<16;d=c|d|n>>>8;b=n<<24|m;b=((d&31)<<27|b>>>5)&2097151;d=b+x|0;c=i;Q=d;c=b>>>0>d>>>0?c+1|0:c;y=c;c=se(d,c,-683901,-1);d=c+u|0;b=$+w|0;b=c>>>0>d>>>0?b+1|0:b;c=d;_=c- -1048576|0;i=b-((c>>>0<4293918720)-1|0)|0;N=i;d=_&-2097152;W=c-d|0;X=b-((c>>>0>>0)+i|0)|0;c=se(Q,y,136657,0);b=q&-2097152;d=c+(g-b|0)|0;b=$+(p-((b>>>0>g>>>0)+k|0)|0)|0;q=d;k=c>>>0>d>>>0?b+1|0:b;b=t&-2097152;t=f-b|0;n=r-((b>>>0>f>>>0)+j|0)|0;c=se(L,o,-683901,-1);d=G[a+40|0];b=d>>>24|0;g=G[a+39|0];f=g|d<<8;i=c;c=G[a+41|0];d=c>>>16|0;c=c<<16;d=b|d;b=c|f;c=d>>>3|0;b=(d&7)<<29|b>>>3;d=i+b|0;c=c+$|0;c=b>>>0>d>>>0?c+1|0:c;b=d;d=se(M,A,136657,0);f=b+d|0;b=$+c|0;p=f;f=d>>>0>f>>>0?b+1|0:b;r=se(K,o,-683901,-1);b=G[a+37|0];c=b>>>24|0;B=G[a+36|0];d=B|b<<8;b=c;i=d;d=G[a+38|0];c=d>>>16|0;i=i|d<<16;d=b|c|g>>>8;b=g<<24|i;b=((d&63)<<26|b>>>6)&2097151;c=b+r|0;d=$;d=b>>>0>c>>>0?d+1|0:d;b=c;c=se(L,o,136657,0);g=b+c|0;b=$+d|0;b=c>>>0>g>>>0?b+1|0:b;d=se(M,A,-997805,-1);g=d+g|0;c=$+b|0;j=g;c=d>>>0>g>>>0?c+1|0:c;v=c;u=c-((g>>>0<4293918720)-1|0)|0;T=g- -1048576|0;c=T;c=(u&2097151)<<11|c>>>21;d=c+p|0;b=(u>>21)+f|0;i=d;b=c>>>0>d>>>0?b+1|0:b;w=b;r=b-((d>>>0<4293918720)-1|0)|0;b=r>>21;C=d- -1048576|0;d=(r&2097151)<<11|C>>>21;f=d+t|0;c=b+n|0;R=f;c=d>>>0>f>>>0?c+1|0:c;F=c;b=se(f,c,-683901,-1);d=b+q|0;c=$+k|0;S=d;t=b>>>0>d>>>0?c+1|0:c;k=l;l=e;c=se(H,o,470296,0);e=G[a+19|0];b=e>>>24|0;d=G[a+18|0];f=d|e<<8;g=c;e=G[a+20|0];c=e>>>16|0;e=e<<16;p=b|c;b=e|f;e=(p&7)<<29|b>>>3;f=g+e|0;b=$+(p>>>3|0)|0;z=f;e=e>>>0>f>>>0?b+1|0:b;n=se(H,o,666643,0);c=G[a+16|0];b=c>>>24|0;x=G[a+15|0];g=x|c<<8;f=G[a+17|0];c=f>>>16|0;g=g|f<<16;f=b|c;c=d<<24;d=d>>>8|f;b=c|g;b=((d&63)<<26|b>>>6)&2097151;c=b+n|0;d=$;g=c;d=b>>>0>c>>>0?d+1|0:d;m=d;q=d-((c>>>0<4293918720)-1|0)|0;b=q>>>21|0;U=c- -1048576|0;d=(q&2097151)<<11|U>>>21;f=d+z|0;c=b+e|0;c=d>>>0>f>>>0?c+1|0:c;d=se(I,o,666643,0);e=d+f|0;b=$+c|0;f=e;b=d>>>0>e>>>0?b+1|0:b;n=b;p=b-((e>>>0<4293918720)-1|0)|0;z=e- -1048576|0;b=C&-2097152;d=w-((b>>>0>i>>>0)+r|0)|0;O=i-b|0;C=d;b=(p&2097151)<<11|z>>>21;e=b+k|0;c=(p>>>21|0)+l|0;c=b>>>0>e>>>0?c+1|0:c;i=e;b=E&-2097152;e=se(Q,y,-997805,-1);l=(i-b|0)+e|0;b=$+(c-((s&8191)+(b>>>0>i>>>0)|0)|0)|0;b=e>>>0>l>>>0?b+1|0:b;e=se(R,F,136657,0);i=e+l|0;c=$+b|0;c=e>>>0>i>>>0?c+1|0:c;b=se(O,d,-683901,-1);e=b+i|0;d=$+c|0;d=b>>>0>e>>>0?d+1|0:d;r=d;k=d-((e>>>0<4293918720)-1|0)|0;c=k>>21;s=e- -1048576|0;b=(k&2097151)<<11|s>>>21;d=b+S|0;c=c+t|0;c=b>>>0>d>>>0?c+1|0:c;b=d;l=c;i=c-((b>>>0<4293918720)-1|0)|0;c=i>>21;w=b- -1048576|0;t=(i&2097151)<<11|w>>>21;E=t+W|0;d=c+X|0;aa=E;t=t>>>0>E>>>0?d+1|0:d;c=w&-2097152;ba=b-c|0;ca=l-((b>>>0>>0)+i|0)|0;b=s&-2097152;S=e-b|0;E=r-((b>>>0>e>>>0)+k|0)|0;c=se(Q,y,654183,0);b=z&-2097152;d=c+(f-b|0)|0;b=$+(n-((b>>>0>f>>>0)+p|0)|0)|0;b=c>>>0>d>>>0?b+1|0:b;c=se(R,F,-997805,-1);e=c+d|0;d=$+b|0;d=c>>>0>e>>>0?d+1|0:d;b=se(O,C,136657,0);e=b+e|0;c=$+d|0;z=e;i=b>>>0>e>>>0?c+1|0:c;b=T&-2097152;s=j-b|0;u=v-((b>>>0>j>>>0)+u|0)|0;b=se(J,o,-683901,-1);d=G[a+35|0];c=d>>>24|0;f=G[a+34|0];e=f|d<<8;d=b;c=B>>>16|c;b=B<<16|e;b=((c&1)<<31|b>>>1)&2097151;d=d+b|0;c=$;c=b>>>0>d>>>0?c+1|0:c;b=se(K,o,136657,0);e=b+d|0;d=$+c|0;d=b>>>0>e>>>0?d+1|0:d;b=se(L,o,-997805,-1);e=b+e|0;c=$+d|0;c=b>>>0>e>>>0?c+1|0:c;d=se(M,A,654183,0);e=d+e|0;b=$+c|0;n=e;e=d>>>0>e>>>0?b+1|0:b;k=se(I,o,-683901,-1);b=G[a+32|0];d=b>>>24|0;p=G[a+31|0];j=p|b<<8;b=G[a+33|0];c=b>>>16|0;j=j|b<<16;d=c|d|f>>>8;b=f<<24|j;c=((d&15)<<28|b>>>4)&2097151;d=c+k|0;b=$;b=c>>>0>d>>>0?b+1|0:b;c=d;d=se(J,o,136657,0);f=c+d|0;c=$+b|0;c=d>>>0>f>>>0?c+1|0:c;b=se(K,o,-997805,-1);d=b+f|0;c=$+c|0;c=b>>>0>d>>>0?c+1|0:c;b=se(L,o,654183,0);f=b+d|0;d=$+c|0;d=b>>>0>f>>>0?d+1|0:d;c=se(M,A,470296,0);f=c+f|0;b=$+d|0;b=c>>>0>f>>>0?b+1|0:b;r=b;k=b-((f>>>0<4293918720)-1|0)|0;w=f- -1048576|0;b=w;b=(k&2097151)<<11|b>>>21;j=b+n|0;c=(k>>21)+e|0;e=j;c=b>>>0>e>>>0?c+1|0:c;j=c;c=c-((e>>>0<4293918720)-1|0)|0;d=c>>21;l=e- -1048576|0;n=(c&2097151)<<11|l>>>21;v=n+s|0;b=d+u|0;V=v;b=n>>>0>v>>>0?b+1|0:b;s=b;d=se(v,b,-683901,-1);n=d+z|0;b=$+i|0;b=d>>>0>n>>>0?b+1|0:b;i=b;b=l&-2097152;j=j-((b>>>0>e>>>0)+c|0)|0;P=e-b|0;B=j;b=se(Q,y,470296,0);c=U&-2097152;d=b+(g-c|0)|0;c=$+(m-((q&2047)+(c>>>0>g>>>0)|0)|0)|0;c=b>>>0>d>>>0?c+1|0:c;b=d;d=se(R,F,654183,0);e=b+d|0;b=$+c|0;b=d>>>0>e>>>0?b+1|0:b;c=se(O,C,-997805,-1);d=c+e|0;b=$+b|0;b=c>>>0>d>>>0?b+1|0:b;c=se(v,s,136657,0);e=c+d|0;d=$+b|0;d=c>>>0>e>>>0?d+1|0:d;b=se(P,j,-683901,-1);e=b+e|0;c=$+d|0;c=b>>>0>e>>>0?c+1|0:c;l=c;j=c-((e>>>0<4293918720)-1|0)|0;c=j>>21;q=e- -1048576|0;b=(j&2097151)<<11|q>>>21;g=b+n|0;d=c+i|0;d=b>>>0>g>>>0?d+1|0:d;b=g;i=d;g=d-((b>>>0<4293918720)-1|0)|0;d=b- -1048576|0;c=(g>>21)+E|0;n=(g&2097151)<<11|d>>>21;m=n+S|0;W=m;n=n>>>0>m>>>0?c+1|0:c;c=d&-2097152;X=b-c|0;S=i-((b>>>0>>0)+g|0)|0;b=q&-2097152;z=e-b|0;u=l-((b>>>0>e>>>0)+j|0)|0;c=se(Q,y,666643,0);d=G[a+14|0];b=d>>>24|0;i=G[a+13|0];e=i|d<<8;d=x>>>16|b;b=x<<16|e;b=((d&1)<<31|b>>>1)&2097151;d=b+c|0;c=$;c=b>>>0>d>>>0?c+1|0:c;b=d;d=se(R,F,470296,0);e=b+d|0;b=$+c|0;b=d>>>0>e>>>0?b+1|0:b;c=se(O,C,654183,0);d=c+e|0;b=$+b|0;m=d;g=c>>>0>d>>>0?b+1|0:b;b=w&-2097152;q=f-b|0;l=r-((b>>>0>f>>>0)+k|0)|0;j=se(H,o,-683901,-1);b=G[a+29|0];c=b>>>24|0;d=Y|b<<8;b=c;e=d;d=G[a+30|0];c=d>>>16|0;e=e|d<<16;d=b|c|p>>>8;b=p<<24|e;b=((d&127)<<25|b>>>7)&2097151;c=b+j|0;d=$;d=b>>>0>c>>>0?d+1|0:d;b=c;c=se(I,o,136657,0);e=b+c|0;b=$+d|0;b=c>>>0>e>>>0?b+1|0:b;d=se(J,o,-997805,-1);e=d+e|0;c=$+b|0;c=d>>>0>e>>>0?c+1|0:c;b=se(K,o,654183,0);d=b+e|0;c=$+c|0;c=b>>>0>d>>>0?c+1|0:c;b=d;d=se(L,o,470296,0);e=b+d|0;b=$+c|0;b=d>>>0>e>>>0?b+1|0:b;c=se(M,A,666643,0);e=c+e|0;d=$+b|0;d=c>>>0>e>>>0?d+1|0:d;c=h>>21;h=(h&2097151)<<11|Z>>>21;e=h+e|0;b=c+d|0;b=e>>>0>>0?b+1|0:b;r=b;k=b-((e>>>0<4293918720)-1|0)|0;w=e- -1048576|0;b=w;d=(k&2097151)<<11|b>>>21;h=d+q|0;b=(k>>21)+l|0;A=h;b=d>>>0>h>>>0?b+1|0:b;v=b;b=se(h,b,-683901,-1);c=b+m|0;d=$+g|0;d=b>>>0>c>>>0?d+1|0:d;b=c;c=se(V,s,-997805,-1);h=b+c|0;b=$+d|0;b=c>>>0>h>>>0?b+1|0:b;d=se(P,B,136657,0);h=d+h|0;c=$+b|0;p=h;h=d>>>0>h>>>0?c+1|0:c;c=se(R,F,666643,0);b=G[a+11|0];d=b>>>24|0;l=G[a+10|0];g=l|b<<8;f=G[a+12|0];b=f>>>16|0;f=g|f<<16;g=c;c=b|d|i>>>8;b=((c&15)<<28|(i<<24|f)>>>4)&2097151;d=g+b|0;c=$;c=b>>>0>d>>>0?c+1|0:c;b=d;d=se(O,C,470296,0);f=b+d|0;b=$+c|0;b=d>>>0>f>>>0?b+1|0:b;c=se(A,v,136657,0);d=c+f|0;b=$+b|0;b=c>>>0>d>>>0?b+1|0:b;c=se(V,s,654183,0);f=c+d|0;d=$+b|0;d=c>>>0>f>>>0?d+1|0:d;b=se(P,B,-997805,-1);f=b+f|0;c=$+d|0;x=f;c=b>>>0>f>>>0?c+1|0:c;j=c;b=f;i=c-((b>>>0<4293918720)-1|0)|0;m=b- -1048576|0;b=m;c=(i&2097151)<<11|b>>>21;f=c+p|0;b=(i>>21)+h|0;b=c>>>0>f>>>0?b+1|0:b;h=f;q=f- -1048576|0;c=q;g=b-((f>>>0<4293918720)-1|0)|0;d=g>>21;f=(g&2097151)<<11|c>>>21;p=f+z|0;c=d+u|0;F=p;p=f>>>0>p>>>0?c+1|0:c;f=h;d=b;c=w&-2097152;b=e-c|0;e=r-((c>>>0>e>>>0)+k|0)|0;h=(N&2097151)<<11|_>>>21;k=h+b|0;b=(N>>21)+e|0;b=h>>>0>k>>>0?b+1|0:b;h=k;r=b;k=b-((h>>>0<4293918720)-1|0)|0;w=h- -1048576|0;b=w;y=(k&2097151)<<11|b>>>21;c=k>>21;u=c;c=se(y,c,-683901,-1);e=c+f|0;b=$+d|0;b=c>>>0>e>>>0?b+1|0:b;d=e;c=q&-2097152;E=d-c|0;T=b-((c>>>0>d>>>0)+g|0)|0;c=se(y,u,136657,0);d=c+x|0;b=$+j|0;b=c>>>0>d>>>0?b+1|0:b;c=m&-2097152;z=d-c|0;N=b-((c>>>0>d>>>0)+i|0)|0;i=se(O,C,666643,0);c=G[a+8|0];b=c>>>24|0;e=G[a+7|0];f=e|c<<8;c=G[a+9|0];d=c>>>16|0;f=f|c<<16;c=b|d|l>>>8;c=((c&127)<<25|(l<<24|f)>>>7)&2097151;d=c+i|0;b=$;b=c>>>0>d>>>0?b+1|0:b;c=d;d=se(A,v,-997805,-1);f=c+d|0;c=$+b|0;c=d>>>0>f>>>0?c+1|0:c;b=se(V,s,470296,0);f=b+f|0;d=$+c|0;d=b>>>0>f>>>0?d+1|0:d;c=se(P,B,654183,0);f=c+f|0;b=$+d|0;j=f;d=c>>>0>f>>>0?b+1|0:b;b=se(A,v,654183,0);f=G[a+6|0];c=f>>>24|0;i=G[a+5|0];f=i|f<<8;g=b;b=e>>>16|0;e=e<<16;c=b|c;b=e|f;b=((c&3)<<30|b>>>2)&2097151;e=g+b|0;c=$;c=b>>>0>e>>>0?c+1|0:c;b=e;e=se(V,s,666643,0);f=b+e|0;b=$+c|0;b=e>>>0>f>>>0?b+1|0:b;e=se(P,B,470296,0);f=e+f|0;c=$+b|0;x=f;c=e>>>0>f>>>0?c+1|0:c;g=c;b=f;f=c-((b>>>0<4293918720)-1|0)|0;m=b- -1048576|0;c=m;c=(f&2097151)<<11|c>>>21;e=c+j|0;b=(f>>21)+d|0;q=e;b=c>>>0>e>>>0?b+1|0:b;d=b;b=e;e=d-((b>>>0<4293918720)-1|0)|0;j=b- -1048576|0;c=j;l=(e&2097151)<<11|c>>>21;s=l+z|0;c=(e>>21)+N|0;C=s;l=l>>>0>s>>>0?c+1|0:c;b=se(y,u,-997805,-1);c=b+q|0;d=$+d|0;d=b>>>0>c>>>0?d+1|0:d;b=j&-2097152;U=c-b|0;z=d-((b>>>0>c>>>0)+e|0)|0;b=se(y,u,654183,0);d=b+x|0;c=$+g|0;c=b>>>0>d>>>0?c+1|0:c;b=m&-2097152;s=d-b|0;N=c-((b>>>0>d>>>0)+f|0)|0;j=se(A,v,470296,0);b=G[a+3|0];c=b>>>24|0;f=G[a+2|0];e=f|b<<8;d=G[a+4|0];b=d>>>16|0;e=e|d<<16;c=b|c|i>>>8;b=((c&31)<<27|(i<<24|e)>>>5)&2097151;c=b+j|0;d=$;d=b>>>0>c>>>0?d+1|0:d;b=c;c=se(P,B,666643,0);e=b+c|0;b=$+d|0;g=e;e=c>>>0>e>>>0?b+1|0:b;b=se(A,v,666643,0);c=f<<16&2031616|(G[a|0]|G[a+1|0]<<8);d=b+c|0;b=$;b=c>>>0>d>>>0?b+1|0:b;j=b;i=b-((d>>>0<4293918720)-1|0)|0;x=d- -1048576|0;b=x;f=(i&2097151)<<11|b>>>21;g=f+g|0;b=(i>>21)+e|0;m=g;b=f>>>0>g>>>0?b+1|0:b;g=b;b=m;f=g-((b>>>0<4293918720)-1|0)|0;q=b- -1048576|0;b=q;e=(f&2097151)<<11|b>>>21;v=e+s|0;b=(f>>21)+N|0;b=e>>>0>v>>>0?b+1|0:b;e=b;b=se(y,u,470296,0);m=b+m|0;c=$+g|0;c=b>>>0>m>>>0?c+1|0:c;g=q&-2097152;b=m-g|0;f=c-((g>>>0>m>>>0)+f|0)|0;m=b;c=se(y,u,666643,0);b=x&-2097152;g=c+(d-b|0)|0;b=$+(j-((b>>>0>d>>>0)+i|0)|0)|0;i=g;d=g;b=c>>>0>d>>>0?b+1|0:b;c=b>>21;b=(b&2097151)<<11|d>>>21;d=m+b|0;c=c+f|0;c=b>>>0>d>>>0?c+1|0:c;g=d;b=c>>21;c=(c&2097151)<<11|d>>>21;d=c+v|0;b=b+e|0;b=c>>>0>d>>>0?b+1|0:b;f=d;c=b>>21;b=(b&2097151)<<11|d>>>21;e=b+U|0;d=c+z|0;B=e;c=e;d=b>>>0>c>>>0?d+1|0:d;b=d>>21;d=(d&2097151)<<11|c>>>21;e=d+C|0;c=b+l|0;v=e;b=e;c=d>>>0>b>>>0?c+1|0:c;d=c>>21;c=(c&2097151)<<11|b>>>21;e=c+E|0;b=d+T|0;u=e;d=e;b=c>>>0>d>>>0?b+1|0:b;c=b>>21;b=(b&2097151)<<11|d>>>21;d=b+F|0;c=c+p|0;c=b>>>0>d>>>0?c+1|0:c;x=d;b=c>>21;c=(c&2097151)<<11|d>>>21;d=c+X|0;b=b+S|0;b=c>>>0>d>>>0?b+1|0:b;m=d;c=b>>21;b=(b&2097151)<<11|d>>>21;e=b+W|0;d=c+n|0;q=e;c=e;d=b>>>0>c>>>0?d+1|0:d;b=d>>21;d=(d&2097151)<<11|c>>>21;e=d+ba|0;c=b+ca|0;n=e;b=e;c=d>>>0>b>>>0?c+1|0:c;d=c>>21;c=(c&2097151)<<11|b>>>21;e=c+aa|0;b=d+t|0;p=e;d=e;b=c>>>0>d>>>0?b+1|0:b;c=b>>21;e=(b&2097151)<<11|d>>>21;b=w&-2097152;d=h-b|0;e=e+d|0;b=(r-((b>>>0>h>>>0)+k|0)|0)+c|0;r=e;c=e;b=d>>>0>c>>>0?b+1|0:b;t=(b&2097151)<<11|c>>>21;d=b>>21;j=d;c=i&2097151;d=se(t,d,666643,0)+c|0;b=$;i=d;b=c>>>0>d>>>0?b+1|0:b;h=b;D[a|0]=d;D[a+1|0]=(b&255)<<24|d>>>8;b=g&2097151;d=se(t,j,470296,0)+b|0;c=$;c=b>>>0>d>>>0?c+1|0:c;e=(h&2097151)<<11|i>>>21;g=e+d|0;b=(h>>21)+c|0;b=e>>>0>g>>>0?b+1|0:b;e=g;d=e;D[a+4|0]=(b&2047)<<21|d>>>11;c=b;D[a+3|0]=(b&7)<<29|d>>>3;d=f&2097151;f=se(t,j,654183,0)+d|0;b=$;b=d>>>0>f>>>0?b+1|0:b;d=f;f=(c&2097151)<<11|e>>>21;g=d+f|0;c=(c>>21)+b|0;c=f>>>0>g>>>0?c+1|0:c;b=c;D[a+6|0]=(b&63)<<26|g>>>6;f=0;k=e&2097151;c=k;D[a+2|0]=((h&65535)<<16|i>>>16)&31|c<<5;d=B&2097151;h=se(t,j,-997805,-1)+d|0;c=$;c=d>>>0>h>>>0?c+1|0:c;d=h;h=(b&2097151)<<11|g>>>21;e=d+h|0;b=(b>>21)+c|0;i=e;c=e;b=c>>>0>>0?b+1|0:b;D[a+9|0]=(b&511)<<23|c>>>9;D[a+8|0]=(b&1)<<31|c>>>1;e=0;l=g&2097151;d=l;D[a+5|0]=(f&524287)<<13|k>>>19|d<<2;c=v&2097151;h=se(t,j,136657,0)+c|0;d=$;d=c>>>0>h>>>0?d+1|0:d;c=b;b=b>>21;c=(c&2097151)<<11|i>>>21;h=c+h|0;b=b+d|0;b=c>>>0>h>>>0?b+1|0:b;f=h;c=f;D[a+12|0]=(b&4095)<<20|c>>>12;D[a+11|0]=(b&15)<<28|c>>>4;h=0;g=i&2097151;d=g;D[a+7|0]=(e&16383)<<18|l>>>14|d<<7;d=u&2097151;e=se(t,j,-683901,-1)+d|0;c=$;c=d>>>0>e>>>0?c+1|0:c;d=b;b=b>>21;d=(d&2097151)<<11|f>>>21;e=d+e|0;c=b+c|0;c=d>>>0>e>>>0?c+1|0:c;b=e;D[a+14|0]=(c&127)<<25|b>>>7;f=f&2097151;D[a+10|0]=(h&131071)<<15|g>>>17|f<<4;b=c;c=b>>21;h=(b&2097151)<<11|e>>>21;g=h+(x&2097151)|0;d=0;b=c+d|0;b=h>>>0>g>>>0?b+1|0:b;c=g;D[a+17|0]=(b&1023)<<22|c>>>10;D[a+16|0]=(b&3)<<30|c>>>2;i=e&2097151;e=i;D[a+13|0]=(d&1048575)<<12|f>>>20|e<<1;c=b>>21;b=(b&2097151)<<11|g>>>21;e=b+(m&2097151)|0;h=0;d=c+h|0;d=b>>>0>e>>>0?d+1|0:d;f=e;b=e;D[a+20|0]=(d&8191)<<19|b>>>13;D[a+19|0]=(d&31)<<27|b>>>5;g=g&2097151;c=g;D[a+15|0]=(h&32767)<<17|i>>>15|c<<6;h=(d&2097151)<<11|b>>>21;i=h+(q&2097151)|0;e=0;b=e+(d>>21)|0;b=h>>>0>i>>>0?b+1|0:b;h=b;D[a+21|0]=i;b=f;D[a+18|0]=(e&262143)<<14|c>>>18|b<<3;c=i;D[a+22|0]=(h&255)<<24|c>>>8;c=(h&2097151)<<11|c>>>21;e=c+(n&2097151)|0;b=h>>21;b=c>>>0>e>>>0?b+1|0:b;g=e;c=e;D[a+25|0]=(b&2047)<<21|c>>>11;d=c;D[a+24|0]=(b&7)<<29|c>>>3;c=b>>21;b=(b&2097151)<<11|d>>>21;f=b+(p&2097151)|0;d=b>>>0>f>>>0?c+1|0:c;b=f;D[a+27|0]=(d&63)<<26|b>>>6;e=0;g=g&2097151;b=g;D[a+23|0]=((h&65535)<<16|i>>>16)&31|b<<5;c=d>>21;b=(d&2097151)<<11|f>>>21;d=b+(r&2097151)|0;c=b>>>0>d>>>0?c+1|0:c;b=d;D[a+31|0]=(c&131071)<<15|b>>>17;D[a+30|0]=(c&511)<<23|b>>>9;D[a+29|0]=(c&1)<<31|b>>>1;b=0;f=f&2097151;D[a+26|0]=(e&524287)<<13|g>>>19|f<<2;D[a+28|0]=(b&16383)<<18|f>>>14|d<<7}function Wd(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;k=_-160|0;_=k;l=-1;if(!(e>>>0<8|g>>>0>i>>>0)){i=F[a+4>>2];j=F[a+8>>2];a=k+80|0;Aa(b,c,0,0,i,j,a,80);b=F[k+108>>2];F[k+24>>2]=F[k+104>>2];F[k+28>>2]=b;b=F[k+100>>2];F[k+16>>2]=F[k+96>>2];F[k+20>>2]=b;b=F[k+92>>2];F[k+8>>2]=F[k+88>>2];F[k+12>>2]=b;b=F[k+124>>2];F[k+40>>2]=F[k+120>>2];F[k+44>>2]=b;b=F[k+132>>2];F[k+48>>2]=F[k+128>>2];F[k+52>>2]=b;b=F[k+140>>2];F[k+56>>2]=F[k+136>>2];F[k+60>>2]=b;b=F[k+156>>2];F[k+72>>2]=F[k+152>>2];F[k+76>>2]=b;b=F[k+84>>2];F[k>>2]=F[k+80>>2];F[k+4>>2]=b;b=F[k+116>>2];F[k+32>>2]=F[k+112>>2];F[k+36>>2]=b;b=F[k+148>>2];F[k+64>>2]=F[k+144>>2];F[k+68>>2]=b;ia(a,80);ka(k+32|0,32,d,e-8|0,a);if(Ka((d+e|0)-8|0,a,8)){b=_-272|0;_=b;Hb(k,b+32|0);a=k- -64|0;c=G[a+4|0]|G[a+5|0]<<8|(G[a+6|0]<<16|G[a+7|0]<<24);F[b+16>>2]=G[a|0]|G[a+1|0]<<8|(G[a+2|0]<<16|G[a+3|0]<<24);F[b+20>>2]=c;c=G[a+12|0]|G[a+13|0]<<8|(G[a+14|0]<<16|G[a+15|0]<<24);F[b+24>>2]=G[a+8|0]|G[a+9|0]<<8|(G[a+10|0]<<16|G[a+11|0]<<24);F[b+28>>2]=c;if(g){c=0;while(1){d=c+f|0;a=G[d+4|0]|G[d+5|0]<<8|(G[d+6|0]<<16|G[d+7|0]<<24);F[b>>2]=G[d|0]|G[d+1|0]<<8|(G[d+2|0]<<16|G[d+3|0]<<24);F[b+4>>2]=a;a=G[d+12|0]|G[d+13|0]<<8|(G[d+14|0]<<16|G[d+15|0]<<24);F[b+8>>2]=G[d+8|0]|G[d+9|0]<<8|(G[d+10|0]<<16|G[d+11|0]<<24);F[b+12>>2]=a;a=_-16|0;_=a;n=G[d+15|0];o=G[d+14|0];p=G[d+13|0];q=G[d+12|0];s=G[d+11|0];r=G[d+10|0];t=G[d+9|0];u=G[d+8|0];m=G[d+6|0];v=G[d+5|0];w=G[d+4|0];x=G[d+3|0];y=G[d+2|0];z=G[d+1|0];A=G[d|0];e=F[b+256>>2];i=F[b+268>>2];l=F[b+264>>2];j=F[b+240>>2];B=G[d+7|0];d=F[b+260>>2];D[a+12|0]=j^G[((B^d)&255)+3392|0];D[a+8|0]=G[((r^l>>>8)&255)+3392|0]^j>>>8;D[a+4|0]=G[((p^i>>>16)&255)+3392|0]^j>>>16;D[a|0]=G[(A^e>>>24)+3392|0]^j>>>24;j=F[b+244>>2];D[a+13|0]=j^G[((l^s)&255)+3392|0];D[a+9|0]=G[((o^i>>>8)&255)+3392|0]^j>>>8;D[a+5|0]=G[((z^e>>>16)&255)+3392|0]^j>>>16;D[a+1|0]=G[(w^d>>>24)+3392|0]^j>>>24;j=F[b+248>>2];D[a+14|0]=j^G[((i^n)&255)+3392|0];D[a+10|0]=G[((y^e>>>8)&255)+3392|0]^j>>>8;D[a+6|0]=G[((v^d>>>16)&255)+3392|0]^j>>>16;D[a+2|0]=G[(u^l>>>24)+3392|0]^j>>>24;j=G[((e^x)&255)+3392|0];e=F[b+252>>2];D[a+15|0]=j^e;D[a+11|0]=G[((m^d>>>8)&255)+3392|0]^e>>>8;D[a+7|0]=G[((t^l>>>16)&255)+3392|0]^e>>>16;D[a+3|0]=G[(q^i>>>24)+3392|0]^e>>>24;xa(a);e=G[a+3|0];i=G[a+6|0];l=G[a+9|0];j=G[a+12|0];n=G[a+2|0];o=G[a+5|0];p=G[a+8|0];q=G[a+15|0];s=G[a+1|0];r=G[a+4|0];t=G[a+11|0];u=G[a+14|0];m=G[a|0];v=G[a+7|0];w=G[a+10|0];d=F[b+224>>2];D[a+12|0]=d^G[G[a+13|0]+3392|0];D[a+8|0]=G[w+3392|0]^d>>>8;D[a+4|0]=G[v+3392|0]^d>>>16;D[a|0]=G[m+3392|0]^d>>>24;d=F[b+228>>2];D[a+13|0]=d^G[u+3392|0];D[a+9|0]=G[t+3392|0]^d>>>8;D[a+5|0]=G[r+3392|0]^d>>>16;D[a+1|0]=G[s+3392|0]^d>>>24;d=F[b+232>>2];D[a+14|0]=d^G[q+3392|0];D[a+10|0]=G[p+3392|0]^d>>>8;D[a+6|0]=G[o+3392|0]^d>>>16;D[a+2|0]=G[n+3392|0]^d>>>24;d=F[b+236>>2];D[a+15|0]=d^G[j+3392|0];D[a+11|0]=G[l+3392|0]^d>>>8;D[a+7|0]=G[i+3392|0]^d>>>16;D[a+3|0]=G[e+3392|0]^d>>>24;xa(a);e=G[a+2|0];i=G[a+1|0];l=G[a|0];j=G[a+14|0];n=G[a+12|0];o=G[a+15|0];p=G[a+8|0];q=G[a+10|0];s=G[a+9|0];r=G[a+11|0];t=G[a+4|0];u=G[a+5|0];m=G[a+6|0];v=G[a+7|0];w=G[a+3|0];d=F[b+208>>2];D[a+12|0]=d^G[G[a+13|0]+3392|0];D[a+8|0]=G[q+3392|0]^d>>>8;D[a+4|0]=G[v+3392|0]^d>>>16;D[a|0]=G[l+3392|0]^d>>>24;d=F[b+212>>2];D[a+13|0]=d^G[j+3392|0];D[a+9|0]=G[r+3392|0]^d>>>8;D[a+5|0]=G[t+3392|0]^d>>>16;D[a+1|0]=G[i+3392|0]^d>>>24;d=F[b+216>>2];D[a+14|0]=d^G[o+3392|0];D[a+10|0]=G[p+3392|0]^d>>>8;D[a+6|0]=G[u+3392|0]^d>>>16;D[a+2|0]=G[e+3392|0]^d>>>24;d=F[b+220>>2];D[a+15|0]=d^G[n+3392|0];D[a+11|0]=G[s+3392|0]^d>>>8;D[a+7|0]=G[m+3392|0]^d>>>16;D[a+3|0]=G[w+3392|0]^d>>>24;xa(a);e=G[a+3|0];i=G[a+6|0];l=G[a+9|0];j=G[a+12|0];n=G[a+2|0];o=G[a+5|0];p=G[a+8|0];q=G[a+15|0];s=G[a+1|0];r=G[a+4|0];t=G[a+11|0];u=G[a+14|0];m=G[a|0];v=G[a+7|0];w=G[a+10|0];d=F[b+192>>2];D[a+12|0]=d^G[G[a+13|0]+3392|0];D[a+8|0]=G[w+3392|0]^d>>>8;D[a+4|0]=G[v+3392|0]^d>>>16;D[a|0]=G[m+3392|0]^d>>>24;d=F[b+196>>2];D[a+13|0]=d^G[u+3392|0];D[a+9|0]=G[t+3392|0]^d>>>8;D[a+5|0]=G[r+3392|0]^d>>>16;D[a+1|0]=G[s+3392|0]^d>>>24;d=F[b+200>>2];D[a+14|0]=d^G[q+3392|0];D[a+10|0]=G[p+3392|0]^d>>>8;D[a+6|0]=G[o+3392|0]^d>>>16;D[a+2|0]=G[n+3392|0]^d>>>24;d=F[b+204>>2];D[a+15|0]=d^G[j+3392|0];D[a+11|0]=G[l+3392|0]^d>>>8;D[a+7|0]=G[i+3392|0]^d>>>16;D[a+3|0]=G[e+3392|0]^d>>>24;xa(a);e=G[a+2|0];i=G[a+1|0];l=G[a|0];j=G[a+14|0];n=G[a+12|0];o=G[a+15|0];p=G[a+8|0];q=G[a+10|0];s=G[a+9|0];r=G[a+11|0];t=G[a+4|0];u=G[a+5|0];m=G[a+6|0];v=G[a+7|0];w=G[a+3|0];d=F[b+176>>2];D[a+12|0]=d^G[G[a+13|0]+3392|0];D[a+8|0]=G[q+3392|0]^d>>>8;D[a+4|0]=G[v+3392|0]^d>>>16;D[a|0]=G[l+3392|0]^d>>>24;d=F[b+180>>2];D[a+13|0]=d^G[j+3392|0];D[a+9|0]=G[r+3392|0]^d>>>8;D[a+5|0]=G[t+3392|0]^d>>>16;D[a+1|0]=G[i+3392|0]^d>>>24;d=F[b+184>>2];D[a+14|0]=d^G[o+3392|0];D[a+10|0]=G[p+3392|0]^d>>>8;D[a+6|0]=G[u+3392|0]^d>>>16;D[a+2|0]=G[e+3392|0]^d>>>24;d=F[b+188>>2];D[a+15|0]=d^G[n+3392|0];D[a+11|0]=G[s+3392|0]^d>>>8;D[a+7|0]=G[m+3392|0]^d>>>16;D[a+3|0]=G[w+3392|0]^d>>>24;xa(a);e=G[a+3|0];i=G[a+6|0];l=G[a+9|0];j=G[a+12|0];n=G[a+2|0];o=G[a+5|0];p=G[a+8|0];q=G[a+15|0];s=G[a+1|0];r=G[a+4|0];t=G[a+11|0];u=G[a+14|0];m=G[a|0];v=G[a+7|0];w=G[a+10|0];d=F[b+160>>2];D[a+12|0]=d^G[G[a+13|0]+3392|0];D[a+8|0]=G[w+3392|0]^d>>>8;D[a+4|0]=G[v+3392|0]^d>>>16;D[a|0]=G[m+3392|0]^d>>>24;d=F[b+164>>2];D[a+13|0]=d^G[u+3392|0];D[a+9|0]=G[t+3392|0]^d>>>8;D[a+5|0]=G[r+3392|0]^d>>>16;D[a+1|0]=G[s+3392|0]^d>>>24;d=F[b+168>>2];D[a+14|0]=d^G[q+3392|0];D[a+10|0]=G[p+3392|0]^d>>>8;D[a+6|0]=G[o+3392|0]^d>>>16;D[a+2|0]=G[n+3392|0]^d>>>24;d=F[b+172>>2];D[a+15|0]=d^G[j+3392|0];D[a+11|0]=G[l+3392|0]^d>>>8;D[a+7|0]=G[i+3392|0]^d>>>16;D[a+3|0]=G[e+3392|0]^d>>>24;xa(a);e=G[a+3|0];i=G[a+6|0];l=G[a+9|0];j=G[a+12|0];n=G[a+2|0];o=G[a+5|0];p=G[a+8|0];q=G[a+15|0];s=G[a+1|0];r=G[a+4|0];t=G[a+11|0];u=G[a+14|0];m=G[a|0];v=G[a+7|0];w=G[a+10|0];d=F[b+144>>2];D[a+12|0]=d^G[G[a+13|0]+3392|0];D[a+8|0]=G[w+3392|0]^d>>>8;D[a+4|0]=G[v+3392|0]^d>>>16;D[a|0]=G[m+3392|0]^d>>>24;d=F[b+148>>2];D[a+13|0]=d^G[u+3392|0];D[a+9|0]=G[t+3392|0]^d>>>8;D[a+5|0]=G[r+3392|0]^d>>>16;D[a+1|0]=G[s+3392|0]^d>>>24;d=F[b+152>>2];D[a+14|0]=d^G[q+3392|0];D[a+10|0]=G[p+3392|0]^d>>>8;D[a+6|0]=G[o+3392|0]^d>>>16;D[a+2|0]=G[n+3392|0]^d>>>24;d=F[b+156>>2];D[a+15|0]=d^G[j+3392|0];D[a+11|0]=G[l+3392|0]^d>>>8;D[a+7|0]=G[i+3392|0]^d>>>16;D[a+3|0]=G[e+3392|0]^d>>>24;xa(a);e=G[a+3|0];i=G[a+6|0];l=G[a+9|0];j=G[a+12|0];n=G[a+2|0];o=G[a+5|0];p=G[a+8|0];q=G[a+15|0];s=G[a+1|0];r=G[a+4|0];t=G[a+11|0];u=G[a+14|0];m=G[a|0];v=G[a+7|0];w=G[a+10|0];d=F[b+128>>2];D[a+12|0]=d^G[G[a+13|0]+3392|0];D[a+8|0]=G[w+3392|0]^d>>>8;D[a+4|0]=G[v+3392|0]^d>>>16;D[a|0]=G[m+3392|0]^d>>>24;d=F[b+132>>2];D[a+13|0]=d^G[u+3392|0];D[a+9|0]=G[t+3392|0]^d>>>8;D[a+5|0]=G[r+3392|0]^d>>>16;D[a+1|0]=G[s+3392|0]^d>>>24;d=F[b+136>>2];D[a+14|0]=d^G[q+3392|0];D[a+10|0]=G[p+3392|0]^d>>>8;D[a+6|0]=G[o+3392|0]^d>>>16;D[a+2|0]=G[n+3392|0]^d>>>24;d=F[b+140>>2];D[a+15|0]=d^G[j+3392|0];D[a+11|0]=G[l+3392|0]^d>>>8;D[a+7|0]=G[i+3392|0]^d>>>16;D[a+3|0]=G[e+3392|0]^d>>>24;xa(a);e=G[a+3|0];i=G[a+6|0];l=G[a+9|0];j=G[a+12|0];n=G[a+2|0];o=G[a+5|0];p=G[a+8|0];q=G[a+15|0];s=G[a+1|0];r=G[a+4|0];t=G[a+11|0];u=G[a+14|0];m=G[a|0];v=G[a+7|0];w=G[a+10|0];d=F[b+112>>2];D[a+12|0]=d^G[G[a+13|0]+3392|0];D[a+8|0]=G[w+3392|0]^d>>>8;D[a+4|0]=G[v+3392|0]^d>>>16;D[a|0]=G[m+3392|0]^d>>>24;d=F[b+116>>2];D[a+13|0]=d^G[u+3392|0];D[a+9|0]=G[t+3392|0]^d>>>8;D[a+5|0]=G[r+3392|0]^d>>>16;D[a+1|0]=G[s+3392|0]^d>>>24;d=F[b+120>>2];D[a+14|0]=d^G[q+3392|0];D[a+10|0]=G[p+3392|0]^d>>>8;D[a+6|0]=G[o+3392|0]^d>>>16;D[a+2|0]=G[n+3392|0]^d>>>24;d=F[b+124>>2];D[a+15|0]=d^G[j+3392|0];D[a+11|0]=G[l+3392|0]^d>>>8;D[a+7|0]=G[i+3392|0]^d>>>16;D[a+3|0]=G[e+3392|0]^d>>>24;xa(a);e=G[a+3|0];i=G[a+6|0];l=G[a+9|0];j=G[a+12|0];n=G[a+2|0];o=G[a+5|0];p=G[a+8|0];q=G[a+15|0];s=G[a+1|0];r=G[a+4|0];t=G[a+11|0];u=G[a+14|0];m=G[a|0];v=G[a+7|0];w=G[a+10|0];d=F[b+96>>2];D[a+12|0]=d^G[G[a+13|0]+3392|0];D[a+8|0]=G[w+3392|0]^d>>>8;D[a+4|0]=G[v+3392|0]^d>>>16;D[a|0]=G[m+3392|0]^d>>>24;d=F[b+100>>2];D[a+13|0]=d^G[u+3392|0];D[a+9|0]=G[t+3392|0]^d>>>8;D[a+5|0]=G[r+3392|0]^d>>>16;D[a+1|0]=G[s+3392|0]^d>>>24;d=F[b+104>>2];D[a+14|0]=d^G[q+3392|0];D[a+10|0]=G[p+3392|0]^d>>>8;D[a+6|0]=G[o+3392|0]^d>>>16;D[a+2|0]=G[n+3392|0]^d>>>24;d=F[b+108>>2];D[a+15|0]=d^G[j+3392|0];D[a+11|0]=G[l+3392|0]^d>>>8;D[a+7|0]=G[i+3392|0]^d>>>16;D[a+3|0]=G[e+3392|0]^d>>>24;xa(a);e=G[a+3|0];i=G[a+6|0];l=G[a+9|0];j=G[a+12|0];n=G[a+2|0];o=G[a+5|0];p=G[a+8|0];q=G[a+15|0];s=G[a+1|0];r=G[a+4|0];t=G[a+11|0];u=G[a+14|0];m=G[a|0];v=G[a+7|0];w=G[a+10|0];d=F[b+80>>2];D[a+12|0]=d^G[G[a+13|0]+3392|0];D[a+8|0]=G[w+3392|0]^d>>>8;D[a+4|0]=G[v+3392|0]^d>>>16;D[a|0]=G[m+3392|0]^d>>>24;d=F[b+84>>2];D[a+13|0]=d^G[u+3392|0];D[a+9|0]=G[t+3392|0]^d>>>8;D[a+5|0]=G[r+3392|0]^d>>>16;D[a+1|0]=G[s+3392|0]^d>>>24;d=F[b+88>>2];D[a+14|0]=d^G[q+3392|0];D[a+10|0]=G[p+3392|0]^d>>>8;D[a+6|0]=G[o+3392|0]^d>>>16;D[a+2|0]=G[n+3392|0]^d>>>24;d=F[b+92>>2];D[a+15|0]=d^G[j+3392|0];D[a+11|0]=G[l+3392|0]^d>>>8;D[a+7|0]=G[i+3392|0]^d>>>16;D[a+3|0]=G[e+3392|0]^d>>>24;xa(a);e=G[a+3|0];i=G[a+6|0];l=G[a+9|0];j=G[a+12|0];n=G[a+2|0];o=G[a+5|0];p=G[a+8|0];q=G[a+15|0];s=G[a+1|0];r=G[a+4|0];t=G[a+11|0];u=G[a+14|0];m=G[a|0];v=G[a+7|0];w=G[a+10|0];d=F[b+64>>2];D[a+12|0]=d^G[G[a+13|0]+3392|0];D[a+8|0]=G[w+3392|0]^d>>>8;D[a+4|0]=G[v+3392|0]^d>>>16;D[a|0]=G[m+3392|0]^d>>>24;d=F[b+68>>2];D[a+13|0]=d^G[u+3392|0];D[a+9|0]=G[t+3392|0]^d>>>8;D[a+5|0]=G[r+3392|0]^d>>>16;D[a+1|0]=G[s+3392|0]^d>>>24;d=F[b+72>>2];D[a+14|0]=d^G[q+3392|0];D[a+10|0]=G[p+3392|0]^d>>>8;D[a+6|0]=G[o+3392|0]^d>>>16;D[a+2|0]=G[n+3392|0]^d>>>24;d=F[b+76>>2];D[a+15|0]=d^G[j+3392|0];D[a+11|0]=G[l+3392|0]^d>>>8;D[a+7|0]=G[i+3392|0]^d>>>16;D[a+3|0]=G[e+3392|0]^d>>>24;xa(a);e=G[a+15|0];i=G[a+12|0];D[a+15|0]=i;l=G[G[a+2|0]+3392|0];D[a+2|0]=l;j=G[G[a+1|0]+3392|0];D[a+1|0]=j;n=G[G[a|0]+3392|0];D[a|0]=n;o=G[a+9|0];p=G[a+8|0];q=G[a+4|0];s=G[a+11|0];r=G[a+14|0];t=G[a+7|0];u=G[a+10|0];d=G[a+13|0];m=G[a+5|0];v=G[a+3|0];D[a+7|0]=G[G[a+6|0]+3392|0];D[a+6|0]=G[m+3392|0];D[a+3|0]=G[v+3392|0];m=G[d+3392|0];d=F[b+48>>2];D[a+12|0]=m^d;D[a+8|0]=G[u+3392|0]^d>>>8;D[a+4|0]=G[t+3392|0]^d>>>16;D[a|0]=n^d>>>24;d=F[b+52>>2];D[a+13|0]=d^G[r+3392|0];D[a+1|0]=j^d>>>24;D[a+9|0]=G[s+3392|0]^d>>>8;D[a+5|0]=G[q+3392|0]^d>>>16;d=F[b+56>>2];D[a+2|0]=l^d>>>24;l=G[a+6|0];D[a+14|0]=d^G[e+3392|0];D[a+10|0]=G[p+3392|0]^d>>>8;D[a+6|0]=l^d>>>16;d=F[b+60>>2];D[a+3|0]=G[a+3|0]^d>>>24;e=G[a+7|0];D[a+15|0]=d^G[i+3392|0];D[a+11|0]=G[o+3392|0]^d>>>8;D[a+7|0]=e^d>>>16;xa(a);n=G[a+15|0];j=G[a+12|0];D[a+15|0]=j;o=G[G[a+1|0]+3392|0];D[a+1|0]=o;p=G[G[a+2|0]+3392|0];D[a+2|0]=p;q=G[G[a+3|0]+3392|0];D[a+3|0]=q;s=G[a+7|0];r=G[G[a+6|0]+3392|0];D[a+7|0]=r;e=F[b+32>>2];i=F[b+36>>2];l=F[b+40>>2];t=G[a|0];u=G[a+10|0];m=G[a+4|0];v=G[a+11|0];w=G[a+5|0];x=G[a+8|0];y=G[a+9|0];z=G[a+13|0];A=G[a+14|0];d=c+h|0;B=G[j+3392|0];j=F[b+44>>2];D[d+15|0]=B^j;D[d+11|0]=l^G[n+3392|0];D[d+7|0]=i^G[A+3392|0];D[d+3|0]=e^G[z+3392|0];D[d+14|0]=G[y+3392|0]^j>>>8;D[d+13|0]=r^j>>>16;D[d+12|0]=q^j>>>24;D[d+10|0]=G[x+3392|0]^l>>>8;D[d+9|0]=G[w+3392|0]^l>>>16;D[d+8|0]=p^l>>>24;D[d+6|0]=G[v+3392|0]^i>>>8;D[d+5|0]=G[m+3392|0]^i>>>16;D[d+4|0]=o^i>>>24;D[d+2|0]=G[u+3392|0]^e>>>8;D[d+1|0]=G[s+3392|0]^e>>>16;D[d|0]=G[t+3392|0]^e>>>24;_=a+16|0;D[d|0]=G[d|0]^G[b+16|0];D[d+1|0]=G[d+1|0]^G[b+17|0];D[d+2|0]=G[d+2|0]^G[b+18|0];D[d+3|0]=G[d+3|0]^G[b+19|0];D[d+4|0]=G[d+4|0]^G[b+20|0];D[d+5|0]=G[d+5|0]^G[b+21|0];D[d+6|0]=G[d+6|0]^G[b+22|0];D[d+7|0]=G[d+7|0]^G[b+23|0];D[d+8|0]=G[d+8|0]^G[b+24|0];D[d+9|0]=G[d+9|0]^G[b+25|0];D[d+10|0]=G[d+10|0]^G[b+26|0];D[d+11|0]=G[d+11|0]^G[b+27|0];D[d+12|0]=G[d+12|0]^G[b+28|0];D[d+13|0]=G[d+13|0]^G[b+29|0];D[d+14|0]=G[d+14|0]^G[b+30|0];D[d+15|0]=G[d+15|0]^G[b+31|0];a=F[b+12>>2];F[b+24>>2]=F[b+8>>2];F[b+28>>2]=a;a=F[b+4>>2];F[b+16>>2]=F[b>>2];F[b+20>>2]=a;c=c+16|0;if(g>>>0>c>>>0){continue}break}}ia(b+32|0,240);ia(b+16|0,16);ia(b,16);_=b+272|0;a=G[(g+h|0)-1|0];l=a>>>0>g>>>0?-1:g-a|0}ia(k,80)}_=k+160|0;return l|0}function Jb(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;d=_-16|0;_=d;h=G[a+14|0];k=G[a+6|0];l=G[a+5|0];s=G[a+9|0];q=G[a+13|0];m=G[a+1|0];n=G[a+10|0];i=G[a+2|0];j=G[a+3|0];o=G[a+7|0];p=G[a+15|0];r=G[a+11|0];u=G[a|0];f=F[c>>2];v=G[a+4|0];e=F[c+4>>2];t=G[a+8|0];g=F[c+8>>2];w=G[a+12|0];a=F[c+12>>2];D[d+3|0]=G[(w^a>>>24)+3072|0];D[d+2|0]=G[(t^g>>>24)+3072|0];D[d+1|0]=G[(v^e>>>24)+3072|0];D[d|0]=G[(u^f>>>24)+3072|0];D[d+15|0]=G[((g^r)&255)+3072|0];D[d+12|0]=G[((a^p)&255)+3072|0];D[d+14|0]=G[((e^o)&255)+3072|0];D[d+13|0]=G[((f^j)&255)+3072|0];D[d+10|0]=G[(i^f>>>8&255)+3072|0];D[d+8|0]=G[(n^g>>>8&255)+3072|0];D[d+7|0]=G[(m^f>>>16&255)+3072|0];D[d+6|0]=G[(q^a>>>16&255)+3072|0];D[d+5|0]=G[(s^g>>>16&255)+3072|0];D[d+4|0]=G[(l^e>>>16&255)+3072|0];D[d+11|0]=G[(k^e>>>8&255)+3072|0];D[d+9|0]=G[(h^a>>>8&255)+3072|0];ya(d);a=F[c+16>>2];f=F[c+20>>2];e=F[c+24>>2];h=G[d+11|0];k=G[d+9|0];l=G[d+5|0];s=G[d+6|0];q=G[d+7|0];m=G[d+4|0];n=G[d+10|0];i=G[d+8|0];j=G[d+12|0];o=G[d+13|0];p=G[d+15|0];r=G[d+14|0];u=G[d|0];v=G[d+1|0];t=G[d+2|0];g=F[c+28>>2];D[d+3|0]=G[(G[d+3|0]^g>>>24)+3072|0];D[d+2|0]=G[(t^e>>>24)+3072|0];D[d+1|0]=G[(v^f>>>24)+3072|0];D[d|0]=G[(u^a>>>24)+3072|0];D[d+15|0]=G[((e^r)&255)+3072|0];D[d+12|0]=G[((g^p)&255)+3072|0];D[d+14|0]=G[((f^o)&255)+3072|0];D[d+13|0]=G[((a^j)&255)+3072|0];D[d+10|0]=G[(i^a>>>8&255)+3072|0];D[d+8|0]=G[(n^e>>>8&255)+3072|0];D[d+7|0]=G[(m^a>>>16&255)+3072|0];D[d+6|0]=G[(q^g>>>16&255)+3072|0];D[d+5|0]=G[(s^e>>>16&255)+3072|0];D[d+4|0]=G[(l^f>>>16&255)+3072|0];D[d+11|0]=G[(k^f>>>8&255)+3072|0];D[d+9|0]=G[(h^g>>>8&255)+3072|0];ya(d);a=F[c+32>>2];f=F[c+36>>2];e=F[c+40>>2];h=G[d+11|0];k=G[d+9|0];l=G[d+5|0];s=G[d+6|0];q=G[d+7|0];m=G[d+4|0];n=G[d+10|0];i=G[d+8|0];j=G[d+12|0];o=G[d+13|0];p=G[d+15|0];r=G[d+14|0];u=G[d|0];v=G[d+1|0];t=G[d+2|0];g=F[c+44>>2];D[d+3|0]=G[(G[d+3|0]^g>>>24)+3072|0];D[d+2|0]=G[(t^e>>>24)+3072|0];D[d+1|0]=G[(v^f>>>24)+3072|0];D[d|0]=G[(u^a>>>24)+3072|0];D[d+15|0]=G[((e^r)&255)+3072|0];D[d+12|0]=G[((g^p)&255)+3072|0];D[d+14|0]=G[((f^o)&255)+3072|0];D[d+13|0]=G[((a^j)&255)+3072|0];D[d+10|0]=G[(i^a>>>8&255)+3072|0];D[d+8|0]=G[(n^e>>>8&255)+3072|0];D[d+7|0]=G[(m^a>>>16&255)+3072|0];D[d+6|0]=G[(q^g>>>16&255)+3072|0];D[d+5|0]=G[(s^e>>>16&255)+3072|0];D[d+4|0]=G[(l^f>>>16&255)+3072|0];D[d+11|0]=G[(k^f>>>8&255)+3072|0];D[d+9|0]=G[(h^g>>>8&255)+3072|0];ya(d);a=F[c+48>>2];f=F[c+52>>2];e=F[c+56>>2];h=G[d+11|0];k=G[d+9|0];l=G[d+5|0];s=G[d+6|0];q=G[d+7|0];m=G[d+4|0];n=G[d+10|0];i=G[d+8|0];j=G[d+12|0];o=G[d+13|0];p=G[d+15|0];r=G[d+14|0];u=G[d|0];v=G[d+1|0];t=G[d+2|0];g=F[c+60>>2];D[d+3|0]=G[(G[d+3|0]^g>>>24)+3072|0];D[d+2|0]=G[(t^e>>>24)+3072|0];D[d+1|0]=G[(v^f>>>24)+3072|0];D[d|0]=G[(u^a>>>24)+3072|0];D[d+15|0]=G[((e^r)&255)+3072|0];D[d+12|0]=G[((g^p)&255)+3072|0];D[d+14|0]=G[((f^o)&255)+3072|0];D[d+13|0]=G[((a^j)&255)+3072|0];D[d+10|0]=G[(i^a>>>8&255)+3072|0];D[d+8|0]=G[(n^e>>>8&255)+3072|0];D[d+7|0]=G[(m^a>>>16&255)+3072|0];D[d+6|0]=G[(q^g>>>16&255)+3072|0];D[d+5|0]=G[(s^e>>>16&255)+3072|0];D[d+4|0]=G[(l^f>>>16&255)+3072|0];D[d+11|0]=G[(k^f>>>8&255)+3072|0];D[d+9|0]=G[(h^g>>>8&255)+3072|0];ya(d);a=F[c+64>>2];f=F[c+68>>2];e=F[c+72>>2];h=G[d+11|0];k=G[d+9|0];l=G[d+5|0];s=G[d+6|0];q=G[d+7|0];m=G[d+4|0];n=G[d+10|0];i=G[d+8|0];j=G[d+12|0];o=G[d+13|0];p=G[d+15|0];r=G[d+14|0];u=G[d|0];v=G[d+1|0];t=G[d+2|0];g=F[c+76>>2];D[d+3|0]=G[(G[d+3|0]^g>>>24)+3072|0];D[d+2|0]=G[(t^e>>>24)+3072|0];D[d+1|0]=G[(v^f>>>24)+3072|0];D[d|0]=G[(u^a>>>24)+3072|0];D[d+15|0]=G[((e^r)&255)+3072|0];D[d+12|0]=G[((g^p)&255)+3072|0];D[d+14|0]=G[((f^o)&255)+3072|0];D[d+13|0]=G[((a^j)&255)+3072|0];D[d+10|0]=G[(i^a>>>8&255)+3072|0];D[d+8|0]=G[(n^e>>>8&255)+3072|0];D[d+7|0]=G[(m^a>>>16&255)+3072|0];D[d+6|0]=G[(q^g>>>16&255)+3072|0];D[d+5|0]=G[(s^e>>>16&255)+3072|0];D[d+4|0]=G[(l^f>>>16&255)+3072|0];D[d+11|0]=G[(k^f>>>8&255)+3072|0];D[d+9|0]=G[(h^g>>>8&255)+3072|0];ya(d);a=F[c+80>>2];f=F[c+84>>2];e=F[c+88>>2];h=G[d+11|0];k=G[d+9|0];l=G[d+5|0];s=G[d+6|0];q=G[d+7|0];m=G[d+4|0];n=G[d+10|0];i=G[d+8|0];j=G[d+12|0];o=G[d+13|0];p=G[d+15|0];r=G[d+14|0];u=G[d|0];v=G[d+1|0];t=G[d+2|0];g=F[c+92>>2];D[d+3|0]=G[(G[d+3|0]^g>>>24)+3072|0];D[d+2|0]=G[(t^e>>>24)+3072|0];D[d+1|0]=G[(v^f>>>24)+3072|0];D[d|0]=G[(u^a>>>24)+3072|0];D[d+15|0]=G[((e^r)&255)+3072|0];D[d+12|0]=G[((g^p)&255)+3072|0];D[d+14|0]=G[((f^o)&255)+3072|0];D[d+13|0]=G[((a^j)&255)+3072|0];D[d+10|0]=G[(i^a>>>8&255)+3072|0];D[d+8|0]=G[(n^e>>>8&255)+3072|0];D[d+7|0]=G[(m^a>>>16&255)+3072|0];D[d+6|0]=G[(q^g>>>16&255)+3072|0];D[d+5|0]=G[(s^e>>>16&255)+3072|0];D[d+4|0]=G[(l^f>>>16&255)+3072|0];D[d+11|0]=G[(k^f>>>8&255)+3072|0];D[d+9|0]=G[(h^g>>>8&255)+3072|0];ya(d);a=F[c+96>>2];f=F[c+100>>2];e=F[c+104>>2];h=G[d+11|0];k=G[d+9|0];l=G[d+5|0];s=G[d+6|0];q=G[d+7|0];m=G[d+4|0];n=G[d+10|0];i=G[d+8|0];j=G[d+12|0];o=G[d+13|0];p=G[d+15|0];r=G[d+14|0];u=G[d|0];v=G[d+1|0];t=G[d+2|0];g=F[c+108>>2];D[d+3|0]=G[(G[d+3|0]^g>>>24)+3072|0];D[d+2|0]=G[(t^e>>>24)+3072|0];D[d+1|0]=G[(v^f>>>24)+3072|0];D[d|0]=G[(u^a>>>24)+3072|0];D[d+15|0]=G[((e^r)&255)+3072|0];D[d+12|0]=G[((g^p)&255)+3072|0];D[d+14|0]=G[((f^o)&255)+3072|0];D[d+13|0]=G[((a^j)&255)+3072|0];D[d+10|0]=G[(i^a>>>8&255)+3072|0];D[d+8|0]=G[(n^e>>>8&255)+3072|0];D[d+7|0]=G[(m^a>>>16&255)+3072|0];D[d+6|0]=G[(q^g>>>16&255)+3072|0];D[d+5|0]=G[(s^e>>>16&255)+3072|0];D[d+4|0]=G[(l^f>>>16&255)+3072|0];D[d+11|0]=G[(k^f>>>8&255)+3072|0];D[d+9|0]=G[(h^g>>>8&255)+3072|0];ya(d);a=F[c+112>>2];f=F[c+116>>2];e=F[c+120>>2];h=G[d+11|0];k=G[d+9|0];l=G[d+5|0];s=G[d+6|0];q=G[d+7|0];m=G[d+4|0];n=G[d+10|0];i=G[d+8|0];j=G[d+12|0];o=G[d+13|0];p=G[d+15|0];r=G[d+14|0];u=G[d|0];v=G[d+1|0];t=G[d+2|0];g=F[c+124>>2];D[d+3|0]=G[(G[d+3|0]^g>>>24)+3072|0];D[d+2|0]=G[(t^e>>>24)+3072|0];D[d+1|0]=G[(v^f>>>24)+3072|0];D[d|0]=G[(u^a>>>24)+3072|0];D[d+15|0]=G[((e^r)&255)+3072|0];D[d+12|0]=G[((g^p)&255)+3072|0];D[d+14|0]=G[((f^o)&255)+3072|0];D[d+13|0]=G[((a^j)&255)+3072|0];D[d+10|0]=G[(i^a>>>8&255)+3072|0];D[d+8|0]=G[(n^e>>>8&255)+3072|0];D[d+7|0]=G[(m^a>>>16&255)+3072|0];D[d+6|0]=G[(q^g>>>16&255)+3072|0];D[d+5|0]=G[(s^e>>>16&255)+3072|0];D[d+4|0]=G[(l^f>>>16&255)+3072|0];D[d+11|0]=G[(k^f>>>8&255)+3072|0];D[d+9|0]=G[(h^g>>>8&255)+3072|0];ya(d);a=F[c+128>>2];f=F[c+132>>2];e=F[c+136>>2];h=G[d+11|0];k=G[d+9|0];l=G[d+5|0];s=G[d+6|0];q=G[d+7|0];m=G[d+4|0];n=G[d+10|0];i=G[d+8|0];j=G[d+12|0];o=G[d+13|0];p=G[d+15|0];r=G[d+14|0];u=G[d|0];v=G[d+1|0];t=G[d+2|0];g=F[c+140>>2];D[d+3|0]=G[(G[d+3|0]^g>>>24)+3072|0];D[d+2|0]=G[(t^e>>>24)+3072|0];D[d+1|0]=G[(v^f>>>24)+3072|0];D[d|0]=G[(u^a>>>24)+3072|0];D[d+15|0]=G[((e^r)&255)+3072|0];D[d+12|0]=G[((g^p)&255)+3072|0];D[d+14|0]=G[((f^o)&255)+3072|0];D[d+13|0]=G[((a^j)&255)+3072|0];D[d+10|0]=G[(i^a>>>8&255)+3072|0];D[d+8|0]=G[(n^e>>>8&255)+3072|0];D[d+7|0]=G[(m^a>>>16&255)+3072|0];D[d+6|0]=G[(q^g>>>16&255)+3072|0];D[d+5|0]=G[(s^e>>>16&255)+3072|0];D[d+4|0]=G[(l^f>>>16&255)+3072|0];D[d+11|0]=G[(k^f>>>8&255)+3072|0];D[d+9|0]=G[(h^g>>>8&255)+3072|0];ya(d);a=F[c+156>>2];h=a^G[d+15|0];f=F[c+152>>2];k=f^G[d+14|0];e=F[c+148>>2];l=e^G[d+13|0];g=F[c+144>>2];s=g^G[d+12|0];q=G[d+11|0]^a>>>8;m=G[d+7|0]^a>>>16;a=G[d+3|0]^a>>>24;n=G[d+10|0]^f>>>8;i=G[d+6|0]^f>>>16;f=G[d+2|0]^f>>>24;j=G[d+9|0]^e>>>8;o=G[d+5|0]^e>>>16;e=G[d+1|0]^e>>>24;p=G[d+8|0]^g>>>8;r=G[d+4|0]^g>>>16;D[d|0]=G[(G[d|0]^g>>>24)+3072|0];D[d+10|0]=G[(p&255)+3072|0];D[d+8|0]=G[(n&255)+3072|0];D[d+7|0]=G[(r&255)+3072|0];D[d+6|0]=G[(m&255)+3072|0];D[d+5|0]=G[(i&255)+3072|0];D[d+4|0]=G[(o&255)+3072|0];D[d+3|0]=G[a+3072|0];D[d+2|0]=G[f+3072|0];D[d+1|0]=G[e+3072|0];D[d+15|0]=G[(k&255)+3072|0];D[d+12|0]=G[(h&255)+3072|0];D[d+11|0]=G[(j&255)+3072|0];D[d+9|0]=G[(q&255)+3072|0];D[d+14|0]=G[(l&255)+3072|0];D[d+13|0]=G[(s&255)+3072|0];ya(d);f=F[c+160>>2];D[d+12|0]=f^G[d+12|0];D[d+8|0]=G[d+8|0]^f>>>8;e=F[c+164>>2];h=e^G[d+13|0];D[d+13|0]=h;k=G[d+9|0]^e>>>8;D[d+9|0]=k;g=F[c+168>>2];l=g^G[d+14|0];D[d+14|0]=l;a=F[c+172>>2];D[d+1|0]=G[(G[d+1|0]^e>>>24)+3072|0];D[d|0]=G[(G[d|0]^f>>>24)+3072|0];D[d+2|0]=G[(G[d+2|0]^g>>>24)+3072|0];s=G[d+5|0];q=G[d+6|0];m=G[d+4|0];n=G[d+10|0];D[d+3|0]=G[(G[d+3|0]^a>>>24)+3072|0];D[d+6|0]=G[(G[d+7|0]^a>>>16&255)+3072|0];i=G[d+11|0];j=G[d+15|0];o=G[d+12|0];p=G[d+8|0];D[d+8|0]=G[(n^g>>>8&255)+3072|0];D[d+7|0]=G[(m^f>>>16&255)+3072|0];D[d+5|0]=G[(q^g>>>16&255)+3072|0];D[d+4|0]=G[(s^e>>>16&255)+3072|0];D[d+10|0]=G[p+3072|0];D[d+15|0]=G[(l&255)+3072|0];D[d+12|0]=G[((a^j)&255)+3072|0];D[d+11|0]=G[(k&255)+3072|0];D[d+9|0]=G[(i^a>>>8&255)+3072|0];D[d+14|0]=G[(h&255)+3072|0];D[d+13|0]=G[o+3072|0];ya(d);a=F[c+176>>2];f=F[c+180>>2];e=F[c+184>>2];h=G[d+4|0];k=G[d+5|0];l=G[d+6|0];s=G[d+7|0];q=G[d+8|0];m=G[d+9|0];n=G[d+10|0];i=G[d+11|0];j=G[d+12|0];o=G[d+13|0];p=G[d+14|0];r=G[d+15|0];u=G[d|0];v=G[d+1|0];t=G[d+2|0];g=F[c+188>>2];D[d+3|0]=G[(G[d+3|0]^g>>>24)+3072|0];D[d+2|0]=G[(t^e>>>24)+3072|0];D[d+1|0]=G[(v^f>>>24)+3072|0];D[d|0]=G[(u^a>>>24)+3072|0];r=G[((g^r)&255)+3072|0];p=G[((e^p)&255)+3072|0];o=G[((f^o)&255)+3072|0];j=G[((a^j)&255)+3072|0];i=G[(i^g>>>8&255)+3072|0];n=G[(n^e>>>8&255)+3072|0];m=G[(m^f>>>8&255)+3072|0];g=G[(s^g>>>16&255)+3072|0];e=G[(l^e>>>16&255)+3072|0];f=G[(k^f>>>16&255)+3072|0];h=G[(h^a>>>16&255)+3072|0];D[d+10|0]=G[(q^a>>>8&255)+3072|0];D[d+8|0]=n;D[d+7|0]=h;D[d+6|0]=g;D[d+5|0]=e;D[d+4|0]=f;D[d+15|0]=p;D[d+12|0]=r;D[d+11|0]=m;D[d+9|0]=i;D[d+14|0]=o;D[d+13|0]=j;ya(d);f=F[c+192>>2];D[d+12|0]=f^G[d+12|0];D[d+8|0]=G[d+8|0]^f>>>8;e=F[c+196>>2];h=e^G[d+13|0];D[d+13|0]=h;k=G[d+9|0]^e>>>8;D[d+9|0]=k;g=F[c+200>>2];l=g^G[d+14|0];D[d+14|0]=l;a=F[c+204>>2];D[d+1|0]=G[(G[d+1|0]^e>>>24)+3072|0];D[d|0]=G[(G[d|0]^f>>>24)+3072|0];D[d+2|0]=G[(G[d+2|0]^g>>>24)+3072|0];s=G[d+5|0];q=G[d+6|0];m=G[d+4|0];n=G[d+10|0];D[d+3|0]=G[(G[d+3|0]^a>>>24)+3072|0];i=G[d+11|0];j=G[d+15|0];o=G[d+7|0];p=G[d+12|0];r=G[d+8|0];D[d+8|0]=G[(n^g>>>8&255)+3072|0];D[d+7|0]=G[(m^f>>>16&255)+3072|0];D[d+6|0]=G[(o^a>>>16&255)+3072|0];D[d+5|0]=G[(q^g>>>16&255)+3072|0];D[d+4|0]=G[(s^e>>>16&255)+3072|0];D[d+10|0]=G[r+3072|0];D[d+15|0]=G[(l&255)+3072|0];D[d+12|0]=G[((a^j)&255)+3072|0];D[d+11|0]=G[(k&255)+3072|0];D[d+9|0]=G[(i^a>>>8&255)+3072|0];D[d+14|0]=G[(h&255)+3072|0];D[d+13|0]=G[p+3072|0];ya(d);f=F[c+208>>2];D[d+12|0]=f^G[d+12|0];D[d+8|0]=G[d+8|0]^f>>>8;e=F[c+212>>2];k=e^G[d+13|0];D[d+13|0]=k;h=G[d+9|0]^e>>>8;D[d+9|0]=h;g=F[c+216>>2];l=g^G[d+14|0];D[d+14|0]=l;a=F[c+220>>2];D[d+2|0]=G[(G[d+2|0]^g>>>24)+3072|0];s=G[d+4|0];q=G[d+6|0];m=G[d+5|0];n=G[d+10|0];i=G[d|0];j=G[d+1|0];D[d+3|0]=G[(G[d+3|0]^a>>>24)+3072|0];j=G[(j^e>>>24)+3072|0];D[d+1|0]=j;i=G[(i^f>>>24)+3072|0];D[d|0]=i;o=G[d+7|0];p=G[d+11|0];r=G[d+15|0];u=G[d+8|0];v=G[d+12|0];l=G[(l&255)+3072|0];D[d+15|0]=l;t=G[(h&255)+3072|0];D[d+11|0]=t;h=F[c+224>>2];r=h^G[((a^r)&255)+3072|0];D[d+12|0]=r;n=G[(n^g>>>8&255)+3072|0]^h>>>8;D[d+8|0]=n;m=G[(m^e>>>16&255)+3072|0]^h>>>16;D[d+4|0]=m;h=i^h>>>24;D[d|0]=h;e=F[c+228>>2];i=e^G[v+3072|0];D[d+13|0]=i;p=G[(p^a>>>8&255)+3072|0]^e>>>8;D[d+9|0]=p;g=G[(q^g>>>16&255)+3072|0]^e>>>16;D[d+5|0]=g;q=j^e>>>24;D[d+1|0]=q;e=F[c+232>>2];k=e^G[(k&255)+3072|0];D[d+14|0]=k;j=G[u+3072|0]^e>>>8;D[d+10|0]=j;o=G[(o^a>>>16&255)+3072|0]^e>>>16;D[d+6|0]=o;e=G[d+2|0]^e>>>24;D[d+2|0]=e;a=F[c+236>>2];c=G[(s^f>>>16&255)+3072|0]^a>>>16;D[d+7|0]=c;f=G[d+3|0]^a>>>24;D[d+3|0]=f;D[b+13|0]=c;D[b+12|0]=f;D[b+11|0]=k;D[b+10|0]=j;D[b+9|0]=o;D[b+8|0]=e;D[b+7|0]=i;D[b+6|0]=p;D[b+5|0]=g;D[b+4|0]=q;D[b+3|0]=r;D[b+2|0]=n;D[b+1|0]=m;D[b|0]=h;D[b+15|0]=a^l;D[b+14|0]=t^a>>>8;_=d+16|0}function bd(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=_-16|0;_=l;a:{b:{c:{d:{e:{f:{g:{h:{i:{j:{k:{if(a>>>0<=244){e=F[9386];h=a>>>0<11?16:a+11&-8;c=h>>>3|0;b=e>>>c|0;if(b&3){d=c+((b^-1)&1)|0;b=d<<3;f=F[b+37592>>2];a=f+8|0;c=F[f+8>>2];b=b+37584|0;l:{if((c|0)==(b|0)){F[9386]=ue(-2,d)&e;break l}F[c+12>>2]=b;F[b+8>>2]=c}b=d<<3;F[f+4>>2]=b|3;b=b+f|0;F[b+4>>2]=F[b+4>>2]|1;break a}k=F[9388];if(k>>>0>=h>>>0){break k}if(b){a=2<>>12&16;c=a;b=b>>>a|0;a=b>>>5&8;c=c|a;b=b>>>a|0;a=b>>>2&4;c=c|a;b=b>>>a|0;a=b>>>1&2;c=c|a;b=b>>>a|0;a=b>>>1&1;c=(c|a)+(b>>>a|0)|0;a=c<<3;g=F[a+37592>>2];b=F[g+8>>2];a=a+37584|0;m:{if((b|0)==(a|0)){e=ue(-2,c)&e;F[9386]=e;break m}F[b+12>>2]=a;F[a+8>>2]=b}a=g+8|0;F[g+4>>2]=h|3;d=g+h|0;b=c<<3;f=b-h|0;F[d+4>>2]=f|1;F[b+g>>2]=f;if(k){b=k>>>3|0;c=(b<<3)+37584|0;g=F[9391];b=1<>2]}F[c+8>>2]=g;F[b+12>>2]=g;F[g+12>>2]=c;F[g+8>>2]=b}F[9391]=d;F[9388]=f;break a}j=F[9387];if(!j){break k}b=(j&0-j)-1|0;a=b>>>12&16;c=a;b=b>>>a|0;a=b>>>5&8;c=c|a;b=b>>>a|0;a=b>>>2&4;c=c|a;b=b>>>a|0;a=b>>>1&2;c=c|a;b=b>>>a|0;a=b>>>1&1;b=F[((c|a)+(b>>>a|0)<<2)+37848>>2];d=(F[b+4>>2]&-8)-h|0;c=b;while(1){o:{a=F[c+16>>2];if(!a){a=F[c+20>>2];if(!a){break o}}c=(F[a+4>>2]&-8)-h|0;f=c>>>0>>0;d=f?c:d;b=f?a:b;c=a;continue}break}i=F[b+24>>2];f=F[b+12>>2];if((f|0)!=(b|0)){a=F[b+8>>2];F[a+12>>2]=f;F[f+8>>2]=a;break b}c=b+20|0;a=F[c>>2];if(!a){a=F[b+16>>2];if(!a){break j}c=b+16|0}while(1){g=c;f=a;c=a+20|0;a=F[c>>2];if(a){continue}c=f+16|0;a=F[f+16>>2];if(a){continue}break}F[g>>2]=0;break b}h=-1;if(a>>>0>4294967231){break k}a=a+11|0;h=a&-8;j=F[9387];if(!j){break k}d=0-h|0;e=0;p:{if(h>>>0<256){break p}e=31;if(h>>>0>16777215){break p}a=a>>>8|0;g=a+1048320>>>16&8;a=a<>>16&4;a=a<>>16&2;a=(a<>>15|0)-(b|(c|g))|0;e=(a<<1|h>>>a+21&1)+28|0}c=F[(e<<2)+37848>>2];q:{r:{s:{if(!c){a=0;break s}a=0;b=h<<((e|0)==31?0:25-(e>>>1|0)|0);while(1){t:{g=(F[c+4>>2]&-8)-h|0;if(g>>>0>=d>>>0){break t}f=c;d=g;if(d){break t}d=0;a=c;break r}g=F[c+20>>2];c=F[((b>>>29&4)+c|0)+16>>2];a=g?(g|0)==(c|0)?a:g:a;b=b<<1;if(c){continue}break}}if(!(a|f)){f=0;a=2<>>12&16;c=a;b=b>>>a|0;a=b>>>5&8;c=c|a;b=b>>>a|0;a=b>>>2&4;c=c|a;b=b>>>a|0;a=b>>>1&2;c=c|a;b=b>>>a|0;a=b>>>1&1;a=F[((c|a)+(b>>>a|0)<<2)+37848>>2]}if(!a){break q}}while(1){b=(F[a+4>>2]&-8)-h|0;c=b>>>0>>0;d=c?b:d;f=c?a:f;b=F[a+16>>2];if(b){a=b}else{a=F[a+20>>2]}if(a){continue}break}}if(!f|F[9388]-h>>>0<=d>>>0){break k}e=F[f+24>>2];b=F[f+12>>2];if((f|0)!=(b|0)){a=F[f+8>>2];F[a+12>>2]=b;F[b+8>>2]=a;break c}c=f+20|0;a=F[c>>2];if(!a){a=F[f+16>>2];if(!a){break i}c=f+16|0}while(1){g=c;b=a;c=a+20|0;a=F[c>>2];if(a){continue}c=b+16|0;a=F[b+16>>2];if(a){continue}break}F[g>>2]=0;break c}c=F[9388];if(c>>>0>=h>>>0){d=F[9391];b=c-h|0;u:{if(b>>>0>=16){F[9388]=b;a=d+h|0;F[9391]=a;F[a+4>>2]=b|1;F[c+d>>2]=b;F[d+4>>2]=h|3;break u}F[9391]=0;F[9388]=0;F[d+4>>2]=c|3;a=c+d|0;F[a+4>>2]=F[a+4>>2]|1}a=d+8|0;break a}i=F[9389];if(i>>>0>h>>>0){b=i-h|0;F[9389]=b;c=F[9392];a=c+h|0;F[9392]=a;F[a+4>>2]=b|1;F[c+4>>2]=h|3;a=c+8|0;break a}a=0;j=h+47|0;if(F[9504]){c=F[9506]}else{F[9507]=-1;F[9508]=-1;F[9505]=4096;F[9506]=4096;F[9504]=l+12&-16^1431655768;F[9509]=0;F[9497]=0;c=4096}g=j+c|0;f=0-c|0;c=g&f;if(c>>>0<=h>>>0){break a}d=F[9496];if(d){b=F[9494];e=b+c|0;if(d>>>0>>0|b>>>0>=e>>>0){break a}}if(G[37988]&4){break f}v:{w:{d=F[9392];if(d){a=37992;while(1){b=F[a>>2];if(b>>>0<=d>>>0&d>>>0>2]>>>0){break w}a=F[a+8>>2];if(a){continue}break}}b=La(0);if((b|0)==-1){break g}e=c;d=F[9505];a=d-1|0;if(a&b){e=(c-b|0)+(a+b&0-d)|0}if(e>>>0<=h>>>0|e>>>0>2147483646){break g}d=F[9496];if(d){a=F[9494];f=a+e|0;if(d>>>0>>0|a>>>0>=f>>>0){break g}}a=La(e);if((b|0)!=(a|0)){break v}break e}e=f&g-i;if(e>>>0>2147483646){break g}b=La(e);if((b|0)==(F[a>>2]+F[a+4>>2]|0)){break h}a=b}if(!((a|0)==-1|h+48>>>0<=e>>>0)){b=F[9506];b=b+(j-e|0)&0-b;if(b>>>0>2147483646){b=a;break e}if((La(b)|0)!=-1){e=b+e|0;b=a;break e}La(0-e|0);break g}b=a;if((a|0)!=-1){break e}break g}f=0;break b}b=0;break c}if((b|0)!=-1){break e}}F[9497]=F[9497]|4}if(c>>>0>2147483646){break d}b=La(c);a=La(0);if((b|0)==-1|(a|0)==-1|a>>>0<=b>>>0){break d}e=a-b|0;if(e>>>0<=h+40>>>0){break d}}a=F[9494]+e|0;F[9494]=a;if(a>>>0>I[9495]){F[9495]=a}x:{y:{z:{g=F[9392];if(g){a=37992;while(1){d=F[a>>2];c=F[a+4>>2];if((d+c|0)==(b|0)){break z}a=F[a+8>>2];if(a){continue}break}break y}a=F[9390];if(!(a>>>0<=b>>>0?a:0)){F[9390]=b}a=0;F[9499]=e;F[9498]=b;F[9394]=-1;F[9395]=F[9504];F[9501]=0;while(1){d=a<<3;c=d+37584|0;F[d+37592>>2]=c;F[d+37596>>2]=c;a=a+1|0;if((a|0)!=32){continue}break}d=e-40|0;a=b+8&7?-8-b&7:0;c=d-a|0;F[9389]=c;a=a+b|0;F[9392]=a;F[a+4>>2]=c|1;F[(b+d|0)+4>>2]=40;F[9393]=F[9508];break x}if(G[a+12|0]&8|d>>>0>g>>>0|b>>>0<=g>>>0){break y}F[a+4>>2]=c+e;a=g+8&7?-8-g&7:0;c=a+g|0;F[9392]=c;b=F[9389]+e|0;a=b-a|0;F[9389]=a;F[c+4>>2]=a|1;F[(b+g|0)+4>>2]=40;F[9393]=F[9508];break x}if(I[9390]>b>>>0){F[9390]=b}c=b+e|0;a=37992;A:{B:{C:{D:{E:{F:{while(1){if((c|0)!=F[a>>2]){a=F[a+8>>2];if(a){continue}break F}break}if(!(G[a+12|0]&8)){break E}}a=37992;while(1){c=F[a>>2];if(c>>>0<=g>>>0){f=c+F[a+4>>2]|0;if(f>>>0>g>>>0){break D}}a=F[a+8>>2];continue}}F[a>>2]=b;F[a+4>>2]=F[a+4>>2]+e;j=(b+8&7?-8-b&7:0)+b|0;F[j+4>>2]=h|3;e=c+(c+8&7?-8-c&7:0)|0;i=h+j|0;c=e-i|0;if((e|0)==(g|0)){F[9392]=i;a=F[9389]+c|0;F[9389]=a;F[i+4>>2]=a|1;break B}if(F[9391]==(e|0)){F[9391]=i;a=F[9388]+c|0;F[9388]=a;F[i+4>>2]=a|1;F[a+i>>2]=a;break B}a=F[e+4>>2];if((a&3)==1){g=a&-8;G:{if(a>>>0<=255){d=F[e+8>>2];a=a>>>3|0;b=F[e+12>>2];if((b|0)==(d|0)){F[9386]=F[9386]&ue(-2,a);break G}F[d+12>>2]=b;F[b+8>>2]=d;break G}h=F[e+24>>2];b=F[e+12>>2];H:{if((e|0)!=(b|0)){a=F[e+8>>2];F[a+12>>2]=b;F[b+8>>2]=a;break H}I:{a=e+20|0;d=F[a>>2];if(d){break I}a=e+16|0;d=F[a>>2];if(d){break I}b=0;break H}while(1){f=a;b=d;a=b+20|0;d=F[a>>2];if(d){continue}a=b+16|0;d=F[b+16>>2];if(d){continue}break}F[f>>2]=0}if(!h){break G}d=F[e+28>>2];a=(d<<2)+37848|0;J:{if(F[a>>2]==(e|0)){F[a>>2]=b;if(b){break J}F[9387]=F[9387]&ue(-2,d);break G}F[h+(F[h+16>>2]==(e|0)?16:20)>>2]=b;if(!b){break G}}F[b+24>>2]=h;a=F[e+16>>2];if(a){F[b+16>>2]=a;F[a+24>>2]=b}a=F[e+20>>2];if(!a){break G}F[b+20>>2]=a;F[a+24>>2]=b}e=e+g|0;c=c+g|0}F[e+4>>2]=F[e+4>>2]&-2;F[i+4>>2]=c|1;F[c+i>>2]=c;if(c>>>0<=255){a=c>>>3|0;b=(a<<3)+37584|0;c=F[9386];a=1<>2]}F[b+8>>2]=i;F[a+12>>2]=i;F[i+12>>2]=b;F[i+8>>2]=a;break B}a=31;if(c>>>0<=16777215){a=c>>>8|0;f=a+1048320>>>16&8;a=a<>>16&4;a=a<>>16&2;a=(a<>>15|0)-(b|(d|f))|0;a=(a<<1|c>>>a+21&1)+28|0}F[i+28>>2]=a;F[i+16>>2]=0;F[i+20>>2]=0;f=(a<<2)+37848|0;d=F[9387];b=1<>2]=i;F[i+24>>2]=f;break L}a=c<<((a|0)==31?0:25-(a>>>1|0)|0);b=F[f>>2];while(1){d=b;if((F[b+4>>2]&-8)==(c|0)){break C}b=a>>>29|0;a=a<<1;f=d+(b&4)|0;b=F[f+16>>2];if(b){continue}break}F[f+16>>2]=i;F[i+24>>2]=d}F[i+12>>2]=i;F[i+8>>2]=i;break B}d=e-40|0;a=b+8&7?-8-b&7:0;c=d-a|0;F[9389]=c;a=a+b|0;F[9392]=a;F[a+4>>2]=c|1;F[(b+d|0)+4>>2]=40;F[9393]=F[9508];a=(f+(f-39&7?39-f&7:0)|0)-47|0;c=a>>>0>>0?g:a;F[c+4>>2]=27;a=F[9501];F[c+16>>2]=F[9500];F[c+20>>2]=a;a=F[9499];F[c+8>>2]=F[9498];F[c+12>>2]=a;F[9500]=c+8;F[9499]=e;F[9498]=b;F[9501]=0;a=c+24|0;while(1){F[a+4>>2]=7;b=a+8|0;a=a+4|0;if(b>>>0>>0){continue}break}if((c|0)==(g|0)){break x}F[c+4>>2]=F[c+4>>2]&-2;f=c-g|0;F[g+4>>2]=f|1;F[c>>2]=f;if(f>>>0<=255){a=f>>>3|0;b=(a<<3)+37584|0;c=F[9386];a=1<>2]}F[b+8>>2]=g;F[a+12>>2]=g;F[g+12>>2]=b;F[g+8>>2]=a;break x}a=31;F[g+16>>2]=0;F[g+20>>2]=0;if(f>>>0<=16777215){a=f>>>8|0;d=a+1048320>>>16&8;a=a<>>16&4;a=a<>>16&2;a=(a<>>15|0)-(b|(c|d))|0;a=(a<<1|f>>>a+21&1)+28|0}F[g+28>>2]=a;d=(a<<2)+37848|0;c=F[9387];b=1<>2]=g;F[g+24>>2]=d;break N}a=f<<((a|0)==31?0:25-(a>>>1|0)|0);b=F[d>>2];while(1){c=b;if((f|0)==(F[b+4>>2]&-8)){break A}b=a>>>29|0;a=a<<1;d=c+(b&4)|0;b=F[d+16>>2];if(b){continue}break}F[d+16>>2]=g;F[g+24>>2]=c}F[g+12>>2]=g;F[g+8>>2]=g;break x}a=F[d+8>>2];F[a+12>>2]=i;F[d+8>>2]=i;F[i+24>>2]=0;F[i+12>>2]=d;F[i+8>>2]=a}a=j+8|0;break a}a=F[c+8>>2];F[a+12>>2]=g;F[c+8>>2]=g;F[g+24>>2]=0;F[g+12>>2]=c;F[g+8>>2]=a}a=F[9389];if(a>>>0<=h>>>0){break d}b=a-h|0;F[9389]=b;c=F[9392];a=c+h|0;F[9392]=a;F[a+4>>2]=b|1;F[c+4>>2]=h|3;a=c+8|0;break a}F[9343]=48;a=0;break a}O:{if(!e){break O}c=F[f+28>>2];a=(c<<2)+37848|0;P:{if(F[a>>2]==(f|0)){F[a>>2]=b;if(b){break P}j=ue(-2,c)&j;F[9387]=j;break O}F[e+(F[e+16>>2]==(f|0)?16:20)>>2]=b;if(!b){break O}}F[b+24>>2]=e;a=F[f+16>>2];if(a){F[b+16>>2]=a;F[a+24>>2]=b}a=F[f+20>>2];if(!a){break O}F[b+20>>2]=a;F[a+24>>2]=b}Q:{if(d>>>0<=15){a=d+h|0;F[f+4>>2]=a|3;a=a+f|0;F[a+4>>2]=F[a+4>>2]|1;break Q}F[f+4>>2]=h|3;e=f+h|0;F[e+4>>2]=d|1;F[d+e>>2]=d;if(d>>>0<=255){a=d>>>3|0;b=(a<<3)+37584|0;c=F[9386];a=1<>2]}F[b+8>>2]=e;F[a+12>>2]=e;F[e+12>>2]=b;F[e+8>>2]=a;break Q}a=31;if(d>>>0<=16777215){a=d>>>8|0;g=a+1048320>>>16&8;a=a<>>16&4;a=a<>>16&2;a=(a<>>15|0)-(b|(c|g))|0;a=(a<<1|d>>>a+21&1)+28|0}F[e+28>>2]=a;F[e+16>>2]=0;F[e+20>>2]=0;b=(a<<2)+37848|0;S:{c=1<>2]=e;break T}a=d<<((a|0)==31?0:25-(a>>>1|0)|0);h=F[b>>2];while(1){b=h;if((F[b+4>>2]&-8)==(d|0)){break S}c=a>>>29|0;a=a<<1;c=(c&4)+b|0;h=F[c+16>>2];if(h){continue}break}F[c+16>>2]=e}F[e+24>>2]=b;F[e+12>>2]=e;F[e+8>>2]=e;break Q}a=F[b+8>>2];F[a+12>>2]=e;F[b+8>>2]=e;F[e+24>>2]=0;F[e+12>>2]=b;F[e+8>>2]=a}a=f+8|0;break a}U:{if(!i){break U}c=F[b+28>>2];a=(c<<2)+37848|0;V:{if(F[a>>2]==(b|0)){F[a>>2]=f;if(f){break V}F[9387]=ue(-2,c)&j;break U}F[i+(F[i+16>>2]==(b|0)?16:20)>>2]=f;if(!f){break U}}F[f+24>>2]=i;a=F[b+16>>2];if(a){F[f+16>>2]=a;F[a+24>>2]=f}a=F[b+20>>2];if(!a){break U}F[f+20>>2]=a;F[a+24>>2]=f}W:{if(d>>>0<=15){a=d+h|0;F[b+4>>2]=a|3;a=a+b|0;F[a+4>>2]=F[a+4>>2]|1;break W}F[b+4>>2]=h|3;f=b+h|0;F[f+4>>2]=d|1;F[d+f>>2]=d;if(k){a=k>>>3|0;c=(a<<3)+37584|0;g=F[9391];a=1<>2]}F[c+8>>2]=g;F[a+12>>2]=g;F[g+12>>2]=c;F[g+8>>2]=a}F[9391]=f;F[9388]=d}a=b+8|0}_=l+16|0;return a|0}function ta(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0;e=F[c>>2];d=e;f=e>>31;e=F[b>>2];F[a>>2]=se(d,f,e,e>>31);F[a+4>>2]=$;e=F[c>>2];d=e;f=e>>31;e=F[b+8>>2];e=se(d,f,e,e>>31);f=$;d=e;e=F[c+8>>2];h=e;g=e>>31;e=F[b>>2];i=se(h,g,e,e>>31);d=d+i|0;e=$+f|0;F[a+8>>2]=d;F[a+12>>2]=d>>>0>>0?e+1|0:e;e=F[c+16>>2];d=e;f=e>>31;e=F[b>>2];e=se(d,f,e,e>>31);f=$;h=e;e=F[c+8>>2];g=e;i=e>>31;d=F[b+8>>2];e=d>>31;i=se(g,i,(d&2147483647)<<1,e);d=h+i|0;e=$+f|0;e=d>>>0>>0?e+1|0:e;h=d;d=F[c>>2];f=d;g=d>>31;d=F[b+16>>2];f=se(f,g,d,d>>31);d=h+f|0;e=$+e|0;F[a+16>>2]=d;F[a+20>>2]=d>>>0>>0?e+1|0:e;e=F[c+8>>2];d=e;f=e>>31;e=F[b+16>>2];e=se(d,f,e,e>>31);f=$;d=e;e=F[c+16>>2];h=e;g=e>>31;e=F[b+8>>2];i=se(h,g,e,e>>31);d=d+i|0;e=$+f|0;e=d>>>0>>0?e+1|0:e;f=d;d=F[c+24>>2];h=d;g=d>>31;d=F[b>>2];i=se(h,g,d,d>>31);f=f+i|0;d=$+e|0;d=f>>>0>>0?d+1|0:d;e=F[c>>2];h=e;g=e>>31;e=F[b+24>>2];i=se(h,g,e,e>>31);f=i+f|0;e=$+d|0;F[a+24>>2]=f;F[a+28>>2]=f>>>0>>0?e+1|0:e;e=F[c+16>>2];d=e;f=e>>31;e=F[b+16>>2];e=se(d,f,e,e>>31);i=$;d=F[c+8>>2];f=d;h=d>>31;d=F[b+24>>2];d=se(f,h,d,d>>31);f=$;h=e;e=F[c+24>>2];g=e;j=e>>31;e=F[b+8>>2];g=se(g,j,e,e>>31);d=g+d|0;e=$+f|0;f=d;d=(d>>>0>>0?e+1|0:e)<<1|d>>>31;g=f<<1;f=h+g|0;e=d+i|0;e=f>>>0>>0?e+1|0:e;h=f;d=F[c+32>>2];f=d;g=d>>31;d=F[b>>2];f=se(f,g,d,d>>31);d=h+f|0;e=$+e|0;e=d>>>0>>0?e+1|0:e;h=d;d=F[c>>2];f=d;g=d>>31;d=F[b+32>>2];f=se(f,g,d,d>>31);d=h+f|0;e=$+e|0;F[a+32>>2]=d;F[a+36>>2]=d>>>0>>0?e+1|0:e;e=F[c+16>>2];d=e;f=e>>31;e=F[b+24>>2];e=se(d,f,e,e>>31);f=$;d=e;e=F[c+24>>2];h=e;g=e>>31;e=F[b+16>>2];i=se(h,g,e,e>>31);d=d+i|0;e=$+f|0;e=d>>>0>>0?e+1|0:e;f=d;d=F[c+32>>2];h=d;g=d>>31;d=F[b+8>>2];i=se(h,g,d,d>>31);f=f+i|0;d=$+e|0;d=f>>>0>>0?d+1|0:d;e=F[c+8>>2];h=e;g=e>>31;e=F[b+32>>2];i=se(h,g,e,e>>31);f=i+f|0;e=$+d|0;e=f>>>0>>0?e+1|0:e;h=f;d=F[c+40>>2];f=d;g=d>>31;d=F[b>>2];f=se(f,g,d,d>>31);d=h+f|0;e=$+e|0;e=d>>>0>>0?e+1|0:e;h=d;d=F[c>>2];f=d;g=d>>31;d=F[b+40>>2];f=se(f,g,d,d>>31);d=h+f|0;e=$+e|0;F[a+40>>2]=d;F[a+44>>2]=d>>>0>>0?e+1|0:e;e=F[c+32>>2];d=e;f=e>>31;e=F[b+16>>2];e=se(d,f,e,e>>31);i=$;d=F[c+40>>2];f=d;h=d>>31;d=F[b+8>>2];d=se(f,h,d,d>>31);f=$;h=e;e=F[c+24>>2];g=e;j=e>>31;e=F[b+24>>2];g=se(g,j,e,e>>31);d=g+d|0;e=$+f|0;e=d>>>0>>0?e+1|0:e;f=d;d=F[c+8>>2];g=d;j=d>>31;d=F[b+40>>2];g=se(g,j,d,d>>31);f=f+g|0;d=$+e|0;d=f>>>0>>0?d+1|0:d;e=d<<1|f>>>31;f=f<<1;d=h+f|0;e=e+i|0;e=d>>>0>>0?e+1|0:e;h=d;d=F[c+16>>2];f=d;g=d>>31;d=F[b+32>>2];f=se(f,g,d,d>>31);d=h+f|0;e=$+e|0;e=d>>>0>>0?e+1|0:e;h=d;d=F[c+48>>2];f=d;g=d>>31;d=F[b>>2];f=se(f,g,d,d>>31);d=h+f|0;e=$+e|0;e=d>>>0>>0?e+1|0:e;f=d;d=F[c>>2];h=d;g=d>>31;d=F[b+48>>2];i=se(h,g,d,d>>31);f=f+i|0;d=$+e|0;F[a+48>>2]=f;F[a+52>>2]=f>>>0>>0?d+1|0:d;e=F[c+24>>2];d=e;f=e>>31;e=F[b+32>>2];e=se(d,f,e,e>>31);f=$;d=e;e=F[c+32>>2];h=e;g=e>>31;e=F[b+24>>2];i=se(h,g,e,e>>31);d=d+i|0;e=$+f|0;e=d>>>0>>0?e+1|0:e;h=d;d=F[c+40>>2];f=d;g=d>>31;d=F[b+16>>2];f=se(f,g,d,d>>31);d=h+f|0;e=$+e|0;e=d>>>0>>0?e+1|0:e;h=d;d=F[c+16>>2];f=d;g=d>>31;d=F[b+40>>2];f=se(f,g,d,d>>31);d=h+f|0;e=$+e|0;e=d>>>0>>0?e+1|0:e;h=d;d=F[c+48>>2];f=d;g=d>>31;d=F[b+8>>2];f=se(f,g,d,d>>31);d=h+f|0;e=$+e|0;e=d>>>0>>0?e+1|0:e;f=d;d=F[c+8>>2];h=d;g=d>>31;d=F[b+48>>2];i=se(h,g,d,d>>31);f=f+i|0;d=$+e|0;d=f>>>0>>0?d+1|0:d;e=F[c+56>>2];h=e;g=e>>31;e=F[b>>2];i=se(h,g,e,e>>31);f=i+f|0;e=$+d|0;e=f>>>0>>0?e+1|0:e;h=f;d=F[c>>2];f=d;g=d>>31;d=F[b+56>>2];f=se(f,g,d,d>>31);d=h+f|0;e=$+e|0;F[a+56>>2]=d;F[a+60>>2]=d>>>0>>0?e+1|0:e;e=F[c+32>>2];d=e;f=e>>31;e=F[b+32>>2];e=se(d,f,e,e>>31);i=$;d=F[c+24>>2];f=d;h=d>>31;d=F[b+40>>2];d=se(f,h,d,d>>31);f=$;h=e;e=F[c+40>>2];g=e;j=e>>31;e=F[b+24>>2];g=se(g,j,e,e>>31);d=g+d|0;e=$+f|0;e=d>>>0>>0?e+1|0:e;g=d;d=F[c+56>>2];f=d;j=d>>31;d=F[b+8>>2];f=se(f,j,d,d>>31);d=g+f|0;e=$+e|0;e=d>>>0>>0?e+1|0:e;f=d;d=F[c+8>>2];g=d;j=d>>31;d=F[b+56>>2];g=se(g,j,d,d>>31);f=f+g|0;d=$+e|0;d=f>>>0>>0?d+1|0:d;e=d<<1|f>>>31;f=f<<1;d=h+f|0;e=e+i|0;e=d>>>0>>0?e+1|0:e;h=d;d=F[c+48>>2];f=d;g=d>>31;d=F[b+16>>2];f=se(f,g,d,d>>31);d=h+f|0;e=$+e|0;e=d>>>0>>0?e+1|0:e;h=d;d=F[c+16>>2];f=d;g=d>>31;d=F[b+48>>2];f=se(f,g,d,d>>31);d=h+f|0;e=$+e|0;e=d>>>0>>0?e+1|0:e;f=d;d=F[c+64>>2];h=d;g=d>>31;d=F[b>>2];i=se(h,g,d,d>>31);f=f+i|0;d=$+e|0;d=f>>>0>>0?d+1|0:d;e=F[c>>2];h=e;g=e>>31;e=F[b+64>>2];i=se(h,g,e,e>>31);f=i+f|0;e=$+d|0;F[a+64>>2]=f;F[a+68>>2]=f>>>0>>0?e+1|0:e;e=F[c+32>>2];d=e;f=e>>31;e=F[b+40>>2];e=se(d,f,e,e>>31);f=$;d=e;e=F[c+40>>2];h=e;g=e>>31;e=F[b+32>>2];i=se(h,g,e,e>>31);d=d+i|0;e=$+f|0;e=d>>>0>>0?e+1|0:e;h=d;d=F[c+48>>2];f=d;g=d>>31;d=F[b+24>>2];f=se(f,g,d,d>>31);d=h+f|0;e=$+e|0;e=d>>>0>>0?e+1|0:e;h=d;d=F[c+24>>2];f=d;g=d>>31;d=F[b+48>>2];f=se(f,g,d,d>>31);d=h+f|0;e=$+e|0;e=d>>>0>>0?e+1|0:e;f=d;d=F[c+56>>2];h=d;g=d>>31;d=F[b+16>>2];i=se(h,g,d,d>>31);f=f+i|0;d=$+e|0;d=f>>>0>>0?d+1|0:d;e=F[c+16>>2];h=e;g=e>>31;e=F[b+56>>2];i=se(h,g,e,e>>31);f=i+f|0;e=$+d|0;e=f>>>0>>0?e+1|0:e;h=f;d=F[c+64>>2];f=d;g=d>>31;d=F[b+8>>2];f=se(f,g,d,d>>31);d=h+f|0;e=$+e|0;e=d>>>0>>0?e+1|0:e;h=d;d=F[c+8>>2];f=d;g=d>>31;d=F[b+64>>2];f=se(f,g,d,d>>31);d=h+f|0;e=$+e|0;e=d>>>0>>0?e+1|0:e;h=d;d=F[c+72>>2];f=d;g=d>>31;d=F[b>>2];f=se(f,g,d,d>>31);d=h+f|0;e=$+e|0;e=d>>>0>>0?e+1|0:e;f=d;d=F[c>>2];h=d;g=d>>31;d=F[b+72>>2];i=se(h,g,d,d>>31);f=f+i|0;d=$+e|0;F[a+72>>2]=f;F[a+76>>2]=f>>>0>>0?d+1|0:d;e=F[c+48>>2];d=e;f=e>>31;e=F[b+32>>2];e=se(d,f,e,e>>31);i=$;d=F[c+56>>2];f=d;h=d>>31;d=F[b+24>>2];d=se(f,h,d,d>>31);f=$;h=e;e=F[c+40>>2];g=e;j=e>>31;e=F[b+40>>2];g=se(g,j,e,e>>31);d=g+d|0;e=$+f|0;e=d>>>0>>0?e+1|0:e;g=d;d=F[c+24>>2];f=d;j=d>>31;d=F[b+56>>2];f=se(f,j,d,d>>31);d=g+f|0;e=$+e|0;e=d>>>0>>0?e+1|0:e;g=d;d=F[c+72>>2];f=d;j=d>>31;d=F[b+8>>2];f=se(f,j,d,d>>31);d=g+f|0;e=$+e|0;e=d>>>0>>0?e+1|0:e;g=d;d=F[c+8>>2];f=d;j=d>>31;d=F[b+72>>2];f=se(f,j,d,d>>31);d=g+f|0;e=$+e|0;e=d>>>0>>0?e+1|0:e;g=d<<1;f=h+g|0;d=(e<<1|d>>>31)+i|0;d=f>>>0>>0?d+1|0:d;e=F[c+32>>2];h=e;g=e>>31;e=F[b+48>>2];i=se(h,g,e,e>>31);f=i+f|0;e=$+d|0;e=f>>>0>>0?e+1|0:e;h=f;d=F[c+64>>2];f=d;g=d>>31;d=F[b+16>>2];f=se(f,g,d,d>>31);d=h+f|0;e=$+e|0;e=d>>>0>>0?e+1|0:e;h=d;d=F[c+16>>2];f=d;g=d>>31;d=F[b+64>>2];f=se(f,g,d,d>>31);d=h+f|0;e=$+e|0;F[a+80>>2]=d;F[a+84>>2]=d>>>0>>0?e+1|0:e;e=F[c+40>>2];d=e;f=e>>31;e=F[b+48>>2];e=se(d,f,e,e>>31);f=$;d=e;e=F[c+48>>2];h=e;g=e>>31;e=F[b+40>>2];i=se(h,g,e,e>>31);d=d+i|0;e=$+f|0;e=d>>>0>>0?e+1|0:e;f=d;d=F[c+56>>2];h=d;g=d>>31;d=F[b+32>>2];i=se(h,g,d,d>>31);f=f+i|0;d=$+e|0;d=f>>>0>>0?d+1|0:d;e=F[c+32>>2];h=e;g=e>>31;e=F[b+56>>2];i=se(h,g,e,e>>31);f=i+f|0;e=$+d|0;e=f>>>0>>0?e+1|0:e;h=f;d=F[c+64>>2];f=d;g=d>>31;d=F[b+24>>2];f=se(f,g,d,d>>31);d=h+f|0;e=$+e|0;e=d>>>0>>0?e+1|0:e;h=d;d=F[c+24>>2];f=d;g=d>>31;d=F[b+64>>2];f=se(f,g,d,d>>31);d=h+f|0;e=$+e|0;e=d>>>0>>0?e+1|0:e;h=d;d=F[c+72>>2];f=d;g=d>>31;d=F[b+16>>2];f=se(f,g,d,d>>31);d=h+f|0;e=$+e|0;e=d>>>0>>0?e+1|0:e;f=d;d=F[c+16>>2];h=d;g=d>>31;d=F[b+72>>2];i=se(h,g,d,d>>31);f=f+i|0;d=$+e|0;F[a+88>>2]=f;F[a+92>>2]=f>>>0>>0?d+1|0:d;e=F[c+48>>2];d=e;f=e>>31;e=F[b+48>>2];e=se(d,f,e,e>>31);f=$;d=F[c+40>>2];h=d;g=d>>31;d=F[b+56>>2];d=se(h,g,d,d>>31);i=$;h=e;e=F[c+56>>2];g=e;j=e>>31;e=F[b+40>>2];g=se(g,j,e,e>>31);d=g+d|0;e=$+i|0;e=d>>>0>>0?e+1|0:e;g=d;d=F[c+72>>2];i=d;j=d>>31;d=F[b+24>>2];i=se(i,j,d,d>>31);d=g+i|0;e=$+e|0;e=d>>>0>>0?e+1|0:e;g=d;d=F[c+24>>2];i=d;j=d>>31;d=F[b+72>>2];i=se(i,j,d,d>>31);d=g+i|0;e=$+e|0;e=d>>>0>>0?e+1|0:e;e=e<<1|d>>>31;i=d<<1;d=h+i|0;e=e+f|0;e=d>>>0>>0?e+1|0:e;f=d;d=F[c+64>>2];h=d;g=d>>31;d=F[b+32>>2];i=se(h,g,d,d>>31);f=f+i|0;d=$+e|0;d=f>>>0>>0?d+1|0:d;e=F[c+32>>2];h=e;g=e>>31;e=F[b+64>>2];i=se(h,g,e,e>>31);f=i+f|0;e=$+d|0;F[a+96>>2]=f;F[a+100>>2]=f>>>0>>0?e+1|0:e;e=F[c+48>>2];d=e;f=e>>31;e=F[b+56>>2];e=se(d,f,e,e>>31);f=$;d=e;e=F[c+56>>2];h=e;g=e>>31;e=F[b+48>>2];i=se(h,g,e,e>>31);d=d+i|0;e=$+f|0;e=d>>>0>>0?e+1|0:e;h=d;d=F[c+64>>2];f=d;g=d>>31;d=F[b+40>>2];f=se(f,g,d,d>>31);d=h+f|0;e=$+e|0;e=d>>>0>>0?e+1|0:e;h=d;d=F[c+40>>2];f=d;g=d>>31;d=F[b+64>>2];f=se(f,g,d,d>>31);d=h+f|0;e=$+e|0;e=d>>>0>>0?e+1|0:e;f=d;d=F[c+72>>2];h=d;g=d>>31;d=F[b+32>>2];i=se(h,g,d,d>>31);f=f+i|0;d=$+e|0;d=f>>>0>>0?d+1|0:d;e=F[c+32>>2];h=e;g=e>>31;e=F[b+72>>2];i=se(h,g,e,e>>31);f=i+f|0;e=$+d|0;F[a+104>>2]=f;F[a+108>>2]=f>>>0>>0?e+1|0:e;e=F[c+64>>2];d=e;f=e>>31;e=F[b+48>>2];e=se(d,f,e,e>>31);f=$;d=F[c+72>>2];h=d;g=d>>31;d=F[b+40>>2];d=se(h,g,d,d>>31);i=$;h=e;e=F[c+56>>2];g=e;j=e>>31;e=F[b+56>>2];g=se(g,j,e,e>>31);d=g+d|0;e=$+i|0;e=d>>>0>>0?e+1|0:e;g=d;d=F[c+40>>2];i=d;j=d>>31;d=F[b+72>>2];i=se(i,j,d,d>>31);d=g+i|0;e=$+e|0;e=d>>>0>>0?e+1|0:e;e=e<<1|d>>>31;i=d<<1;d=h+i|0;e=e+f|0;e=d>>>0>>0?e+1|0:e;f=d;d=F[c+48>>2];h=d;g=d>>31;d=F[b+64>>2];i=se(h,g,d,d>>31);f=f+i|0;d=$+e|0;F[a+112>>2]=f;F[a+116>>2]=f>>>0>>0?d+1|0:d;e=F[c+56>>2];d=e;f=e>>31;e=F[b+64>>2];e=se(d,f,e,e>>31);f=$;d=e;e=F[c+64>>2];h=e;g=e>>31;e=F[b+56>>2];i=se(h,g,e,e>>31);d=d+i|0;e=$+f|0;e=d>>>0>>0?e+1|0:e;h=d;d=F[c+72>>2];f=d;g=d>>31;d=F[b+48>>2];f=se(f,g,d,d>>31);d=h+f|0;e=$+e|0;e=d>>>0>>0?e+1|0:e;h=d;d=F[c+48>>2];f=d;g=d>>31;d=F[b+72>>2];f=se(f,g,d,d>>31);d=h+f|0;e=$+e|0;F[a+120>>2]=d;F[a+124>>2]=d>>>0>>0?e+1|0:e;e=F[c+64>>2];d=e;f=e>>31;e=F[b+64>>2];e=se(d,f,e,e>>31);i=$;d=F[c+56>>2];f=d;h=d>>31;d=F[b+72>>2];d=se(f,h,d,d>>31);f=$;h=e;e=F[c+72>>2];g=e;j=e>>31;e=F[b+56>>2];g=se(g,j,e,e>>31);d=g+d|0;e=$+f|0;e=d>>>0>>0?e+1|0:e;g=d<<1;f=h+g|0;d=(e<<1|d>>>31)+i|0;F[a+128>>2]=f;F[a+132>>2]=f>>>0>>0?d+1|0:d;e=F[c+64>>2];d=e;f=e>>31;e=F[b+72>>2];e=se(d,f,e,e>>31);f=$;d=e;e=F[c+72>>2];h=e;g=e>>31;e=F[b+64>>2];i=se(h,g,e,e>>31);d=d+i|0;e=$+f|0;F[a+136>>2]=d;F[a+140>>2]=d>>>0>>0?e+1|0:e;e=F[b+72>>2];b=0;c=F[c+72>>2];F[a+144>>2]=se(c,c>>31,(e&2147483647)<<1|b>>>31,e>>31);F[a+148>>2]=$}function ha(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0;V=F[c+4>>2];d=V;v=d;E=d>>31;G=F[b+20>>2];d=G<<1;ka=d;Y=d>>31;d=se(v,E,d,Y);f=$;e=d;d=F[c>>2];w=d;x=d>>31;d=F[b+24>>2];H=d;y=d>>31;o=se(w,x,d,y);e=e+o|0;d=$+f|0;d=e>>>0>>0?d+1|0:d;f=e;g=F[c+8>>2];e=g;la=e;P=e>>31;e=F[b+16>>2];I=e;z=e>>31;o=se(g,P,e,z);e=f+o|0;f=$+d|0;f=e>>>0>>0?f+1|0:f;h=F[c+12>>2];d=h;ma=d;S=d>>31;o=F[b+12>>2];d=o<<1;na=d;Z=d>>31;p=se(h,S,d,Z);d=p+e|0;e=$+f|0;e=d>>>0

    >>0?e+1|0:e;f=d;s=F[c+16>>2];d=s;va=d;W=d>>31;d=F[b+8>>2];J=d;A=d>>31;p=se(s,W,d,A);f=f+p|0;d=$+e|0;d=f>>>0

    >>0?d+1|0:d;K=f;k=F[c+20>>2];e=k;wa=e;_=e>>31;p=F[b+4>>2];e=p<<1;oa=e;aa=e>>31;f=se(k,_,e,aa);e=K+f|0;d=$+d|0;d=e>>>0>>0?d+1|0:d;f=e;l=F[c+24>>2];e=l;xa=e;pa=e>>31;e=F[b>>2];M=e;B=e>>31;C=se(l,pa,e,B);f=f+C|0;e=$+d|0;e=f>>>0>>0?e+1|0:e;ba=F[c+28>>2];d=L(ba,19);q=d;T=d>>31;C=F[b+36>>2];d=C<<1;qa=d;ca=d>>31;r=se(q,T,d,ca);d=r+f|0;f=$+e|0;f=d>>>0>>0?f+1|0:f;e=d;ra=F[c+32>>2];d=L(ra,19);m=d;i=d>>31;d=F[b+32>>2];N=d;D=d>>31;r=se(m,i,d,D);e=e+r|0;d=$+f|0;d=e>>>0>>0?d+1|0:d;ya=F[c+36>>2];c=L(ya,19);n=c;O=c>>31;r=F[b+28>>2];b=r<<1;sa=b;da=b>>31;c=se(c,O,b,da);b=c+e|0;d=$+d|0;U=b;b=b>>>0>>0?d+1|0:d;c=se(I,z,v,E);d=$;ea=G>>31;e=se(w,x,G,ea);c=e+c|0;f=$+d|0;f=c>>>0>>0?f+1|0:f;fa=o>>31;d=se(g,P,o,fa);c=d+c|0;e=$+f|0;e=c>>>0>>0?e+1|0:e;f=se(J,A,h,S);c=f+c|0;d=$+e|0;d=c>>>0>>0?d+1|0:d;ga=p>>31;e=se(s,W,p,ga);c=e+c|0;d=$+d|0;d=c>>>0>>0?d+1|0:d;e=se(M,B,k,_);c=e+c|0;d=$+d|0;d=c>>>0>>0?d+1|0:d;f=c;c=L(l,19);Q=c;X=c>>31;ha=C>>31;e=se(c,X,C,ha);c=f+e|0;f=$+d|0;f=c>>>0>>0?f+1|0:f;d=se(N,D,q,T);c=d+c|0;e=$+f|0;e=c>>>0>>0?e+1|0:e;ia=r>>31;f=se(m,i,r,ia);c=f+c|0;d=$+e|0;d=c>>>0>>0?d+1|0:d;e=se(n,O,H,y);c=e+c|0;d=$+d|0;K=c;c=c>>>0>>0?d+1|0:d;d=se(v,E,na,Z);f=$;l=se(w,x,I,z);e=l+d|0;d=$+f|0;d=e>>>0>>0?d+1|0:d;l=se(J,A,g,P);e=l+e|0;f=$+d|0;f=e>>>0>>0?f+1|0:f;l=se(h,S,oa,aa);d=l+e|0;e=$+f|0;e=d>>>0>>0?e+1|0:e;l=se(M,B,s,W);f=l+d|0;d=$+e|0;d=f>>>0>>0?d+1|0:d;t=f;e=L(k,19);ta=e;ja=e>>31;f=se(e,ja,qa,ca);e=t+f|0;d=$+d|0;d=e>>>0>>0?d+1|0:d;f=se(N,D,Q,X);e=f+e|0;d=$+d|0;d=e>>>0>>0?d+1|0:d;k=se(q,T,sa,da);e=k+e|0;f=$+d|0;f=e>>>0>>0?f+1|0:f;k=se(m,i,H,y);d=k+e|0;e=$+f|0;e=d>>>0>>0?e+1|0:e;k=se(n,O,ka,Y);f=k+d|0;d=$+e|0;d=f>>>0>>0?d+1|0:d;k=f;Ba=d;e=f+33554432|0;d=e>>>0<33554432?d+1|0:d;l=e;Ca=d;f=K;K=(d&67108863)<<6|e>>>26;f=f+K|0;d=(d>>26)+c|0;d=f>>>0>>0?d+1|0:d;K=f;c=K+16777216|0;f=c>>>0<16777216?d+1|0:d;Da=c;e=f>>25;f=(f&33554431)<<7|c>>>25;c=f+U|0;d=b+e|0;d=c>>>0>>0?d+1|0:d;b=c+33554432|0;d=b>>>0<33554432?d+1|0:d;R=b;b=d;d=R&-67108864;F[a+24>>2]=c-d;c=se(v,E,oa,aa);d=$;e=se(w,x,J,A);c=e+c|0;f=$+d|0;f=c>>>0>>0?f+1|0:f;e=se(M,B,g,P);c=e+c|0;d=$+f|0;d=c>>>0>>0?d+1|0:d;f=c;c=L(h,19);h=c;U=c>>31;e=se(c,U,qa,ca);c=f+e|0;d=$+d|0;d=c>>>0>>0?d+1|0:d;e=c;c=L(s,19);za=c;ua=c>>31;f=se(N,D,c,ua);c=e+f|0;e=$+d|0;e=c>>>0>>0?e+1|0:e;f=se(sa,da,ta,ja);c=f+c|0;d=$+e|0;d=c>>>0>>0?d+1|0:d;e=se(H,y,Q,X);c=e+c|0;f=$+d|0;f=c>>>0>>0?f+1|0:f;e=se(q,T,ka,Y);c=e+c|0;d=$+f|0;d=c>>>0>>0?d+1|0:d;e=se(m,i,I,z);c=e+c|0;d=$+d|0;d=c>>>0>>0?d+1|0:d;f=se(n,O,na,Z);c=f+c|0;e=$+d|0;t=c;c=c>>>0>>0?e+1|0:e;d=se(M,B,v,E);f=$;s=se(w,x,p,ga);e=s+d|0;d=$+f|0;d=e>>>0>>0?d+1|0:d;f=e;e=L(g,19);s=e;j=e>>31;g=se(e,j,C,ha);e=f+g|0;f=$+d|0;f=e>>>0>>0?f+1|0:f;g=se(N,D,h,U);e=g+e|0;d=$+f|0;d=e>>>0>>0?d+1|0:d;f=se(za,ua,r,ia);e=f+e|0;d=$+d|0;d=e>>>0>>0?d+1|0:d;g=se(H,y,ta,ja);f=g+e|0;e=$+d|0;e=f>>>0>>0?e+1|0:e;g=se(Q,X,G,ea);f=g+f|0;d=$+e|0;d=f>>>0>>0?d+1|0:d;g=se(I,z,q,T);e=g+f|0;f=$+d|0;f=e>>>0>>0?f+1|0:f;g=se(m,i,o,fa);e=g+e|0;d=$+f|0;d=e>>>0>>0?d+1|0:d;f=se(n,O,J,A);e=f+e|0;d=$+d|0;Aa=e;g=e>>>0>>0?d+1|0:d;d=L(v,19);d=se(d,d>>31,qa,ca);e=$;f=se(w,x,M,B);d=f+d|0;e=$+e|0;e=d>>>0>>0?e+1|0:e;V=se(N,D,s,j);f=V+d|0;d=$+e|0;h=se(h,U,sa,da);e=h+f|0;f=$+(f>>>0>>0?d+1|0:d)|0;f=e>>>0>>0?f+1|0:f;h=se(H,y,za,ua);e=h+e|0;d=$+f|0;d=e>>>0>>0?d+1|0:d;f=se(ka,Y,ta,ja);e=f+e|0;d=$+d|0;d=e>>>0>>0?d+1|0:d;h=se(I,z,Q,X);f=h+e|0;e=$+d|0;e=f>>>0>>0?e+1|0:e;h=se(q,T,na,Z);f=h+f|0;d=$+e|0;d=f>>>0>>0?d+1|0:d;h=se(m,i,J,A);e=h+f|0;f=$+d|0;f=e>>>0>>0?f+1|0:f;h=se(n,O,oa,aa);e=h+e|0;d=$+f|0;d=e>>>0>>0?d+1|0:d;h=e;V=d;e=e+33554432|0;d=e>>>0<33554432?d+1|0:d;U=e;s=d;f=d>>26;j=(d&67108863)<<6|e>>>26;d=j+Aa|0;e=f+g|0;g=d;d=d>>>0>>0?e+1|0:e;e=g+16777216|0;d=e>>>0<16777216?d+1|0:d;Aa=e;f=t;t=(d&33554431)<<7|e>>>25;e=f+t|0;d=(d>>25)+c|0;d=e>>>0>>0?d+1|0:d;c=e+33554432|0;d=c>>>0<33554432?d+1|0:d;t=c;c=d;d=t&-67108864;F[a+8>>2]=e-d;d=se(H,y,v,E);f=$;j=se(w,x,r,ia);e=j+d|0;d=$+f|0;d=e>>>0>>0?d+1|0:d;f=se(la,P,G,ea);e=f+e|0;d=$+d|0;d=e>>>0>>0?d+1|0:d;f=se(I,z,ma,S);e=f+e|0;d=$+d|0;d=e>>>0>>0?d+1|0:d;j=se(va,W,o,fa);e=j+e|0;f=$+d|0;f=e>>>0>>0?f+1|0:f;j=se(J,A,wa,_);d=j+e|0;e=$+f|0;e=d>>>0>>0?e+1|0:e;j=se(p,ga,xa,pa);f=j+d|0;d=$+e|0;d=f>>>0>>0?d+1|0:d;e=f;j=ba>>31;f=se(M,B,ba,j);e=e+f|0;d=$+d|0;d=e>>>0>>0?d+1|0:d;f=se(m,i,C,ha);e=f+e|0;d=$+d|0;d=e>>>0>>0?d+1|0:d;u=se(n,O,N,D);e=u+e|0;f=$+d|0;f=e>>>0>>0?f+1|0:f;d=b>>26;R=(b&67108863)<<6|R>>>26;b=R+e|0;e=d+f|0;e=b>>>0>>0?e+1|0:e;f=b;d=e;b=f+16777216|0;d=b>>>0<16777216?d+1|0:d;R=b;b=d;d=R&-33554432;F[a+28>>2]=f-d;d=se(J,A,v,E);e=$;u=se(w,x,o,fa);d=u+d|0;f=$+e|0;f=d>>>0>>0?f+1|0:f;u=se(la,P,p,ga);d=u+d|0;e=$+f|0;e=d>>>0>>0?e+1|0:e;u=se(M,B,ma,S);f=u+d|0;d=$+e|0;d=f>>>0>>0?d+1|0:d;e=f;f=se(za,ua,C,ha);e=e+f|0;d=$+d|0;d=e>>>0>>0?d+1|0:d;f=se(N,D,ta,ja);e=f+e|0;d=$+d|0;d=e>>>0>>0?d+1|0:d;Q=se(Q,X,r,ia);e=Q+e|0;f=$+d|0;q=se(H,y,q,T);d=q+e|0;e=$+(e>>>0>>0?f+1|0:f)|0;m=se(m,i,G,ea);f=m+d|0;d=$+(d>>>0>>0?e+1|0:e)|0;d=f>>>0>>0?d+1|0:d;e=f;f=se(n,O,I,z);e=e+f|0;d=$+d|0;d=e>>>0>>0?d+1|0:d;m=e;e=c>>26;f=(c&67108863)<<6|t>>>26;c=m+f|0;d=d+e|0;d=c>>>0>>0?d+1|0:d;e=c;c=e+16777216|0;f=c>>>0<16777216?d+1|0:d;m=c;c=f;d=m&-33554432;F[a+12>>2]=e-d;d=se(v,E,sa,da);f=$;i=se(w,x,N,D);e=i+d|0;d=$+f|0;d=e>>>0>>0?d+1|0:d;f=se(H,y,la,P);e=f+e|0;d=$+d|0;d=e>>>0>>0?d+1|0:d;i=se(ma,S,ka,Y);e=i+e|0;f=$+d|0;f=e>>>0>>0?f+1|0:f;i=se(I,z,va,W);d=i+e|0;e=$+f|0;e=d>>>0>>0?e+1|0:e;i=se(na,Z,wa,_);f=i+d|0;d=$+e|0;d=f>>>0>>0?d+1|0:d;e=f;f=se(J,A,xa,pa);e=e+f|0;d=$+d|0;d=e>>>0>>0?d+1|0:d;f=se(ba,j,oa,aa);e=f+e|0;d=$+d|0;d=e>>>0>>0?d+1|0:d;i=ra>>31;q=se(M,B,ra,i);e=q+e|0;f=$+d|0;n=se(n,O,qa,ca);d=n+e|0;e=$+(e>>>0>>0?f+1|0:f)|0;e=d>>>0>>0?e+1|0:e;t=d;d=b>>25;f=(b&33554431)<<7|R>>>25;b=t+f|0;d=d+e|0;d=b>>>0>>0?d+1|0:d;e=b;b=e+33554432|0;d=b>>>0<33554432?d+1|0:d;n=b;b=d;d=n&-67108864;F[a+32>>2]=e-d;d=l&-67108864;e=k-d|0;d=Ba-((d>>>0>k>>>0)+Ca|0)|0;f=e;e=c>>25;k=(c&33554431)<<7|m>>>25;c=f+k|0;d=d+e|0;d=c>>>0>>0?d+1|0:d;e=c+33554432|0;d=e>>>0<33554432?d+1|0:d;d=(K-(Da&-33554432)|0)+((d&67108863)<<6|e>>>26)|0;F[a+20>>2]=d;d=e&-67108864;F[a+16>>2]=c-d;c=se(N,D,v,E);d=$;e=se(w,x,C,ha);c=e+c|0;d=$+d|0;d=c>>>0>>0?d+1|0:d;f=se(la,P,r,ia);c=f+c|0;e=$+d|0;e=c>>>0>>0?e+1|0:e;d=se(H,y,ma,S);c=d+c|0;f=$+e|0;f=c>>>0>>0?f+1|0:f;e=se(va,W,G,ea);c=e+c|0;d=$+f|0;d=c>>>0>>0?d+1|0:d;e=se(I,z,wa,_);c=e+c|0;d=$+d|0;d=c>>>0>>0?d+1|0:d;e=se(o,fa,xa,pa);c=e+c|0;d=$+d|0;d=c>>>0>>0?d+1|0:d;f=se(J,A,ba,j);c=f+c|0;e=$+d|0;e=c>>>0>>0?e+1|0:e;d=se(ra,i,p,ga);c=d+c|0;f=$+e|0;f=c>>>0>>0?f+1|0:f;e=se(M,B,ya,ya>>31);c=e+c|0;d=$+f|0;d=c>>>0>>0?d+1|0:d;e=b>>26;f=c;c=(b&67108863)<<6|n>>>26;b=f+c|0;d=d+e|0;d=b>>>0>>0?d+1|0:d;c=b+16777216|0;d=c>>>0<16777216?d+1|0:d;e=c&-33554432;F[a+36>>2]=b-e;f=g-(Aa&-33554432)|0;b=U&-67108864;e=h-b|0;G=V-((b>>>0>h>>>0)+s|0)|0;b=d;d=d>>25;c=se((b&33554431)<<7|c>>>25,d,19,0);b=c+e|0;e=$+G|0;e=b>>>0>>0?e+1|0:e;d=e;c=b+33554432|0;d=c>>>0<33554432?d+1|0:d;e=c;c=((d&67108863)<<6|e>>>26)+f|0;F[a+4>>2]=c;c=a;a=e&-67108864;F[c>>2]=b-a}function Sa(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,aa=0,ba=0,ca=0,da=0,ea=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0;u=_-48|0;_=u;fa(a,b);fa(a+80|0,b+40|0);o=F[b+92>>2];c=o<<1;B=c;C=c>>31;l=F[b+84>>2];c=l<<1;D=c;w=c>>31;c=se(B,C,c,w);g=$;d=c;h=F[b+88>>2];c=h;i=c>>31;ba=c;e=se(c,i,c,i);d=d+e|0;c=$+g|0;c=d>>>0>>0?c+1|0:c;e=d;P=F[b+96>>2];d=P;G=d;J=d>>31;m=F[b+80>>2];d=m<<1;E=d;x=d>>31;g=se(G,J,d,x);d=e+g|0;c=$+c|0;c=d>>>0>>0?c+1|0:c;f=d;g=F[b+108>>2];d=L(g,38);X=d;T=d>>31;H=g;ca=g>>31;e=se(d,T,g,ca);d=f+e|0;c=$+c|0;c=d>>>0>>0?c+1|0:c;e=d;r=F[b+112>>2];d=L(r,19);K=d;M=d>>31;k=F[b+104>>2];d=k<<1;t=se(K,M,d,d>>31);e=e+t|0;d=$+c|0;d=e>>>0>>0?d+1|0:d;f=e;t=F[b+116>>2];c=L(t,38);y=c;z=c>>31;e=F[b+100>>2];c=e<<1;U=c;Q=c>>31;q=se(y,z,c,Q);c=f+q|0;d=$+d|0;d=c>>>0>>0?d+1|0:d;q=c;c=d<<1|c>>>31;q=q<<1;R=c;d=q+33554432|0;c=d>>>0<33554432?c+1|0:c;I=d;N=c;d=c>>26;c=(c&67108863)<<6|I>>>26;v=d;d=se(D,w,G,J);j=$;f=c;c=h<<1;V=c;S=c>>31;h=o;da=h>>31;o=se(c,S,h,da);d=o+d|0;c=$+j|0;c=d>>>0>>0?c+1|0:c;o=e;Y=e>>31;n=se(e,Y,E,x);j=n+d|0;d=$+c|0;d=j>>>0>>0?d+1|0:d;p=j;c=g<<1;ha=c;ea=c>>31;j=se(K,M,c,ea);g=p+j|0;c=$+d|0;c=g>>>0>>0?c+1|0:c;d=g;O=k>>31;g=se(y,z,k,O);d=d+g|0;c=$+c|0;c=d>>>0>>0?c+1|0:c;g=d;d=c<<1|d>>>31;g=g<<1;c=f+g|0;d=d+v|0;v=c;c=c>>>0>>0?d+1|0:d;d=v+16777216|0;c=d>>>0<16777216?c+1|0:c;ka=d;g=d;d=c>>25;c=(c&33554431)<<7|g>>>25;g=d;d=se(B,C,h,da);j=$;f=c;n=se(G,J,V,S);d=n+d|0;c=$+j|0;c=d>>>0>>0?c+1|0:c;j=se(D,w,U,Q);d=j+d|0;c=$+c|0;c=d>>>0>>0?c+1|0:c;n=se(E,x,k,O);j=n+d|0;d=$+c|0;d=j>>>0>>0?d+1|0:d;Z=r>>31;n=se(K,M,r,Z);j=n+j|0;c=$+d|0;c=j>>>0>>0?c+1|0:c;n=se(y,z,ha,ea);j=n+j|0;d=$+c|0;d=j>>>0>>0?d+1|0:d;c=j;n=c<<1;j=f+n|0;c=(d<<1|c>>>31)+g|0;c=j>>>0>>0?c+1|0:c;d=j;g=d+33554432|0;c=g>>>0<33554432?c+1|0:c;aa=g;g=c;c=aa&-67108864;F[a+144>>2]=d-c;c=L(e,38);c=se(c,c>>31,e,Y);d=$;f=c;c=m>>31;e=se(m,c,m,c);c=f+e|0;d=$+d|0;d=c>>>0>>0?d+1|0:d;e=c;c=L(k,19);p=c;A=c>>31;c=G<<1;ia=c;ga=c>>31;m=se(p,A,c,ga);e=e+m|0;c=$+d|0;c=e>>>0>>0?c+1|0:c;d=e;e=se(B,C,X,T);d=d+e|0;c=$+c|0;c=d>>>0>>0?c+1|0:c;m=se(K,M,V,S);e=m+d|0;d=$+c|0;d=e>>>0>>0?d+1|0:d;m=se(D,w,y,z);e=m+e|0;c=$+d|0;c=e>>>0>>0?c+1|0:c;d=e;m=d<<1;c=c<<1|d>>>31;P=c;d=c;c=m+33554432|0;d=c>>>0<33554432?d+1|0:d;j=c;n=d;c=d>>26;d=(d&67108863)<<6|j>>>26;e=c;c=se(p,A,U,Q);s=$;W=d;f=l;ja=f>>31;l=se(E,x,f,ja);d=l+c|0;c=$+s|0;c=d>>>0>>0?c+1|0:c;s=se(G,J,X,T);l=s+d|0;d=$+c|0;d=l>>>0>>0?d+1|0:d;s=se(K,M,B,C);l=s+l|0;c=$+d|0;c=l>>>0>>0?c+1|0:c;s=se(y,z,ba,i);l=s+l|0;d=$+c|0;d=l>>>0>>0?d+1|0:d;c=l;s=c<<1;l=W+s|0;c=(d<<1|c>>>31)+e|0;c=l>>>0>>0?c+1|0:c;d=l+16777216|0;c=d>>>0<16777216?c+1|0:c;s=d;e=d;d=c>>25;c=(c&33554431)<<7|e>>>25;e=d;d=se(E,x,ba,i);la=$;W=c;f=se(D,w,f,ja);d=f+d|0;c=$+la|0;c=d>>>0>>0?c+1|0:c;p=se(p,A,k,O);f=p+d|0;d=$+c|0;d=f>>>0

    >>0?d+1|0:d;p=se(U,Q,X,T);f=p+f|0;c=$+d|0;c=f>>>0

    >>0?c+1|0:c;d=f;f=se(K,M,ia,ga);d=d+f|0;c=$+c|0;c=d>>>0>>0?c+1|0:c;p=se(y,z,B,C);f=p+d|0;d=$+c|0;d=f>>>0

    >>0?d+1|0:d;c=d<<1|f>>>31;f=f<<1;d=W+f|0;c=c+e|0;c=d>>>0>>0?c+1|0:c;e=d;f=d;d=c;c=e+33554432|0;d=c>>>0<33554432?d+1|0:d;p=c;e=d;c=c&-67108864;F[a+128>>2]=f-c;c=se(V,S,o,Y);d=$;f=se(G,J,B,C);c=f+c|0;d=$+d|0;d=c>>>0>>0?d+1|0:d;A=se(D,w,k,O);f=A+c|0;c=$+d|0;c=f>>>0>>0?c+1|0:c;A=se(E,x,H,ca);f=A+f|0;d=$+c|0;d=f>>>0>>0?d+1|0:d;A=se(y,z,r,Z);f=A+f|0;c=$+d|0;d=f;c=(d>>>0>>0?c+1|0:c)<<1|d>>>31;W=d<<1;d=g>>26;f=(g&67108863)<<6|aa>>>26;g=W+f|0;c=c+d|0;c=g>>>0>>0?c+1|0:c;f=g;d=c;c=g+16777216|0;d=c>>>0<16777216?d+1|0:d;aa=c;g=d;c=c&-33554432;F[a+148>>2]=f-c;c=se(E,x,h,da);h=$;i=se(D,w,ba,i);d=i+c|0;c=$+h|0;c=d>>>0>>0?c+1|0:c;i=se(k,O,X,T);d=i+d|0;c=$+c|0;c=d>>>0>>0?c+1|0:c;h=se(K,M,U,Q);i=h+d|0;d=$+c|0;d=h>>>0>i>>>0?d+1|0:d;c=i;i=se(y,z,G,J);c=c+i|0;d=$+d|0;d=c>>>0>>0?d+1|0:d;i=c;c=d<<1|c>>>31;d=e>>26;f=i<<1;i=(e&67108863)<<6|p>>>26;e=f+i|0;c=c+d|0;c=e>>>0>>0?c+1|0:c;d=e;e=d+16777216|0;c=e>>>0<16777216?c+1|0:c;i=e;e=c;c=i&-33554432;F[a+132>>2]=d-c;c=se(k,O,V,S);h=$;f=se(G,J,G,J);d=f+c|0;c=$+h|0;c=d>>>0>>0?c+1|0:c;h=se(B,C,U,Q);d=h+d|0;c=$+c|0;c=d>>>0>>0?c+1|0:c;h=se(D,w,ha,ea);d=h+d|0;c=$+c|0;c=d>>>0>>0?c+1|0:c;f=se(E,x,r,Z);h=f+d|0;d=$+c|0;d=f>>>0>h>>>0?d+1|0:d;c=h;f=t>>31;h=se(y,z,t,f);c=c+h|0;d=$+d|0;d=c>>>0>>0?d+1|0:d;h=c;c=d<<1|c>>>31;d=g>>25;p=h<<1;h=(g&33554431)<<7|aa>>>25;g=p+h|0;c=c+d|0;c=g>>>0>>0?c+1|0:c;d=g;g=d+33554432|0;c=g>>>0<33554432?c+1|0:c;h=g;g=c;c=h&-67108864;F[a+152>>2]=d-c;v=v-(ka&-33554432)|0;c=I&-67108864;d=q-c|0;q=R-((c>>>0>q>>>0)+N|0)|0;c=e>>25;i=(e&33554431)<<7|i>>>25;e=i+d|0;d=c+q|0;d=e>>>0>>0?d+1|0:d;c=d;d=e+33554432|0;c=d>>>0<33554432?c+1|0:c;c=((c&67108863)<<6|d>>>26)+v|0;F[a+140>>2]=c;c=d&-67108864;F[a+136>>2]=e-c;c=se(B,C,k,O);d=$;e=se(o,Y,ia,ga);c=e+c|0;d=$+d|0;d=c>>>0>>0?d+1|0:d;k=se(V,S,H,ca);e=k+c|0;c=$+d|0;c=e>>>0>>0?c+1|0:c;k=se(D,w,r,Z);e=k+e|0;d=$+c|0;d=e>>>0>>0?d+1|0:d;k=se(E,x,t,f);e=k+e|0;c=$+d|0;d=e;c=(d>>>0>>0?c+1|0:c)<<1|d>>>31;f=d<<1;d=g>>26;e=(g&67108863)<<6|h>>>26;g=f+e|0;c=c+d|0;c=e>>>0>g>>>0?c+1|0:c;d=c;c=g+16777216|0;d=c>>>0<16777216?d+1|0:d;e=c&-33554432;F[a+156>>2]=g-e;k=se((d&33554431)<<7|c>>>25,d>>25,19,0);e=j&-67108864;c=k+(m-e|0)|0;d=$+(P-((e>>>0>m>>>0)+n|0)|0)|0;d=c>>>0>>0?d+1|0:d;g=c+33554432|0;d=g>>>0<33554432?d+1|0:d;d=(l-(s&-33554432)|0)+((d&67108863)<<6|g>>>26)|0;F[a+124>>2]=d;d=g&-67108864;F[a+120>>2]=c-d;c=F[b+44>>2];d=F[b+48>>2];g=F[b+52>>2];e=F[b+56>>2];k=F[b+60>>2];i=F[b- -64>>2];o=F[b+68>>2];r=F[b+72>>2];l=F[b+40>>2];m=F[b>>2];H=F[b+4>>2];t=F[b+8>>2];q=F[b+12>>2];I=F[b+16>>2];h=F[b+20>>2];v=F[b+24>>2];j=F[b+28>>2];R=F[b+32>>2];F[a+76>>2]=F[b+76>>2]+F[b+36>>2];F[a+72>>2]=r+R;F[a+68>>2]=j+o;R=a- -64|0;F[R>>2]=i+v;F[a+60>>2]=h+k;F[a+56>>2]=e+I;F[a+52>>2]=g+q;F[a+48>>2]=d+t;F[a+44>>2]=c+H;F[a+40>>2]=l+m;fa(u,a+40|0);b=F[a+84>>2];c=F[a+88>>2];d=F[a+92>>2];g=F[a+96>>2];e=F[a+100>>2];k=F[a+104>>2];i=F[a+108>>2];o=F[a+112>>2];r=F[a>>2];l=F[a+80>>2];m=F[a+4>>2];H=F[a+8>>2];t=F[a+12>>2];q=F[a+16>>2];I=F[a+20>>2];h=F[a+24>>2];v=F[a+28>>2];j=F[a+32>>2];N=F[a+116>>2];P=F[a+36>>2];n=N-P|0;F[a+116>>2]=n;f=o-j|0;F[a+112>>2]=f;D=i-v|0;F[a+108>>2]=D;w=k-h|0;F[a+104>>2]=w;E=e-I|0;F[a+100>>2]=E;x=g-q|0;F[a+96>>2]=x;y=d-t|0;F[a+92>>2]=y;z=c-H|0;F[a+88>>2]=z;B=b-m|0;F[a+84>>2]=B;C=l-r|0;F[a+80>>2]=C;N=P+N|0;F[a+76>>2]=N;o=j+o|0;F[a+72>>2]=o;i=i+v|0;F[a+68>>2]=i;k=h+k|0;F[R>>2]=k;e=e+I|0;F[a+60>>2]=e;g=g+q|0;F[a+56>>2]=g;d=d+t|0;F[a+52>>2]=d;c=c+H|0;F[a+48>>2]=c;b=b+m|0;F[a+44>>2]=b;r=l+r|0;F[a+40>>2]=r;l=F[u>>2];m=F[u+4>>2];H=F[u+8>>2];t=F[u+12>>2];q=F[u+16>>2];I=F[u+20>>2];h=F[u+24>>2];v=F[u+28>>2];j=F[u+32>>2];F[a+36>>2]=F[u+36>>2]-N;F[a+32>>2]=j-o;F[a+28>>2]=v-i;F[a+24>>2]=h-k;F[a+20>>2]=I-e;F[a+16>>2]=q-g;F[a+12>>2]=t-d;F[a+8>>2]=H-c;F[a+4>>2]=m-b;F[a>>2]=l-r;b=F[a+124>>2];c=F[a+128>>2];d=F[a+132>>2];g=F[a+136>>2];e=F[a+140>>2];k=F[a+144>>2];i=F[a+148>>2];o=F[a+152>>2];r=F[a+120>>2];F[a+156>>2]=F[a+156>>2]-n;F[a+152>>2]=o-f;F[a+148>>2]=i-D;F[a+144>>2]=k-w;F[a+140>>2]=e-E;F[a+136>>2]=g-x;F[a+132>>2]=d-y;F[a+128>>2]=c-z;F[a+124>>2]=b-B;F[a+120>>2]=r-C;_=u+48|0}function Aa(a,b,c,d,e,f,g,h){var i=0,j=0,k=0,l=0,m=0;i=_-432|0;_=i;j=i- -64|0;F[j>>2]=0;F[j+4>>2]=0;F[i+72>>2]=0;F[i+76>>2]=0;F[i+80>>2]=0;F[i+84>>2]=0;F[i+88>>2]=0;F[i+92>>2]=0;F[i+96>>2]=0;F[i+100>>2]=0;F[i+104>>2]=0;F[i+108>>2]=0;F[i+48>>2]=0;F[i+52>>2]=0;F[i+56>>2]=0;F[i+60>>2]=0;D[i+15|0]=1;j=c?c:1792;d=c?d:32;a:{if(d>>>0>=65){c=i+224|0;F[c+80>>2]=1779033703;F[c+84>>2]=-1150833019;F[c+72>>2]=0;F[c+76>>2]=0;F[c+64>>2]=0;F[c+104>>2]=528734635;F[c+108>>2]=1541459225;F[c+96>>2]=1359893119;F[c+100>>2]=-1694144372;F[c+88>>2]=1013904242;F[c+92>>2]=-1521486534;ra(c,j,d);Ba(c,i+48|0);break a}ja(i+48|0,j,d)}c=F[i+108>>2];F[i+280>>2]=F[i+104>>2];F[i+284>>2]=c;c=F[i+100>>2];F[i+272>>2]=F[i+96>>2];F[i+276>>2]=c;c=F[i+92>>2];F[i+264>>2]=F[i+88>>2];F[i+268>>2]=c;c=F[i+84>>2];F[i+256>>2]=F[i+80>>2];F[i+260>>2]=c;c=F[i+76>>2];F[i+248>>2]=F[i+72>>2];F[i+252>>2]=c;c=i- -64|0;d=F[c+4>>2];F[i+240>>2]=F[c>>2];F[i+244>>2]=d;c=F[i+60>>2];F[i+232>>2]=F[i+56>>2];F[i+236>>2]=c;c=F[i+52>>2];F[i+224>>2]=F[i+48>>2];F[i+228>>2]=c;c=0;while(1){d=i+224|0;j=d+c|0;D[j|0]=G[j|0]^54;j=d+(c|1)|0;D[j|0]=G[j|0]^54;j=d+(c|2)|0;D[j|0]=G[j|0]^54;d=d+(c|3)|0;D[d|0]=G[d|0]^54;c=c+4|0;if((c|0)!=64){continue}break}c=i+112|0;F[c+80>>2]=1779033703;F[c+84>>2]=-1150833019;F[c+72>>2]=0;F[c+76>>2]=0;F[c+64>>2]=0;F[c+104>>2]=528734635;F[c+108>>2]=1541459225;F[c+96>>2]=1359893119;F[c+100>>2]=-1694144372;F[c+88>>2]=1013904242;F[c+92>>2]=-1521486534;d=i+224|0;ra(c,d,64);ia(d,64);ra(c,a,b);a=F[i+108>>2];F[i+392>>2]=F[i+104>>2];F[i+396>>2]=a;a=F[i+100>>2];F[i+384>>2]=F[i+96>>2];F[i+388>>2]=a;a=F[i+92>>2];F[i+376>>2]=F[i+88>>2];F[i+380>>2]=a;a=F[i+84>>2];F[i+368>>2]=F[i+80>>2];F[i+372>>2]=a;a=F[i+76>>2];F[i+360>>2]=F[i+72>>2];F[i+364>>2]=a;a=i- -64|0;b=F[a+4>>2];F[i+352>>2]=F[a>>2];F[i+356>>2]=b;a=F[i+60>>2];F[i+344>>2]=F[i+56>>2];F[i+348>>2]=a;a=F[i+52>>2];F[i+336>>2]=F[i+48>>2];F[i+340>>2]=a;c=0;while(1){a=i+336|0;b=a+c|0;D[b|0]=G[b|0]^92;b=a+(c|1)|0;D[b|0]=G[b|0]^92;b=a+(c|2)|0;D[b|0]=G[b|0]^92;a=a+(c|3)|0;D[a|0]=G[a|0]^92;c=c+4|0;if((c|0)!=64){continue}break}Ba(i+112|0,i+400|0);a=i+224|0;F[a+80>>2]=1779033703;F[a+84>>2]=-1150833019;F[a+72>>2]=0;F[a+76>>2]=0;F[a+64>>2]=0;F[a+104>>2]=528734635;F[a+108>>2]=1541459225;F[a+96>>2]=1359893119;F[a+100>>2]=-1694144372;F[a+88>>2]=1013904242;F[a+92>>2]=-1521486534;b=i+336|0;ra(a,b,96);Ba(a,i+16|0);ia(a,112);ia(b,96);F[i+80>>2]=0;F[i+84>>2]=0;F[i+88>>2]=0;F[i+92>>2]=0;F[i+96>>2]=0;F[i+100>>2]=0;F[i+104>>2]=0;F[i+108>>2]=0;a=F[i+44>>2];j=F[i+40>>2];F[i+72>>2]=j;F[i+76>>2]=a;b=F[i+36>>2];c=i- -64|0;k=F[i+32>>2];F[c>>2]=k;F[c+4>>2]=b;c=F[i+20>>2];l=F[i+16>>2];F[i+48>>2]=l;F[i+52>>2]=c;d=F[i+28>>2];m=F[i+24>>2];F[i+56>>2]=m;F[i+60>>2]=d;F[i+280>>2]=0;F[i+284>>2]=0;F[i+272>>2]=0;F[i+276>>2]=0;F[i+264>>2]=0;F[i+268>>2]=0;F[i+256>>2]=0;F[i+260>>2]=0;F[i+248>>2]=j;F[i+252>>2]=a;F[i+240>>2]=k;F[i+244>>2]=b;F[i+232>>2]=m;F[i+236>>2]=d;F[i+224>>2]=l;F[i+228>>2]=c;c=0;while(1){a=i+224|0;b=a+c|0;D[b|0]=G[b|0]^54;b=a+(c|1)|0;D[b|0]=G[b|0]^54;b=a+(c|2)|0;D[b|0]=G[b|0]^54;a=a+(c|3)|0;D[a|0]=G[a|0]^54;c=c+4|0;if((c|0)!=64){continue}break}a=i+112|0;F[a+80>>2]=1779033703;F[a+84>>2]=-1150833019;F[a+72>>2]=0;F[a+76>>2]=0;F[a+64>>2]=0;F[a+104>>2]=528734635;F[a+108>>2]=1541459225;F[a+96>>2]=1359893119;F[a+100>>2]=-1694144372;F[a+88>>2]=1013904242;F[a+92>>2]=-1521486534;b=i+224|0;ra(a,b,64);ia(b,64);ra(a,e,f);ra(a,i+15|0,1);a=F[i+108>>2];F[i+392>>2]=F[i+104>>2];F[i+396>>2]=a;a=F[i+100>>2];F[i+384>>2]=F[i+96>>2];F[i+388>>2]=a;a=F[i+92>>2];F[i+376>>2]=F[i+88>>2];F[i+380>>2]=a;a=F[i+84>>2];F[i+368>>2]=F[i+80>>2];F[i+372>>2]=a;a=F[i+76>>2];F[i+360>>2]=F[i+72>>2];F[i+364>>2]=a;a=i- -64|0;b=F[a+4>>2];F[i+352>>2]=F[a>>2];F[i+356>>2]=b;a=F[i+60>>2];F[i+344>>2]=F[i+56>>2];F[i+348>>2]=a;a=F[i+52>>2];F[i+336>>2]=F[i+48>>2];F[i+340>>2]=a;c=0;while(1){a=i+336|0;b=a+c|0;D[b|0]=G[b|0]^92;b=a+(c|1)|0;D[b|0]=G[b|0]^92;b=a+(c|2)|0;D[b|0]=G[b|0]^92;a=a+(c|3)|0;D[a|0]=G[a|0]^92;c=c+4|0;if((c|0)!=64){continue}break}d=i+400|0;Ba(i+112|0,d);a=i+224|0;F[a+80>>2]=1779033703;F[a+84>>2]=-1150833019;F[a+72>>2]=0;F[a+76>>2]=0;F[a+64>>2]=0;F[a+104>>2]=528734635;F[a+108>>2]=1541459225;F[a+96>>2]=1359893119;F[a+100>>2]=-1694144372;F[a+88>>2]=1013904242;F[a+92>>2]=-1521486534;b=i+336|0;ra(a,b,96);Ba(a,i+16|0);ia(a,112);ia(b,96);if(h>>>0>=33){while(1){a=F[i+20>>2];b=F[i+16>>2];D[g|0]=b;D[g+1|0]=b>>>8;D[g+2|0]=b>>>16;D[g+3|0]=b>>>24;D[g+4|0]=a;D[g+5|0]=a>>>8;D[g+6|0]=a>>>16;D[g+7|0]=a>>>24;a=F[i+28>>2];b=F[i+24>>2];D[g+8|0]=b;D[g+9|0]=b>>>8;D[g+10|0]=b>>>16;D[g+11|0]=b>>>24;D[g+12|0]=a;D[g+13|0]=a>>>8;D[g+14|0]=a>>>16;D[g+15|0]=a>>>24;a=F[i+44>>2];b=F[i+40>>2];D[g+24|0]=b;D[g+25|0]=b>>>8;D[g+26|0]=b>>>16;D[g+27|0]=b>>>24;D[g+28|0]=a;D[g+29|0]=a>>>8;D[g+30|0]=a>>>16;D[g+31|0]=a>>>24;a=F[i+36>>2];b=F[i+32>>2];D[g+16|0]=b;D[g+17|0]=b>>>8;D[g+18|0]=b>>>16;D[g+19|0]=b>>>24;D[g+20|0]=a;D[g+21|0]=a>>>8;D[g+22|0]=a>>>16;D[g+23|0]=a>>>24;D[i+15|0]=G[i+15|0]+1;a=F[i+108>>2];F[i+280>>2]=F[i+104>>2];F[i+284>>2]=a;a=F[i+100>>2];F[i+272>>2]=F[i+96>>2];F[i+276>>2]=a;a=F[i+92>>2];F[i+264>>2]=F[i+88>>2];F[i+268>>2]=a;a=F[i+84>>2];F[i+256>>2]=F[i+80>>2];F[i+260>>2]=a;a=F[i+76>>2];F[i+248>>2]=F[i+72>>2];F[i+252>>2]=a;b=i- -64|0;a=b;c=F[a+4>>2];F[i+240>>2]=F[a>>2];F[i+244>>2]=c;a=F[i+60>>2];F[i+232>>2]=F[i+56>>2];F[i+236>>2]=a;a=F[i+52>>2];F[i+224>>2]=F[i+48>>2];F[i+228>>2]=a;g=g+32|0;c=0;while(1){a=i+224|0;j=a+c|0;D[j|0]=G[j|0]^54;j=a+(c|1)|0;D[j|0]=G[j|0]^54;j=a+(c|2)|0;D[j|0]=G[j|0]^54;a=a+(c|3)|0;D[a|0]=G[a|0]^54;c=c+4|0;if((c|0)!=64){continue}break}a=i+112|0;F[a+80>>2]=1779033703;F[a+84>>2]=-1150833019;F[a+72>>2]=0;F[a+76>>2]=0;F[a+64>>2]=0;F[a+104>>2]=528734635;F[a+108>>2]=1541459225;F[a+96>>2]=1359893119;F[a+100>>2]=-1694144372;F[a+88>>2]=1013904242;F[a+92>>2]=-1521486534;c=i+224|0;ra(a,c,64);ia(c,64);ra(a,i+16|0,32);ra(a,e,f);ra(a,i+15|0,1);a=F[i+108>>2];F[i+392>>2]=F[i+104>>2];F[i+396>>2]=a;a=F[i+100>>2];F[i+384>>2]=F[i+96>>2];F[i+388>>2]=a;a=F[i+92>>2];F[i+376>>2]=F[i+88>>2];F[i+380>>2]=a;a=F[i+84>>2];F[i+368>>2]=F[i+80>>2];F[i+372>>2]=a;a=F[i+76>>2];F[i+360>>2]=F[i+72>>2];F[i+364>>2]=a;a=F[b+4>>2];F[i+352>>2]=F[b>>2];F[i+356>>2]=a;a=F[i+60>>2];F[i+344>>2]=F[i+56>>2];F[i+348>>2]=a;a=F[i+52>>2];F[i+336>>2]=F[i+48>>2];F[i+340>>2]=a;c=0;while(1){a=i+336|0;b=a+c|0;D[b|0]=G[b|0]^92;b=a+(c|1)|0;D[b|0]=G[b|0]^92;b=a+(c|2)|0;D[b|0]=G[b|0]^92;a=a+(c|3)|0;D[a|0]=G[a|0]^92;c=c+4|0;if((c|0)!=64){continue}break}Ba(i+112|0,d);a=i+224|0;F[a+80>>2]=1779033703;F[a+84>>2]=-1150833019;F[a+72>>2]=0;F[a+76>>2]=0;F[a+64>>2]=0;F[a+104>>2]=528734635;F[a+108>>2]=1541459225;F[a+96>>2]=1359893119;F[a+100>>2]=-1694144372;F[a+88>>2]=1013904242;F[a+92>>2]=-1521486534;b=i+336|0;ra(a,b,96);Ba(a,i+16|0);ia(a,112);ia(b,96);h=h-32|0;if(h>>>0>32){continue}break}}a=i+16|0;ja(g,a,h);ia(i+112|0,112);ia(i+48|0,64);ia(a,32);_=i+432|0}function ua(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,H=0;A=_-640|0;_=A;c=a- -64|0;g=F[c>>2];j=F[c+4>>2];w=F[a+56>>2];e=F[a+60>>2];r=F[a+48>>2];m=F[a+52>>2];p=F[a+40>>2];f=F[a+44>>2];u=F[a+32>>2];k=F[a+36>>2];s=F[a+24>>2];i=F[a+28>>2];n=F[a+16>>2];v=F[a+20>>2];q=F[a+8>>2];o=F[a+12>>2];while(1){c=x<<3;y=c+A|0;c=b+c|0;d=G[c+4|0]|G[c+5|0]<<8|(G[c+6|0]<<16|G[c+7|0]<<24);h=G[c|0]|G[c+1|0]<<8|(G[c+2|0]<<16|G[c+3|0]<<24);z=h<<24|h<<8&16711680;F[y>>2]=((d&255)<<24|h>>>8)&-16777216|((d&16777215)<<8|h>>>24)&16711680|(d>>>8&65280|d>>>24);c=0;F[y+4>>2]=(d<<24|h>>>8)&65280|(d<<8|h>>>24)&255|z|(c|c);x=x+1|0;if((x|0)!=16){continue}break}b=16;h=F[A>>2];x=h;l=F[A+4>>2];d=l;while(1){z=d;y=(b<<3)+A|0;c=y-56|0;d=F[c>>2];B=F[c+4>>2];t=y-16|0;c=F[t+4>>2];t=F[t>>2];C=ve(t,c,45);E=$;D=x;H=d;x=ve(t,c,3)^C;d=c;c=c>>>6|0;x=x^((d&63)<<26|t>>>6);d=H+x|0;c=(c^($^E))+B|0;c=d>>>0>>0?c+1|0:c;x=d;d=D+d|0;c=c+z|0;t=d;z=d>>>0>>0?c+1|0:c;d=y-120|0;c=F[d+4>>2];x=F[d>>2];d=ve(x,c,63);B=$;D=d;d=c;C=((c&127)<<25|x>>>7)^(D^ve(x,c,56));t=C+t|0;c=($^B^c>>>7)+z|0;F[y>>2]=t;F[y+4>>2]=t>>>0>>0?c+1|0:c;b=b+1|0;if((b|0)!=80){continue}break}b=0;while(1){x=b<<3;c=x+2080|0;d=F[c>>2];y=F[c+4>>2];c=ve(p,f,50);z=$;c=ve(p,f,46)^c;z=$^z;t=d;d=g+(ve(p,f,23)^c)|0;c=j+($^z)|0;c=d>>>0>>0?c+1|0:c;g=d;d=t+d|0;c=c+y|0;c=d>>>0>>0?c+1|0:c;d=d+h|0;c=c+l|0;c=d>>>0>>0?c+1|0:c;g=w^p&(r^w);d=g+d|0;c=(e^f&(e^m))+c|0;c=d>>>0>>0?c+1|0:c;g=d;d=ve(q,o,36);j=$;d=ve(q,o,30)^d;h=$^j;y=ve(q,o,25)^d;j=y+g|0;d=c;c=c+($^h)|0;c=j>>>0>>0?c+1|0:c;h=s&(q|n)|q&n;j=h+j|0;c=(i&(o|v)|o&v)+c|0;z=j;c=h>>>0>j>>>0?c+1|0:c;j=ve(j,c,36);y=$;h=c;j=ve(z,c,30)^j;y=$^y;l=n&(q|z)|q&z;j=l+(ve(z,c,25)^j)|0;c=(v&(c|o)|c&o)+($^y)|0;y=j;j=j>>>0>>0?c+1|0:c;l=x|8;c=l+2080|0;t=F[c>>2];B=F[c+4>>2];c=d+k|0;g=g+u|0;c=g>>>0>>0?c+1|0:c;u=g;d=w+(r^g&(p^r))|0;g=c;c=e+(m^c&(f^m))|0;c=d>>>0>>0?c+1|0:c;w=d;d=d+t|0;c=c+B|0;c=d>>>0>>0?c+1|0:c;w=ve(u,g,50);e=$;w=ve(u,g,46)^w;e=$^e;w=ve(u,g,23)^w;d=w+d|0;c=($^e)+c|0;c=d>>>0>>0?c+1|0:c;w=l+A|0;e=F[w>>2];d=e+d|0;c=F[w+4>>2]+c|0;c=d>>>0>>0?c+1|0:c;e=y;y=d;w=d;d=e+d|0;e=j;j=c;c=e+c|0;c=d>>>0>>0?c+1|0:c;w=ve(d,c,36);e=$;l=w;w=c;k=l^ve(d,c,30);l=$^e;e=ve(d,c,25)^k;k=q&(d|z)|d&z;e=e+k|0;c=(o&(c|h)|c&h)+($^l)|0;l=e;e=e>>>0>>0?c+1|0:c;t=x|16;c=t+2080|0;k=r+F[c>>2]|0;c=m+F[c+4>>2]|0;c=k>>>0>>0?c+1|0:c;r=k;m=t+A|0;k=F[m>>2];r=r+k|0;c=F[m+4>>2]+c|0;m=r;r=k>>>0>m>>>0?c+1|0:c;t=m;c=j+i|0;m=s+y|0;c=m>>>0>>0?c+1|0:c;s=m;k=p^m&(p^u);m=t+k|0;j=c;c=(f^c&(f^g))+r|0;c=k>>>0>m>>>0?c+1|0:c;r=m;m=ve(s,j,50);k=$;m=ve(s,j,46)^m;k=$^k;m=ve(s,j,23)^m;r=m+r|0;c=($^k)+c|0;c=r>>>0>>0?c+1|0:c;y=r;m=r;r=m+l|0;l=e;e=c;c=l+c|0;c=r>>>0>>0?c+1|0:c;m=ve(r,c,36);k=$;l=m;m=c;i=l^ve(r,c,30);l=$^k;k=ve(r,c,25)^i;i=z&(d|r)|d&r;k=k+i|0;c=(h&(c|w)|c&w)+($^l)|0;l=k;k=k>>>0>>0?c+1|0:c;t=x|24;c=t+2080|0;i=p+F[c>>2]|0;c=f+F[c+4>>2]|0;c=i>>>0

    >>0?c+1|0:c;p=i;f=t+A|0;i=F[f>>2];p=p+i|0;c=F[f+4>>2]+c|0;f=p;p=i>>>0>f>>>0?c+1|0:c;t=f;c=e+v|0;f=n+y|0;c=f>>>0>>0?c+1|0:c;i=u^f&(u^s);e=t+i|0;n=c;c=(g^c&(g^j))+p|0;c=e>>>0>>0?c+1|0:c;p=e;e=ve(f,n,50);i=$;e=ve(f,n,46)^e;i=$^i;e=ve(f,n,23)^e;p=e+p|0;c=($^i)+c|0;c=e>>>0>p>>>0?c+1|0:c;v=p;i=p;p=i+l|0;e=c;c=c+k|0;c=i>>>0>p>>>0?c+1|0:c;k=ve(p,c,36);i=$;y=c;k=ve(p,c,30)^k;i=$^i;l=d&(p|r)|p&r;k=l+(ve(p,c,25)^k)|0;c=(w&(c|m)|c&m)+($^i)|0;c=k>>>0>>0?c+1|0:c;l=k;k=c;t=x|32;c=t+2080|0;i=u+F[c>>2]|0;c=g+F[c+4>>2]|0;c=i>>>0>>0?c+1|0:c;u=i;g=t+A|0;i=F[g>>2];u=u+i|0;c=F[g+4>>2]+c|0;g=u;u=i>>>0>g>>>0?c+1|0:c;i=g;c=e+o|0;g=q+v|0;c=g>>>0>>0?c+1|0:c;q=g;e=s^g&(f^s);g=i+e|0;o=c;c=(j^c&(j^n))+u|0;c=e>>>0>g>>>0?c+1|0:c;u=g;g=ve(q,o,50);e=$;g=ve(q,o,46)^g;e=$^e;g=ve(q,o,23)^g;u=g+u|0;c=($^e)+c|0;c=g>>>0>u>>>0?c+1|0:c;g=u;u=g+l|0;e=c;c=c+k|0;c=g>>>0>u>>>0?c+1|0:c;k=ve(u,c,36);i=$;l=k;k=c;v=l^ve(u,c,30);l=$^i;i=ve(u,c,25)^v;v=r&(p|u)|p&u;i=i+v|0;c=(m&(c|y)|c&y)+($^l)|0;l=i;i=i>>>0>>0?c+1|0:c;t=x|40;c=t+2080|0;v=s+F[c>>2]|0;c=j+F[c+4>>2]|0;c=s>>>0>v>>>0?c+1|0:c;s=v;j=t+A|0;v=F[j>>2];s=s+v|0;c=F[j+4>>2]+c|0;j=s;s=j>>>0>>0?c+1|0:c;v=j;c=e+h|0;j=g+z|0;c=j>>>0>>0?c+1|0:c;g=j;h=f^g&(f^q);e=v+h|0;j=c;c=(n^c&(n^o))+s|0;c=e>>>0>>0?c+1|0:c;s=e;e=ve(g,j,50);h=$;e=ve(g,j,46)^e;h=$^h;e=ve(g,j,23)^e;s=e+s|0;c=($^h)+c|0;c=e>>>0>s>>>0?c+1|0:c;z=s;h=s;s=h+l|0;e=c;c=c+i|0;c=h>>>0>s>>>0?c+1|0:c;h=ve(s,c,36);v=$;i=c;h=ve(s,c,30)^h;v=$^v;l=p&(u|s)|u&s;h=l+(ve(s,c,25)^h)|0;c=(y&(c|k)|c&k)+($^v)|0;c=h>>>0>>0?c+1|0:c;l=h;h=c;t=x|48;c=t+2080|0;v=f+F[c>>2]|0;c=n+F[c+4>>2]|0;c=f>>>0>v>>>0?c+1|0:c;f=v;n=t+A|0;v=F[n>>2];f=f+v|0;c=F[n+4>>2]+c|0;n=f;f=f>>>0>>0?c+1|0:c;v=n;c=e+w|0;n=d+z|0;c=n>>>0>>0?c+1|0:c;w=n;n=q^n&(g^q);d=v+n|0;e=c;c=(o^c&(j^o))+f|0;c=d>>>0>>0?c+1|0:c;f=ve(w,e,50);n=$;f=ve(w,e,46)^f;n=$^n;f=ve(w,e,23)^f;d=f+d|0;c=($^n)+c|0;c=d>>>0>>0?c+1|0:c;z=d;n=d;f=d+l|0;d=c;c=c+h|0;c=f>>>0>>0?c+1|0:c;n=f;f=ve(f,c,36);h=$;v=c;f=ve(n,c,30)^f;h=$^h;l=u&(s|n)|s&n;f=l+(ve(n,c,25)^f)|0;c=(k&(c|i)|c&i)+($^h)|0;c=f>>>0>>0?c+1|0:c;l=f;f=c;x=x|56;c=x+2080|0;h=q+F[c>>2]|0;c=o+F[c+4>>2]|0;c=h>>>0>>0?c+1|0:c;q=h;o=x+A|0;h=F[o>>2];q=q+h|0;c=F[o+4>>2]+c|0;o=q;q=h>>>0>o>>>0?c+1|0:c;h=o;c=d+m|0;o=r+z|0;c=o>>>0>>0?c+1|0:c;r=o;o=g^o&(g^w);d=h+o|0;m=c;c=(j^c&(e^j))+q|0;c=d>>>0>>0?c+1|0:c;q=ve(r,m,50);o=$;q=ve(r,m,46)^q;o=$^o;q=ve(r,m,23)^q;d=q+d|0;c=($^o)+c|0;c=d>>>0>>0?c+1|0:c;h=d;q=d+l|0;d=c;c=c+f|0;c=q>>>0>>0?c+1|0:c;o=c;c=d+y|0;f=h+p|0;c=f>>>0

    >>0?c+1|0:c;p=f;f=c;if(b>>>0<=71){b=b+8|0;c=(b<<3)+A|0;h=F[c>>2];l=F[c+4>>2];continue}break}c=F[a+12>>2]+o|0;d=F[a+8>>2];b=d+q|0;F[a+8>>2]=b;F[a+12>>2]=b>>>0>>0?c+1|0:c;c=F[a+20>>2]+v|0;d=F[a+16>>2];b=d+n|0;F[a+16>>2]=b;F[a+20>>2]=b>>>0>>0?c+1|0:c;c=F[a+28>>2]+i|0;d=F[a+24>>2];b=d+s|0;F[a+24>>2]=b;F[a+28>>2]=b>>>0>>0?c+1|0:c;c=F[a+36>>2]+k|0;d=F[a+32>>2];b=d+u|0;F[a+32>>2]=b;F[a+36>>2]=b>>>0>>0?c+1|0:c;c=F[a+44>>2]+f|0;d=F[a+40>>2];b=d+p|0;F[a+40>>2]=b;F[a+44>>2]=b>>>0>>0?c+1|0:c;c=F[a+52>>2]+m|0;d=F[a+48>>2];b=d+r|0;F[a+48>>2]=b;F[a+52>>2]=b>>>0>>0?c+1|0:c;c=F[a+60>>2]+e|0;d=F[a+56>>2];b=d+w|0;F[a+56>>2]=b;F[a+60>>2]=b>>>0>>0?c+1|0:c;c=F[a+68>>2]+j|0;d=F[a+64>>2];b=d+g|0;F[a+64>>2]=b;F[a+68>>2]=b>>>0>>0?c+1|0:c;_=A+640|0}function cc(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=Pb(a,c);m=q+2|0;i=(m>>>0)/3|0;if(((m-L(i,3)|0)+(i<<2)|0)-2>>>0>g>>>0){F[a+3216>>2]=2;return-1}g=q+2|0;m=(g>>>0)/3|0;n=((((g-L(m,3)|0)+(m<<2)|0)-2|0)+f|0)-q|0;p=_-16|0;_=p;g=ob(a,c);if(!G[a+3220|0]){g=yb(g)}a:{b:{if(g>>>0>q>>>0){F[a+3216>>2]=2;break b}m=ob(a,c);g=b;if(!G[a+3220|0]){D[n+1|0]=10;D[n|0]=3;b=n+2|0;D[b|0]=32;b=b+1|0;F[p+8>>2]=b;b=b+32|0;D[b|0]=18;b=b+1|0;D[b|0]=32;b=b+1|0;F[p+4>>2]=b;b=b+32|0;D[b|0]=26;b=b+1|0;D[b|0]=32;b=b+1|0;F[p>>2]=b;b=b+32|0;D[b|0]=34;n=b+1|0;b=m;if(b>>>0>=128){while(1){D[n|0]=b|128;n=n+1|0;i=b>>>0>16383;b=b>>>7|0;if(i){continue}break}}D[n|0]=b;F[p+12>>2]=n+1;i=G[a+3289|0]|G[a+3290|0]<<8|(G[a+3291|0]<<16|G[a+3292|0]<<24);h=F[p+8>>2];b=G[a+3285|0]|G[a+3286|0]<<8|(G[a+3287|0]<<16|G[a+3288|0]<<24);D[h|0]=b;D[h+1|0]=b>>>8;D[h+2|0]=b>>>16;D[h+3|0]=b>>>24;D[h+4|0]=i;D[h+5|0]=i>>>8;D[h+6|0]=i>>>16;D[h+7|0]=i>>>24;b=a+3309|0;i=G[b+4|0]|G[b+5|0]<<8|(G[b+6|0]<<16|G[b+7|0]<<24);b=G[b|0]|G[b+1|0]<<8|(G[b+2|0]<<16|G[b+3|0]<<24);D[h+24|0]=b;D[h+25|0]=b>>>8;D[h+26|0]=b>>>16;D[h+27|0]=b>>>24;D[h+28|0]=i;D[h+29|0]=i>>>8;D[h+30|0]=i>>>16;D[h+31|0]=i>>>24;b=a+3301|0;i=G[b+4|0]|G[b+5|0]<<8|(G[b+6|0]<<16|G[b+7|0]<<24);b=G[b|0]|G[b+1|0]<<8|(G[b+2|0]<<16|G[b+3|0]<<24);D[h+16|0]=b;D[h+17|0]=b>>>8;D[h+18|0]=b>>>16;D[h+19|0]=b>>>24;D[h+20|0]=i;D[h+21|0]=i>>>8;D[h+22|0]=i>>>16;D[h+23|0]=i>>>24;b=a+3293|0;i=G[b+4|0]|G[b+5|0]<<8|(G[b+6|0]<<16|G[b+7|0]<<24);b=G[b|0]|G[b+1|0]<<8|(G[b+2|0]<<16|G[b+3|0]<<24);D[h+8|0]=b;D[h+9|0]=b>>>8;D[h+10|0]=b>>>16;D[h+11|0]=b>>>24;D[h+12|0]=i;D[h+13|0]=i>>>8;D[h+14|0]=i>>>16;D[h+15|0]=i>>>24;i=G[a+3225|0]|G[a+3226|0]<<8|(G[a+3227|0]<<16|G[a+3228|0]<<24);h=F[p>>2];b=G[a+3221|0]|G[a+3222|0]<<8|(G[a+3223|0]<<16|G[a+3224|0]<<24);D[h|0]=b;D[h+1|0]=b>>>8;D[h+2|0]=b>>>16;D[h+3|0]=b>>>24;D[h+4|0]=i;D[h+5|0]=i>>>8;D[h+6|0]=i>>>16;D[h+7|0]=i>>>24;b=a+3229|0;i=G[b+4|0]|G[b+5|0]<<8|(G[b+6|0]<<16|G[b+7|0]<<24);b=G[b|0]|G[b+1|0]<<8|(G[b+2|0]<<16|G[b+3|0]<<24);D[h+8|0]=b;D[h+9|0]=b>>>8;D[h+10|0]=b>>>16;D[h+11|0]=b>>>24;D[h+12|0]=i;D[h+13|0]=i>>>8;D[h+14|0]=i>>>16;D[h+15|0]=i>>>24;b=a+3237|0;i=G[b+4|0]|G[b+5|0]<<8|(G[b+6|0]<<16|G[b+7|0]<<24);b=G[b|0]|G[b+1|0]<<8|(G[b+2|0]<<16|G[b+3|0]<<24);D[h+16|0]=b;D[h+17|0]=b>>>8;D[h+18|0]=b>>>16;D[h+19|0]=b>>>24;D[h+20|0]=i;D[h+21|0]=i>>>8;D[h+22|0]=i>>>16;D[h+23|0]=i>>>24;b=a+3245|0;i=G[b+4|0]|G[b+5|0]<<8|(G[b+6|0]<<16|G[b+7|0]<<24);b=G[b|0]|G[b+1|0]<<8|(G[b+2|0]<<16|G[b+3|0]<<24);D[h+24|0]=b;D[h+25|0]=b>>>8;D[h+26|0]=b>>>16;D[h+27|0]=b>>>24;D[h+28|0]=i;D[h+29|0]=i>>>8;D[h+30|0]=i>>>16;D[h+31|0]=i>>>24;i=G[a+3257|0]|G[a+3258|0]<<8|(G[a+3259|0]<<16|G[a+3260|0]<<24);h=F[p+4>>2];b=G[a+3253|0]|G[a+3254|0]<<8|(G[a+3255|0]<<16|G[a+3256|0]<<24);D[h|0]=b;D[h+1|0]=b>>>8;D[h+2|0]=b>>>16;D[h+3|0]=b>>>24;D[h+4|0]=i;D[h+5|0]=i>>>8;D[h+6|0]=i>>>16;D[h+7|0]=i>>>24;b=a+3261|0;i=G[b+4|0]|G[b+5|0]<<8|(G[b+6|0]<<16|G[b+7|0]<<24);b=G[b|0]|G[b+1|0]<<8|(G[b+2|0]<<16|G[b+3|0]<<24);D[h+8|0]=b;D[h+9|0]=b>>>8;D[h+10|0]=b>>>16;D[h+11|0]=b>>>24;D[h+12|0]=i;D[h+13|0]=i>>>8;D[h+14|0]=i>>>16;D[h+15|0]=i>>>24;b=a+3269|0;i=G[b+4|0]|G[b+5|0]<<8|(G[b+6|0]<<16|G[b+7|0]<<24);b=G[b|0]|G[b+1|0]<<8|(G[b+2|0]<<16|G[b+3|0]<<24);D[h+16|0]=b;D[h+17|0]=b>>>8;D[h+18|0]=b>>>16;D[h+19|0]=b>>>24;D[h+20|0]=i;D[h+21|0]=i>>>8;D[h+22|0]=i>>>16;D[h+23|0]=i>>>24;b=a+3277|0;i=G[b+4|0]|G[b+5|0]<<8|(G[b+6|0]<<16|G[b+7|0]<<24);b=G[b|0]|G[b+1|0]<<8|(G[b+2|0]<<16|G[b+3|0]<<24);D[h+24|0]=b;D[h+25|0]=b>>>8;D[h+26|0]=b>>>16;D[h+27|0]=b>>>24;D[h+28|0]=i;D[h+29|0]=i>>>8;D[h+30|0]=i>>>16;D[h+31|0]=i>>>24;n=F[p+12>>2]}l=_-96|0;_=l;h=a+48|0;i=(h|0)==F[a+44>>2]?0:F[a+112>>2];b=F[a+4>>2];j=aa[F[F[b>>2]+4>>2]](b,c)|0;b=F[a+4>>2];i=zb(i,j,aa[F[F[b>>2]>>2]](b)|0);b=F[a+44>>2];c:{if(((b|0)==(h|0))<<5>>>0>e>>>0){F[a+8>>2]=1;i=-1;break c}if(i>>>0>m>>>0){F[a+8>>2]=2;i=-1;break c}if((b|0)==(h|0)){F[a+44>>2]=a+148;Fa(d,h);b=F[a>>2];m=l- -64|0;za(h,a+152|0,m);Aa(m,32,a+12|0,32,F[b+8>>2],F[b+12>>2],l,64);b=F[l+28>>2];F[a+36>>2]=F[l+24>>2];F[a+40>>2]=b;b=F[l+20>>2];F[a+28>>2]=F[l+16>>2];F[a+32>>2]=b;b=F[l+12>>2];F[a+20>>2]=F[l+8>>2];F[a+24>>2]=b;b=F[l+4>>2];F[a+12>>2]=F[l>>2];F[a+16>>2]=b;b=F[l+36>>2];F[a+116>>2]=F[l+32>>2];F[a+120>>2]=b;b=F[l+44>>2];F[a+124>>2]=F[l+40>>2];F[a+128>>2]=b;b=F[l+52>>2];F[a+132>>2]=F[l+48>>2];F[a+136>>2]=b;b=F[l+60>>2];F[a+140>>2]=F[l+56>>2];F[a+144>>2]=b;F[a+112>>2]=0;ia(l,64);ia(m,32)}b=a+116|0;s=l|4;ka(b,32,1868,1,s);F[l>>2]=F[a+112>>2];ka(b,32,1869,1,b);F[a+112>>2]=F[a+112>>2]+1;b=F[a+4>>2];m=aa[F[F[b>>2]+4>>2]](b,c)|0;o=F[l>>2];b=m;D[n+1|0]=10;D[n|0]=3;k=n+2|0;D[k|0]=32;j=l- -64|0;k=k+1|0;F[j>>2]=k;k=k+32|0;D[k|0]=16;r=k+1|0;if(o>>>0>=128){while(1){D[r|0]=o|128;r=r+1|0;k=o>>>0>16383;o=o>>>7|0;if(k){continue}break}}D[r+1|0]=34;D[r|0]=o;o=r+2|0;if(b>>>0>=128){while(1){D[o|0]=b|128;o=o+1|0;k=b>>>0>16383;b=b>>>7|0;if(k){continue}break}}D[o|0]=b;F[j+4>>2]=o+1;k=G[h+4|0]|G[h+5|0]<<8|(G[h+6|0]<<16|G[h+7|0]<<24);j=F[l+64>>2];b=G[h|0]|G[h+1|0]<<8|(G[h+2|0]<<16|G[h+3|0]<<24);D[j|0]=b;D[j+1|0]=b>>>8;D[j+2|0]=b>>>16;D[j+3|0]=b>>>24;D[j+4|0]=k;D[j+5|0]=k>>>8;D[j+6|0]=k>>>16;D[j+7|0]=k>>>24;k=G[h+28|0]|G[h+29|0]<<8|(G[h+30|0]<<16|G[h+31|0]<<24);b=G[h+24|0]|G[h+25|0]<<8|(G[h+26|0]<<16|G[h+27|0]<<24);D[j+24|0]=b;D[j+25|0]=b>>>8;D[j+26|0]=b>>>16;D[j+27|0]=b>>>24;D[j+28|0]=k;D[j+29|0]=k>>>8;D[j+30|0]=k>>>16;D[j+31|0]=k>>>24;k=G[h+20|0]|G[h+21|0]<<8|(G[h+22|0]<<16|G[h+23|0]<<24);b=G[h+16|0]|G[h+17|0]<<8|(G[h+18|0]<<16|G[h+19|0]<<24);D[j+16|0]=b;D[j+17|0]=b>>>8;D[j+18|0]=b>>>16;D[j+19|0]=b>>>24;D[j+20|0]=k;D[j+21|0]=k>>>8;D[j+22|0]=k>>>16;D[j+23|0]=k>>>24;k=G[h+12|0]|G[h+13|0]<<8|(G[h+14|0]<<16|G[h+15|0]<<24);b=G[h+8|0]|G[h+9|0]<<8|(G[h+10|0]<<16|G[h+11|0]<<24);D[j+8|0]=b;D[j+9|0]=b>>>8;D[j+10|0]=b>>>16;D[j+11|0]=b>>>24;D[j+12|0]=k;D[j+13|0]=k>>>8;D[j+14|0]=k>>>16;D[j+15|0]=k>>>24;b=F[a+4>>2];aa[F[F[b>>2]+8>>2]](b,s,32,g,c,F[l+68>>2],m,n,i)|0;ia(l,36)}_=l+96|0;b=i;if((b|0)!=-1){break a}F[a+3216>>2]=F[a+8>>2];F[a+8>>2]=0}b=-1}_=p+16|0;ia(d,e);a=-1;if((b|0)!=-1){a=q+2|0;b=(a>>>0)/3|0;a=((a-L(b,3)|0)+(b<<2)|0)-2|0;ma((f+a|0)-q|0,q,f)}return a|0}function Rb(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0;g=_-208|0;_=g;ab(g+168|0,d,e);f=F[g+172>>2];d=(f|c)!=0;a:{b:{c:{if(f){if(!d){break c}d=F[g+176>>2]==32}if(!d){break c}j=F[g+196>>2];if(!j){break c}e=F[g+180>>2];if(!e|F[g+184>>2]!=32){break c}d=F[g+188>>2];if(!d){break c}if(F[g+192>>2]==32){break b}}F[a+3216>>2]=4;a=-1;break a}d:{if(!c|!f){break d}if(!Ma(c,f)){break d}F[a+3216>>2]=6;a=-1;break a}h=G[f+4|0]|G[f+5|0]<<8|(G[f+6|0]<<16|G[f+7|0]<<24);c=G[f|0]|G[f+1|0]<<8|(G[f+2|0]<<16|G[f+3|0]<<24);D[a+3221|0]=c;D[a+3222|0]=c>>>8;D[a+3223|0]=c>>>16;D[a+3224|0]=c>>>24;D[a+3225|0]=h;D[a+3226|0]=h>>>8;D[a+3227|0]=h>>>16;D[a+3228|0]=h>>>24;h=G[f+28|0]|G[f+29|0]<<8|(G[f+30|0]<<16|G[f+31|0]<<24);i=a+3245|0;c=G[f+24|0]|G[f+25|0]<<8|(G[f+26|0]<<16|G[f+27|0]<<24);D[i|0]=c;D[i+1|0]=c>>>8;D[i+2|0]=c>>>16;D[i+3|0]=c>>>24;D[i+4|0]=h;D[i+5|0]=h>>>8;D[i+6|0]=h>>>16;D[i+7|0]=h>>>24;h=G[f+20|0]|G[f+21|0]<<8|(G[f+22|0]<<16|G[f+23|0]<<24);i=a+3237|0;c=G[f+16|0]|G[f+17|0]<<8|(G[f+18|0]<<16|G[f+19|0]<<24);D[i|0]=c;D[i+1|0]=c>>>8;D[i+2|0]=c>>>16;D[i+3|0]=c>>>24;D[i+4|0]=h;D[i+5|0]=h>>>8;D[i+6|0]=h>>>16;D[i+7|0]=h>>>24;h=G[f+12|0]|G[f+13|0]<<8|(G[f+14|0]<<16|G[f+15|0]<<24);i=a+3229|0;c=G[f+8|0]|G[f+9|0]<<8|(G[f+10|0]<<16|G[f+11|0]<<24);D[i|0]=c;D[i+1|0]=c>>>8;D[i+2|0]=c>>>16;D[i+3|0]=c>>>24;D[i+4|0]=h;D[i+5|0]=h>>>8;D[i+6|0]=h>>>16;D[i+7|0]=h>>>24;f=G[e+28|0]|G[e+29|0]<<8|(G[e+30|0]<<16|G[e+31|0]<<24);h=a+3277|0;c=G[e+24|0]|G[e+25|0]<<8|(G[e+26|0]<<16|G[e+27|0]<<24);D[h|0]=c;D[h+1|0]=c>>>8;D[h+2|0]=c>>>16;D[h+3|0]=c>>>24;D[h+4|0]=f;D[h+5|0]=f>>>8;D[h+6|0]=f>>>16;D[h+7|0]=f>>>24;f=G[e+20|0]|G[e+21|0]<<8|(G[e+22|0]<<16|G[e+23|0]<<24);h=a+3269|0;c=G[e+16|0]|G[e+17|0]<<8|(G[e+18|0]<<16|G[e+19|0]<<24);D[h|0]=c;D[h+1|0]=c>>>8;D[h+2|0]=c>>>16;D[h+3|0]=c>>>24;D[h+4|0]=f;D[h+5|0]=f>>>8;D[h+6|0]=f>>>16;D[h+7|0]=f>>>24;f=G[e+12|0]|G[e+13|0]<<8|(G[e+14|0]<<16|G[e+15|0]<<24);h=a+3261|0;c=G[e+8|0]|G[e+9|0]<<8|(G[e+10|0]<<16|G[e+11|0]<<24);D[h|0]=c;D[h+1|0]=c>>>8;D[h+2|0]=c>>>16;D[h+3|0]=c>>>24;D[h+4|0]=f;D[h+5|0]=f>>>8;D[h+6|0]=f>>>16;D[h+7|0]=f>>>24;f=G[e+4|0]|G[e+5|0]<<8|(G[e+6|0]<<16|G[e+7|0]<<24);c=G[e|0]|G[e+1|0]<<8|(G[e+2|0]<<16|G[e+3|0]<<24);D[a+3253|0]=c;D[a+3254|0]=c>>>8;D[a+3255|0]=c>>>16;D[a+3256|0]=c>>>24;D[a+3257|0]=f;D[a+3258|0]=f>>>8;D[a+3259|0]=f>>>16;D[a+3260|0]=f>>>24;e=G[d+28|0]|G[d+29|0]<<8|(G[d+30|0]<<16|G[d+31|0]<<24);f=a+3309|0;c=G[d+24|0]|G[d+25|0]<<8|(G[d+26|0]<<16|G[d+27|0]<<24);D[f|0]=c;D[f+1|0]=c>>>8;D[f+2|0]=c>>>16;D[f+3|0]=c>>>24;D[f+4|0]=e;D[f+5|0]=e>>>8;D[f+6|0]=e>>>16;D[f+7|0]=e>>>24;e=G[d+20|0]|G[d+21|0]<<8|(G[d+22|0]<<16|G[d+23|0]<<24);f=a+3301|0;c=G[d+16|0]|G[d+17|0]<<8|(G[d+18|0]<<16|G[d+19|0]<<24);D[f|0]=c;D[f+1|0]=c>>>8;D[f+2|0]=c>>>16;D[f+3|0]=c>>>24;D[f+4|0]=e;D[f+5|0]=e>>>8;D[f+6|0]=e>>>16;D[f+7|0]=e>>>24;e=G[d+12|0]|G[d+13|0]<<8|(G[d+14|0]<<16|G[d+15|0]<<24);f=a+3293|0;c=G[d+8|0]|G[d+9|0]<<8|(G[d+10|0]<<16|G[d+11|0]<<24);D[f|0]=c;D[f+1|0]=c>>>8;D[f+2|0]=c>>>16;D[f+3|0]=c>>>24;D[f+4|0]=e;D[f+5|0]=e>>>8;D[f+6|0]=e>>>16;D[f+7|0]=e>>>24;e=G[d+4|0]|G[d+5|0]<<8|(G[d+6|0]<<16|G[d+7|0]<<24);c=G[d|0]|G[d+1|0]<<8|(G[d+2|0]<<16|G[d+3|0]<<24);D[a+3285|0]=c;D[a+3286|0]=c>>>8;D[a+3287|0]=c>>>16;D[a+3288|0]=c>>>24;D[a+3289|0]=e;D[a+3290|0]=e>>>8;D[a+3291|0]=e>>>16;D[a+3292|0]=e>>>24;c=F[a+4>>2];fb(g+136|0,j,F[g+200>>2],aa[F[F[c>>2]>>2]](c)|0);c=F[g+152>>2];if(!(F[g+156>>2]==32?c:0)){F[a+3216>>2]=4;a=-1;break a}d=G[c+28|0]|G[c+29|0]<<8|(G[c+30|0]<<16|G[c+31|0]<<24);F[g+128>>2]=G[c+24|0]|G[c+25|0]<<8|(G[c+26|0]<<16|G[c+27|0]<<24);F[g+132>>2]=d;d=G[c+20|0]|G[c+21|0]<<8|(G[c+22|0]<<16|G[c+23|0]<<24);F[g+120>>2]=G[c+16|0]|G[c+17|0]<<8|(G[c+18|0]<<16|G[c+19|0]<<24);F[g+124>>2]=d;d=G[c+12|0]|G[c+13|0]<<8|(G[c+14|0]<<16|G[c+15|0]<<24);F[g+112>>2]=G[c+8|0]|G[c+9|0]<<8|(G[c+10|0]<<16|G[c+11|0]<<24);F[g+116>>2]=d;d=G[c+4|0]|G[c+5|0]<<8|(G[c+6|0]<<16|G[c+7|0]<<24);F[g+104>>2]=G[c|0]|G[c+1|0]<<8|(G[c+2|0]<<16|G[c+3|0]<<24);F[g+108>>2]=d;e=a+3285|0;c=b+164|0;d=F[b+160>>2];e:{f:{if((c|0)!=(d|0)){while(1){if(Ka(c+5|0,e,32)){break f}c=c+72|0;if((d|0)!=(c|0)){continue}break}}c=0;if(!G[b+7364|0]){break f}d=b+7368|0;if(Ka(b+7373|0,e,32)){break e}if(G[b+7364|0]<2){break f}c=Ka(b+7445|0,e,32)?b+7440|0:0}d=c}if(!d){F[a+3216>>2]=6;a=-1;break a}c=d+5|0;za(c,a+3221|0,g);d=b+96|0;b=a+3253|0;za(d,b,g+32|0);za(c,b,g- -64|0);e=_+-64|0;_=e;b=F[a>>2];Aa(g,96,0,0,F[b>>2],F[b+4>>2],e,64);d=a+152|0;c=F[a+148>>2];g:{if((c|0)!=(a+492|0)){c=c+68|0;F[a+148>>2]=c;b=d;break g}b=(((c|0)==(d|0)?-68:0)+a|0)+152|0}c=c-68|0;if((b|0)!=(c|0)){while(1){f=c;c=c-68|0;ja(f,c,68);if((b|0)!=(c|0)){continue}break}}F[a+184>>2]=0;b=F[e+28>>2];F[a+36>>2]=F[e+24>>2];F[a+40>>2]=b;b=F[e+20>>2];F[a+28>>2]=F[e+16>>2];F[a+32>>2]=b;b=F[e+12>>2];F[a+20>>2]=F[e+8>>2];F[a+24>>2]=b;b=F[e+4>>2];F[a+12>>2]=F[e>>2];F[a+16>>2]=b;b=F[e+60>>2];F[a+212>>2]=F[e+56>>2];F[a+216>>2]=b;b=F[e+52>>2];F[a+204>>2]=F[e+48>>2];F[a+208>>2]=b;b=F[e+44>>2];F[a+196>>2]=F[e+40>>2];F[a+200>>2]=b;b=F[e+36>>2];F[a+188>>2]=F[e+32>>2];F[a+192>>2]=b;b=G[g+124|0]|G[g+125|0]<<8|(G[g+126|0]<<16|G[g+127|0]<<24);a=G[g+120|0]|G[g+121|0]<<8|(G[g+122|0]<<16|G[g+123|0]<<24);D[d+16|0]=a;D[d+17|0]=a>>>8;D[d+18|0]=a>>>16;D[d+19|0]=a>>>24;D[d+20|0]=b;D[d+21|0]=b>>>8;D[d+22|0]=b>>>16;D[d+23|0]=b>>>24;b=G[g+116|0]|G[g+117|0]<<8|(G[g+118|0]<<16|G[g+119|0]<<24);a=G[g+112|0]|G[g+113|0]<<8|(G[g+114|0]<<16|G[g+115|0]<<24);D[d+8|0]=a;D[d+9|0]=a>>>8;D[d+10|0]=a>>>16;D[d+11|0]=a>>>24;D[d+12|0]=b;D[d+13|0]=b>>>8;D[d+14|0]=b>>>16;D[d+15|0]=b>>>24;b=G[g+108|0]|G[g+109|0]<<8|(G[g+110|0]<<16|G[g+111|0]<<24);a=G[g+104|0]|G[g+105|0]<<8|(G[g+106|0]<<16|G[g+107|0]<<24);D[d|0]=a;D[d+1|0]=a>>>8;D[d+2|0]=a>>>16;D[d+3|0]=a>>>24;D[d+4|0]=b;D[d+5|0]=b>>>8;D[d+6|0]=b>>>16;D[d+7|0]=b>>>24;b=G[g+132|0]|G[g+133|0]<<8|(G[g+134|0]<<16|G[g+135|0]<<24);a=G[g+128|0]|G[g+129|0]<<8|(G[g+130|0]<<16|G[g+131|0]<<24);D[d+24|0]=a;D[d+25|0]=a>>>8;D[d+26|0]=a>>>16;D[d+27|0]=a>>>24;D[d+28|0]=b;D[d+29|0]=b>>>8;D[d+30|0]=b>>>16;D[d+31|0]=b>>>24;ia(e,64);_=e- -64|0;ia(g,96);a=0}_=g+208|0;return a}function mc(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;j=_+-64|0;_=j;a:{b:{if((oa(d)|0)==32){if((oa(f)|0)==32){break b}}F[a+3216>>2]=7;d=-1;break a}i=d;d=j+32|0;sa(c,i,d);sa(e,f,j);k=_-224|0;_=k;c:{if(h>>>0<=63){F[a+3216>>2]=1;d=-1;break c}l=k+160|0;Fa(g,l);c=k+96|0;Fa(g+32|0,c);D[a+3220|0]=0;f=G[b+124|0]|G[b+125|0]<<8|(G[b+126|0]<<16|G[b+127|0]<<24);i=a+3245|0;e=G[b+120|0]|G[b+121|0]<<8|(G[b+122|0]<<16|G[b+123|0]<<24);D[i|0]=e;D[i+1|0]=e>>>8;D[i+2|0]=e>>>16;D[i+3|0]=e>>>24;D[i+4|0]=f;D[i+5|0]=f>>>8;D[i+6|0]=f>>>16;D[i+7|0]=f>>>24;f=G[b+116|0]|G[b+117|0]<<8|(G[b+118|0]<<16|G[b+119|0]<<24);i=a+3237|0;e=G[b+112|0]|G[b+113|0]<<8|(G[b+114|0]<<16|G[b+115|0]<<24);D[i|0]=e;D[i+1|0]=e>>>8;D[i+2|0]=e>>>16;D[i+3|0]=e>>>24;D[i+4|0]=f;D[i+5|0]=f>>>8;D[i+6|0]=f>>>16;D[i+7|0]=f>>>24;f=G[b+108|0]|G[b+109|0]<<8|(G[b+110|0]<<16|G[b+111|0]<<24);i=a+3229|0;e=G[b+104|0]|G[b+105|0]<<8|(G[b+106|0]<<16|G[b+107|0]<<24);D[i|0]=e;D[i+1|0]=e>>>8;D[i+2|0]=e>>>16;D[i+3|0]=e>>>24;D[i+4|0]=f;D[i+5|0]=f>>>8;D[i+6|0]=f>>>16;D[i+7|0]=f>>>24;f=G[b+100|0]|G[b+101|0]<<8|(G[b+102|0]<<16|G[b+103|0]<<24);e=G[b+96|0]|G[b+97|0]<<8|(G[b+98|0]<<16|G[b+99|0]<<24);D[a+3221|0]=e;D[a+3222|0]=e>>>8;D[a+3223|0]=e>>>16;D[a+3224|0]=e>>>24;D[a+3225|0]=f;D[a+3226|0]=f>>>8;D[a+3227|0]=f>>>16;D[a+3228|0]=f>>>24;f=F[k+164>>2];e=F[k+160>>2];D[a+3253|0]=e;D[a+3254|0]=e>>>8;D[a+3255|0]=e>>>16;D[a+3256|0]=e>>>24;D[a+3257|0]=f;D[a+3258|0]=f>>>8;D[a+3259|0]=f>>>16;D[a+3260|0]=f>>>24;f=F[k+172>>2];i=a+3261|0;e=F[k+168>>2];D[i|0]=e;D[i+1|0]=e>>>8;D[i+2|0]=e>>>16;D[i+3|0]=e>>>24;D[i+4|0]=f;D[i+5|0]=f>>>8;D[i+6|0]=f>>>16;D[i+7|0]=f>>>24;f=F[k+180>>2];i=a+3269|0;e=F[k+176>>2];D[i|0]=e;D[i+1|0]=e>>>8;D[i+2|0]=e>>>16;D[i+3|0]=e>>>24;D[i+4|0]=f;D[i+5|0]=f>>>8;D[i+6|0]=f>>>16;D[i+7|0]=f>>>24;f=F[k+188>>2];i=a+3277|0;e=F[k+184>>2];D[i|0]=e;D[i+1|0]=e>>>8;D[i+2|0]=e>>>16;D[i+3|0]=e>>>24;D[i+4|0]=f;D[i+5|0]=f>>>8;D[i+6|0]=f>>>16;D[i+7|0]=f>>>24;f=G[j+4|0]|G[j+5|0]<<8|(G[j+6|0]<<16|G[j+7|0]<<24);e=G[j|0]|G[j+1|0]<<8|(G[j+2|0]<<16|G[j+3|0]<<24);D[a+3285|0]=e;D[a+3286|0]=e>>>8;D[a+3287|0]=e>>>16;D[a+3288|0]=e>>>24;D[a+3289|0]=f;D[a+3290|0]=f>>>8;D[a+3291|0]=f>>>16;D[a+3292|0]=f>>>24;f=G[j+12|0]|G[j+13|0]<<8|(G[j+14|0]<<16|G[j+15|0]<<24);i=a+3293|0;e=G[j+8|0]|G[j+9|0]<<8|(G[j+10|0]<<16|G[j+11|0]<<24);D[i|0]=e;D[i+1|0]=e>>>8;D[i+2|0]=e>>>16;D[i+3|0]=e>>>24;D[i+4|0]=f;D[i+5|0]=f>>>8;D[i+6|0]=f>>>16;D[i+7|0]=f>>>24;f=G[j+20|0]|G[j+21|0]<<8|(G[j+22|0]<<16|G[j+23|0]<<24);i=a+3301|0;e=G[j+16|0]|G[j+17|0]<<8|(G[j+18|0]<<16|G[j+19|0]<<24);D[i|0]=e;D[i+1|0]=e>>>8;D[i+2|0]=e>>>16;D[i+3|0]=e>>>24;D[i+4|0]=f;D[i+5|0]=f>>>8;D[i+6|0]=f>>>16;D[i+7|0]=f>>>24;f=G[j+28|0]|G[j+29|0]<<8|(G[j+30|0]<<16|G[j+31|0]<<24);i=a+3309|0;e=G[j+24|0]|G[j+25|0]<<8|(G[j+26|0]<<16|G[j+27|0]<<24);D[i|0]=e;D[i+1|0]=e>>>8;D[i+2|0]=e>>>16;D[i+3|0]=e>>>24;D[i+4|0]=f;D[i+5|0]=f>>>8;D[i+6|0]=f>>>16;D[i+7|0]=f>>>24;za(b+96|0,j,k);za(l,d,k+32|0);za(l,j,k- -64|0);e=_+-64|0;_=e;b=F[a>>2];Aa(k,96,0,0,F[b>>2],F[b+4>>2],e,64);f=a+48|0;d=F[a+44>>2];d:{if((d|0)!=(a+148|0)){d=d+100|0;F[a+44>>2]=d;b=f;break d}b=(((d|0)==(f|0)?-100:0)+a|0)+48|0}d=d-100|0;if((b|0)!=(d|0)){while(1){i=d;d=d-100|0;ja(i,d,100);if((b|0)!=(d|0)){continue}break}}F[a+112>>2]=0;b=F[e+28>>2];F[a+36>>2]=F[e+24>>2];F[a+40>>2]=b;b=F[e+20>>2];F[a+28>>2]=F[e+16>>2];F[a+32>>2]=b;b=F[e+12>>2];F[a+20>>2]=F[e+8>>2];F[a+24>>2]=b;b=F[e+4>>2];F[a+12>>2]=F[e>>2];F[a+16>>2]=b;b=F[e+60>>2];F[a+140>>2]=F[e+56>>2];F[a+144>>2]=b;b=F[e+52>>2];F[a+132>>2]=F[e+48>>2];F[a+136>>2]=b;b=F[e+44>>2];F[a+124>>2]=F[e+40>>2];F[a+128>>2]=b;b=F[e+36>>2];F[a+116>>2]=F[e+32>>2];F[a+120>>2]=b;b=G[c+52|0]|G[c+53|0]<<8|(G[c+54|0]<<16|G[c+55|0]<<24);a=G[c+48|0]|G[c+49|0]<<8|(G[c+50|0]<<16|G[c+51|0]<<24);D[f+48|0]=a;D[f+49|0]=a>>>8;D[f+50|0]=a>>>16;D[f+51|0]=a>>>24;D[f+52|0]=b;D[f+53|0]=b>>>8;D[f+54|0]=b>>>16;D[f+55|0]=b>>>24;b=G[c+44|0]|G[c+45|0]<<8|(G[c+46|0]<<16|G[c+47|0]<<24);a=G[c+40|0]|G[c+41|0]<<8|(G[c+42|0]<<16|G[c+43|0]<<24);D[f+40|0]=a;D[f+41|0]=a>>>8;D[f+42|0]=a>>>16;D[f+43|0]=a>>>24;D[f+44|0]=b;D[f+45|0]=b>>>8;D[f+46|0]=b>>>16;D[f+47|0]=b>>>24;b=G[c+36|0]|G[c+37|0]<<8|(G[c+38|0]<<16|G[c+39|0]<<24);a=G[c+32|0]|G[c+33|0]<<8|(G[c+34|0]<<16|G[c+35|0]<<24);D[f+32|0]=a;D[f+33|0]=a>>>8;D[f+34|0]=a>>>16;D[f+35|0]=a>>>24;D[f+36|0]=b;D[f+37|0]=b>>>8;D[f+38|0]=b>>>16;D[f+39|0]=b>>>24;b=G[c+28|0]|G[c+29|0]<<8|(G[c+30|0]<<16|G[c+31|0]<<24);a=G[c+24|0]|G[c+25|0]<<8|(G[c+26|0]<<16|G[c+27|0]<<24);D[f+24|0]=a;D[f+25|0]=a>>>8;D[f+26|0]=a>>>16;D[f+27|0]=a>>>24;D[f+28|0]=b;D[f+29|0]=b>>>8;D[f+30|0]=b>>>16;D[f+31|0]=b>>>24;b=G[c+20|0]|G[c+21|0]<<8|(G[c+22|0]<<16|G[c+23|0]<<24);a=G[c+16|0]|G[c+17|0]<<8|(G[c+18|0]<<16|G[c+19|0]<<24);D[f+16|0]=a;D[f+17|0]=a>>>8;D[f+18|0]=a>>>16;D[f+19|0]=a>>>24;D[f+20|0]=b;D[f+21|0]=b>>>8;D[f+22|0]=b>>>16;D[f+23|0]=b>>>24;b=G[c+12|0]|G[c+13|0]<<8|(G[c+14|0]<<16|G[c+15|0]<<24);a=G[c+8|0]|G[c+9|0]<<8|(G[c+10|0]<<16|G[c+11|0]<<24);D[f+8|0]=a;D[f+9|0]=a>>>8;D[f+10|0]=a>>>16;D[f+11|0]=a>>>24;D[f+12|0]=b;D[f+13|0]=b>>>8;D[f+14|0]=b>>>16;D[f+15|0]=b>>>24;b=G[c+4|0]|G[c+5|0]<<8|(G[c+6|0]<<16|G[c+7|0]<<24);a=G[c|0]|G[c+1|0]<<8|(G[c+2|0]<<16|G[c+3|0]<<24);D[f|0]=a;D[f+1|0]=a>>>8;D[f+2|0]=a>>>16;D[f+3|0]=a>>>24;D[f+4|0]=b;D[f+5|0]=b>>>8;D[f+6|0]=b>>>16;D[f+7|0]=b>>>24;b=G[c+60|0]|G[c+61|0]<<8|(G[c+62|0]<<16|G[c+63|0]<<24);a=G[c+56|0]|G[c+57|0]<<8|(G[c+58|0]<<16|G[c+59|0]<<24);D[f+56|0]=a;D[f+57|0]=a>>>8;D[f+58|0]=a>>>16;D[f+59|0]=a>>>24;D[f+60|0]=b;D[f+61|0]=b>>>8;D[f+62|0]=b>>>16;D[f+63|0]=b>>>24;ia(e,64);_=e- -64|0;ia(l,64);ia(c,64);ia(k,96);d=0}_=k+224|0;ia(g,h)}_=j- -64|0;return d|0}function ed(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,w=0,x=0,y=0,z=0;l=_-560|0;_=l;F[l+44>>2]=0;A(+b);g=v(1)|0;v(0)|0;a:{if((g|0)<0){s=1;w=1034;b=-b;A(+b);g=v(1)|0;v(0)|0;break a}if(e&2048){s=1;w=1037;break a}s=e&1;w=s?1040:1035;z=!s}b:{if((g&2146435072)==2146435072){d=s+3|0;pa(a,32,c,d,e&-65537);na(a,w,s);f=f&32;na(a,b!=b?f?1053:1248:f?1057:1321,3);pa(a,32,c,d,e^8192);i=(c|0)>(d|0)?c:d;break b}u=l+16|0;c:{d:{e:{b=Eb(b,l+44|0);b=b+b;if(b!=0){g=F[l+44>>2];F[l+44>>2]=g-1;r=f|32;if((r|0)!=97){break e}break c}r=f|32;if((r|0)==97){break c}k=F[l+44>>2];m=(d|0)<0?6:d;break d}k=g-29|0;F[l+44>>2]=k;b=b*268435456;m=(d|0)<0?6:d}p=(k|0)<0?l+48|0:l+336|0;h=p;while(1){if(b<4294967296&b>=0){d=~~b>>>0}else{d=0}F[h>>2]=d;h=h+4|0;b=(b-+(d>>>0))*1e9;if(b!=0){continue}break}f:{if((k|0)<=0){d=k;g=h;j=p;break f}j=p;d=k;while(1){d=d>>>0<29?d:29;g=h-4|0;g:{if(j>>>0>g>>>0){break g}i=0;while(1){o=F[g>>2];n=d&31;x=i;if((d&63)>>>0>=32){i=o<>>32-n;o=o<>>0>>0?i+1|0:i;i=te(n,i,1e9);o=se(i,$,1e9,0);F[g>>2]=n-o;g=g-4|0;if(j>>>0<=g>>>0){continue}break}if(!i){break g}j=j-4|0;F[j>>2]=i}while(1){g=h;if(j>>>0>>0){h=g-4|0;if(!F[h>>2]){continue}}break}d=F[l+44>>2]-d|0;F[l+44>>2]=d;h=g;if((d|0)>0){continue}break}}if((d|0)<0){t=((m+25>>>0)/9|0)+1|0;n=(r|0)==102;while(1){d=0-d|0;i=d>>>0<9?d:9;h:{if(g>>>0<=j>>>0){h=F[j>>2];break h}o=1e9>>>i|0;y=-1<>2];F[h>>2]=x+(d>>>i|0);d=L(o,d&y);h=h+4|0;if(h>>>0>>0){continue}break}h=F[j>>2];if(!d){break h}F[g>>2]=d;g=g+4|0}d=i+F[l+44>>2]|0;F[l+44>>2]=d;j=(!h<<2)+j|0;h=n?p:j;g=g-h>>2>(t|0)?h+(t<<2)|0:g;if((d|0)<0){continue}break}}d=0;i:{if(g>>>0<=j>>>0){break i}d=L(p-j>>2,9);h=10;i=F[j>>2];if(i>>>0<10){break i}while(1){d=d+1|0;h=L(h,10);if(i>>>0>=h>>>0){continue}break}}h=(m-((r|0)==102?0:d)|0)-((r|0)==103&(m|0)!=0)|0;if((h|0)<(L(g-p>>2,9)-9|0)){i=h+9216|0;n=(i|0)/9|0;k=((((k|0)<0?4:292)+l|0)+(n<<2)|0)-4048|0;h=10;i=i-L(n,9)|0;if((i|0)<=7){while(1){h=L(h,10);i=i+1|0;if((i|0)!=8){continue}break}}n=F[k>>2];t=(n>>>0)/(h>>>0)|0;i=n-L(h,t)|0;o=k+4|0;j:{if(!i&(o|0)==(g|0)){break j}k:{if(!(t&1)){b=9007199254740992;if(!(D[k-4|0]&1)|((h|0)!=1e9|j>>>0>=k>>>0)){break k}}b=9007199254740994}q=(g|0)==(o|0)?1:1.5;o=h>>>1|0;q=i>>>0>>0?.5:(o|0)==(i|0)?q:1.5;if(!(G[w|0]!=45|z)){q=-q;b=-b}i=n-i|0;F[k>>2]=i;if(b+q==b){break j}d=h+i|0;F[k>>2]=d;if(d>>>0>=1e9){while(1){F[k>>2]=0;k=k-4|0;if(k>>>0>>0){j=j-4|0;F[j>>2]=0}d=F[k>>2]+1|0;F[k>>2]=d;if(d>>>0>999999999){continue}break}}d=L(p-j>>2,9);h=10;i=F[j>>2];if(i>>>0<10){break j}while(1){d=d+1|0;h=L(h,10);if(i>>>0>=h>>>0){continue}break}}h=k+4|0;g=g>>>0>h>>>0?h:g}while(1){h=g;i=g>>>0<=j>>>0;if(!i){g=h-4|0;if(!F[g>>2]){continue}}break}l:{if((r|0)!=103){k=e&8;break l}g=m?m:1;k=(g|0)>(d|0)&(d|0)>-5;m=(k?d^-1:-1)+g|0;f=(k?-1:-2)+f|0;k=e&8;if(k){break l}g=-9;m:{if(i){break m}n=F[h-4>>2];if(!n){break m}i=10;g=0;if((n>>>0)%10|0){break m}while(1){k=g;g=g+1|0;i=L(i,10);if(!((n>>>0)%(i>>>0)|0)){continue}break}g=k^-1}i=L(h-p>>2,9);if((f&-33)==70){k=0;g=(g+i|0)-9|0;g=(g|0)>0?g:0;m=(g|0)>(m|0)?m:g;break l}k=0;g=((d+i|0)+g|0)-9|0;g=(g|0)>0?g:0;m=(g|0)>(m|0)?m:g}i=-1;r=k|m;if(((r?2147483645:2147483646)|0)<(m|0)){break b}n=(((r|0)!=0)+m|0)+1|0;o=f&-33;n:{if((o|0)==70){if((2147483647-n|0)<(d|0)){break b}g=(d|0)>0?d:0;break n}g=d>>31;g=Ra(g+d^g,0,u);if((u-g|0)<=1){while(1){g=g-1|0;D[g|0]=48;if((u-g|0)<2){continue}break}}t=g-2|0;D[t|0]=f;D[g-1|0]=(d|0)<0?45:43;g=u-t|0;if((g|0)>(2147483647-n|0)){break b}}d=g+n|0;if((d|0)>(s^2147483647)){break b}f=d+s|0;pa(a,32,c,f,e);na(a,w,s);pa(a,48,c,f,e^65536);o:{p:{q:{if((o|0)==70){g=l+16|0;d=g|8;k=g|9;i=j>>>0>p>>>0?p:j;j=i;while(1){g=Ra(F[j>>2],0,k);r:{if((i|0)!=(j|0)){if(l+16>>>0>=g>>>0){break r}while(1){g=g-1|0;D[g|0]=48;if(l+16>>>0>>0){continue}break}break r}if((g|0)!=(k|0)){break r}D[l+24|0]=48;g=d}na(a,g,k-g|0);j=j+4|0;if(p>>>0>=j>>>0){continue}break}if(r){na(a,1526,1)}if((m|0)<=0|h>>>0<=j>>>0){break q}while(1){g=Ra(F[j>>2],0,k);if(g>>>0>l+16>>>0){while(1){g=g-1|0;D[g|0]=48;if(l+16>>>0>>0){continue}break}}na(a,g,(m|0)<9?m:9);g=m-9|0;j=j+4|0;if(h>>>0<=j>>>0){break p}d=(m|0)>9;m=g;if(d){continue}break}break p}s:{if((m|0)<0){break s}i=h>>>0>j>>>0?h:j+4|0;g=l+16|0;d=g|8;p=g|9;h=j;while(1){g=Ra(F[h>>2],0,p);if((p|0)==(g|0)){D[l+24|0]=48;g=d}t:{if((h|0)!=(j|0)){if(l+16>>>0>=g>>>0){break t}while(1){g=g-1|0;D[g|0]=48;if(l+16>>>0>>0){continue}break}break t}na(a,g,1);g=g+1|0;if(!(k|m)){break t}na(a,1526,1)}x=g;g=p-g|0;na(a,x,(g|0)<(m|0)?g:m);m=m-g|0;h=h+4|0;if(i>>>0<=h>>>0){break s}if((m|0)>=0){continue}break}}pa(a,48,m+18|0,18,0);na(a,t,u-t|0);break o}g=m}pa(a,48,g+9|0,9,0)}pa(a,32,c,f,e^8192);i=(c|0)>(f|0)?c:f;break b}m=(f<<26>>31&9)+w|0;u:{if(d>>>0>11){break u}g=12-d|0;q=16;while(1){q=q*16;g=g-1|0;if(g){continue}break}if(G[m|0]==45){b=-(q+(-b-q));break u}b=b+q-q}h=F[l+44>>2];g=h>>31;g=Ra(g^g+h,0,u);if((u|0)==(g|0)){D[l+15|0]=48;g=l+15|0}k=s|2;j=f&32;h=F[l+44>>2];p=g-2|0;D[p|0]=f+15;D[g-1|0]=(h|0)<0?45:43;i=e&8;h=l+16|0;while(1){f=h;if(N(b)<2147483648){g=~~b}else{g=-2147483648}D[h|0]=j|G[g+5648|0];b=(b-+(g|0))*16;h=f+1|0;if(!(!((d|0)>0|i)&b==0|(h-(l+16|0)|0)!=1)){D[f+1|0]=46;h=f+2|0}if(b!=0){continue}break}i=-1;n=u-p|0;f=n+k|0;if((2147483645-f|0)<(d|0)){break b}v:{w:{if(!d){break w}j=h-(l+16|0)|0;if((j-2|0)>=(d|0)){break w}g=d+2|0;break v}j=h-(l+16|0)|0;g=j}d=g+f|0;pa(a,32,c,d,e);na(a,m,k);pa(a,48,c,d,e^65536);na(a,l+16|0,j);pa(a,48,g-j|0,0,0);na(a,p,n);pa(a,32,c,d,e^8192);i=(c|0)>(d|0)?c:d}_=l+560|0;return i|0}function Db(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;f=_-80|0;_=f;F[f+76>>2]=b;v=f+55|0;r=f+56|0;b=0;a:{b:{c:{d:{e:while(1){if((2147483647-m|0)<(b|0)){break d}m=b+m|0;f:{g:{h:{l=F[f+76>>2];b=l;k=G[b|0];if(k){while(1){i:{g=k&255;j:{if(!g){k=b;break j}if((g|0)!=37){break i}k=b;while(1){if(G[b+1|0]!=37){break j}g=b+2|0;F[f+76>>2]=g;k=k+1|0;h=G[b+2|0];b=g;if((h|0)==37){continue}break}}b=k-l|0;u=2147483647-m|0;if((b|0)>(u|0)){break d}if(a){na(a,l,b)}if(b){continue e}p=-1;g=1;b=F[f+76>>2];if(!(D[b+1|0]-48>>>0>=10|G[b+2|0]!=36)){p=D[b+1|0]-48|0;t=1;g=3}b=g+b|0;F[f+76>>2]=b;n=0;i=D[b|0];h=i-32|0;k:{if(h>>>0>31){g=b;break k}g=b;j=1<>2]=g;n=j|n;i=D[b+1|0];h=i-32|0;if(h>>>0>=32){break k}b=g;j=1<>>0>=10){break n}b=F[f+76>>2];if(G[b+2|0]!=36){break n}F[((D[b+1|0]<<2)+e|0)-192>>2]=10;o=F[((D[b+1|0]<<3)+d|0)-384>>2];t=1;b=b+3|0;break m}if(t){break h}t=0;o=0;if(a){b=F[c>>2];F[c>>2]=b+4;o=F[b>>2]}b=F[f+76>>2]+1|0}F[f+76>>2]=b;if((o|0)>=0){break l}o=0-o|0;n=n|8192;break l}o=Cb(f+76|0);if((o|0)<0){break d}b=F[f+76>>2]}g=0;j=-1;q=0;o:{if(G[b|0]!=46){break o}if(G[b+1|0]==42){p:{q:{if(D[b+2|0]-48>>>0>=10){break q}b=F[f+76>>2];if(G[b+3|0]!=36){break q}F[((D[b+2|0]<<2)+e|0)-192>>2]=10;j=F[((D[b+2|0]<<3)+d|0)-384>>2];b=b+4|0;break p}if(t){break h}if(a){b=F[c>>2];F[c>>2]=b+4;j=F[b>>2]}else{j=0}b=F[f+76>>2]+2|0}F[f+76>>2]=b;q=(j^-1)>>>31|0;break o}F[f+76>>2]=b+1;j=Cb(f+76|0);b=F[f+76>>2];q=1}while(1){s=g;k=28;if(D[b|0]-123>>>0<4294967238){break c}i=b+1|0;F[f+76>>2]=i;g=D[b|0];b=i;g=G[(g+L(s,58)|0)+5119|0];if(g-1>>>0<8){continue}break}r:{s:{if((g|0)!=27){if(!g){break c}if((p|0)>=0){F[(p<<2)+e>>2]=g;b=(p<<3)+d|0;g=F[b+4>>2];F[f+64>>2]=F[b>>2];F[f+68>>2]=g;break s}if(!a){break f}Bb(f- -64|0,g,c);i=F[f+76>>2];break r}if((p|0)>=0){break c}}b=0;if(!a){continue e}}h=n&-65537;g=n&8192?h:n;n=0;p=1024;k=r;t:{u:{v:{w:{x:{y:{z:{A:{B:{C:{D:{E:{F:{G:{H:{I:{b=D[i-1|0];b=s?(b&15)==3?b&-33:b:b;switch(b-88|0){case 11:break t;case 9:case 13:case 14:case 15:break u;case 27:break z;case 12:case 17:break C;case 23:break D;case 0:case 32:break E;case 24:break F;case 22:break G;case 29:break H;case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 10:case 16:case 18:case 19:case 20:case 21:case 25:case 26:case 28:case 30:case 31:break g;default:break I}}J:{switch(b-65|0){case 0:case 4:case 5:case 6:break u;case 2:break x;case 1:case 3:break g;default:break J}}if((b|0)==83){break y}break g}i=F[f+64>>2];h=F[f+68>>2];p=1024;break B}b=0;K:{switch(s&255){case 0:F[F[f+64>>2]>>2]=m;continue e;case 1:F[F[f+64>>2]>>2]=m;continue e;case 2:g=F[f+64>>2];F[g>>2]=m;F[g+4>>2]=m>>31;continue e;case 3:E[F[f+64>>2]>>1]=m;continue e;case 4:D[F[f+64>>2]]=m;continue e;case 6:F[F[f+64>>2]>>2]=m;continue e;case 7:break K;default:continue e}}g=F[f+64>>2];F[g>>2]=m;F[g+4>>2]=m>>31;continue e}j=j>>>0>8?j:8;g=g|8;b=120}l=r;w=b&32;i=F[f+64>>2];h=F[f+68>>2];if(i|h){while(1){l=l-1|0;D[l|0]=w|G[(i&15)+5648|0];x=!h&i>>>0>15|(h|0)!=0;s=h;h=h>>>4|0;i=(s&15)<<28|i>>>4;if(x){continue}break}}if(!(F[f+64>>2]|F[f+68>>2])|!(g&8)){break A}p=(b>>>4|0)+1024|0;n=2;break A}b=r;i=F[f+64>>2];h=F[f+68>>2];if(i|h){while(1){b=b-1|0;D[b|0]=i&7|48;s=!h&i>>>0>7|(h|0)!=0;l=h;h=h>>>3|0;i=(l&7)<<29|i>>>3;if(s){continue}break}}l=b;if(!(g&8)){break A}b=r-l|0;j=(b|0)<(j|0)?j:b+1|0;break A}b=F[f+68>>2];h=b;i=F[f+64>>2];if((b|0)<0){h=0-(h+((i|0)!=0)|0)|0;i=0-i|0;F[f+64>>2]=i;F[f+68>>2]=h;n=1;p=1024;break B}if(g&2048){n=1;p=1025;break B}n=g&1;p=n?1026:1024}l=Ra(i,h,r)}if((j|0)<0?q:0){break d}g=q?g&-65537:g;h=F[f+64>>2];b=F[f+68>>2];if(!(j|(h|b)!=0)){l=r;k=l;j=0;break g}b=!(b|h)+(r-l|0)|0;j=(b|0)<(j|0)?j:b;break g}q=(j|0)<0?2147483647:j;i=q;g=(i|0)!=0;b=F[f+64>>2];l=b?b:1528;k=l;b=l;L:{M:{N:{O:{if(!(b&3)|!i){break O}while(1){if(!G[b|0]){break N}i=i-1|0;g=(i|0)!=0;b=b+1|0;if(!(b&3)){break O}if(i){continue}break}}if(!g){break M}}P:{if(!G[b|0]|i>>>0<4){break P}while(1){g=F[b>>2];if((g^-1)&g-16843009&-2139062144){break P}b=b+4|0;i=i-4|0;if(i>>>0>3){continue}break}}if(!i){break M}while(1){if(!G[b|0]){break L}b=b+1|0;i=i-1|0;if(i){continue}break}}b=0}b=b?b-k|0:q;k=b+l|0;if((j|0)>=0){g=h;j=b;break g}g=h;j=b;if(G[k|0]){break d}break g}if(j){k=F[f+64>>2];break w}b=0;pa(a,32,o,0,g);break v}F[f+12>>2]=0;F[f+8>>2]=F[f+64>>2];k=f+8|0;F[f+64>>2]=k;j=-1}b=0;Q:{while(1){h=F[k>>2];if(!h){break Q}h=Ab(f+4|0,h);l=(h|0)<0;if(!(l|h>>>0>j-b>>>0)){k=k+4|0;b=b+h|0;if(j>>>0>b>>>0){continue}break Q}break}if(l){break b}}k=61;if((b|0)<0){break c}pa(a,32,o,b,g);if(!b){b=0;break v}j=0;k=F[f+64>>2];while(1){h=F[k>>2];if(!h){break v}h=Ab(f+4|0,h);j=h+j|0;if(j>>>0>b>>>0){break v}na(a,f+4|0,h);k=k+4|0;if(b>>>0>j>>>0){continue}break}}pa(a,32,o,b,g^8192);b=(b|0)<(o|0)?o:b;continue e}if((j|0)<0?q:0){break d}k=61;b=aa[6](a,K[f+64>>3],o,j,g,b)|0;if((b|0)>=0){continue e}break c}D[f+55|0]=F[f+64>>2];j=1;l=v;g=h;break g}g=b+1|0;F[f+76>>2]=g;k=G[b+1|0];b=g;continue}}if(a){break a}if(!t){break f}b=1;while(1){a=F[(b<<2)+e>>2];if(a){Bb((b<<3)+d|0,a,c);m=1;b=b+1|0;if((b|0)!=10){continue}break a}break}m=1;if(b>>>0>=10){break a}while(1){if(F[(b<<2)+e>>2]){break h}b=b+1|0;if((b|0)!=10){continue}break}break a}k=28;break c}i=k-l|0;j=(j|0)<(i|0)?i:j;if((j|0)>(2147483647-n|0)){break d}k=61;h=j+n|0;b=(h|0)>(o|0)?h:o;if((u|0)<(b|0)){break c}pa(a,32,b,h,g);na(a,p,n);pa(a,48,b,h,g^65536);pa(a,48,j,i,0);na(a,l,i);pa(a,32,b,h,g^8192);continue}break}m=0;break a}k=61}F[9343]=k}m=-1}_=f+80|0;return m}function ac(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;j=oa(d);if((j|0)==-1){F[a+3216>>2]=7;return-1}sa(c,d,c);d=j;l=_-48|0;_=l;a:{if((b|0)!=1){ab(l+8|0,c,d);c=F[l+36>>2];if(!c){F[a+3216>>2]=4;b=-1;break a}d=F[l+40>>2]}b=-1;h=_-240|0;_=h;g=a;a=F[a+4>>2];fb(h+8|0,c,d,aa[F[F[a>>2]>>2]](a)|0);b:{if(G[h+8|0]!=3){F[g+8>>2]=3;j=-1;break b}if(F[h+32>>2]?!G[h+9|0]|!F[h+24>>2]:1){F[g+8>>2]=4;j=-1;break b}a=F[g+4>>2];if(aa[F[F[a>>2]+12>>2]](a,F[h+36>>2])>>>0>f>>>0){F[g+8>>2]=2;j=-1;break b}if(F[h+28>>2]!=32){F[g+8>>2]=4;j=-1;break b}c:{d:{e:{f:{g:{c=g+152|0;j=F[g+148>>2];if((c|0)!=(j|0)){d=F[h+24>>2];a=c;while(1){if(!Ma(a,d)){break g}a=a+68|0;if((j|0)!=(a|0)){continue}break}}j=g+48|0;if((j|0)==F[g+44>>2]|I[h+12>>2]>=2001){break f}i=F[h+24>>2];a=G[i+12|0]|G[i+13|0]<<8|(G[i+14|0]<<16|G[i+15|0]<<24);F[h+48>>2]=G[i+8|0]|G[i+9|0]<<8|(G[i+10|0]<<16|G[i+11|0]<<24);F[h+52>>2]=a;a=G[i+20|0]|G[i+21|0]<<8|(G[i+22|0]<<16|G[i+23|0]<<24);F[h+56>>2]=G[i+16|0]|G[i+17|0]<<8|(G[i+18|0]<<16|G[i+19|0]<<24);F[h+60>>2]=a;a=G[i+28|0]|G[i+29|0]<<8|(G[i+30|0]<<16|G[i+31|0]<<24);d=h- -64|0;F[d>>2]=G[i+24|0]|G[i+25|0]<<8|(G[i+26|0]<<16|G[i+27|0]<<24);F[d+4>>2]=a;a=G[i+4|0]|G[i+5|0]<<8|(G[i+6|0]<<16|G[i+7|0]<<24);F[h+40>>2]=G[i|0]|G[i+1|0]<<8|(G[i+2|0]<<16|G[i+3|0]<<24);F[h+44>>2]=a;a=F[g>>2];i=h+40|0;k=h+208|0;za(j,i,k);j=h+144|0;Aa(k,32,g+12|0,32,F[a+8>>2],F[a+12>>2],j,64);d=F[h+172>>2];F[h+136>>2]=F[h+168>>2];F[h+140>>2]=d;a=F[h+164>>2];F[h+128>>2]=F[h+160>>2];F[h+132>>2]=a;a=F[h+180>>2];F[h+76>>2]=F[h+176>>2];F[h+80>>2]=a;a=F[h+188>>2];F[h+84>>2]=F[h+184>>2];F[h+88>>2]=a;a=F[h+196>>2];F[h+92>>2]=F[h+192>>2];F[h+96>>2]=a;a=F[h+204>>2];F[h+100>>2]=F[h+200>>2];F[h+104>>2]=a;F[h+72>>2]=0;a=F[h+156>>2];F[h+120>>2]=F[h+152>>2];F[h+124>>2]=a;a=F[h+148>>2];F[h+112>>2]=F[h+144>>2];F[h+116>>2]=a;ia(j,64);ia(k,32);j=Tb(g,h+72|0,h+8|0,e,f);ia(h+112|0,32);ia(i,68);if((j|0)==-1){break f}d=F[g+148>>2];if((d|0)==(g+492|0)){break e}d=d+68|0;F[g+148>>2]=d;break d}c=F[h+12>>2];if(c>>>0>2]){d=g+496|0;i=F[g+492>>2];if((d|0)==(i|0)){break f}while(1){h:{if(F[d+32>>2]!=(c|0)){break h}if(Ma(d,F[h+24>>2])){break h}a=F[g+4>>2];j=aa[F[F[a>>2]+16>>2]](a,d+36|0,32,F[h+16>>2],F[h+20>>2],F[h+32>>2],F[h+36>>2],e,f)|0;if((j|0)==-1){break h}ia(d,68);a=F[g+492>>2]-68|0;F[g+492>>2]=a;if((a|0)==(d|0)){break b}while(1){a=d;d=d+68|0;ja(a,d,68);if(F[g+492>>2]!=(d|0)){continue}break}break b}d=d+68|0;if((i|0)==(d|0)){break f}c=F[h+12>>2];continue}}j=Tb(g,a+32|0,h+8|0,e,f);if((j|0)!=-1){break c}}F[g+8>>2]=5;j=-1;break b}c=(g+((c|0)==(d|0)?-68:0)|0)+152|0}d=d-68|0;if((d|0)!=(c|0)){while(1){a=d;d=d-68|0;ja(a,d,68);if((c|0)!=(d|0)){continue}break}}e=F[h+24>>2];d=G[e+4|0]|G[e+5|0]<<8|(G[e+6|0]<<16|G[e+7|0]<<24);a=G[e|0]|G[e+1|0]<<8|(G[e+2|0]<<16|G[e+3|0]<<24);D[c|0]=a;D[c+1|0]=a>>>8;D[c+2|0]=a>>>16;D[c+3|0]=a>>>24;D[c+4|0]=d;D[c+5|0]=d>>>8;D[c+6|0]=d>>>16;D[c+7|0]=d>>>24;d=G[e+28|0]|G[e+29|0]<<8|(G[e+30|0]<<16|G[e+31|0]<<24);a=G[e+24|0]|G[e+25|0]<<8|(G[e+26|0]<<16|G[e+27|0]<<24);D[c+24|0]=a;D[c+25|0]=a>>>8;D[c+26|0]=a>>>16;D[c+27|0]=a>>>24;D[c+28|0]=d;D[c+29|0]=d>>>8;D[c+30|0]=d>>>16;D[c+31|0]=d>>>24;d=G[e+20|0]|G[e+21|0]<<8|(G[e+22|0]<<16|G[e+23|0]<<24);a=G[e+16|0]|G[e+17|0]<<8|(G[e+18|0]<<16|G[e+19|0]<<24);D[c+16|0]=a;D[c+17|0]=a>>>8;D[c+18|0]=a>>>16;D[c+19|0]=a>>>24;D[c+20|0]=d;D[c+21|0]=d>>>8;D[c+22|0]=d>>>16;D[c+23|0]=d>>>24;d=G[e+12|0]|G[e+13|0]<<8|(G[e+14|0]<<16|G[e+15|0]<<24);a=G[e+8|0]|G[e+9|0]<<8|(G[e+10|0]<<16|G[e+11|0]<<24);D[c+8|0]=a;D[c+9|0]=a>>>8;D[c+10|0]=a>>>16;D[c+11|0]=a>>>24;D[c+12|0]=d;D[c+13|0]=d>>>8;D[c+14|0]=d>>>16;D[c+15|0]=d>>>24;e=F[g>>2];a=_-96|0;_=a;d=g+48|0;m=a- -64|0;za(d,c,m);Aa(m,32,g+12|0,32,F[e+8>>2],F[e+12>>2],a,64);f=F[a+28>>2];e=F[a+24>>2];D[g+36|0]=e;D[g+37|0]=e>>>8;D[g+38|0]=e>>>16;D[g+39|0]=e>>>24;D[g+40|0]=f;D[g+41|0]=f>>>8;D[g+42|0]=f>>>16;D[g+43|0]=f>>>24;f=F[a+20>>2];e=F[a+16>>2];D[g+28|0]=e;D[g+29|0]=e>>>8;D[g+30|0]=e>>>16;D[g+31|0]=e>>>24;D[g+32|0]=f;D[g+33|0]=f>>>8;D[g+34|0]=f>>>16;D[g+35|0]=f>>>24;f=F[a+12>>2];e=F[a+8>>2];D[g+20|0]=e;D[g+21|0]=e>>>8;D[g+22|0]=e>>>16;D[g+23|0]=e>>>24;D[g+24|0]=f;D[g+25|0]=f>>>8;D[g+26|0]=f>>>16;D[g+27|0]=f>>>24;f=F[a+4>>2];e=F[a>>2];D[g+12|0]=e;D[g+13|0]=e>>>8;D[g+14|0]=e>>>16;D[g+15|0]=e>>>24;D[g+16|0]=f;D[g+17|0]=f>>>8;D[g+18|0]=f>>>16;D[g+19|0]=f>>>24;n=F[a+40>>2];o=F[a+44>>2];p=F[a+48>>2];q=F[a+52>>2];k=F[a+56>>2];i=F[a+60>>2];f=F[a+32>>2];e=F[a+36>>2];F[c+32>>2]=0;F[c+60>>2]=k;F[c+64>>2]=i;F[c+52>>2]=p;F[c+56>>2]=q;F[c+44>>2]=n;F[c+48>>2]=o;F[c+36>>2]=f;F[c+40>>2]=e;ia(a,64);ia(m,32);_=a+96|0;ia(d,100);a=F[g+44>>2]-100|0;F[g+44>>2]=a;if((a|0)!=(d|0)){while(1){a=d;d=d+100|0;ja(a,d,100);if(F[g+44>>2]!=(d|0)){continue}break}}a=c}if(I[a+32>>2]>2]){f=g+532|0;i=a+36|0;c=g+3216|0;k=g+496|0;while(1){d=c;e=F[g+492>>2];if((d|0)!=(e|0)){d=e+68|0;F[g+492>>2]=d}d=d-68|0;if((k|0)!=(d|0)){while(1){e=d;d=d-68|0;ja(e,d,68);if((d|0)!=(k|0)){continue}break}}ka(i,32,1868,1,f);F[g+528>>2]=F[a+32>>2];d=F[a+28>>2];F[k+24>>2]=F[a+24>>2];F[k+28>>2]=d;d=F[a+20>>2];F[k+16>>2]=F[a+16>>2];F[k+20>>2]=d;d=F[a+12>>2];F[k+8>>2]=F[a+8>>2];F[k+12>>2]=d;d=F[a+4>>2];F[k>>2]=F[a>>2];F[k+4>>2]=d;ka(i,32,1869,1,i);d=F[a+32>>2]+1|0;F[a+32>>2]=d;if(d>>>0>2]){continue}break}}c=a+36|0;ka(c,32,1869,1,c);F[a+32>>2]=F[a+32>>2]+1}_=h+240|0;a=j;if((a|0)==-1){F[g+3216>>2]=F[g+8>>2];F[g+8>>2]=0;break a}D[g+3220|0]=1;b=a}_=l+48|0;return b|0}function Gc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;i=Ob(a);if(Da(i)>>>0>e>>>0){F[a+3216>>2]=2;return-1}e=la(_a(d,i),1);D[e|0]=G[a+3220|0];f=a+3221|0;g=G[f+4|0]|G[f+5|0]<<8|(G[f+6|0]<<16|G[f+7|0]<<24);e=e+1|0;h=G[f|0]|G[f+1|0]<<8|(G[f+2|0]<<16|G[f+3|0]<<24);D[e|0]=h;D[e+1|0]=h>>>8;D[e+2|0]=h>>>16;D[e+3|0]=h>>>24;D[e+4|0]=g;D[e+5|0]=g>>>8;D[e+6|0]=g>>>16;D[e+7|0]=g>>>24;g=G[f+28|0]|G[f+29|0]<<8|(G[f+30|0]<<16|G[f+31|0]<<24);h=G[f+24|0]|G[f+25|0]<<8|(G[f+26|0]<<16|G[f+27|0]<<24);D[e+24|0]=h;D[e+25|0]=h>>>8;D[e+26|0]=h>>>16;D[e+27|0]=h>>>24;D[e+28|0]=g;D[e+29|0]=g>>>8;D[e+30|0]=g>>>16;D[e+31|0]=g>>>24;g=G[f+20|0]|G[f+21|0]<<8|(G[f+22|0]<<16|G[f+23|0]<<24);h=G[f+16|0]|G[f+17|0]<<8|(G[f+18|0]<<16|G[f+19|0]<<24);D[e+16|0]=h;D[e+17|0]=h>>>8;D[e+18|0]=h>>>16;D[e+19|0]=h>>>24;D[e+20|0]=g;D[e+21|0]=g>>>8;D[e+22|0]=g>>>16;D[e+23|0]=g>>>24;g=G[f+12|0]|G[f+13|0]<<8|(G[f+14|0]<<16|G[f+15|0]<<24);f=G[f+8|0]|G[f+9|0]<<8|(G[f+10|0]<<16|G[f+11|0]<<24);D[e+8|0]=f;D[e+9|0]=f>>>8;D[e+10|0]=f>>>16;D[e+11|0]=f>>>24;D[e+12|0]=g;D[e+13|0]=g>>>8;D[e+14|0]=g>>>16;D[e+15|0]=g>>>24;f=a+3253|0;g=G[f+4|0]|G[f+5|0]<<8|(G[f+6|0]<<16|G[f+7|0]<<24);e=e+32|0;h=G[f|0]|G[f+1|0]<<8|(G[f+2|0]<<16|G[f+3|0]<<24);D[e|0]=h;D[e+1|0]=h>>>8;D[e+2|0]=h>>>16;D[e+3|0]=h>>>24;D[e+4|0]=g;D[e+5|0]=g>>>8;D[e+6|0]=g>>>16;D[e+7|0]=g>>>24;g=G[f+28|0]|G[f+29|0]<<8|(G[f+30|0]<<16|G[f+31|0]<<24);h=G[f+24|0]|G[f+25|0]<<8|(G[f+26|0]<<16|G[f+27|0]<<24);D[e+24|0]=h;D[e+25|0]=h>>>8;D[e+26|0]=h>>>16;D[e+27|0]=h>>>24;D[e+28|0]=g;D[e+29|0]=g>>>8;D[e+30|0]=g>>>16;D[e+31|0]=g>>>24;g=G[f+20|0]|G[f+21|0]<<8|(G[f+22|0]<<16|G[f+23|0]<<24);h=G[f+16|0]|G[f+17|0]<<8|(G[f+18|0]<<16|G[f+19|0]<<24);D[e+16|0]=h;D[e+17|0]=h>>>8;D[e+18|0]=h>>>16;D[e+19|0]=h>>>24;D[e+20|0]=g;D[e+21|0]=g>>>8;D[e+22|0]=g>>>16;D[e+23|0]=g>>>24;g=G[f+12|0]|G[f+13|0]<<8|(G[f+14|0]<<16|G[f+15|0]<<24);f=G[f+8|0]|G[f+9|0]<<8|(G[f+10|0]<<16|G[f+11|0]<<24);D[e+8|0]=f;D[e+9|0]=f>>>8;D[e+10|0]=f>>>16;D[e+11|0]=f>>>24;D[e+12|0]=g;D[e+13|0]=g>>>8;D[e+14|0]=g>>>16;D[e+15|0]=g>>>24;f=a+3285|0;g=G[f+4|0]|G[f+5|0]<<8|(G[f+6|0]<<16|G[f+7|0]<<24);e=e+32|0;h=G[f|0]|G[f+1|0]<<8|(G[f+2|0]<<16|G[f+3|0]<<24);D[e|0]=h;D[e+1|0]=h>>>8;D[e+2|0]=h>>>16;D[e+3|0]=h>>>24;D[e+4|0]=g;D[e+5|0]=g>>>8;D[e+6|0]=g>>>16;D[e+7|0]=g>>>24;g=G[f+28|0]|G[f+29|0]<<8|(G[f+30|0]<<16|G[f+31|0]<<24);h=G[f+24|0]|G[f+25|0]<<8|(G[f+26|0]<<16|G[f+27|0]<<24);D[e+24|0]=h;D[e+25|0]=h>>>8;D[e+26|0]=h>>>16;D[e+27|0]=h>>>24;D[e+28|0]=g;D[e+29|0]=g>>>8;D[e+30|0]=g>>>16;D[e+31|0]=g>>>24;g=G[f+20|0]|G[f+21|0]<<8|(G[f+22|0]<<16|G[f+23|0]<<24);h=G[f+16|0]|G[f+17|0]<<8|(G[f+18|0]<<16|G[f+19|0]<<24);D[e+16|0]=h;D[e+17|0]=h>>>8;D[e+18|0]=h>>>16;D[e+19|0]=h>>>24;D[e+20|0]=g;D[e+21|0]=g>>>8;D[e+22|0]=g>>>16;D[e+23|0]=g>>>24;g=G[f+12|0]|G[f+13|0]<<8|(G[f+14|0]<<16|G[f+15|0]<<24);f=G[f+8|0]|G[f+9|0]<<8|(G[f+10|0]<<16|G[f+11|0]<<24);D[e+8|0]=f;D[e+9|0]=f>>>8;D[e+10|0]=f>>>16;D[e+11|0]=f>>>24;D[e+12|0]=g;D[e+13|0]=g>>>8;D[e+14|0]=g>>>16;D[e+15|0]=g>>>24;f=Ua(e+32|0,a+12|0,32);e=a+48|0;f=la(f,(F[a+44>>2]-e|0)/100|0);g=F[a+44>>2];if((g|0)!=(e|0)){while(1){f=la(Ua(Na(f,e),e+68|0,32),F[e+64>>2]);e=e+100|0;if((g|0)!=(e|0)){continue}break}}e=a+152|0;f=la(f,(F[a+148>>2]-e|0)/68|0);j=F[a+148>>2];if((j|0)!=(e|0)){while(1){g=G[e+4|0]|G[e+5|0]<<8|(G[e+6|0]<<16|G[e+7|0]<<24);h=G[e|0]|G[e+1|0]<<8|(G[e+2|0]<<16|G[e+3|0]<<24);D[f|0]=h;D[f+1|0]=h>>>8;D[f+2|0]=h>>>16;D[f+3|0]=h>>>24;D[f+4|0]=g;D[f+5|0]=g>>>8;D[f+6|0]=g>>>16;D[f+7|0]=g>>>24;g=G[e+28|0]|G[e+29|0]<<8|(G[e+30|0]<<16|G[e+31|0]<<24);h=G[e+24|0]|G[e+25|0]<<8|(G[e+26|0]<<16|G[e+27|0]<<24);D[f+24|0]=h;D[f+25|0]=h>>>8;D[f+26|0]=h>>>16;D[f+27|0]=h>>>24;D[f+28|0]=g;D[f+29|0]=g>>>8;D[f+30|0]=g>>>16;D[f+31|0]=g>>>24;g=G[e+20|0]|G[e+21|0]<<8|(G[e+22|0]<<16|G[e+23|0]<<24);h=G[e+16|0]|G[e+17|0]<<8|(G[e+18|0]<<16|G[e+19|0]<<24);D[f+16|0]=h;D[f+17|0]=h>>>8;D[f+18|0]=h>>>16;D[f+19|0]=h>>>24;D[f+20|0]=g;D[f+21|0]=g>>>8;D[f+22|0]=g>>>16;D[f+23|0]=g>>>24;g=G[e+12|0]|G[e+13|0]<<8|(G[e+14|0]<<16|G[e+15|0]<<24);h=G[e+8|0]|G[e+9|0]<<8|(G[e+10|0]<<16|G[e+11|0]<<24);D[f+8|0]=h;D[f+9|0]=h>>>8;D[f+10|0]=h>>>16;D[f+11|0]=h>>>24;D[f+12|0]=g;D[f+13|0]=g>>>8;D[f+14|0]=g>>>16;D[f+15|0]=g>>>24;f=la(Ua(f+32|0,e+36|0,32),F[e+32>>2]);e=e+68|0;if((j|0)!=(e|0)){continue}break}}e=a+496|0;f=la(f,(F[a+492>>2]-e|0)/68|0);h=F[a+492>>2];if((h|0)!=(e|0)){while(1){a=G[e+4|0]|G[e+5|0]<<8|(G[e+6|0]<<16|G[e+7|0]<<24);g=G[e|0]|G[e+1|0]<<8|(G[e+2|0]<<16|G[e+3|0]<<24);D[f|0]=g;D[f+1|0]=g>>>8;D[f+2|0]=g>>>16;D[f+3|0]=g>>>24;D[f+4|0]=a;D[f+5|0]=a>>>8;D[f+6|0]=a>>>16;D[f+7|0]=a>>>24;a=G[e+28|0]|G[e+29|0]<<8|(G[e+30|0]<<16|G[e+31|0]<<24);g=G[e+24|0]|G[e+25|0]<<8|(G[e+26|0]<<16|G[e+27|0]<<24);D[f+24|0]=g;D[f+25|0]=g>>>8;D[f+26|0]=g>>>16;D[f+27|0]=g>>>24;D[f+28|0]=a;D[f+29|0]=a>>>8;D[f+30|0]=a>>>16;D[f+31|0]=a>>>24;a=G[e+20|0]|G[e+21|0]<<8|(G[e+22|0]<<16|G[e+23|0]<<24);g=G[e+16|0]|G[e+17|0]<<8|(G[e+18|0]<<16|G[e+19|0]<<24);D[f+16|0]=g;D[f+17|0]=g>>>8;D[f+18|0]=g>>>16;D[f+19|0]=g>>>24;D[f+20|0]=a;D[f+21|0]=a>>>8;D[f+22|0]=a>>>16;D[f+23|0]=a>>>24;a=G[e+12|0]|G[e+13|0]<<8|(G[e+14|0]<<16|G[e+15|0]<<24);g=G[e+8|0]|G[e+9|0]<<8|(G[e+10|0]<<16|G[e+11|0]<<24);D[f+8|0]=g;D[f+9|0]=g>>>8;D[f+10|0]=g>>>16;D[f+11|0]=g>>>24;D[f+12|0]=a;D[f+13|0]=a>>>8;D[f+14|0]=a>>>16;D[f+15|0]=a>>>24;f=la(Ua(f+32|0,e+36|0,32),F[e+32>>2]);e=e+68|0;if((h|0)!=(e|0)){continue}break}}return Za(b,c,d,i)|0}function fa(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0;c=F[b+12>>2];d=c<<1;x=d;s=d>>31;k=c;U=c>>31;c=se(d,s,c,U);f=$;d=c;n=F[b+16>>2];c=n;t=c>>31;i=F[b+8>>2];c=i<<1;J=c;C=c>>31;e=se(n,t,c,C);d=d+e|0;c=$+f|0;c=d>>>0>>0?c+1|0:c;f=d;e=F[b+20>>2];d=e<<1;D=d;E=d>>31;h=F[b+4>>2];d=h<<1;u=d;o=d>>31;m=se(D,E,d,o);f=f+m|0;d=$+c|0;d=f>>>0>>0?d+1|0:d;g=F[b+24>>2];c=g;P=c;y=c>>31;z=F[b>>2];c=z<<1;v=c;p=c>>31;m=se(g,y,c,p);f=m+f|0;c=$+d|0;c=f>>>0>>0?c+1|0:c;l=f;m=F[b+32>>2];d=L(m,19);G=d;A=d>>31;Q=m>>31;f=se(d,A,m,Q);d=l+f|0;c=$+c|0;c=d>>>0>>0?c+1|0:c;l=d;R=F[b+36>>2];d=L(R,38);w=d;q=d>>31;f=F[b+28>>2];b=f<<1;_=b;V=b>>31;K=se(d,q,b,V);d=l+K|0;b=$+c|0;l=d;r=d>>>0>>0?b+1|0:b;b=se(u,o,n,t);c=$;d=se(J,C,k,U);b=d+b|0;c=$+c|0;c=b>>>0>>0?c+1|0:c;K=e;S=e>>31;j=se(e,S,v,p);b=j+b|0;d=$+c|0;d=b>>>0>>0?d+1|0:d;j=se(G,A,_,V);b=j+b|0;c=$+d|0;c=b>>>0>>0?c+1|0:c;d=se(w,q,g,y);b=d+b|0;c=$+c|0;B=b;M=b>>>0>>0?c+1|0:c;b=se(u,o,x,s);d=$;N=i>>31;j=se(i,N,i,N);c=j+b|0;b=$+d|0;b=c>>>0>>0?b+1|0:b;j=se(v,p,n,t);d=j+c|0;c=$+b|0;c=d>>>0>>0?c+1|0:c;b=L(f,38);T=b;O=b>>31;j=f;W=f>>31;f=se(b,O,f,W);b=f+d|0;d=$+c|0;d=b>>>0>>0?d+1|0:d;c=b;b=g<<1;f=se(G,A,b,b>>31);b=c+f|0;c=$+d|0;c=b>>>0>>0?c+1|0:c;d=se(w,q,D,E);b=d+b|0;c=$+c|0;X=b;c=b>>>0>>0?c+1|0:c;ca=c;b=c;c=X+33554432|0;b=c>>>0<33554432?b+1|0:b;aa=c;da=b;c=b>>26;d=(b&67108863)<<6|aa>>>26;b=d+B|0;c=c+M|0;M=b;d=b>>>0>>0?c+1|0:c;b=b+16777216|0;d=b>>>0<16777216?d+1|0:d;ea=b;c=d>>25;d=(d&33554431)<<7|b>>>25;b=d+l|0;c=c+r|0;c=b>>>0>>0?c+1|0:c;d=b;b=c;c=d+33554432|0;b=c>>>0<33554432?b+1|0:b;H=c;f=b;b=c&-67108864;F[a+24>>2]=d-b;b=se(v,p,i,N);c=$;r=h>>31;l=se(u,o,h,r);b=l+b|0;d=$+c|0;d=b>>>0>>0?d+1|0:d;c=b;b=L(g,19);l=b;B=b>>31;g=se(b,B,g,y);b=c+g|0;c=$+d|0;c=b>>>0>>0?c+1|0:c;g=se(D,E,T,O);d=g+b|0;b=$+c|0;b=d>>>0>>0?b+1|0:b;c=n<<1;ba=c;Y=c>>31;g=se(G,A,c,Y);d=g+d|0;c=$+b|0;c=d>>>0>>0?c+1|0:c;b=d;d=se(w,q,x,s);b=b+d|0;c=$+c|0;Z=b;g=b>>>0>>0?c+1|0:c;b=se(D,E,l,B);c=$;h=se(v,p,h,r);b=h+b|0;d=$+c|0;d=b>>>0>>0?d+1|0:d;h=se(n,t,T,O);b=h+b|0;c=$+d|0;c=b>>>0>>0?c+1|0:c;h=se(G,A,x,s);d=h+b|0;b=$+c|0;b=d>>>0>>0?b+1|0:b;h=se(w,q,i,N);d=h+d|0;c=$+b|0;I=d;r=d>>>0>>0?c+1|0:c;b=L(e,38);b=se(b,b>>31,e,S);c=$;e=b;b=z>>31;d=se(z,b,z,b);b=e+d|0;c=$+c|0;c=b>>>0>>0?c+1|0:c;e=se(l,B,ba,Y);b=e+b|0;d=$+c|0;d=b>>>0>>0?d+1|0:d;e=se(x,s,T,O);b=e+b|0;c=$+d|0;c=b>>>0>>0?c+1|0:c;e=se(G,A,J,C);d=e+b|0;b=$+c|0;b=d>>>0>>0?b+1|0:b;e=se(u,o,w,q);d=e+d|0;c=$+b|0;h=d;c=d>>>0>>0?c+1|0:c;l=c;b=d+33554432|0;c=b>>>0<33554432?c+1|0:c;z=b;B=c;b=c>>26;e=(c&67108863)<<6|z>>>26;c=e+I|0;d=b+r|0;r=c;I=Z;c=c>>>0>>0?d+1|0:d;b=r+16777216|0;c=b>>>0<16777216?c+1|0:c;Z=b;e=(c&33554431)<<7|b>>>25;d=I+e|0;c=(c>>25)+g|0;c=d>>>0>>0?c+1|0:c;b=d;d=b+33554432|0;c=d>>>0<33554432?c+1|0:c;g=d;e=c;c=d&-67108864;F[a+8>>2]=b-c;b=se(J,C,K,S);c=$;d=se(n,t,x,s);b=d+b|0;c=$+c|0;c=b>>>0>>0?c+1|0:c;d=se(u,o,P,y);b=d+b|0;c=$+c|0;c=b>>>0>>0?c+1|0:c;d=se(v,p,j,W);b=d+b|0;c=$+c|0;c=b>>>0>>0?c+1|0:c;I=se(w,q,m,Q);d=I+b|0;b=$+c|0;b=d>>>0>>0?b+1|0:b;c=f>>26;H=(f&67108863)<<6|H>>>26;f=H+d|0;d=b+c|0;b=f;c=b>>>0>>0?d+1|0:d;d=b+16777216|0;c=d>>>0<16777216?c+1|0:c;H=d;f=c;c=d&-33554432;F[a+28>>2]=b-c;b=se(v,p,k,U);d=$;i=se(u,o,i,N);c=i+b|0;b=$+d|0;b=c>>>0>>0?b+1|0:b;i=se(P,y,T,O);c=i+c|0;d=$+b|0;d=c>>>0>>0?d+1|0:d;i=se(G,A,D,E);b=i+c|0;c=$+d|0;c=b>>>0>>0?c+1|0:c;d=se(w,q,n,t);b=d+b|0;c=$+c|0;c=b>>>0>>0?c+1|0:c;d=e>>26;e=(e&67108863)<<6|g>>>26;b=e+b|0;c=c+d|0;d=b;b=b>>>0>>0?c+1|0:c;c=d+16777216|0;b=c>>>0<16777216?b+1|0:b;i=c;e=b;b=c&-33554432;F[a+12>>2]=d-b;b=se(P,y,J,C);c=$;d=se(n,t,n,t);b=d+b|0;c=$+c|0;c=b>>>0>>0?c+1|0:c;d=se(x,s,D,E);b=d+b|0;c=$+c|0;c=b>>>0>>0?c+1|0:c;k=se(u,o,_,V);d=k+b|0;b=$+c|0;b=d>>>0>>0?b+1|0:b;k=se(v,p,m,Q);c=k+d|0;d=$+b|0;d=c>>>0>>0?d+1|0:d;g=R>>31;k=se(w,q,R,g);b=k+c|0;c=$+d|0;c=b>>>0>>0?c+1|0:c;d=b;b=f>>25;f=(f&33554431)<<7|H>>>25;d=d+f|0;c=b+c|0;c=d>>>0>>0?c+1|0:c;b=d;d=b+33554432|0;c=d>>>0<33554432?c+1|0:c;k=d;f=c;c=d&-67108864;F[a+32>>2]=b-c;M=M-(ea&-33554432)|0;c=e>>25;e=(e&33554431)<<7|i>>>25;b=aa&-67108864;d=e+(X-b|0)|0;b=c+(ca-((b>>>0>X>>>0)+da|0)|0)|0;b=d>>>0>>0?b+1|0:b;c=b;b=d+33554432|0;c=b>>>0<33554432?c+1|0:c;e=b;b=((c&67108863)<<6|b>>>26)+M|0;F[a+20>>2]=b;b=e&-67108864;F[a+16>>2]=d-b;b=se(x,s,P,y);d=$;e=se(K,S,ba,Y);c=e+b|0;b=$+d|0;b=c>>>0>>0?b+1|0:b;e=se(J,C,j,W);d=e+c|0;c=$+b|0;c=d>>>0>>0?c+1|0:c;e=se(u,o,m,Q);b=e+d|0;d=$+c|0;d=b>>>0>>0?d+1|0:d;e=se(v,p,R,g);b=e+b|0;c=$+d|0;d=b;b=b>>>0>>0?c+1|0:c;c=f>>26;f=(f&67108863)<<6|k>>>26;d=f+d|0;c=b+c|0;c=d>>>0>>0?c+1|0:c;b=c;c=d+16777216|0;b=c>>>0<16777216?b+1|0:b;f=c&-33554432;F[a+36>>2]=d-f;e=se((b&33554431)<<7|c>>>25,b>>25,19,0);d=z&-67108864;b=e+(h-d|0)|0;c=$+(l-((d>>>0>h>>>0)+B|0)|0)|0;d=b;b=b>>>0>>0?c+1|0:c;c=d+33554432|0;b=c>>>0<33554432?b+1|0:b;b=(r-(Z&-33554432)|0)+((b&67108863)<<6|c>>>26)|0;F[a+4>>2]=b;b=a;a=c&-67108864;F[b>>2]=d-a}function ga(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,G=0,H=0,I=0,J=0,K=0,L=0;f=_-160|0;_=f;p=F[b>>2];c=F[b+16>>2];q=c;r=c>>31;c=F[b+24>>2];s=c;t=c>>31;u=F[b+8>>2];c=F[b+32>>2];v=c;w=c>>31;g=F[b+40>>2];d=F[b+72>>2];k=d;H=d;z=d>>31;c=F[b+48>>2];A=c;x=c>>31;e=se(d,z,c,x);o=$;c=F[b+64>>2];j=c;d=c>>31;n=d;c=d;d=F[b+56>>2];l=d;E=d;B=d>>31;d=se(j,c,d,B);c=d+e|0;b=$+o|0;i=c;b=c>>>0>>0?b+1|0:b;e=b;c=f;F[c+120>>2]=i<<1;F[c+124>>2]=b<<1|i>>>31;c=g;y=c;o=c>>31;b=se(j,n,c,o);d=$;h=se(A,x,l,B);c=h+b|0;b=$+d|0;b=c>>>0>>0?b+1|0:b;h=se(v,w,k,z);d=h+c|0;c=$+b|0;G=d;c=d>>>0>>0?c+1|0:c;h=c;d=f;F[d+104>>2]=G<<1;F[d+108>>2]=c<<1|G>>>31;b=se(s,t,A,x);c=$;D=se(v,w,y,o);b=D+b|0;d=$+c|0;d=b>>>0>>0?d+1|0:d;D=se(q,r,l,B);b=D+b|0;c=$+d|0;c=b>>>0>>0?c+1|0:c;d=b;D=0;b=u;g=b;J=b;u=b>>31;K=se(j,n,b,u);d=K+d|0;b=$+c|0;b=d>>>0>>0?b+1|0:b;c=b;K=0;b=p;m=d;C=b;p=b>>31;d=se(k,z,b,p);b=m+d|0;c=$+c|0;c=b>>>0>>0?c+1|0:c;F[f+72>>2]=b<<1;F[f+76>>2]=c<<1|b>>>31;b=se(k,z,(l&1073741823)<<2|I>>>30,l>>30);c=$;d=se(j,n,j,n);b=d+b|0;c=$+c|0;l=b;F[f+128>>2]=b;c=b>>>0>>0?c+1|0:c;F[f+132>>2]=c;I=c;b=se(q,r,v,w);d=$;m=se(s,t,s,t);c=m+b|0;b=$+d|0;b=c>>>0>>0?b+1|0:b;m=se(y,o,(g&2147483647)<<1|D>>>31,g>>31);d=m+c|0;c=$+b|0;c=d>>>0>>0?c+1|0:c;m=se(C,p,A,x);d=m+d|0;b=$+c|0;c=d;d=(c>>>0>>0?b+1|0:b)<<1|c>>>31;m=c<<1;b=m+l|0;c=d+I|0;l=se(l,I,18,0);d=l+b|0;b=$+(b>>>0>>0?c+1|0:c)|0;F[f+48>>2]=d;F[f+52>>2]=d>>>0>>0?b+1|0:b;b=se(i,e,36,0);l=$;c=se(v,w,g,u);d=$;m=b;I=i;i=se(q,r,s,t);b=i+c|0;c=$+d|0;c=b>>>0>>0?c+1|0:c;i=se(y,o,C,p);d=i+b|0;b=$+c|0;b=d>>>0>>0?b+1|0:b;i=d;c=I+d|0;d=b+e|0;b=c;c=(b>>>0>>0?d+1|0:d)<<1|b>>>31;d=b<<1;b=m+d|0;c=c+l|0;F[f+40>>2]=b;F[f+44>>2]=b>>>0>>0?c+1|0:c;b=se(G,h,36,0);e=$;c=se(s,t,C,p);d=$;i=b;l=se(q,r,g,u);c=l+c|0;b=$+d|0;b=c>>>0>>0?b+1|0:b;d=c;c=c+G|0;b=b+h|0;b=c>>>0>>0?b+1|0:b;d=c;c=b<<1|c>>>31;h=d<<1;b=i+h|0;d=c+e|0;F[f+24>>2]=b;F[f+28>>2]=b>>>0>>0?d+1|0:d;h=se((k&2147483647)<<1|L>>>31,k>>31,k,z);b=$;k=b;F[f+144>>2]=h;F[f+148>>2]=b;d=se(v,w,v,w);l=$;b=se(C,p,j,n);c=$;e=se(q,r,A,x);b=e+b|0;c=$+c|0;c=b>>>0>>0?c+1|0:c;i=se(g,u,E,B);G=$;e=d;m=b;b=i;i=se(s,t,y,o);d=b+i|0;b=$+G|0;b=d>>>0>>0?b+1|0:b;b=b<<1|d>>>31;i=d<<1;d=m+i|0;c=b+c|0;c=d>>>0>>0?c+1|0:c;b=c<<1|d>>>31;i=d<<1;c=e+i|0;d=b+l|0;h=se(h,k,19,0);b=h+c|0;c=$+(c>>>0>>0?d+1|0:d)|0;F[f+64>>2]=b;F[f+68>>2]=b>>>0>>0?c+1|0:c;h=se(H,z,(j&2147483647)<<1|L>>>31,j>>31);b=$;F[f+136>>2]=h;F[f+140>>2]=b;e=b;b=se(q,r,y,o);d=$;k=se(s,t,v,w);c=k+b|0;b=$+d|0;b=c>>>0>>0?b+1|0:b;k=se(g,u,A,x);d=k+c|0;c=$+b|0;c=d>>>0>>0?c+1|0:c;k=se(C,p,E,B);b=k+d|0;d=$+c|0;c=b;b=(b>>>0>>0?d+1|0:d)<<1|b>>>31;k=c<<1;d=k+h|0;c=b+e|0;c=d>>>0>>0?c+1|0:c;e=se(h,e,18,0);d=e+d|0;b=$+c|0;F[f+56>>2]=d;F[f+60>>2]=d>>>0>>0?b+1|0:b;b=se(A,x,j,n);c=$;d=se(E,B,E,B);b=d+b|0;c=$+c|0;c=b>>>0>>0?c+1|0:c;d=b;b=c;e=se(H,z,(y&2147483647)<<1|L>>>31,y>>31);c=e+d|0;d=$+b|0;d=c>>>0>>0?d+1|0:d;e=c;h=d;b=c<<1;F[f+112>>2]=b;c=d<<1|c>>>31;F[f+116>>2]=c;d=b;k=c;b=se(s,t,(g&1073741823)<<2|D>>>30,g>>30);g=$;i=se(q,r,q,r);c=i+b|0;b=$+g|0;b=c>>>0>>0?b+1|0:b;m=d;l=(C&2147483647)<<1|K>>>31;i=C>>31;d=se(v,w,l,i);c=d+c|0;b=$+b|0;b=c>>>0>>0?b+1|0:b;g=c;c=m+c|0;d=b+k|0;e=se(e,h,36,0);b=e+c|0;c=$+(c>>>0>>0?d+1|0:d)|0;F[f+32>>2]=b;F[f+36>>2]=b>>>0>>0?c+1|0:c;b=se(v,w,E,B);d=$;g=se(y,o,A,x);c=g+b|0;b=$+d|0;b=c>>>0>>0?b+1|0:b;g=se(s,t,j,n);d=g+c|0;c=$+b|0;c=d>>>0>>0?c+1|0:c;g=se(q,r,H,z);d=g+d|0;b=$+c|0;c=d;b=c>>>0>>0?b+1|0:b;g=b;d=f;e=c<<1;F[d+88>>2]=e;b=b<<1|c>>>31;F[d+92>>2]=b;h=se(J,u,l,i);e=h+e|0;d=$+b|0;g=se(c,g,36,0);b=g+e|0;c=$+(e>>>0>>0?d+1|0:d)|0;F[f+8>>2]=b;F[f+12>>2]=b>>>0>>0?c+1|0:c;b=se(A,x,A,x);g=$;c=se(v,w,j,n);e=$;d=se(s,t,H,z);h=$;i=b;k=c;b=d;d=se(y,o,E,B);b=b+d|0;c=$+h|0;c=b>>>0>>0?c+1|0:c;d=c<<1|b>>>31;h=b<<1;c=k+h|0;b=d+e|0;d=c;c=(c>>>0>>0?b+1|0:b)<<1|c>>>31;e=d<<1;d=i+e|0;b=c+g|0;g=d;F[f+96>>2]=d;b=d>>>0>>0?b+1|0:b;F[f+100>>2]=b;c=se(q,r,C,p);e=$;h=se(J,u,J,u);d=h+c|0;c=$+e|0;c=d>>>0>>0?c+1|0:c;h=d<<1;e=h+g|0;d=(c<<1|d>>>31)+b|0;g=se(g,b,18,0);c=g+e|0;b=$+(e>>>0>>0?d+1|0:d)|0;F[f+16>>2]=c;F[f+20>>2]=c>>>0>>0?b+1|0:b;b=se(v,w,A,x);d=$;g=se(y,o,y,o);c=g+b|0;b=$+d|0;j=se(q,r,j,n);d=j+c|0;c=$+(c>>>0>>0?b+1|0:b)|0;b=d;d=b>>>0>>0?c+1|0:c;c=se(J,u,H,z);j=$;e=b;n=se(s,t,E,B);b=n+c|0;c=$+j|0;j=b;b=(b>>>0>>0?c+1|0:c)<<1|b>>>31;j=j<<1;c=e+j|0;d=b+d|0;d=c>>>0>>0?d+1|0:d;j=c;b=f;n=c<<1;F[b+80>>2]=n;c=d<<1|c>>>31;F[b+84>>2]=c;g=se(C,p,C,p);n=g+n|0;b=$+c|0;j=se(j,d,36,0);d=j+n|0;c=$+(g>>>0>n>>>0?b+1|0:b)|0;F[f>>2]=d;F[f+4>>2]=d>>>0>>0?c+1|0:c;wa(f);ja(a,f,80);_=f+160|0}function ab(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0;F[a+4>>2]=0;F[a+8>>2]=0;D[a|0]=0;F[a+12>>2]=0;F[a+16>>2]=0;F[a+20>>2]=0;F[a+24>>2]=0;F[a+28>>2]=0;F[a+32>>2]=0;a:{if(!c){break a}D[a|0]=G[b|0];if((c|0)==1){break a}g=b+c|0;d=b+1|0;while(1){h=d;if(G[d|0]==10){c=h+1|0;b=c;while(1){b:{if((b|0)==(g|0)){f=g;break b}d=D[b|0];f=b+1|0;b=f;if((d|0)<0){continue}}break}c:{if((c|0)==(f|0)){e=0;break c}c=(h^-1)+f|0;i=c&3;d=0;e=0;b=f;if((b-h|0)-2>>>0>=3){j=c&-4;c=0;while(1){e=(G[b-2|0]&127|(e<<14|(G[b-1|0]&127)<<7))<<14|(G[b-3|0]&127)<<7;b=b-4|0;e=e|G[b|0]&127;c=c+4|0;if((j|0)!=(c|0)){continue}break}}if(i){while(1){b=b-1|0;e=G[b|0]&127|e<<7;d=d+1|0;if((i|0)!=(d|0)){continue}break}}if(g-f>>>0>>0){break a}}F[a+24>>2]=e;F[a+20>>2]=f;d=e+f|0}if((d|0)==(g|0)){break a}if(G[d|0]==18){f=d+1|0;b=f;while(1){d:{if((b|0)==(g|0)){c=g;break d}e=D[b|0];c=b+1|0;b=c;if((e|0)<0){continue}}break}e:{if((c|0)==(f|0)){e=0;break e}j=(d^-1)+c|0;i=j&3;f=0;e=0;b=c;if((b-d|0)-2>>>0>=3){j=j&-4;d=0;while(1){e=(G[b-2|0]&127|(e<<14|(G[b-1|0]&127)<<7))<<14|(G[b-3|0]&127)<<7;b=b-4|0;e=e|G[b|0]&127;d=d+4|0;if((j|0)!=(d|0)){continue}break}}if(i){while(1){b=b-1|0;e=G[b|0]&127|e<<7;f=f+1|0;if((i|0)!=(f|0)){continue}break}}if(g-c>>>0>>0){break a}}F[a+16>>2]=e;F[a+12>>2]=c;d=c+e|0}if((d|0)==(g|0)){break a}if(G[d|0]==26){f=d+1|0;b=f;while(1){f:{if((b|0)==(g|0)){c=g;break f}e=D[b|0];c=b+1|0;b=c;if((e|0)<0){continue}}break}g:{if((c|0)==(f|0)){e=0;break g}j=(d^-1)+c|0;i=j&3;f=0;e=0;b=c;if((b-d|0)-2>>>0>=3){j=j&-4;d=0;while(1){e=(G[b-2|0]&127|(e<<14|(G[b-1|0]&127)<<7))<<14|(G[b-3|0]&127)<<7;b=b-4|0;e=e|G[b|0]&127;d=d+4|0;if((j|0)!=(d|0)){continue}break}}if(i){while(1){b=b-1|0;e=G[b|0]&127|e<<7;f=f+1|0;if((i|0)!=(f|0)){continue}break}}if(g-c>>>0>>0){break a}}F[a+8>>2]=e;F[a+4>>2]=c;d=c+e|0}if((d|0)==(g|0)){break a}if(G[d|0]==34){f=d+1|0;b=f;while(1){h:{if((b|0)==(g|0)){c=g;break h}e=D[b|0];c=b+1|0;b=c;if((e|0)<0){continue}}break}i:{if((c|0)==(f|0)){e=0;break i}j=(d^-1)+c|0;i=j&3;f=0;e=0;b=c;if((b-d|0)-2>>>0>=3){j=j&-4;d=0;while(1){e=(G[b-2|0]&127|(e<<14|(G[b-1|0]&127)<<7))<<14|(G[b-3|0]&127)<<7;b=b-4|0;e=e|G[b|0]&127;d=d+4|0;if((j|0)!=(d|0)){continue}break}}if(i){while(1){b=b-1|0;e=G[b|0]&127|e<<7;f=f+1|0;if((i|0)!=(f|0)){continue}break}}if(g-c>>>0>>0){break a}}F[a+32>>2]=e;F[a+28>>2]=c;d=c+e|0}j:{if((d|0)==(g|0)|(d|0)!=(h|0)){break j}k:{switch(G[h|0]&7){case 0:while(1){l:{if((g|0)==(h|0)){b=g;break l}c=D[h|0];b=h+1|0;h=b;if((c|0)<0){continue}}break};while(1){if((b|0)==(g|0)){d=g;break j}c=D[b|0];d=b+1|0;b=d;if((c|0)<0){continue}break};break j;case 2:break k;default:break a}}while(1){m:{if((g|0)==(h|0)){d=g;break m}b=D[h|0];d=h+1|0;h=d;if((b|0)<0){continue}}break}b=d;while(1){n:{if((b|0)==(g|0)){f=g;break n}c=D[b|0];f=b+1|0;b=f;if((c|0)<0){continue}}break}if((d|0)==(f|0)){break j}i=f-d|0;c=i&3;e=0;h=0;b=f;if(b+(d^-1)>>>0>=3){i=i&-4;d=0;while(1){h=(G[b-2|0]&127|(h<<14|(G[b-1|0]&127)<<7))<<14|(G[b-3|0]&127)<<7;b=b-4|0;h=h|G[b|0]&127;d=d+4|0;if((i|0)!=(d|0)){continue}break}}if(c){while(1){b=b-1|0;h=G[b|0]&127|h<<7;e=e+1|0;if((c|0)!=(e|0)){continue}break}}if(g-f>>>0>>0){break a}d=f+h|0}if((d|0)!=(g|0)){continue}break}}}function rb(a,b,c){var d=0,e=0,f=0,g=0;a:{if(!a){break a}d=a+32|0;if(d>>>0>b>>>0){break a}f=G[a+4|0]|G[a+5|0]<<8|(G[a+6|0]<<16|G[a+7|0]<<24);g=G[a|0]|G[a+1|0]<<8|(G[a+2|0]<<16|G[a+3|0]<<24);D[c|0]=g;D[c+1|0]=g>>>8;D[c+2|0]=g>>>16;D[c+3|0]=g>>>24;D[c+4|0]=f;D[c+5|0]=f>>>8;D[c+6|0]=f>>>16;D[c+7|0]=f>>>24;f=G[a+28|0]|G[a+29|0]<<8|(G[a+30|0]<<16|G[a+31|0]<<24);g=G[a+24|0]|G[a+25|0]<<8|(G[a+26|0]<<16|G[a+27|0]<<24);D[c+24|0]=g;D[c+25|0]=g>>>8;D[c+26|0]=g>>>16;D[c+27|0]=g>>>24;D[c+28|0]=f;D[c+29|0]=f>>>8;D[c+30|0]=f>>>16;D[c+31|0]=f>>>24;f=G[a+20|0]|G[a+21|0]<<8|(G[a+22|0]<<16|G[a+23|0]<<24);g=G[a+16|0]|G[a+17|0]<<8|(G[a+18|0]<<16|G[a+19|0]<<24);D[c+16|0]=g;D[c+17|0]=g>>>8;D[c+18|0]=g>>>16;D[c+19|0]=g>>>24;D[c+20|0]=f;D[c+21|0]=f>>>8;D[c+22|0]=f>>>16;D[c+23|0]=f>>>24;f=G[a+12|0]|G[a+13|0]<<8|(G[a+14|0]<<16|G[a+15|0]<<24);g=G[a+8|0]|G[a+9|0]<<8|(G[a+10|0]<<16|G[a+11|0]<<24);D[c+8|0]=g;D[c+9|0]=g>>>8;D[c+10|0]=g>>>16;D[c+11|0]=g>>>24;D[c+12|0]=f;D[c+13|0]=f>>>8;D[c+14|0]=f>>>16;D[c+15|0]=f>>>24;f=b;b=a+96|0;if(f>>>0>>0){break a}a=d;d=G[a+4|0]|G[a+5|0]<<8|(G[a+6|0]<<16|G[a+7|0]<<24);e=G[a|0]|G[a+1|0]<<8|(G[a+2|0]<<16|G[a+3|0]<<24);D[c+32|0]=e;D[c+33|0]=e>>>8;D[c+34|0]=e>>>16;D[c+35|0]=e>>>24;D[c+36|0]=d;D[c+37|0]=d>>>8;D[c+38|0]=d>>>16;D[c+39|0]=d>>>24;d=G[a+60|0]|G[a+61|0]<<8|(G[a+62|0]<<16|G[a+63|0]<<24);e=G[a+56|0]|G[a+57|0]<<8|(G[a+58|0]<<16|G[a+59|0]<<24);D[c+88|0]=e;D[c+89|0]=e>>>8;D[c+90|0]=e>>>16;D[c+91|0]=e>>>24;D[c+92|0]=d;D[c+93|0]=d>>>8;D[c+94|0]=d>>>16;D[c+95|0]=d>>>24;d=G[a+52|0]|G[a+53|0]<<8|(G[a+54|0]<<16|G[a+55|0]<<24);e=G[a+48|0]|G[a+49|0]<<8|(G[a+50|0]<<16|G[a+51|0]<<24);D[c+80|0]=e;D[c+81|0]=e>>>8;D[c+82|0]=e>>>16;D[c+83|0]=e>>>24;D[c+84|0]=d;D[c+85|0]=d>>>8;D[c+86|0]=d>>>16;D[c+87|0]=d>>>24;d=G[a+44|0]|G[a+45|0]<<8|(G[a+46|0]<<16|G[a+47|0]<<24);e=G[a+40|0]|G[a+41|0]<<8|(G[a+42|0]<<16|G[a+43|0]<<24);D[c+72|0]=e;D[c+73|0]=e>>>8;D[c+74|0]=e>>>16;D[c+75|0]=e>>>24;D[c+76|0]=d;D[c+77|0]=d>>>8;D[c+78|0]=d>>>16;D[c+79|0]=d>>>24;e=G[a+36|0]|G[a+37|0]<<8|(G[a+38|0]<<16|G[a+39|0]<<24);d=c- -64|0;f=G[a+32|0]|G[a+33|0]<<8|(G[a+34|0]<<16|G[a+35|0]<<24);D[d|0]=f;D[d+1|0]=f>>>8;D[d+2|0]=f>>>16;D[d+3|0]=f>>>24;D[d+4|0]=e;D[d+5|0]=e>>>8;D[d+6|0]=e>>>16;D[d+7|0]=e>>>24;d=G[a+28|0]|G[a+29|0]<<8|(G[a+30|0]<<16|G[a+31|0]<<24);e=G[a+24|0]|G[a+25|0]<<8|(G[a+26|0]<<16|G[a+27|0]<<24);D[c+56|0]=e;D[c+57|0]=e>>>8;D[c+58|0]=e>>>16;D[c+59|0]=e>>>24;D[c+60|0]=d;D[c+61|0]=d>>>8;D[c+62|0]=d>>>16;D[c+63|0]=d>>>24;d=G[a+20|0]|G[a+21|0]<<8|(G[a+22|0]<<16|G[a+23|0]<<24);e=G[a+16|0]|G[a+17|0]<<8|(G[a+18|0]<<16|G[a+19|0]<<24);D[c+48|0]=e;D[c+49|0]=e>>>8;D[c+50|0]=e>>>16;D[c+51|0]=e>>>24;D[c+52|0]=d;D[c+53|0]=d>>>8;D[c+54|0]=d>>>16;D[c+55|0]=d>>>24;d=G[a+12|0]|G[a+13|0]<<8|(G[a+14|0]<<16|G[a+15|0]<<24);a=G[a+8|0]|G[a+9|0]<<8|(G[a+10|0]<<16|G[a+11|0]<<24);D[c+40|0]=a;D[c+41|0]=a>>>8;D[c+42|0]=a>>>16;D[c+43|0]=a>>>24;D[c+44|0]=d;D[c+45|0]=d>>>8;D[c+46|0]=d>>>16;D[c+47|0]=d>>>24;e=b}return e}function ad(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;a:{if(!a){break a}d=a-8|0;b=F[a-4>>2];a=b&-8;f=d+a|0;b:{if(b&1){break b}if(!(b&3)){break a}b=F[d>>2];d=d-b|0;if(d>>>0>>0<=255){e=F[d+8>>2];b=b>>>3|0;c=F[d+12>>2];if((c|0)==(e|0)){F[9386]=F[9386]&ue(-2,b);break b}F[e+12>>2]=c;F[c+8>>2]=e;break b}h=F[d+24>>2];b=F[d+12>>2];c:{if((d|0)!=(b|0)){c=F[d+8>>2];F[c+12>>2]=b;F[b+8>>2]=c;break c}d:{e=d+20|0;c=F[e>>2];if(c){break d}e=d+16|0;c=F[e>>2];if(c){break d}b=0;break c}while(1){g=e;b=c;e=b+20|0;c=F[e>>2];if(c){continue}e=b+16|0;c=F[b+16>>2];if(c){continue}break}F[g>>2]=0}if(!h){break b}e=F[d+28>>2];c=(e<<2)+37848|0;e:{if(F[c>>2]==(d|0)){F[c>>2]=b;if(b){break e}F[9387]=F[9387]&ue(-2,e);break b}F[h+(F[h+16>>2]==(d|0)?16:20)>>2]=b;if(!b){break b}}F[b+24>>2]=h;c=F[d+16>>2];if(c){F[b+16>>2]=c;F[c+24>>2]=b}c=F[d+20>>2];if(!c){break b}F[b+20>>2]=c;F[c+24>>2]=b;break b}b=F[f+4>>2];if((b&3)!=3){break b}F[9388]=a;F[f+4>>2]=b&-2;F[d+4>>2]=a|1;F[a+d>>2]=a;return}if(d>>>0>=f>>>0){break a}b=F[f+4>>2];if(!(b&1)){break a}f:{if(!(b&2)){if(F[9392]==(f|0)){F[9392]=d;a=F[9389]+a|0;F[9389]=a;F[d+4>>2]=a|1;if(F[9391]!=(d|0)){break a}F[9388]=0;F[9391]=0;return}if(F[9391]==(f|0)){F[9391]=d;a=F[9388]+a|0;F[9388]=a;F[d+4>>2]=a|1;F[a+d>>2]=a;return}a=(b&-8)+a|0;g:{if(b>>>0<=255){e=F[f+8>>2];b=b>>>3|0;c=F[f+12>>2];if((c|0)==(e|0)){F[9386]=F[9386]&ue(-2,b);break g}F[e+12>>2]=c;F[c+8>>2]=e;break g}h=F[f+24>>2];b=F[f+12>>2];h:{if((f|0)!=(b|0)){c=F[f+8>>2];F[c+12>>2]=b;F[b+8>>2]=c;break h}i:{e=f+20|0;c=F[e>>2];if(c){break i}e=f+16|0;c=F[e>>2];if(c){break i}b=0;break h}while(1){g=e;b=c;e=b+20|0;c=F[e>>2];if(c){continue}e=b+16|0;c=F[b+16>>2];if(c){continue}break}F[g>>2]=0}if(!h){break g}e=F[f+28>>2];c=(e<<2)+37848|0;j:{if(F[c>>2]==(f|0)){F[c>>2]=b;if(b){break j}F[9387]=F[9387]&ue(-2,e);break g}F[h+(F[h+16>>2]==(f|0)?16:20)>>2]=b;if(!b){break g}}F[b+24>>2]=h;c=F[f+16>>2];if(c){F[b+16>>2]=c;F[c+24>>2]=b}c=F[f+20>>2];if(!c){break g}F[b+20>>2]=c;F[c+24>>2]=b}F[d+4>>2]=a|1;F[a+d>>2]=a;if(F[9391]!=(d|0)){break f}F[9388]=a;return}F[f+4>>2]=b&-2;F[d+4>>2]=a|1;F[a+d>>2]=a}if(a>>>0<=255){a=a>>>3|0;b=(a<<3)+37584|0;c=F[9386];a=1<>2]}F[b+8>>2]=d;F[a+12>>2]=d;F[d+12>>2]=b;F[d+8>>2]=a;return}e=31;F[d+16>>2]=0;F[d+20>>2]=0;if(a>>>0<=16777215){b=a>>>8|0;g=b+1048320>>>16&8;b=b<>>16&4;b=b<>>16&2;b=(b<>>15|0)-(c|(e|g))|0;e=(b<<1|a>>>b+21&1)+28|0}F[d+28>>2]=e;g=(e<<2)+37848|0;l:{m:{c=F[9387];b=1<>2]=d;F[d+24>>2]=g;break n}e=a<<((e|0)==31?0:25-(e>>>1|0)|0);b=F[g>>2];while(1){c=b;if((F[b+4>>2]&-8)==(a|0)){break m}b=e>>>29|0;e=e<<1;g=c+(b&4)|0;b=F[g+16>>2];if(b){continue}break}F[g+16>>2]=d;F[d+24>>2]=c}F[d+12>>2]=d;F[d+8>>2]=d;break l}a=F[c+8>>2];F[a+12>>2]=d;F[c+8>>2]=d;F[d+24>>2]=0;F[d+12>>2]=c;F[d+8>>2]=a}a=F[9394]-1|0;F[9394]=a?a:-1}}function sb(a,b){var c=0,d=0,e=0;c=G[b+4|0]|G[b+5|0]<<8|(G[b+6|0]<<16|G[b+7|0]<<24);d=G[b|0]|G[b+1|0]<<8|(G[b+2|0]<<16|G[b+3|0]<<24);D[a|0]=d;D[a+1|0]=d>>>8;D[a+2|0]=d>>>16;D[a+3|0]=d>>>24;D[a+4|0]=c;D[a+5|0]=c>>>8;D[a+6|0]=c>>>16;D[a+7|0]=c>>>24;c=G[b+28|0]|G[b+29|0]<<8|(G[b+30|0]<<16|G[b+31|0]<<24);d=G[b+24|0]|G[b+25|0]<<8|(G[b+26|0]<<16|G[b+27|0]<<24);D[a+24|0]=d;D[a+25|0]=d>>>8;D[a+26|0]=d>>>16;D[a+27|0]=d>>>24;D[a+28|0]=c;D[a+29|0]=c>>>8;D[a+30|0]=c>>>16;D[a+31|0]=c>>>24;c=G[b+20|0]|G[b+21|0]<<8|(G[b+22|0]<<16|G[b+23|0]<<24);d=G[b+16|0]|G[b+17|0]<<8|(G[b+18|0]<<16|G[b+19|0]<<24);D[a+16|0]=d;D[a+17|0]=d>>>8;D[a+18|0]=d>>>16;D[a+19|0]=d>>>24;D[a+20|0]=c;D[a+21|0]=c>>>8;D[a+22|0]=c>>>16;D[a+23|0]=c>>>24;c=G[b+12|0]|G[b+13|0]<<8|(G[b+14|0]<<16|G[b+15|0]<<24);d=G[b+8|0]|G[b+9|0]<<8|(G[b+10|0]<<16|G[b+11|0]<<24);D[a+8|0]=d;D[a+9|0]=d>>>8;D[a+10|0]=d>>>16;D[a+11|0]=d>>>24;D[a+12|0]=c;D[a+13|0]=c>>>8;D[a+14|0]=c>>>16;D[a+15|0]=c>>>24;c=G[b+36|0]|G[b+37|0]<<8|(G[b+38|0]<<16|G[b+39|0]<<24);d=G[b+32|0]|G[b+33|0]<<8|(G[b+34|0]<<16|G[b+35|0]<<24);D[a+32|0]=d;D[a+33|0]=d>>>8;D[a+34|0]=d>>>16;D[a+35|0]=d>>>24;D[a+36|0]=c;D[a+37|0]=c>>>8;D[a+38|0]=c>>>16;D[a+39|0]=c>>>24;c=G[b+44|0]|G[b+45|0]<<8|(G[b+46|0]<<16|G[b+47|0]<<24);d=G[b+40|0]|G[b+41|0]<<8|(G[b+42|0]<<16|G[b+43|0]<<24);D[a+40|0]=d;D[a+41|0]=d>>>8;D[a+42|0]=d>>>16;D[a+43|0]=d>>>24;D[a+44|0]=c;D[a+45|0]=c>>>8;D[a+46|0]=c>>>16;D[a+47|0]=c>>>24;c=G[b+52|0]|G[b+53|0]<<8|(G[b+54|0]<<16|G[b+55|0]<<24);d=G[b+48|0]|G[b+49|0]<<8|(G[b+50|0]<<16|G[b+51|0]<<24);D[a+48|0]=d;D[a+49|0]=d>>>8;D[a+50|0]=d>>>16;D[a+51|0]=d>>>24;D[a+52|0]=c;D[a+53|0]=c>>>8;D[a+54|0]=c>>>16;D[a+55|0]=c>>>24;c=G[b+60|0]|G[b+61|0]<<8|(G[b+62|0]<<16|G[b+63|0]<<24);d=G[b+56|0]|G[b+57|0]<<8|(G[b+58|0]<<16|G[b+59|0]<<24);D[a+56|0]=d;D[a+57|0]=d>>>8;D[a+58|0]=d>>>16;D[a+59|0]=d>>>24;D[a+60|0]=c;D[a+61|0]=c>>>8;D[a+62|0]=c>>>16;D[a+63|0]=c>>>24;d=b- -64|0;e=G[d+4|0]|G[d+5|0]<<8|(G[d+6|0]<<16|G[d+7|0]<<24);c=a- -64|0;d=G[d|0]|G[d+1|0]<<8|(G[d+2|0]<<16|G[d+3|0]<<24);D[c|0]=d;D[c+1|0]=d>>>8;D[c+2|0]=d>>>16;D[c+3|0]=d>>>24;D[c+4|0]=e;D[c+5|0]=e>>>8;D[c+6|0]=e>>>16;D[c+7|0]=e>>>24;c=G[b+76|0]|G[b+77|0]<<8|(G[b+78|0]<<16|G[b+79|0]<<24);d=G[b+72|0]|G[b+73|0]<<8|(G[b+74|0]<<16|G[b+75|0]<<24);D[a+72|0]=d;D[a+73|0]=d>>>8;D[a+74|0]=d>>>16;D[a+75|0]=d>>>24;D[a+76|0]=c;D[a+77|0]=c>>>8;D[a+78|0]=c>>>16;D[a+79|0]=c>>>24;c=G[b+84|0]|G[b+85|0]<<8|(G[b+86|0]<<16|G[b+87|0]<<24);d=G[b+80|0]|G[b+81|0]<<8|(G[b+82|0]<<16|G[b+83|0]<<24);D[a+80|0]=d;D[a+81|0]=d>>>8;D[a+82|0]=d>>>16;D[a+83|0]=d>>>24;D[a+84|0]=c;D[a+85|0]=c>>>8;D[a+86|0]=c>>>16;D[a+87|0]=c>>>24;c=G[b+92|0]|G[b+93|0]<<8|(G[b+94|0]<<16|G[b+95|0]<<24);b=G[b+88|0]|G[b+89|0]<<8|(G[b+90|0]<<16|G[b+91|0]<<24);D[a+88|0]=b;D[a+89|0]=b>>>8;D[a+90|0]=b>>>16;D[a+91|0]=b>>>24;D[a+92|0]=c;D[a+93|0]=c>>>8;D[a+94|0]=c>>>16;D[a+95|0]=c>>>24;return a+96|0}function db(a,b){var c=0,d=0,e=0,f=0,g=0;a:{if(!a|!b){break a}c=F[a+72>>2];if(c>>>0>127){break a}F[a+72>>2]=c+1;d=F[a+4>>2]+(c>>>29|0)|0;e=c<<3;f=e+F[a>>2]|0;F[a>>2]=f;F[a+4>>2]=e>>>0>f>>>0?d+1|0:d;f=a+76|0;D[f+c|0]=128;c=F[a+72>>2];if(c>>>0>=113){if(c>>>0<=127){while(1){F[a+72>>2]=c+1;D[(a+c|0)+76|0]=0;c=F[a+72>>2];if(c>>>0<128){continue}break}}ua(a,f);c=0}while(1){F[a+72>>2]=c+1;D[(a+c|0)+76|0]=0;c=F[a+72>>2];if(c>>>0<120){continue}break}d=F[a>>2];c=d<<24|d<<8&16711680;g=d>>>8|0;e=F[a+4>>2];d=d>>>24|0;c=c|((g|e<<24)&65280|(d|e<<8)&255);d=(g|(e&255)<<24)&-16777216|(d|(e&16777215)<<8)&16711680|(e>>>8&65280|e>>>24);D[a+196|0]=d;D[a+197|0]=d>>>8;D[a+198|0]=d>>>16;D[a+199|0]=d>>>24;D[a+200|0]=c;D[a+201|0]=c>>>8;D[a+202|0]=c>>>16;D[a+203|0]=c>>>24;ua(a,f);D[b|0]=G[a+15|0];D[b+1|0]=H[a+14>>1];D[b+2|0]=F[a+12>>2]>>>8;D[b+3|0]=F[a+12>>2];D[b+4|0]=(F[a+12>>2]&16777215)<<8|F[a+8>>2]>>>24;D[b+5|0]=(F[a+12>>2]&65535)<<16|F[a+8>>2]>>>16;D[b+6|0]=(F[a+12>>2]&255)<<24|F[a+8>>2]>>>8;D[b+7|0]=F[a+8>>2];D[b+8|0]=G[a+23|0];D[b+9|0]=H[a+22>>1];D[b+10|0]=F[a+20>>2]>>>8;D[b+11|0]=F[a+20>>2];D[b+12|0]=(F[a+20>>2]&16777215)<<8|F[a+16>>2]>>>24;D[b+13|0]=(F[a+20>>2]&65535)<<16|F[a+16>>2]>>>16;D[b+14|0]=(F[a+20>>2]&255)<<24|F[a+16>>2]>>>8;D[b+15|0]=F[a+16>>2];D[b+16|0]=G[a+31|0];D[b+17|0]=H[a+30>>1];D[b+18|0]=F[a+28>>2]>>>8;D[b+19|0]=F[a+28>>2];D[b+20|0]=(F[a+28>>2]&16777215)<<8|F[a+24>>2]>>>24;D[b+21|0]=(F[a+28>>2]&65535)<<16|F[a+24>>2]>>>16;D[b+22|0]=(F[a+28>>2]&255)<<24|F[a+24>>2]>>>8;D[b+23|0]=F[a+24>>2];D[b+24|0]=G[a+39|0];D[b+25|0]=H[a+38>>1];D[b+26|0]=F[a+36>>2]>>>8;D[b+27|0]=F[a+36>>2];D[b+28|0]=(F[a+36>>2]&16777215)<<8|F[a+32>>2]>>>24;D[b+29|0]=(F[a+36>>2]&65535)<<16|F[a+32>>2]>>>16;D[b+30|0]=(F[a+36>>2]&255)<<24|F[a+32>>2]>>>8;D[b+31|0]=F[a+32>>2];D[b+32|0]=G[a+47|0];D[b+33|0]=H[a+46>>1];D[b+34|0]=F[a+44>>2]>>>8;D[b+35|0]=F[a+44>>2];D[b+36|0]=(F[a+44>>2]&16777215)<<8|F[a+40>>2]>>>24;D[b+37|0]=(F[a+44>>2]&65535)<<16|F[a+40>>2]>>>16;D[b+38|0]=(F[a+44>>2]&255)<<24|F[a+40>>2]>>>8;D[b+39|0]=F[a+40>>2];D[b+40|0]=G[a+55|0];D[b+41|0]=H[a+54>>1];D[b+42|0]=F[a+52>>2]>>>8;D[b+43|0]=F[a+52>>2];D[b+44|0]=(F[a+52>>2]&16777215)<<8|F[a+48>>2]>>>24;D[b+45|0]=(F[a+52>>2]&65535)<<16|F[a+48>>2]>>>16;D[b+46|0]=(F[a+52>>2]&255)<<24|F[a+48>>2]>>>8;D[b+47|0]=F[a+48>>2];D[b+48|0]=G[a+63|0];D[b+49|0]=H[a+62>>1];D[b+50|0]=F[a+60>>2]>>>8;D[b+51|0]=F[a+60>>2];D[b+52|0]=(F[a+60>>2]&16777215)<<8|F[a+56>>2]>>>24;D[b+53|0]=(F[a+60>>2]&65535)<<16|F[a+56>>2]>>>16;D[b+54|0]=(F[a+60>>2]&255)<<24|F[a+56>>2]>>>8;D[b+55|0]=F[a+56>>2];D[b+56|0]=G[a+71|0];D[b+57|0]=H[a+70>>1];c=a- -64|0;D[b+58|0]=F[c+4>>2]>>>8;D[b+59|0]=F[a+68>>2];D[b+60|0]=(F[c+4>>2]&16777215)<<8|F[c>>2]>>>24;D[b+61|0]=(F[c+4>>2]&65535)<<16|F[c>>2]>>>16;D[b+62|0]=(F[c+4>>2]&255)<<24|F[c>>2]>>>8;D[b+63|0]=F[c>>2]}}function ie(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0;j=_-160|0;_=j;l=-1;if(!(i>>>0<8|(e+16&-16)>>>0>g>>>0)){g=j+80|0;Aa(b,c,0,0,F[a+4>>2],F[a+8>>2],g,80);a=F[j+108>>2];F[j+24>>2]=F[j+104>>2];F[j+28>>2]=a;a=F[j+100>>2];F[j+16>>2]=F[j+96>>2];F[j+20>>2]=a;a=F[j+92>>2];F[j+8>>2]=F[j+88>>2];F[j+12>>2]=a;a=F[j+124>>2];F[j+40>>2]=F[j+120>>2];F[j+44>>2]=a;a=F[j+132>>2];F[j+48>>2]=F[j+128>>2];F[j+52>>2]=a;a=F[j+140>>2];F[j+56>>2]=F[j+136>>2];F[j+60>>2]=a;a=F[j+156>>2];F[j+72>>2]=F[j+152>>2];F[j+76>>2]=a;a=F[j+84>>2];F[j>>2]=F[j+80>>2];F[j+4>>2]=a;a=F[j+116>>2];F[j+32>>2]=F[j+112>>2];F[j+36>>2]=a;a=F[j+148>>2];F[j+64>>2]=F[j+144>>2];F[j+68>>2]=a;ia(g,80);a=0;l=0;b=_-256|0;_=b;Hb(j,b+16|0);c=j- -64|0;n=G[c+12|0]|G[c+13|0]<<8|(G[c+14|0]<<16|G[c+15|0]<<24);F[b+8>>2]=G[c+8|0]|G[c+9|0]<<8|(G[c+10|0]<<16|G[c+11|0]<<24);F[b+12>>2]=n;n=G[c+4|0]|G[c+5|0]<<8|(G[c+6|0]<<16|G[c+7|0]<<24);F[b>>2]=G[c|0]|G[c+1|0]<<8|(G[c+2|0]<<16|G[c+3|0]<<24);F[b+4>>2]=n;if(e>>>0>=16){while(1){D[b|0]=G[b|0]^G[d|0];D[b+1|0]=G[b+1|0]^G[d+1|0];D[b+2|0]=G[b+2|0]^G[d+2|0];D[b+3|0]=G[b+3|0]^G[d+3|0];D[b+4|0]=G[b+4|0]^G[d+4|0];D[b+5|0]=G[b+5|0]^G[d+5|0];D[b+6|0]=G[b+6|0]^G[d+6|0];D[b+7|0]=G[b+7|0]^G[d+7|0];D[b+8|0]=G[b+8|0]^G[d+8|0];D[b+9|0]=G[b+9|0]^G[d+9|0];D[b+10|0]=G[b+10|0]^G[d+10|0];D[b+11|0]=G[b+11|0]^G[d+11|0];D[b+12|0]=G[b+12|0]^G[d+12|0];D[b+13|0]=G[b+13|0]^G[d+13|0];D[b+14|0]=G[b+14|0]^G[d+14|0];D[b+15|0]=G[b+15|0]^G[d+15|0];Jb(b,f,b+16|0);c=G[f+12|0]|G[f+13|0]<<8|(G[f+14|0]<<16|G[f+15|0]<<24);F[b+8>>2]=G[f+8|0]|G[f+9|0]<<8|(G[f+10|0]<<16|G[f+11|0]<<24);F[b+12>>2]=c;c=G[f+4|0]|G[f+5|0]<<8|(G[f+6|0]<<16|G[f+7|0]<<24);F[b>>2]=G[f|0]|G[f+1|0]<<8|(G[f+2|0]<<16|G[f+3|0]<<24);F[b+4>>2]=c;f=f+16|0;d=d+16|0;e=e-16|0;if(e>>>0>15){continue}break}}n=0;a:{if(e){c=0;if(e-1>>>0>=3){o=e&-4;while(1){k=b+c|0;D[k|0]=G[k|0]^G[c+d|0];k=c|1;m=k+b|0;D[m|0]=G[m|0]^G[d+k|0];k=c|2;m=k+b|0;D[m|0]=G[m|0]^G[d+k|0];k=c|3;m=k+b|0;D[m|0]=G[m|0]^G[d+k|0];c=c+4|0;a=a+4|0;if((o|0)!=(a|0)){continue}break}}a=e&3;if(a){while(1){o=b+c|0;D[o|0]=G[o|0]^G[c+d|0];c=c+1|0;l=l+1|0;if((a|0)!=(l|0)){continue}break}}a=e;if(a>>>0>15){break a}}c=16-e|0;d=a;e=0-a&3;if(e){while(1){l=b+d|0;D[l|0]=c^G[l|0];d=d+1|0;n=n+1|0;if((e|0)!=(n|0)){continue}break}}if(a-13>>>0<3){break a}while(1){a=b+d|0;D[a|0]=c^G[a|0];D[a+1|0]=c^G[a+1|0];D[a+2|0]=c^G[a+2|0];D[a+3|0]=c^G[a+3|0];d=d+4|0;if((d|0)!=16){continue}break}}a=b+16|0;Jb(b,f,a);ia(a,240);ia(b,16);_=b+256|0;ka(j+32|0,32,h,i-8|0,g);b=F[j+84>>2];a=(h+i|0)-8|0;c=F[j+80>>2];D[a|0]=c;D[a+1|0]=c>>>8;D[a+2|0]=c>>>16;D[a+3|0]=c>>>24;D[a+4|0]=b;D[a+5|0]=b>>>8;D[a+6|0]=b>>>16;D[a+7|0]=b>>>24;ia(j,80);l=i}_=j+160|0;return l|0}function fb(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0;F[a+16>>2]=0;F[a+20>>2]=0;F[a+12>>2]=c;F[a+8>>2]=b;F[a+4>>2]=0;E[a>>1]=0;F[a+24>>2]=0;F[a+28>>2]=0;a:{if(c>>>0<=d>>>0){break a}D[a|0]=G[b|0];c=c-d|0;if((c|0)==1){break a}h=b+c|0;c=b+1|0;while(1){d=c;e=c;if(G[c|0]==10){c=d+1|0;b=c;while(1){b:{if((b|0)==(h|0)){g=h;break b}e=D[b|0];g=b+1|0;b=g;if((e|0)<0){continue}}break}c:{if((c|0)==(g|0)){c=0;break c}e=(d^-1)+g|0;i=e&3;f=0;c=0;b=g;if((b-d|0)-2>>>0>=3){j=e&-4;e=0;while(1){c=(G[b-2|0]&127|(c<<14|(G[b-1|0]&127)<<7))<<14|(G[b-3|0]&127)<<7;b=b-4|0;c=c|G[b|0]&127;e=e+4|0;if((j|0)!=(e|0)){continue}break}}if(i){while(1){b=b-1|0;c=G[b|0]&127|c<<7;f=f+1|0;if((i|0)!=(f|0)){continue}break}}if(h-g>>>0>>0){break a}}F[a+20>>2]=c;F[a+16>>2]=g;e=c+g|0}if((e|0)==(h|0)){break a}d:{if(G[e|0]!=16){c=e;break d}g=e+1|0;b=g;while(1){e:{if((b|0)==(h|0)){c=h;break e}f=D[b|0];c=b+1|0;b=c;if((f|0)<0){continue}}break}f:{if((c|0)==(g|0)){f=0;break f}j=(e^-1)+c|0;i=j&3;g=0;f=0;b=c;if((b-e|0)-2>>>0>=3){j=j&-4;e=0;while(1){f=(G[b-2|0]&127|(f<<14|(G[b-1|0]&127)<<7))<<14|(G[b-3|0]&127)<<7;b=b-4|0;f=f|G[b|0]&127;e=e+4|0;if((j|0)!=(e|0)){continue}break}}if(!i){break f}while(1){b=b-1|0;f=G[b|0]&127|f<<7;g=g+1|0;if((i|0)!=(g|0)){continue}break}}D[a+1|0]=1;F[a+4>>2]=f}if((c|0)==(h|0)){break a}if(G[c|0]==34){g=c+1|0;b=g;while(1){g:{if((b|0)==(h|0)){e=h;break g}f=D[b|0];e=b+1|0;b=e;if((f|0)<0){continue}}break}h:{if((e|0)==(g|0)){f=0;break h}j=(c^-1)+e|0;i=j&3;g=0;f=0;b=e;if((b-c|0)-2>>>0>=3){j=j&-4;c=0;while(1){f=(G[b-2|0]&127|(f<<14|(G[b-1|0]&127)<<7))<<14|(G[b-3|0]&127)<<7;b=b-4|0;f=f|G[b|0]&127;c=c+4|0;if((j|0)!=(c|0)){continue}break}}if(i){while(1){b=b-1|0;f=G[b|0]&127|f<<7;g=g+1|0;if((i|0)!=(g|0)){continue}break}}if(h-e>>>0>>0){break a}}F[a+28>>2]=f;F[a+24>>2]=e;c=e+f|0}i:{if((c|0)==(h|0)|(c|0)!=(d|0)){break i}j:{switch(G[d|0]&7){case 0:while(1){k:{if((d|0)==(h|0)){b=h;break k}c=D[d|0];b=d+1|0;d=b;if((c|0)<0){continue}}break};while(1){if((b|0)==(h|0)){c=h;break i}d=D[b|0];c=b+1|0;b=c;if((d|0)<0){continue}break};break i;case 2:break j;default:break a}}while(1){l:{if((d|0)==(h|0)){c=h;break l}b=D[d|0];c=d+1|0;d=c;if((b|0)<0){continue}}break}b=c;while(1){m:{if((b|0)==(h|0)){g=h;break m}d=D[b|0];g=b+1|0;b=g;if((d|0)<0){continue}}break}if((c|0)==(g|0)){break i}i=g-c|0;e=i&3;f=0;d=0;b=g;if(b+(c^-1)>>>0>=3){i=i&-4;c=0;while(1){d=(G[b-2|0]&127|(d<<14|(G[b-1|0]&127)<<7))<<14|(G[b-3|0]&127)<<7;b=b-4|0;d=d|G[b|0]&127;c=c+4|0;if((i|0)!=(c|0)){continue}break}}if(e){while(1){b=b-1|0;d=G[b|0]&127|d<<7;f=f+1|0;if((e|0)!=(f|0)){continue}break}}if(h-g>>>0>>0){break a}c=d+g|0}if((c|0)!=(h|0)){continue}break}}}function wa(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;F[a+80>>2]=0;F[a+84>>2]=0;b=F[a+4>>2];d=b;c=F[a>>2];g=b>>31>>>6|0;h=c+g|0;b=g>>>0>h>>>0?b+1|0:b;f=h;g=f&-67108864;i=c-g|0;F[a>>2]=i;h=d-((c>>>0>>0)+b|0)|0;F[a+4>>2]=h;c=b;b=b>>26;d=(c&67108863)<<6|f>>>26;c=d+F[a+8>>2]|0;b=b+F[a+12>>2]|0;b=c>>>0>>0?b+1|0:b;g=b;e=b>>31>>>7|0;f=e+c|0;b=f>>>0>>0?b+1|0:b;d=a;e=f&-33554432;F[d+8>>2]=c-e;F[d+12>>2]=g-((c>>>0>>0)+b|0);c=b;b=b>>25;d=(c&33554431)<<7|f>>>25;c=d+F[a+16>>2]|0;b=b+F[a+20>>2]|0;b=c>>>0>>0?b+1|0:b;g=b;e=b>>31>>>6|0;f=e+c|0;b=f>>>0>>0?b+1|0:b;d=a;e=f&-67108864;F[d+16>>2]=c-e;F[d+20>>2]=g-((c>>>0>>0)+b|0);c=b;b=b>>26;d=(c&67108863)<<6|f>>>26;c=d+F[a+24>>2]|0;b=b+F[a+28>>2]|0;b=c>>>0>>0?b+1|0:b;g=b;e=b>>31>>>7|0;f=e+c|0;b=f>>>0>>0?b+1|0:b;d=a;e=f&-33554432;F[d+24>>2]=c-e;F[d+28>>2]=g-((c>>>0>>0)+b|0);c=b;b=b>>25;d=(c&33554431)<<7|f>>>25;c=d+F[a+32>>2]|0;b=b+F[a+36>>2]|0;b=c>>>0>>0?b+1|0:b;g=b;e=b>>31>>>6|0;f=e+c|0;b=f>>>0>>0?b+1|0:b;d=a;e=f&-67108864;F[d+32>>2]=c-e;F[d+36>>2]=g-((c>>>0>>0)+b|0);c=b;b=b>>26;d=(c&67108863)<<6|f>>>26;c=d+F[a+40>>2]|0;b=b+F[a+44>>2]|0;b=c>>>0>>0?b+1|0:b;g=b;e=b>>31>>>7|0;f=e+c|0;b=f>>>0>>0?b+1|0:b;d=a;e=f&-33554432;F[d+40>>2]=c-e;F[d+44>>2]=g-((c>>>0>>0)+b|0);c=b;b=b>>25;d=(c&33554431)<<7|f>>>25;c=d+F[a+48>>2]|0;b=b+F[a+52>>2]|0;b=c>>>0>>0?b+1|0:b;g=b;e=b>>31>>>6|0;f=e+c|0;b=f>>>0>>0?b+1|0:b;d=a;e=f&-67108864;F[d+48>>2]=c-e;F[d+52>>2]=g-((c>>>0>>0)+b|0);c=b;b=b>>26;d=(c&67108863)<<6|f>>>26;c=d+F[a+56>>2]|0;b=b+F[a+60>>2]|0;b=c>>>0>>0?b+1|0:b;g=b;e=b>>31>>>7|0;f=e+c|0;b=f>>>0>>0?b+1|0:b;d=a;e=f&-33554432;F[d+56>>2]=c-e;F[d+60>>2]=g-((c>>>0>>0)+b|0);c=b;b=b>>25;d=(c&33554431)<<7|f>>>25;c=d+F[a+64>>2]|0;b=b+F[a+68>>2]|0;b=c>>>0>>0?b+1|0:b;g=b;e=b>>31>>>6|0;f=e+c|0;b=f>>>0>>0?b+1|0:b;d=a;e=f&-67108864;F[d+64>>2]=c-e;F[d+68>>2]=g-((c>>>0>>0)+b|0);c=b;b=b>>26;d=(c&67108863)<<6|f>>>26;c=d+F[a+72>>2]|0;b=b+F[a+76>>2]|0;b=c>>>0>>0?b+1|0:b;g=b;e=b>>31>>>7|0;f=e+c|0;b=f>>>0>>0?b+1|0:b;d=a;e=f&-33554432;F[d+72>>2]=c-e;F[d+76>>2]=g-((c>>>0>>0)+b|0);d=F[d+80>>2];c=F[a+84>>2];F[a+80>>2]=0;F[a+84>>2]=0;g=c;c=b;b=b>>25;e=d;d=(c&33554431)<<7|f>>>25;c=e+d|0;b=b+g|0;b=c>>>0>>0?b+1|0:b;d=c;g=c+i|0;c=b;b=b+h|0;h=se(d,c,18,0);c=h+g|0;b=$+(d>>>0>g>>>0?b+1|0:b)|0;b=c>>>0>>0?b+1|0:b;h=b;i=b>>31>>>6|0;d=i+c|0;b=d>>>0>>0?b+1|0:b;i=d&-67108864;F[a>>2]=c-i;F[a+4>>2]=h-((c>>>0>>0)+b|0);h=F[a+12>>2];c=a;a=b;b=b>>26;g=(a&67108863)<<6|d>>>26;a=g+F[c+8>>2]|0;b=b+h|0;F[c+8>>2]=a;F[c+12>>2]=a>>>0>>0?b+1|0:b}function ka(a,b,c,d,e){var f=0,g=0;f=_-384|0;_=f;F[f+128>>2]=0;F[f+132>>2]=0;F[f+136>>2]=0;F[f+140>>2]=0;F[f+144>>2]=0;F[f+148>>2]=0;F[f+152>>2]=0;F[f+156>>2]=0;F[f+160>>2]=0;F[f+164>>2]=0;F[f+168>>2]=0;F[f+172>>2]=0;F[f+112>>2]=0;F[f+116>>2]=0;F[f+120>>2]=0;F[f+124>>2]=0;a:{if(b>>>0>=65){g=f+176|0;F[g+80>>2]=1779033703;F[g+84>>2]=-1150833019;F[g+72>>2]=0;F[g+76>>2]=0;F[g+64>>2]=0;F[g+104>>2]=528734635;F[g+108>>2]=1541459225;F[g+96>>2]=1359893119;F[g+100>>2]=-1694144372;F[g+88>>2]=1013904242;F[g+92>>2]=-1521486534;ra(g,a,b);Ba(g,f+112|0);break a}ja(f+112|0,a,b)}a=F[f+172>>2];F[f+232>>2]=F[f+168>>2];F[f+236>>2]=a;a=F[f+164>>2];F[f+224>>2]=F[f+160>>2];F[f+228>>2]=a;a=F[f+156>>2];F[f+216>>2]=F[f+152>>2];F[f+220>>2]=a;a=F[f+148>>2];F[f+208>>2]=F[f+144>>2];F[f+212>>2]=a;a=F[f+140>>2];F[f+200>>2]=F[f+136>>2];F[f+204>>2]=a;a=F[f+132>>2];F[f+192>>2]=F[f+128>>2];F[f+196>>2]=a;a=F[f+124>>2];F[f+184>>2]=F[f+120>>2];F[f+188>>2]=a;a=F[f+116>>2];F[f+176>>2]=F[f+112>>2];F[f+180>>2]=a;b=0;while(1){a=f+176|0;g=a+b|0;D[g|0]=G[g|0]^54;g=a+(b|1)|0;D[g|0]=G[g|0]^54;g=a+(b|2)|0;D[g|0]=G[g|0]^54;a=a+(b|3)|0;D[a|0]=G[a|0]^54;b=b+4|0;if((b|0)!=64){continue}break}F[f+80>>2]=1779033703;F[f+84>>2]=-1150833019;F[f+72>>2]=0;F[f+76>>2]=0;F[f+64>>2]=0;F[f+104>>2]=528734635;F[f+108>>2]=1541459225;F[f+96>>2]=1359893119;F[f+100>>2]=-1694144372;F[f+88>>2]=1013904242;F[f+92>>2]=-1521486534;a=f+176|0;ra(f,a,64);ia(a,64);ra(f,c,d);a=F[f+172>>2];F[f+344>>2]=F[f+168>>2];F[f+348>>2]=a;a=F[f+164>>2];F[f+336>>2]=F[f+160>>2];F[f+340>>2]=a;a=F[f+156>>2];F[f+328>>2]=F[f+152>>2];F[f+332>>2]=a;a=F[f+148>>2];F[f+320>>2]=F[f+144>>2];F[f+324>>2]=a;a=F[f+140>>2];F[f+312>>2]=F[f+136>>2];F[f+316>>2]=a;a=F[f+132>>2];F[f+304>>2]=F[f+128>>2];F[f+308>>2]=a;a=F[f+124>>2];F[f+296>>2]=F[f+120>>2];F[f+300>>2]=a;a=F[f+116>>2];F[f+288>>2]=F[f+112>>2];F[f+292>>2]=a;b=0;while(1){a=f+288|0;c=a+b|0;D[c|0]=G[c|0]^92;c=a+(b|1)|0;D[c|0]=G[c|0]^92;c=a+(b|2)|0;D[c|0]=G[c|0]^92;a=a+(b|3)|0;D[a|0]=G[a|0]^92;b=b+4|0;if((b|0)!=64){continue}break}Ba(f,f+352|0);a=f+176|0;F[a+80>>2]=1779033703;F[a+84>>2]=-1150833019;F[a+72>>2]=0;F[a+76>>2]=0;F[a+64>>2]=0;F[a+104>>2]=528734635;F[a+108>>2]=1541459225;F[a+96>>2]=1359893119;F[a+100>>2]=-1694144372;F[a+88>>2]=1013904242;F[a+92>>2]=-1521486534;b=f+288|0;ra(a,b,96);Ba(a,e);ia(a,112);ia(b,96);ia(f+112|0,64);ia(f,112);_=f+384|0}function Ia(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,G=0;e=F[b+44>>2];d=F[b+48>>2];g=F[b+52>>2];h=F[b+56>>2];i=F[b+60>>2];f=b- -64|0;j=F[f>>2];k=F[b+68>>2];l=F[b+72>>2];m=F[b+76>>2];n=F[b+4>>2];o=F[b+8>>2];p=F[b+12>>2];q=F[b+16>>2];r=F[b+20>>2];s=F[b+24>>2];t=F[b+28>>2];u=F[b+32>>2];v=F[b+36>>2];F[a>>2]=F[b>>2]+F[b+40>>2];F[a+36>>2]=m+v;F[a+32>>2]=l+u;F[a+28>>2]=k+t;F[a+24>>2]=j+s;F[a+20>>2]=i+r;F[a+16>>2]=h+q;F[a+12>>2]=g+p;F[a+8>>2]=d+o;F[a+4>>2]=e+n;d=F[b+44>>2];g=F[b+48>>2];h=F[b+52>>2];i=F[b+56>>2];j=F[b+60>>2];f=F[f>>2];e=F[b+68>>2];k=F[b+72>>2];l=F[b>>2];m=F[b+40>>2];n=F[b+4>>2];o=F[b+8>>2];p=F[b+12>>2];q=F[b+16>>2];r=F[b+20>>2];s=F[b+24>>2];t=F[b+28>>2];u=F[b+32>>2];F[a+76>>2]=F[b+76>>2]-F[b+36>>2];F[a+72>>2]=k-u;F[a+68>>2]=e-t;e=a- -64|0;F[e>>2]=f-s;F[a+60>>2]=j-r;F[a+56>>2]=i-q;F[a+52>>2]=h-p;F[a+48>>2]=g-o;F[a+44>>2]=d-n;F[a+40>>2]=m-l;ha(a+80|0,a,c);d=a+40|0;ha(d,d,c+40|0);ha(a+120|0,c+120|0,b+120|0);ha(a,b+80|0,c+80|0);b=F[a+44>>2];c=F[a+84>>2];d=F[a+48>>2];g=F[a+88>>2];h=F[a+52>>2];i=F[a+92>>2];f=F[a+56>>2];j=F[a+96>>2];k=F[a+60>>2];l=F[a+100>>2];m=F[e>>2];n=F[a+104>>2];o=F[a+68>>2];p=F[a+108>>2];q=F[a+72>>2];r=F[a+112>>2];u=F[a>>2];v=F[a+4>>2];y=F[a+8>>2];z=F[a+12>>2];A=F[a+16>>2];B=F[a+20>>2];C=F[a+24>>2];D=F[a+28>>2];E=F[a+32>>2];G=F[a+36>>2];s=F[a+40>>2];t=F[a+80>>2];w=F[a+76>>2];x=F[a+116>>2];F[a+76>>2]=w+x;F[a+72>>2]=q+r;F[a+68>>2]=o+p;F[e>>2]=m+n;F[a+60>>2]=k+l;F[a+56>>2]=f+j;F[a+52>>2]=h+i;F[a+48>>2]=d+g;F[a+44>>2]=b+c;F[a+40>>2]=s+t;F[a+36>>2]=x-w;F[a+32>>2]=r-q;F[a+28>>2]=p-o;F[a+24>>2]=n-m;F[a+20>>2]=l-k;F[a+16>>2]=j-f;F[a+12>>2]=i-h;F[a+8>>2]=g-d;F[a+4>>2]=c-b;F[a>>2]=t-s;b=G<<1;c=F[a+156>>2];F[a+156>>2]=b-c;e=E<<1;d=F[a+152>>2];F[a+152>>2]=e-d;g=D<<1;h=F[a+148>>2];F[a+148>>2]=g-h;i=C<<1;f=F[a+144>>2];F[a+144>>2]=i-f;j=B<<1;k=F[a+140>>2];F[a+140>>2]=j-k;l=A<<1;m=F[a+136>>2];F[a+136>>2]=l-m;n=z<<1;o=F[a+132>>2];F[a+132>>2]=n-o;p=y<<1;q=F[a+128>>2];F[a+128>>2]=p-q;r=v<<1;s=F[a+124>>2];F[a+124>>2]=r-s;t=u<<1;u=F[a+120>>2];F[a+120>>2]=t-u;F[a+112>>2]=d+e;F[a+108>>2]=g+h;F[a+104>>2]=i+f;F[a+100>>2]=j+k;F[a+96>>2]=l+m;F[a+92>>2]=n+o;F[a+88>>2]=p+q;F[a+84>>2]=r+s;F[a+80>>2]=t+u;F[a+116>>2]=b+c}function lb(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,G=0;e=F[b+44>>2];d=F[b+48>>2];g=F[b+52>>2];h=F[b+56>>2];i=F[b+60>>2];f=b- -64|0;j=F[f>>2];k=F[b+68>>2];l=F[b+72>>2];m=F[b+76>>2];n=F[b+4>>2];o=F[b+8>>2];p=F[b+12>>2];q=F[b+16>>2];r=F[b+20>>2];s=F[b+24>>2];t=F[b+28>>2];u=F[b+32>>2];v=F[b+36>>2];F[a>>2]=F[b>>2]+F[b+40>>2];F[a+36>>2]=m+v;F[a+32>>2]=l+u;F[a+28>>2]=k+t;F[a+24>>2]=j+s;F[a+20>>2]=i+r;F[a+16>>2]=h+q;F[a+12>>2]=g+p;F[a+8>>2]=d+o;F[a+4>>2]=e+n;d=F[b+44>>2];g=F[b+48>>2];h=F[b+52>>2];i=F[b+56>>2];j=F[b+60>>2];f=F[f>>2];e=F[b+68>>2];k=F[b+72>>2];l=F[b>>2];m=F[b+40>>2];n=F[b+4>>2];o=F[b+8>>2];p=F[b+12>>2];q=F[b+16>>2];r=F[b+20>>2];s=F[b+24>>2];t=F[b+28>>2];u=F[b+32>>2];F[a+76>>2]=F[b+76>>2]-F[b+36>>2];F[a+72>>2]=k-u;F[a+68>>2]=e-t;e=a- -64|0;F[e>>2]=f-s;F[a+60>>2]=j-r;F[a+56>>2]=i-q;F[a+52>>2]=h-p;F[a+48>>2]=g-o;F[a+44>>2]=d-n;F[a+40>>2]=m-l;ha(a+80|0,a,c);d=a+40|0;ha(d,d,c+40|0);ha(a+120|0,c+80|0,b+120|0);u=F[b+84>>2];v=F[b+88>>2];y=F[b+92>>2];z=F[b+96>>2];A=F[b+100>>2];B=F[b+104>>2];C=F[b+108>>2];D=F[b+112>>2];E=F[b+116>>2];c=F[a+44>>2];d=F[a+84>>2];g=F[a+48>>2];h=F[a+88>>2];i=F[a+52>>2];f=F[a+92>>2];j=F[a+56>>2];k=F[a+96>>2];l=F[a+60>>2];m=F[a+100>>2];n=F[e>>2];o=F[a+104>>2];p=F[a+68>>2];q=F[a+108>>2];r=F[a+72>>2];s=F[a+112>>2];G=F[b+80>>2];b=F[a+40>>2];t=F[a+80>>2];w=F[a+76>>2];x=F[a+116>>2];F[a+76>>2]=w+x;F[a+72>>2]=r+s;F[a+68>>2]=p+q;F[e>>2]=n+o;F[a+60>>2]=l+m;F[a+56>>2]=j+k;F[a+52>>2]=i+f;F[a+48>>2]=g+h;F[a+44>>2]=c+d;F[a+40>>2]=b+t;F[a+36>>2]=x-w;F[a+32>>2]=s-r;F[a+28>>2]=q-p;F[a+24>>2]=o-n;F[a+20>>2]=m-l;F[a+16>>2]=k-j;F[a+12>>2]=f-i;F[a+8>>2]=h-g;F[a+4>>2]=d-c;F[a>>2]=t-b;b=E<<1;c=F[a+156>>2];F[a+156>>2]=b-c;e=D<<1;d=F[a+152>>2];F[a+152>>2]=e-d;g=C<<1;h=F[a+148>>2];F[a+148>>2]=g-h;i=B<<1;f=F[a+144>>2];F[a+144>>2]=i-f;j=A<<1;k=F[a+140>>2];F[a+140>>2]=j-k;l=z<<1;m=F[a+136>>2];F[a+136>>2]=l-m;n=y<<1;o=F[a+132>>2];F[a+132>>2]=n-o;p=v<<1;q=F[a+128>>2];F[a+128>>2]=p-q;r=u<<1;s=F[a+124>>2];F[a+124>>2]=r-s;t=G<<1;u=F[a+120>>2];F[a+120>>2]=t-u;F[a+112>>2]=d+e;F[a+108>>2]=g+h;F[a+104>>2]=i+f;F[a+100>>2]=j+k;F[a+96>>2]=l+m;F[a+92>>2]=n+o;F[a+88>>2]=p+q;F[a+84>>2]=r+s;F[a+80>>2]=t+u;F[a+116>>2]=b+c}function Nb(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;c=_-480|0;_=c;while(1){f=c+288|0;e=f+(d<<1)|0;k=G[b+d|0];D[e+1|0]=k>>>4;D[e|0]=k&15;e=d|1;f=f+(e<<1)|0;e=G[b+e|0];D[f+1|0]=e>>>4;D[f|0]=e&15;d=d+2|0;if((d|0)!=32){continue}break}b=0;while(1){d=b;b=(c+288|0)+g|0;f=d+G[b|0]|0;d=(f<<24)- -134217728|0;D[b|0]=f-(d>>24&240);f=G[b+1|0]+(d>>28)|0;d=(f<<24)- -134217728|0;D[b+1|0]=f-(d>>24&240);f=G[b+2|0]+(d>>28)|0;d=(f<<24)- -134217728|0;D[b+2|0]=f-(d>>24&240);b=d>>28;g=g+3|0;if((g|0)!=63){continue}break}D[c+351|0]=G[c+351|0]+b;F[a+32>>2]=0;F[a+36>>2]=0;F[a+24>>2]=0;F[a+28>>2]=0;F[a+16>>2]=0;F[a+20>>2]=0;F[a+8>>2]=0;F[a+12>>2]=0;F[a>>2]=0;F[a+4>>2]=0;F[a+44>>2]=0;F[a+48>>2]=0;F[a+40>>2]=1;F[a+52>>2]=0;F[a+56>>2]=0;F[a+60>>2]=0;F[a+64>>2]=0;F[a+68>>2]=0;F[a+72>>2]=0;F[a+76>>2]=0;F[a+80>>2]=1;qa(a+84|0,0,76);k=a+120|0;p=a+80|0;q=a+40|0;b=c+208|0;f=c+168|0;g=c+248|0;d=1;while(1){h=c+8|0;Mb(h,d>>>1|0,D[(c+288|0)+d|0]);e=c+128|0;lb(e,a,h);ha(a,e,g);ha(q,f,b);ha(p,b,g);ha(k,e,f);e=d>>>0<62;d=d+2|0;if(e){continue}break}d=F[a>>2];e=F[a+4>>2];h=F[a+8>>2];i=F[a+12>>2];j=F[a+16>>2];l=F[a+20>>2];m=F[a+24>>2];n=F[a+28>>2];o=F[a+36>>2];F[c+392>>2]=F[a+32>>2];F[c+396>>2]=o;F[c+384>>2]=m;F[c+388>>2]=n;F[c+376>>2]=j;F[c+380>>2]=l;F[c+368>>2]=h;F[c+372>>2]=i;F[c+360>>2]=d;F[c+364>>2]=e;d=F[a+48>>2];e=F[a+52>>2];h=F[a+56>>2];i=F[a+60>>2];j=a- -64|0;l=F[j>>2];j=F[j+4>>2];m=F[a+40>>2];n=F[a+44>>2];o=F[a+76>>2];F[c+432>>2]=F[a+72>>2];F[c+436>>2]=o;F[c+424>>2]=l;F[c+428>>2]=j;F[c+416>>2]=h;F[c+420>>2]=i;F[c+408>>2]=d;F[c+412>>2]=e;F[c+400>>2]=m;F[c+404>>2]=n;d=F[a+88>>2];e=F[a+92>>2];h=F[a+96>>2];i=F[a+100>>2];j=F[a+104>>2];l=F[a+108>>2];m=F[a+80>>2];n=F[a+84>>2];o=F[a+116>>2];F[c+472>>2]=F[a+112>>2];F[c+476>>2]=o;F[c+464>>2]=j;F[c+468>>2]=l;F[c+456>>2]=h;F[c+460>>2]=i;F[c+448>>2]=d;F[c+452>>2]=e;F[c+440>>2]=m;F[c+444>>2]=n;d=c+128|0;e=c+360|0;Sa(d,e);ha(e,d,g);h=c+400|0;ha(h,f,b);i=c+440|0;ha(i,b,g);Sa(d,e);ha(e,d,g);ha(h,f,b);ha(i,b,g);Sa(d,e);ha(e,d,g);ha(h,f,b);ha(i,b,g);Sa(d,e);ha(a,d,g);ha(q,f,b);ha(p,b,g);ha(k,d,f);d=0;while(1){h=c+8|0;Mb(h,d>>>1|0,D[(c+288|0)+d|0]);e=c+128|0;lb(e,a,h);ha(a,e,g);ha(q,f,b);ha(p,b,g);ha(k,e,f);e=d>>>0<62;d=d+2|0;if(e){continue}break}_=c+480|0}function Ec(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;n=a+3216|0;b=Ya(b,c,d,e,n);a:{b:{if((b|0)==-1){break b}m=_-16|0;_=m;f=b+d|0;b=va(d,f,m+12|0);c:{if(!b){d=0;break c}d=0;d:{c=F[m+12>>2];if((c|0)!=1){if((c|0)!=-2147483647){break d}p=1}c=a+3220|0;if(!(!b|(b|0)==(f|0))){D[c|0]=G[b|0]!=0;i=b+1|0}if(!i){break c}b=Oa(i,f,a+3221|0);if(!b){break c}b=Oa(b,f,a+3253|0);if(!b){break c}b=Oa(b,f,a+3285|0);if(!b){break c}o=_-16|0;_=o;b=Ta(b,f,a+12|0,32);e:{if(!b){break e}i=a;g=a+44|0;a=0;j=_-16|0;_=j;b=va(b,f,j+12|0);f:{if(!b){break f}l=g+4|0;k=g+104|0;while(1){c=F[j+12>>2];F[j+12>>2]=c-1;if((b|0)==(f|0)){a=b;break f}if(!c){a=b;break f}c=l;d=k;h=F[g>>2];if((d|0)!=(h|0)){d=h+100|0;F[g>>2]=d;c=h}d=d-100|0;if((d|0)!=(c|0)){while(1){h=d;d=d-100|0;ja(h,d,100);if((c|0)!=(d|0)){continue}break}}b=Ja(b,f,c);if(!b){break f}b=Ta(b,f,c+68|0,32);if(!b){break f}b=va(b,f,c- -64|0);if(b){continue}break}}_=j+16|0;b=a;if(!b){break e}g=i+148|0;a=0;j=_-16|0;_=j;b=va(b,f,j+12|0);g:{if(!b){break g}l=g+276|0;k=g+344|0;while(1){c=F[j+12>>2];F[j+12>>2]=c-1;if((b|0)==(f|0)){a=b;break g}if(!c){a=b;break g}c=l;d=k;h=F[g>>2];if((d|0)!=(h|0)){d=h+68|0;F[g>>2]=d;c=h}d=d-68|0;if((d|0)!=(c|0)){while(1){h=d;d=d-68|0;ja(h,d,68);if((c|0)!=(d|0)){continue}break}}b=Oa(b,f,c);if(!b){break g}b=Ta(b,f,c+36|0,32);if(!b){break g}b=va(b,f,c+32|0);if(b){continue}break}}_=j+16|0;b=a;if(!b){break e}k=i+492|0;a=0;g=_-16|0;_=g;c=va(b,f,g+12|0);h:{if(!c){break h}h=k+2656|0;l=k+2724|0;while(1){b=F[g+12>>2];F[g+12>>2]=b-1;if((c|0)==(f|0)){a=c;break h}if(!b){a=c;break h}b=h;d=l;i=F[k>>2];if((d|0)!=(i|0)){d=i+68|0;F[k>>2]=d;b=i}d=d-68|0;if((d|0)!=(b|0)){while(1){i=d;d=d-68|0;ja(i,d,68);if((b|0)!=(d|0)){continue}break}}c=Oa(c,f,b);if(!c){break h}c=Ta(c,f,b+36|0,32);if(!c){break h}c=va(c,f,b+32|0);if(c){continue}break}}_=g+16|0;b=a;if(!b){break e}if(p){b=va(b,f,o+12|0);if(!b){break e}}q=b}_=o+16|0;d=q;break c}F[a+3216>>2]=9}_=m+16|0;i:{if(!d){if(F[n>>2]){break b}a=10;break i}a=17;if((d|0)==(f|0)){break a}}F[n>>2]=a}e=-1}return e|0}function dd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;d=b;b=F[b>>2]+7&-8;F[d>>2]=b+16;o=a;a=b;k=F[a>>2];b=F[a+4>>2];e=F[a+12>>2];m=e;g=_-32|0;_=g;e=e&2147483647;c=e-1006698496|0;f=e-1140785152|0;d=F[a+8>>2];a:{if((c|0)==(f|0)&d>>>0>>0|c>>>0>>0){a=d;d=m<<4|a>>>28;c=a<<4|b>>>28;e=d;a=b&268435455;b=a;if((a|0)==134217728&(k|0)!=0|a>>>0>134217728){a=e+1073741824|0;b=c+1|0;a=b?a:a+1|0;c=b;break a}a=e+1073741824|0;if(b^134217728|k){break a}b=c&1;e=b+c|0;c=e;a=b>>>0>c>>>0?a+1|0:a;break a}if(!(!d&(e|0)==2147418112?!(b|k):e>>>0<2147418112)){a=d;d=m<<4|a>>>28;c=a<<4|b>>>28;a=d&524287|2146959360;break a}c=0;a=2146435072;if(e>>>0>1140785151){break a}a=0;n=e>>>16|0;if(n>>>0<15249){break a}c=k;a=b;f=m&65535|65536;e=f;l=d;h=d;j=n-15233|0;b:{if(j&64){f=c;d=j+-64|0;c=d&31;if((d&63)>>>0>=32){a=f<>>32-c|a<>>0>=32){d=h<>>32-i|f<>>0>=32){d=0;h=a>>>i|0}else{d=a>>>i|0;h=((1<>>i}h=p|h;f=d|f;i=j&31;if((j&63)>>>0>=32){d=c<>>32-i|a<>2]=c;F[g+20>>2]=a;F[g+24>>2]=h;F[g+28>>2]=f;d=15361-n|0;c:{if(d&64){b=l;a=d+-64|0;f=a&31;if((a&63)>>>0>=32){d=0;k=e>>>f|0}else{d=e>>>f|0;k=((1<>>f}b=d;l=0;e=0;break c}if(!d){break c}f=l;a=64-d|0;c=a&31;if((a&63)>>>0>=32){a=f<>>32-c|e<>>0>=32){d=0;b=b>>>j|0}else{d=b>>>j|0;b=((1<>>j}k=h|b;b=d|f;d=l;f=a&31;if((a&63)>>>0>=32){a=0;l=e>>>f|0}else{a=e>>>f|0;l=((1<>>f}e=a}F[g>>2]=k;F[g+4>>2]=b;F[g+8>>2]=l;F[g+12>>2]=e;b=F[g+8>>2];e=F[g+4>>2];c=b<<4|e>>>28;a=F[g+12>>2]<<4|b>>>28;e=e&268435455;b=F[g>>2]|(F[g+16>>2]|F[g+24>>2]|(F[g+20>>2]|F[g+28>>2]))!=0;if((e|0)==134217728&(b|0)!=0|e>>>0>134217728){b=c+1|0;a=b?a:a+1|0;c=b;break a}if(e^134217728|b){break a}b=c+(c&1)|0;a=b>>>0>>0?a+1|0:a;c=b}_=g+32|0;x(0,c|0);x(1,m&-2147483648|a);K[o>>3]=z()}function wb(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0;F[d+4>>2]=0;F[d+8>>2]=0;D[d|0]=0;F[d+12>>2]=0;F[d+16>>2]=0;c=c- -64|0;if(c>>>0>>0){D[d|0]=G[a|0];b=b-c|0;a:{if((b|0)==1){break a}h=a+b|0;a=a+1|0;while(1){c=a;if(G[a|0]==8){f=c+1|0;b=f;while(1){b:{if((b|0)==(h|0)){a=h;break b}g=D[b|0];a=b+1|0;b=a;if((g|0)<0){continue}}break}c:{if((a|0)==(f|0)){e=0;break c}g=(c^-1)+a|0;i=g&3;f=0;e=0;b=a;if((b-c|0)-2>>>0>=3){k=g&-4;g=0;while(1){e=(G[b-2|0]&127|(e<<14|(G[b-1|0]&127)<<7))<<14|(G[b-3|0]&127)<<7;b=b-4|0;e=e|G[b|0]&127;g=g+4|0;if((k|0)!=(g|0)){continue}break}}if(!i){break c}while(1){b=b-1|0;e=G[b|0]&127|e<<7;f=f+1|0;if((i|0)!=(f|0)){continue}break}}F[d+4>>2]=e;k=1}if((a|0)==(h|0)){break a}if(G[a|0]==18){f=a+1|0;b=f;while(1){d:{if((b|0)==(h|0)){g=h;break d}e=D[b|0];g=b+1|0;b=g;if((e|0)<0){continue}}break}e:{if((g|0)==(f|0)){e=0;break e}j=(a^-1)+g|0;i=j&3;f=0;e=0;b=g;if((b-a|0)-2>>>0>=3){j=j&-4;a=0;while(1){e=(G[b-2|0]&127|(e<<14|(G[b-1|0]&127)<<7))<<14|(G[b-3|0]&127)<<7;b=b-4|0;e=e|G[b|0]&127;a=a+4|0;if((j|0)!=(a|0)){continue}break}}if(i){while(1){b=b-1|0;e=G[b|0]&127|e<<7;f=f+1|0;if((i|0)!=(f|0)){continue}break}}if(h-g>>>0>>0){break a}}F[d+16>>2]=e;F[d+12>>2]=g;a=e+g|0}f:{if((a|0)==(h|0)|(a|0)!=(c|0)){break f}g:{switch(G[c|0]&7){case 0:while(1){h:{if((c|0)==(h|0)){b=h;break h}a=D[c|0];b=c+1|0;c=b;if((a|0)<0){continue}}break};while(1){if((b|0)==(h|0)){a=h;break f}c=D[b|0];a=b+1|0;b=a;if((c|0)<0){continue}break};break f;case 2:break g;default:break a}}while(1){i:{if((c|0)==(h|0)){a=h;break i}b=D[c|0];a=c+1|0;c=a;if((b|0)<0){continue}}break}b=a;while(1){j:{if((b|0)==(h|0)){f=h;break j}c=D[b|0];f=b+1|0;b=f;if((c|0)<0){continue}}break}if((a|0)==(f|0)){break f}i=f-a|0;g=i&3;e=0;c=0;b=f;if(b+(a^-1)>>>0>=3){i=i&-4;a=0;while(1){c=(G[b-2|0]&127|(c<<14|(G[b-1|0]&127)<<7))<<14|(G[b-3|0]&127)<<7;b=b-4|0;c=c|G[b|0]&127;a=a+4|0;if((i|0)!=(a|0)){continue}break}}if(g){while(1){b=b-1|0;c=G[b|0]&127|c<<7;e=e+1|0;if((g|0)!=(e|0)){continue}break}}if(h-f>>>0>>0){break a}a=c+f|0}if((a|0)!=(h|0)){continue}break}}F[d+8>>2]=k}}function Ja(a,b,c){var d=0,e=0,f=0,g=0;a:{if(!a){break a}d=a+32|0;if(d>>>0>b>>>0){break a}f=G[a+4|0]|G[a+5|0]<<8|(G[a+6|0]<<16|G[a+7|0]<<24);g=G[a|0]|G[a+1|0]<<8|(G[a+2|0]<<16|G[a+3|0]<<24);D[c|0]=g;D[c+1|0]=g>>>8;D[c+2|0]=g>>>16;D[c+3|0]=g>>>24;D[c+4|0]=f;D[c+5|0]=f>>>8;D[c+6|0]=f>>>16;D[c+7|0]=f>>>24;f=G[a+28|0]|G[a+29|0]<<8|(G[a+30|0]<<16|G[a+31|0]<<24);g=G[a+24|0]|G[a+25|0]<<8|(G[a+26|0]<<16|G[a+27|0]<<24);D[c+24|0]=g;D[c+25|0]=g>>>8;D[c+26|0]=g>>>16;D[c+27|0]=g>>>24;D[c+28|0]=f;D[c+29|0]=f>>>8;D[c+30|0]=f>>>16;D[c+31|0]=f>>>24;f=G[a+20|0]|G[a+21|0]<<8|(G[a+22|0]<<16|G[a+23|0]<<24);g=G[a+16|0]|G[a+17|0]<<8|(G[a+18|0]<<16|G[a+19|0]<<24);D[c+16|0]=g;D[c+17|0]=g>>>8;D[c+18|0]=g>>>16;D[c+19|0]=g>>>24;D[c+20|0]=f;D[c+21|0]=f>>>8;D[c+22|0]=f>>>16;D[c+23|0]=f>>>24;f=G[a+12|0]|G[a+13|0]<<8|(G[a+14|0]<<16|G[a+15|0]<<24);g=G[a+8|0]|G[a+9|0]<<8|(G[a+10|0]<<16|G[a+11|0]<<24);D[c+8|0]=g;D[c+9|0]=g>>>8;D[c+10|0]=g>>>16;D[c+11|0]=g>>>24;D[c+12|0]=f;D[c+13|0]=f>>>8;D[c+14|0]=f>>>16;D[c+15|0]=f>>>24;a=a- -64|0;if(a>>>0>b>>>0){break a}e=G[d+4|0]|G[d+5|0]<<8|(G[d+6|0]<<16|G[d+7|0]<<24);b=G[d|0]|G[d+1|0]<<8|(G[d+2|0]<<16|G[d+3|0]<<24);D[c+32|0]=b;D[c+33|0]=b>>>8;D[c+34|0]=b>>>16;D[c+35|0]=b>>>24;D[c+36|0]=e;D[c+37|0]=e>>>8;D[c+38|0]=e>>>16;D[c+39|0]=e>>>24;e=G[d+28|0]|G[d+29|0]<<8|(G[d+30|0]<<16|G[d+31|0]<<24);b=G[d+24|0]|G[d+25|0]<<8|(G[d+26|0]<<16|G[d+27|0]<<24);D[c+56|0]=b;D[c+57|0]=b>>>8;D[c+58|0]=b>>>16;D[c+59|0]=b>>>24;D[c+60|0]=e;D[c+61|0]=e>>>8;D[c+62|0]=e>>>16;D[c+63|0]=e>>>24;e=G[d+20|0]|G[d+21|0]<<8|(G[d+22|0]<<16|G[d+23|0]<<24);b=G[d+16|0]|G[d+17|0]<<8|(G[d+18|0]<<16|G[d+19|0]<<24);D[c+48|0]=b;D[c+49|0]=b>>>8;D[c+50|0]=b>>>16;D[c+51|0]=b>>>24;D[c+52|0]=e;D[c+53|0]=e>>>8;D[c+54|0]=e>>>16;D[c+55|0]=e>>>24;e=G[d+12|0]|G[d+13|0]<<8|(G[d+14|0]<<16|G[d+15|0]<<24);b=G[d+8|0]|G[d+9|0]<<8|(G[d+10|0]<<16|G[d+11|0]<<24);D[c+40|0]=b;D[c+41|0]=b>>>8;D[c+42|0]=b>>>16;D[c+43|0]=b>>>24;D[c+44|0]=e;D[c+45|0]=e>>>8;D[c+46|0]=e>>>16;D[c+47|0]=e>>>24;e=a}return e}function Na(a,b){var c=0,d=0;c=G[b+4|0]|G[b+5|0]<<8|(G[b+6|0]<<16|G[b+7|0]<<24);d=G[b|0]|G[b+1|0]<<8|(G[b+2|0]<<16|G[b+3|0]<<24);D[a|0]=d;D[a+1|0]=d>>>8;D[a+2|0]=d>>>16;D[a+3|0]=d>>>24;D[a+4|0]=c;D[a+5|0]=c>>>8;D[a+6|0]=c>>>16;D[a+7|0]=c>>>24;c=G[b+28|0]|G[b+29|0]<<8|(G[b+30|0]<<16|G[b+31|0]<<24);d=G[b+24|0]|G[b+25|0]<<8|(G[b+26|0]<<16|G[b+27|0]<<24);D[a+24|0]=d;D[a+25|0]=d>>>8;D[a+26|0]=d>>>16;D[a+27|0]=d>>>24;D[a+28|0]=c;D[a+29|0]=c>>>8;D[a+30|0]=c>>>16;D[a+31|0]=c>>>24;c=G[b+20|0]|G[b+21|0]<<8|(G[b+22|0]<<16|G[b+23|0]<<24);d=G[b+16|0]|G[b+17|0]<<8|(G[b+18|0]<<16|G[b+19|0]<<24);D[a+16|0]=d;D[a+17|0]=d>>>8;D[a+18|0]=d>>>16;D[a+19|0]=d>>>24;D[a+20|0]=c;D[a+21|0]=c>>>8;D[a+22|0]=c>>>16;D[a+23|0]=c>>>24;c=G[b+12|0]|G[b+13|0]<<8|(G[b+14|0]<<16|G[b+15|0]<<24);d=G[b+8|0]|G[b+9|0]<<8|(G[b+10|0]<<16|G[b+11|0]<<24);D[a+8|0]=d;D[a+9|0]=d>>>8;D[a+10|0]=d>>>16;D[a+11|0]=d>>>24;D[a+12|0]=c;D[a+13|0]=c>>>8;D[a+14|0]=c>>>16;D[a+15|0]=c>>>24;c=G[b+36|0]|G[b+37|0]<<8|(G[b+38|0]<<16|G[b+39|0]<<24);d=G[b+32|0]|G[b+33|0]<<8|(G[b+34|0]<<16|G[b+35|0]<<24);D[a+32|0]=d;D[a+33|0]=d>>>8;D[a+34|0]=d>>>16;D[a+35|0]=d>>>24;D[a+36|0]=c;D[a+37|0]=c>>>8;D[a+38|0]=c>>>16;D[a+39|0]=c>>>24;c=G[b+44|0]|G[b+45|0]<<8|(G[b+46|0]<<16|G[b+47|0]<<24);d=G[b+40|0]|G[b+41|0]<<8|(G[b+42|0]<<16|G[b+43|0]<<24);D[a+40|0]=d;D[a+41|0]=d>>>8;D[a+42|0]=d>>>16;D[a+43|0]=d>>>24;D[a+44|0]=c;D[a+45|0]=c>>>8;D[a+46|0]=c>>>16;D[a+47|0]=c>>>24;c=G[b+52|0]|G[b+53|0]<<8|(G[b+54|0]<<16|G[b+55|0]<<24);d=G[b+48|0]|G[b+49|0]<<8|(G[b+50|0]<<16|G[b+51|0]<<24);D[a+48|0]=d;D[a+49|0]=d>>>8;D[a+50|0]=d>>>16;D[a+51|0]=d>>>24;D[a+52|0]=c;D[a+53|0]=c>>>8;D[a+54|0]=c>>>16;D[a+55|0]=c>>>24;c=G[b+60|0]|G[b+61|0]<<8|(G[b+62|0]<<16|G[b+63|0]<<24);b=G[b+56|0]|G[b+57|0]<<8|(G[b+58|0]<<16|G[b+59|0]<<24);D[a+56|0]=b;D[a+57|0]=b>>>8;D[a+58|0]=b>>>16;D[a+59|0]=b>>>24;D[a+60|0]=c;D[a+61|0]=c>>>8;D[a+62|0]=c>>>16;D[a+63|0]=c>>>24;return a- -64|0}function jc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;if(c>>>0<43){F[a+3216>>2]=2;return-1}c=_-96|0;_=c;d=a+3245|0;e=G[d+4|0]|G[d+5|0]<<8|(G[d+6|0]<<16|G[d+7|0]<<24);F[c+24>>2]=G[d|0]|G[d+1|0]<<8|(G[d+2|0]<<16|G[d+3|0]<<24);F[c+28>>2]=e;d=a+3237|0;e=G[d+4|0]|G[d+5|0]<<8|(G[d+6|0]<<16|G[d+7|0]<<24);F[c+16>>2]=G[d|0]|G[d+1|0]<<8|(G[d+2|0]<<16|G[d+3|0]<<24);F[c+20>>2]=e;d=G[a+3225|0]|G[a+3226|0]<<8|(G[a+3227|0]<<16|G[a+3228|0]<<24);F[c>>2]=G[a+3221|0]|G[a+3222|0]<<8|(G[a+3223|0]<<16|G[a+3224|0]<<24);F[c+4>>2]=d;d=a+3229|0;e=G[d+4|0]|G[d+5|0]<<8|(G[d+6|0]<<16|G[d+7|0]<<24);F[c+8>>2]=G[d|0]|G[d+1|0]<<8|(G[d+2|0]<<16|G[d+3|0]<<24);F[c+12>>2]=e;d=a+3261|0;e=G[d+4|0]|G[d+5|0]<<8|(G[d+6|0]<<16|G[d+7|0]<<24);F[c+40>>2]=G[d|0]|G[d+1|0]<<8|(G[d+2|0]<<16|G[d+3|0]<<24);F[c+44>>2]=e;d=a+3269|0;e=G[d+4|0]|G[d+5|0]<<8|(G[d+6|0]<<16|G[d+7|0]<<24);F[c+48>>2]=G[d|0]|G[d+1|0]<<8|(G[d+2|0]<<16|G[d+3|0]<<24);F[c+52>>2]=e;d=a+3277|0;e=G[d+4|0]|G[d+5|0]<<8|(G[d+6|0]<<16|G[d+7|0]<<24);F[c+56>>2]=G[d|0]|G[d+1|0]<<8|(G[d+2|0]<<16|G[d+3|0]<<24);F[c+60>>2]=e;d=G[a+3257|0]|G[a+3258|0]<<8|(G[a+3259|0]<<16|G[a+3260|0]<<24);F[c+32>>2]=G[a+3253|0]|G[a+3254|0]<<8|(G[a+3255|0]<<16|G[a+3256|0]<<24);F[c+36>>2]=d;d=a+3293|0;e=G[d+4|0]|G[d+5|0]<<8|(G[d+6|0]<<16|G[d+7|0]<<24);F[c+72>>2]=G[d|0]|G[d+1|0]<<8|(G[d+2|0]<<16|G[d+3|0]<<24);F[c+76>>2]=e;d=a+3301|0;e=G[d+4|0]|G[d+5|0]<<8|(G[d+6|0]<<16|G[d+7|0]<<24);F[c+80>>2]=G[d|0]|G[d+1|0]<<8|(G[d+2|0]<<16|G[d+3|0]<<24);F[c+84>>2]=e;d=a+3309|0;e=G[d+4|0]|G[d+5|0]<<8|(G[d+6|0]<<16|G[d+7|0]<<24);F[c+88>>2]=G[d|0]|G[d+1|0]<<8|(G[d+2|0]<<16|G[d+3|0]<<24);F[c+92>>2]=e;d=G[a+3289|0]|G[a+3290|0]<<8|(G[a+3291|0]<<16|G[a+3292|0]<<24);F[c+64>>2]=G[a+3285|0]|G[a+3286|0]<<8|(G[a+3287|0]<<16|G[a+3288|0]<<24);F[c+68>>2]=d;Kb(c,96,b+11|0);_=c+96|0;ma(b+11|0,32,b);return 43}function Fc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;l=a+7516|0;c=Ya(b,c,d,e,l);a:{b:{if((c|0)==-1){break b}f=a;b=0;h=_-16|0;_=h;g=c+d|0;a=va(d,g,h+12|0);c:{if(!a){break c}d:{switch(F[h+12>>2]-1|0){case 0:F[f+7516>>2]=13;break c;default:F[f+7516>>2]=9;break c;case 1:case 2:case 3:break d}}a=rb(a,g,f);if(!a){break c}a=Ja(a,g,f+96|0);if(!a){break c}k=f+160|0;i=_-16|0;_=i;c=va(a,g,i+12|0);e:{if(!c){break e}n=k+7132|0;o=k+7204|0;while(1){a=F[i+12>>2];F[i+12>>2]=a-1;if((c|0)==(g|0)){b=c;break e}if(!a){b=c;break e}a=n;d=o;j=F[k>>2];if((d|0)!=(j|0)){d=j+72|0;F[k>>2]=d;a=j}d=d-72|0;if((d|0)!=(a|0)){while(1){j=d;d=d-72|0;ja(j,d,72);if((a|0)!=(d|0)){continue}break}}d=va(c,g,a);if(!d){break e}c=0;if(!(!d|(d|0)==(g|0))){D[a+4|0]=G[d|0]!=0;c=d+1|0}if(!c){break e}c=Ja(c,g,a+5|0);if(c){continue}break}}_=i+16|0;a=b;if(!a){break c}b=F[h+12>>2];f:{if(b>>>0<=2){D[f+7364|0]=0;break f}g:{if((b|0)==3){a=va(a,g,f+7368|0);if(!a){break c}b=f+7372|0;c=0;if(!(!a|(a|0)==(g|0))){D[b|0]=G[a|0]!=0;c=a+1|0}if(!c){break c}a=Ja(c,g,f+7373|0);if(!a){break c}a=va(a,g,f+7440|0);if(!a){break c}d=f+7444|0;c=0;if(!(!a|(a|0)==(g|0))){D[d|0]=G[a|0]!=0;c=a+1|0}if(!c){break c}a=Ja(c,g,f+7445|0);if(!a){break c}if(G[b|0]){if(!G[f+7444|0]){break g}D[f+7364|0]=2;break f}D[f+7364|0]=0;break f}c=f+7364|0;b=0;if(!a|(a|0)==(g|0)){a=b}else{D[c|0]=G[a|0];a=a+1|0}if(!a){break c}if(!G[c|0]){break f}a=vb(a,g,f+7368|0);if(!a){break c}if(G[c|0]<2){break f}a=vb(a,g,f+7440|0);if(!a){break c}if(G[c|0]<3){break f}F[f+7516>>2]=10;break c}D[f+7364|0]=1}m=va(a,g,f+7512|0)}_=h+16|0;h:{if(!m){if(F[l>>2]){break b}a=10;break h}a=17;if((g|0)==(m|0)){break a}}F[l>>2]=a}e=-1}return e|0}function Ea(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;o=F[b>>2];d=F[a>>2];p=F[b+4>>2];e=F[a+4>>2];q=F[b+8>>2];f=F[a+8>>2];r=F[b+12>>2];g=F[a+12>>2];s=F[b+16>>2];h=F[a+16>>2];m=F[b+20>>2];i=F[a+20>>2];t=F[b+24>>2];j=F[a+24>>2];u=F[b+28>>2];k=F[a+28>>2];v=F[b+32>>2];l=F[a+32>>2];c=0-c|0;n=F[a+36>>2];F[a+36>>2]=c&(n^F[b+36>>2])^n;F[a+32>>2]=l^c&(l^v);F[a+28>>2]=k^c&(k^u);F[a+24>>2]=j^c&(j^t);F[a+20>>2]=i^c&(i^m);F[a+16>>2]=h^c&(h^s);F[a+12>>2]=g^c&(g^r);F[a+8>>2]=f^c&(f^q);F[a+4>>2]=e^c&(e^p);F[a>>2]=d^c&(d^o);d=F[a+44>>2];o=F[b+44>>2];e=F[a+48>>2];p=F[b+48>>2];f=F[a+52>>2];q=F[b+52>>2];g=F[a+56>>2];r=F[b+56>>2];h=F[a+60>>2];s=F[b+60>>2];m=a- -64|0;i=F[m>>2];t=F[b- -64>>2];j=F[a+68>>2];u=F[b+68>>2];k=F[a+72>>2];v=F[b+72>>2];l=F[a+40>>2];n=F[b+40>>2];w=F[a+76>>2];F[a+76>>2]=w^c&(F[b+76>>2]^w);F[a+72>>2]=k^c&(k^v);F[a+68>>2]=j^c&(j^u);F[m>>2]=i^c&(i^t);F[a+60>>2]=h^c&(h^s);F[a+56>>2]=g^c&(g^r);F[a+52>>2]=f^c&(f^q);F[a+48>>2]=e^c&(e^p);F[a+44>>2]=d^c&(d^o);F[a+40>>2]=l^c&(l^n);d=F[a+84>>2];o=F[b+84>>2];e=F[a+88>>2];p=F[b+88>>2];f=F[a+92>>2];q=F[b+92>>2];g=F[a+96>>2];r=F[b+96>>2];h=F[a+100>>2];s=F[b+100>>2];i=F[a+104>>2];m=F[b+104>>2];j=F[a+108>>2];t=F[b+108>>2];k=F[a+112>>2];u=F[b+112>>2];l=F[a+80>>2];v=F[b+80>>2];n=F[b+116>>2];b=F[a+116>>2];F[a+116>>2]=c&(n^b)^b;F[a+112>>2]=k^c&(k^u);F[a+108>>2]=j^c&(j^t);F[a+104>>2]=i^c&(i^m);F[a+100>>2]=h^c&(h^s);F[a+96>>2]=g^c&(g^r);F[a+92>>2]=f^c&(f^q);F[a+88>>2]=e^c&(e^p);F[a+84>>2]=d^c&(d^o);F[a+80>>2]=l^c&(l^v)}function nb(a,b){var c=0,d=0,e=0;c=_-192|0;_=c;e=c+144|0;fa(e,b);d=c+96|0;fa(d,e);fa(d,d);ha(d,b,d);ha(e,e,d);b=c+48|0;fa(b,e);ha(d,d,b);fa(b,d);fa(b,b);fa(b,b);fa(b,b);fa(b,b);ha(d,b,d);fa(b,d);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);ha(b,b,d);fa(c,b);fa(c,c);fa(c,c);fa(c,c);fa(c,c);fa(c,c);fa(c,c);fa(c,c);fa(c,c);fa(c,c);fa(c,c);fa(c,c);fa(c,c);fa(c,c);fa(c,c);fa(c,c);fa(c,c);fa(c,c);fa(c,c);fa(c,c);ha(b,c,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);ha(d,b,d);fa(b,d);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);ha(b,b,d);fa(c,b);b=1;while(1){fa(c,c);b=b+1|0;if((b|0)!=100){continue}break}b=c+48|0;ha(b,c,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);fa(b,b);d=c+96|0;ha(d,b,d);fa(d,d);fa(d,d);fa(d,d);fa(d,d);fa(d,d);ha(a,d,c+144|0);_=c+192|0}function kb(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;f=_-336|0;_=f;i=b+32|0;g=32;c=_-208|0;_=c;d=c- -64|0;F[d>>2]=327033209;F[d+4>>2]=1541459225;F[c+56>>2]=-79577749;F[c+60>>2]=528734635;F[c+48>>2]=725511199;F[c+52>>2]=-1694144372;F[c+40>>2]=-1377402159;F[c+44>>2]=1359893119;F[c+32>>2]=1595750129;F[c+36>>2]=-1521486534;F[c+24>>2]=-23791573;F[c+28>>2]=1013904242;F[c+16>>2]=-2067093701;F[c+20>>2]=-1150833019;F[c+8>>2]=-205731576;F[c+12>>2]=1779033703;F[c>>2]=0;F[c+4>>2]=0;F[c+72>>2]=0;if(a){j=c+76|0;while(1){a:{if(!(g>>>0<128|e)){ua(c,a);d=F[c+4>>2];e=F[c>>2]+1024|0;d=e>>>0<1024?d+1|0:d;F[c>>2]=e;F[c+4>>2]=d;g=g-128|0;a=a+128|0;break a}d=128-e|0;h=d>>>0>g>>>0?g:d;b:{if(!h){break b}m=h&3;k=0;c:{if(h-1>>>0<3){d=0;break c}n=h&-4;d=0;l=0;while(1){D[(d+e|0)+j|0]=G[a+d|0];e=d|1;D[(e+F[c+72>>2]|0)+j|0]=G[a+e|0];e=d|2;D[(e+F[c+72>>2]|0)+j|0]=G[a+e|0];e=d|3;D[(e+F[c+72>>2]|0)+j|0]=G[a+e|0];d=d+4|0;e=F[c+72>>2];l=l+4|0;if((n|0)!=(l|0)){continue}break}}if(!m){break b}while(1){D[(c+(d+e|0)|0)+76|0]=G[a+d|0];d=d+1|0;e=F[c+72>>2];k=k+1|0;if((k|0)!=(m|0)){continue}break}}g=g-h|0;a=a+h|0;d=e+h|0;F[c+72>>2]=d;if((d|0)!=128){break a}ua(c,j);F[c+72>>2]=0;d=F[c+4>>2];e=F[c>>2]+1024|0;d=e>>>0<1024?d+1|0:d;F[c>>2]=e;F[c+4>>2]=d}if(g){e=F[c+72>>2];continue}break}db(c,i)}_=c+208|0;D[i|0]=G[i|0]&248;D[i+31|0]=G[i+31|0]&63|64;Nb(f,i);a=f+256|0;nb(a,f+80|0);c=f+208|0;ha(c,f,a);d=f+160|0;ha(d,f+40|0,a);Ga(b,d);Ga(f+304|0,c);D[b+31|0]=G[b+31|0]^G[f+304|0]<<7;_=f+336|0}function Mb(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;d=_-128|0;_=d;F[a+4>>2]=0;F[a+8>>2]=0;F[a>>2]=1;F[a+12>>2]=0;F[a+16>>2]=0;F[a+20>>2]=0;F[a+24>>2]=0;F[a+28>>2]=0;F[a+32>>2]=0;F[a+36>>2]=0;F[a+40>>2]=1;qa(a+44|0,0,76);e=L(b,960);f=c-((c>>7&c)<<1)|0;b=0-!((f^1)&255)|0;Ea(a,e+6640|0,b>>>31|0);b=0-!((f^2)&255)|0;Ea(a,e+6760|0,b>>>31|0);b=0-!((f^3)&255)|0;Ea(a,e+6880|0,b>>>31|0);b=0-!((f^4)&255)|0;Ea(a,e+7e3|0,b>>>31|0);b=0-!((f^5)&255)|0;Ea(a,e+7120|0,b>>>31|0);b=0-!((f^6)&255)|0;Ea(a,e+7240|0,b>>>31|0);b=0-!((f^7)&255)|0;Ea(a,e+7360|0,b>>>31|0);b=0-!((f^8)&255)|0;Ea(a,e+7480|0,b>>>31|0);g=F[a+48>>2];h=F[a+52>>2];i=F[a+56>>2];j=F[a+60>>2];b=a- -64|0;k=F[b>>2];e=F[b+4>>2];f=F[a+40>>2];l=F[a+44>>2];b=F[a+76>>2];F[d+40>>2]=F[a+72>>2];F[d+44>>2]=b;F[d+32>>2]=k;F[d+36>>2]=e;F[d+24>>2]=i;F[d+28>>2]=j;F[d+16>>2]=g;F[d+20>>2]=h;F[d+8>>2]=f;F[d+12>>2]=l;g=F[a>>2];h=F[a+4>>2];i=F[a+8>>2];j=F[a+12>>2];k=F[a+16>>2];e=F[a+20>>2];f=F[a+24>>2];l=F[a+28>>2];b=F[a+36>>2];F[d+80>>2]=F[a+32>>2];F[d+84>>2]=b;F[d+72>>2]=f;F[d+76>>2]=l;b=d- -64|0;F[b>>2]=k;F[b+4>>2]=e;F[d+56>>2]=i;F[d+60>>2]=j;F[d+48>>2]=g;F[d+52>>2]=h;g=F[a+116>>2];h=F[a+84>>2];i=F[a+88>>2];j=F[a+92>>2];k=F[a+96>>2];e=F[a+100>>2];f=F[a+104>>2];l=F[a+108>>2];b=F[a+80>>2];F[d+120>>2]=0-F[a+112>>2];F[d+116>>2]=0-l;F[d+112>>2]=0-f;F[d+108>>2]=0-e;F[d+104>>2]=0-k;F[d+100>>2]=0-j;F[d+96>>2]=0-i;F[d+92>>2]=0-h;F[d+124>>2]=0-g;F[d+88>>2]=0-b;Ea(a,d+8|0,(c&128)>>>7|0);_=d+128|0}function Pd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=_-240|0;_=d;e=oa(c);a:{if((e|0)!=229){c=-1;if((e|0)==-1){F[a+300>>2]=7;break a}F[a+300>>2]=11;break a}Pa(b,c,d);b:{if(G[d|0]==2){c=d|5;b=G[d+1|0]|G[d+2|0]<<8|(G[d+3|0]<<16|G[d+4|0]<<24);b=b<<24|b<<8&16711680|(b>>>8&65280|b>>>24);$a(a,c,b);$a(a+132|0,c,b);b=G[d+161|0]|G[d+162|0]<<8|(G[d+163|0]<<16|G[d+164|0]<<24);c=G[d+157|0]|G[d+158|0]<<8|(G[d+159|0]<<16|G[d+160|0]<<24);D[a+288|0]=c;D[a+289|0]=c>>>8;D[a+290|0]=c>>>16;D[a+291|0]=c>>>24;D[a+292|0]=b;D[a+293|0]=b>>>8;D[a+294|0]=b>>>16;D[a+295|0]=b>>>24;b=G[d+153|0]|G[d+154|0]<<8|(G[d+155|0]<<16|G[d+156|0]<<24);c=G[d+149|0]|G[d+150|0]<<8|(G[d+151|0]<<16|G[d+152|0]<<24);D[a+280|0]=c;D[a+281|0]=c>>>8;D[a+282|0]=c>>>16;D[a+283|0]=c>>>24;D[a+284|0]=b;D[a+285|0]=b>>>8;D[a+286|0]=b>>>16;D[a+287|0]=b>>>24;b=G[d+145|0]|G[d+146|0]<<8|(G[d+147|0]<<16|G[d+148|0]<<24);c=G[d+141|0]|G[d+142|0]<<8|(G[d+143|0]<<16|G[d+144|0]<<24);D[a+272|0]=c;D[a+273|0]=c>>>8;D[a+274|0]=c>>>16;D[a+275|0]=c>>>24;D[a+276|0]=b;D[a+277|0]=b>>>8;D[a+278|0]=b>>>16;D[a+279|0]=b>>>24;b=G[d+137|0]|G[d+138|0]<<8|(G[d+139|0]<<16|G[d+140|0]<<24);c=G[d+133|0]|G[d+134|0]<<8|(G[d+135|0]<<16|G[d+136|0]<<24);D[a+264|0]=c;D[a+265|0]=c>>>8;D[a+266|0]=c>>>16;D[a+267|0]=c>>>24;D[a+268|0]=b;D[a+269|0]=b>>>8;D[a+270|0]=b>>>16;D[a+271|0]=b>>>24;if(!hb(a+264|0,d,165,d+165|0)){F[a+300>>2]=14;c=-1;break b}F[a+296>>2]=1;c=0;break b}F[a+300>>2]=11;c=-1}ia(d,229)}_=d+240|0;return c|0}function Fd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;f=_-144|0;_=f;a:{if(c>>>0<220){F[a+300>>2]=2;a=-1;break a}b:{c:{if((d-F[a+260>>2]|0)>=0){c=a+132|0;cb(c,d);ja(f+8|0,c,132);break c}if((d-F[a+128>>2]|0)<0){break b}c=f+8|0;ja(c,a,132);cb(c,d)}c=b+55|0;D[c+1|0]=d>>>24;D[c|0]=1;D[c+4|0]=d;D[c+3|0]=d>>>8;D[c+2|0]=d>>>16;ja(c+5|0,f+8|0,128);d=G[a+292|0]|G[a+293|0]<<8|(G[a+294|0]<<16|G[a+295|0]<<24);e=G[a+288|0]|G[a+289|0]<<8|(G[a+290|0]<<16|G[a+291|0]<<24);D[c+157|0]=e;D[c+158|0]=e>>>8;D[c+159|0]=e>>>16;D[c+160|0]=e>>>24;D[c+161|0]=d;D[c+162|0]=d>>>8;D[c+163|0]=d>>>16;D[c+164|0]=d>>>24;d=G[a+284|0]|G[a+285|0]<<8|(G[a+286|0]<<16|G[a+287|0]<<24);e=G[a+280|0]|G[a+281|0]<<8|(G[a+282|0]<<16|G[a+283|0]<<24);D[c+149|0]=e;D[c+150|0]=e>>>8;D[c+151|0]=e>>>16;D[c+152|0]=e>>>24;D[c+153|0]=d;D[c+154|0]=d>>>8;D[c+155|0]=d>>>16;D[c+156|0]=d>>>24;d=G[a+276|0]|G[a+277|0]<<8|(G[a+278|0]<<16|G[a+279|0]<<24);e=G[a+272|0]|G[a+273|0]<<8|(G[a+274|0]<<16|G[a+275|0]<<24);D[c+141|0]=e;D[c+142|0]=e>>>8;D[c+143|0]=e>>>16;D[c+144|0]=e>>>24;D[c+145|0]=d;D[c+146|0]=d>>>8;D[c+147|0]=d>>>16;D[c+148|0]=d>>>24;d=G[a+268|0]|G[a+269|0]<<8|(G[a+270|0]<<16|G[a+271|0]<<24);a=G[a+264|0]|G[a+265|0]<<8|(G[a+266|0]<<16|G[a+267|0]<<24);D[c+133|0]=a;D[c+134|0]=a>>>8;D[c+135|0]=a>>>16;D[c+136|0]=a>>>24;D[c+137|0]=d;D[c+138|0]=d>>>8;D[c+139|0]=d>>>16;D[c+140|0]=d>>>24;a=Ca(c,165,b);break a}F[a+300>>2]=12;a=-1}_=f+144|0;return a|0}function Od(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=_-176|0;_=d;e=oa(c);a:{if((e|0)!=165){c=-1;if((e|0)==-1){F[a+300>>2]=7;break a}F[a+300>>2]=11;break a}Pa(b,c,d);b:{if(G[d|0]==1){c=d|5;b=G[d+1|0]|G[d+2|0]<<8|(G[d+3|0]<<16|G[d+4|0]<<24);b=b<<24|b<<8&16711680|(b>>>8&65280|b>>>24);$a(a,c,b);$a(a+132|0,c,b);b=G[d+161|0]|G[d+162|0]<<8|(G[d+163|0]<<16|G[d+164|0]<<24);c=G[d+157|0]|G[d+158|0]<<8|(G[d+159|0]<<16|G[d+160|0]<<24);D[a+288|0]=c;D[a+289|0]=c>>>8;D[a+290|0]=c>>>16;D[a+291|0]=c>>>24;D[a+292|0]=b;D[a+293|0]=b>>>8;D[a+294|0]=b>>>16;D[a+295|0]=b>>>24;b=G[d+153|0]|G[d+154|0]<<8|(G[d+155|0]<<16|G[d+156|0]<<24);c=G[d+149|0]|G[d+150|0]<<8|(G[d+151|0]<<16|G[d+152|0]<<24);D[a+280|0]=c;D[a+281|0]=c>>>8;D[a+282|0]=c>>>16;D[a+283|0]=c>>>24;D[a+284|0]=b;D[a+285|0]=b>>>8;D[a+286|0]=b>>>16;D[a+287|0]=b>>>24;b=G[d+145|0]|G[d+146|0]<<8|(G[d+147|0]<<16|G[d+148|0]<<24);c=G[d+141|0]|G[d+142|0]<<8|(G[d+143|0]<<16|G[d+144|0]<<24);D[a+272|0]=c;D[a+273|0]=c>>>8;D[a+274|0]=c>>>16;D[a+275|0]=c>>>24;D[a+276|0]=b;D[a+277|0]=b>>>8;D[a+278|0]=b>>>16;D[a+279|0]=b>>>24;b=G[d+137|0]|G[d+138|0]<<8|(G[d+139|0]<<16|G[d+140|0]<<24);c=G[d+133|0]|G[d+134|0]<<8|(G[d+135|0]<<16|G[d+136|0]<<24);D[a+264|0]=c;D[a+265|0]=c>>>8;D[a+266|0]=c>>>16;D[a+267|0]=c>>>24;D[a+268|0]=b;D[a+269|0]=b>>>8;D[a+270|0]=b>>>16;D[a+271|0]=b>>>24;c=0;break b}F[a+300>>2]=11;c=-1}ia(d,165)}_=d+176|0;return c|0}function Ba(a,b){var c=0,d=0,e=0;c=F[a+64>>2];D[c+a|0]=128;d=c+1|0;a:{if(c>>>0<=55){if(d>>>0>55){break a}qa(a+d|0,0,55-c|0);break a}if(d>>>0<=63){qa(a+d|0,0,63-c|0)}gb(a,a);F[a+48>>2]=0;F[a+52>>2]=0;F[a+40>>2]=0;F[a+44>>2]=0;F[a+32>>2]=0;F[a+36>>2]=0;F[a+24>>2]=0;F[a+28>>2]=0;F[a+16>>2]=0;F[a+20>>2]=0;F[a+8>>2]=0;F[a+12>>2]=0;F[a>>2]=0;F[a+4>>2]=0}c=F[a+76>>2];d=F[a+64>>2]<<3;e=d+F[a+72>>2]|0;c=e>>>0>>0?c+1|0:c;d=e;F[a+72>>2]=d;F[a+76>>2]=c;D[a+63|0]=d;D[a+62|0]=(c&255)<<24|d>>>8;D[a+61|0]=(c&65535)<<16|d>>>16;D[a+60|0]=(c&16777215)<<8|d>>>24;D[a+59|0]=c;D[a+58|0]=c>>>8;D[a+57|0]=c>>>16;D[a+56|0]=c>>>24;gb(a,a);D[b|0]=G[a+83|0];D[b+4|0]=G[a+87|0];D[b+8|0]=G[a+91|0];D[b+12|0]=G[a+95|0];D[b+16|0]=G[a+99|0];D[b+20|0]=G[a+103|0];D[b+24|0]=G[a+107|0];D[b+28|0]=G[a+111|0];D[b+1|0]=H[a+82>>1];D[b+5|0]=H[a+86>>1];D[b+9|0]=H[a+90>>1];D[b+13|0]=H[a+94>>1];D[b+17|0]=H[a+98>>1];D[b+21|0]=H[a+102>>1];D[b+25|0]=H[a+106>>1];D[b+29|0]=H[a+110>>1];D[b+2|0]=F[a+80>>2]>>>8;D[b+6|0]=F[a+84>>2]>>>8;D[b+10|0]=F[a+88>>2]>>>8;D[b+14|0]=F[a+92>>2]>>>8;D[b+18|0]=F[a+96>>2]>>>8;D[b+22|0]=F[a+100>>2]>>>8;D[b+26|0]=F[a+104>>2]>>>8;D[b+30|0]=F[a+108>>2]>>>8;D[b+3|0]=F[a+80>>2];D[b+7|0]=F[a+84>>2];D[b+11|0]=F[a+88>>2];D[b+15|0]=F[a+92>>2];D[b+19|0]=F[a+96>>2];D[b+23|0]=F[a+100>>2];D[b+27|0]=F[a+104>>2];D[b+31|0]=F[a+108>>2]}function qd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;if(c>>>0<306){F[a+228>>2]=2;return-1}c=b+77|0;D[c|0]=2;d=F[a+128>>2];d=d<<24|d<<8&16711680|(d>>>8&65280|d>>>24);D[c+1|0]=d;D[c+2|0]=d>>>8;D[c+3|0]=d>>>16;D[c+4|0]=d>>>24;ja(c+5|0,a,128);d=G[a+160|0]|G[a+161|0]<<8|(G[a+162|0]<<16|G[a+163|0]<<24);e=G[a+156|0]|G[a+157|0]<<8|(G[a+158|0]<<16|G[a+159|0]<<24);D[c+157|0]=e;D[c+158|0]=e>>>8;D[c+159|0]=e>>>16;D[c+160|0]=e>>>24;D[c+161|0]=d;D[c+162|0]=d>>>8;D[c+163|0]=d>>>16;D[c+164|0]=d>>>24;d=G[a+152|0]|G[a+153|0]<<8|(G[a+154|0]<<16|G[a+155|0]<<24);e=G[a+148|0]|G[a+149|0]<<8|(G[a+150|0]<<16|G[a+151|0]<<24);D[c+149|0]=e;D[c+150|0]=e>>>8;D[c+151|0]=e>>>16;D[c+152|0]=e>>>24;D[c+153|0]=d;D[c+154|0]=d>>>8;D[c+155|0]=d>>>16;D[c+156|0]=d>>>24;d=G[a+144|0]|G[a+145|0]<<8|(G[a+146|0]<<16|G[a+147|0]<<24);e=G[a+140|0]|G[a+141|0]<<8|(G[a+142|0]<<16|G[a+143|0]<<24);D[c+141|0]=e;D[c+142|0]=e>>>8;D[c+143|0]=e>>>16;D[c+144|0]=e>>>24;D[c+145|0]=d;D[c+146|0]=d>>>8;D[c+147|0]=d>>>16;D[c+148|0]=d>>>24;d=G[a+136|0]|G[a+137|0]<<8|(G[a+138|0]<<16|G[a+139|0]<<24);e=G[a+132|0]|G[a+133|0]<<8|(G[a+134|0]<<16|G[a+135|0]<<24);D[c+133|0]=e;D[c+134|0]=e>>>8;D[c+135|0]=e>>>16;D[c+136|0]=e>>>24;D[c+137|0]=d;D[c+138|0]=d>>>8;D[c+139|0]=d>>>16;D[c+140|0]=d>>>24;bb(a+132|0,c,165,c+165|0);return Ca(c,229,b)|0}function xa(a){var b=0,c=0,d=0,e=0;b=L(G[a+12|0],6);c=L(G[a+8|0],6);d=L(G[a+4|0],6);e=L(G[a|0],6);D[a+12|0]=G[b+3653|0]^(G[c+3650|0]^(G[d+3652|0]^G[e+3651|0]));D[a+8|0]=G[b+3651|0]^(G[c+3653|0]^(G[d+3650|0]^G[e+3652|0]));D[a+4|0]=G[b+3652|0]^(G[c+3651|0]^(G[d+3653|0]^G[e+3650|0]));D[a|0]=G[b+3650|0]^(G[c+3652|0]^(G[d+3651|0]^G[e+3653|0]));b=L(G[a+13|0],6);c=L(G[a+9|0],6);d=L(G[a+5|0],6);e=L(G[a+1|0],6);D[a+1|0]=G[b+3650|0]^(G[c+3652|0]^(G[d+3651|0]^G[e+3653|0]));D[a+5|0]=G[b+3652|0]^(G[c+3651|0]^(G[d+3653|0]^G[e+3650|0]));D[a+9|0]=G[b+3651|0]^(G[c+3653|0]^(G[d+3650|0]^G[e+3652|0]));D[a+13|0]=G[b+3653|0]^(G[c+3650|0]^(G[d+3652|0]^G[e+3651|0]));b=L(G[a+14|0],6);c=L(G[a+10|0],6);d=L(G[a+6|0],6);e=L(G[a+2|0],6);D[a+2|0]=G[b+3650|0]^(G[c+3652|0]^(G[d+3651|0]^G[e+3653|0]));D[a+14|0]=G[b+3653|0]^(G[c+3650|0]^(G[d+3652|0]^G[e+3651|0]));D[a+10|0]=G[b+3651|0]^(G[c+3653|0]^(G[d+3650|0]^G[e+3652|0]));D[a+6|0]=G[b+3652|0]^(G[c+3651|0]^(G[d+3653|0]^G[e+3650|0]));b=L(G[a+15|0],6);c=L(G[a+11|0],6);d=L(G[a+7|0],6);e=L(G[a+3|0],6);D[a+15|0]=G[b+3653|0]^(G[c+3650|0]^(G[d+3652|0]^G[e+3651|0]));D[a+11|0]=G[b+3651|0]^(G[c+3653|0]^(G[d+3650|0]^G[e+3652|0]));D[a+7|0]=G[b+3652|0]^(G[c+3651|0]^(G[d+3653|0]^G[e+3650|0]));D[a+3|0]=G[b+3650|0]^(G[c+3652|0]^(G[d+3651|0]^G[e+3653|0]))}function Hb(a,b){var c=0,d=0;c=G[a|0]|G[a+1|0]<<8|(G[a+2|0]<<16|G[a+3|0]<<24);F[b>>2]=c<<24|c<<8&16711680|(c>>>8&65280|c>>>24);c=G[a+4|0]|G[a+5|0]<<8|(G[a+6|0]<<16|G[a+7|0]<<24);F[b+4>>2]=c<<24|c<<8&16711680|(c>>>8&65280|c>>>24);c=G[a+8|0]|G[a+9|0]<<8|(G[a+10|0]<<16|G[a+11|0]<<24);F[b+8>>2]=c<<24|c<<8&16711680|(c>>>8&65280|c>>>24);c=G[a+12|0]|G[a+13|0]<<8|(G[a+14|0]<<16|G[a+15|0]<<24);F[b+12>>2]=c<<24|c<<8&16711680|(c>>>8&65280|c>>>24);c=G[a+16|0]|G[a+17|0]<<8|(G[a+18|0]<<16|G[a+19|0]<<24);F[b+16>>2]=c<<24|c<<8&16711680|(c>>>8&65280|c>>>24);c=G[a+20|0]|G[a+21|0]<<8|(G[a+22|0]<<16|G[a+23|0]<<24);F[b+20>>2]=c<<24|c<<8&16711680|(c>>>8&65280|c>>>24);c=G[a+24|0]|G[a+25|0]<<8|(G[a+26|0]<<16|G[a+27|0]<<24);F[b+24>>2]=c<<24|c<<8&16711680|(c>>>8&65280|c>>>24);a=G[a+28|0]|G[a+29|0]<<8|(G[a+30|0]<<16|G[a+31|0]<<24);F[b+28>>2]=a<<24|a<<8&16711680|(a>>>8&65280|a>>>24);c=F[b+28>>2];a=8;while(1){d=a&7;a:{if(!d){d=F[(a-1>>>3<<2)+3328>>2];c=ue(c,8);c=d^(G[(c>>>8&255)+3072|0]<<8|G[(c&255)+3072|0]|G[(c>>>16&255)+3072|0]<<16|G[(c>>>24|0)+3072|0]<<24);break a}if((d|0)!=4){break a}c=G[(c&255)+3072|0]|G[(c>>>8&255)+3072|0]<<8|G[(c>>>16&255)+3072|0]<<16|G[(c>>>24|0)+3072|0]<<24}c=F[(a-8<<2)+b>>2]^c;F[(a<<2)+b>>2]=c;a=a+1|0;if((a|0)!=60){continue}break}}function Ha(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;d=F[b+44>>2];e=F[b+48>>2];f=F[b+52>>2];g=F[b+56>>2];h=F[b+60>>2];c=b- -64|0;i=F[c>>2];j=F[b+68>>2];k=F[b+72>>2];l=F[b+76>>2];m=F[b+4>>2];n=F[b+8>>2];o=F[b+12>>2];p=F[b+16>>2];q=F[b+20>>2];r=F[b+24>>2];s=F[b+28>>2];t=F[b+32>>2];u=F[b+36>>2];F[a>>2]=F[b>>2]+F[b+40>>2];F[a+36>>2]=l+u;F[a+32>>2]=k+t;F[a+28>>2]=j+s;F[a+24>>2]=i+r;F[a+20>>2]=h+q;F[a+16>>2]=g+p;F[a+12>>2]=f+o;F[a+8>>2]=e+n;F[a+4>>2]=d+m;d=F[b+44>>2];e=F[b+48>>2];f=F[b+52>>2];g=F[b+56>>2];h=F[b+60>>2];c=F[c>>2];i=F[b+68>>2];j=F[b+72>>2];k=F[b>>2];l=F[b+40>>2];m=F[b+4>>2];n=F[b+8>>2];o=F[b+12>>2];p=F[b+16>>2];q=F[b+20>>2];r=F[b+24>>2];s=F[b+28>>2];t=F[b+32>>2];F[a+76>>2]=F[b+76>>2]-F[b+36>>2];F[a+72>>2]=j-t;F[a+68>>2]=i-s;F[a- -64>>2]=c-r;F[a+60>>2]=h-q;F[a+56>>2]=g-p;F[a+52>>2]=f-o;F[a+48>>2]=e-n;F[a+44>>2]=d-m;F[a+40>>2]=l-k;d=F[b+88>>2];e=F[b+92>>2];f=F[b+96>>2];g=F[b+100>>2];h=F[b+104>>2];c=F[b+108>>2];i=F[b+80>>2];j=F[b+84>>2];k=F[b+116>>2];F[a+112>>2]=F[b+112>>2];F[a+116>>2]=k;F[a+104>>2]=h;F[a+108>>2]=c;F[a+96>>2]=f;F[a+100>>2]=g;F[a+88>>2]=d;F[a+92>>2]=e;F[a+80>>2]=i;F[a+84>>2]=j;ha(a+120|0,b+120|0,2032)}function cb(a,b){var c=0,d=0;a:{b:{c:{d:{d=F[a+128>>2];c=(b>>>24)-(d>>>24)&255;switch(c|0){case 1:break b;case 0:break d;default:break c}}c=256;if(b>>>0>=d>>>0){break a}}while(1){ka(a,32,37364,1,a);c=c-1|0;if(c>>>0>1){continue}break}}ka(a,32,37367,1,a+96|0);ka(a,32,37366,1,a- -64|0);ka(a,32,37365,1,a+32|0);ka(a,32,37364,1,a);d=b&-16777216;F[a+128>>2]=d}e:{f:{g:{h:{c=(b>>>16)-(d>>>16)&255;switch(c|0){case 1:break f;case 0:break h;default:break g}}c=256;if(b>>>0>=d>>>0){break e}}d=a+32|0;while(1){ka(d,32,37365,1,d);c=c-1|0;if(c>>>0>1){continue}break}}c=a+32|0;ka(c,32,37367,1,a+96|0);ka(c,32,37366,1,a- -64|0);ka(c,32,37365,1,c);d=b&-65536;F[a+128>>2]=d}i:{j:{k:{l:{c=(b>>>8)-(d>>>8)&255;switch(c|0){case 1:break j;case 0:break l;default:break k}}c=256;if(b>>>0>=d>>>0){break i}}d=a- -64|0;while(1){ka(d,32,37366,1,d);c=c-1|0;if(c>>>0>1){continue}break}}c=a- -64|0;ka(c,32,37367,1,a+96|0);ka(c,32,37366,1,c);d=b&-256;F[a+128>>2]=d}m:{n:{o:{p:{c=b-d&255;switch(c|0){case 1:break n;case 0:break p;default:break o}}c=256;if(b>>>0>=d>>>0){break m}}d=a+96|0;while(1){ka(d,32,37367,1,d);c=c-1|0;if(c>>>0>1){continue}break}}c=a+96|0;ka(c,32,37367,1,c);F[a+128>>2]=b}}function xc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;g=_-16|0;_=g;a:{b:{e=a+164|0;h=F[a+160>>2];if((e|0)==(h|0)){break b}i=1;d=e;while(1){if(G[d+4|0]){d=d+72|0;if((h|0)!=(d|0)){continue}d=16;if(!i){break a}break b}f=f+55|0;i=0;d=d+72|0;if((h|0)!=(d|0)){continue}break}d=16;break a}d=17}c:{if(d+f>>>0>c>>>0){F[a+7516>>2]=2;a=-1;break c}f=123;D[b|0]=123;d=G[1495]|G[1496]<<8|(G[1497]<<16|G[1498]<<24);c=G[1491]|G[1492]<<8|(G[1493]<<16|G[1494]<<24);D[b+6|0]=c;D[b+7|0]=c>>>8;D[b+8|0]=c>>>16;D[b+9|0]=c>>>24;D[b+10|0]=d;D[b+11|0]=d>>>8;D[b+12|0]=d>>>16;D[b+13|0]=d>>>24;c=G[1490]|G[1491]<<8|(G[1492]<<16|G[1493]<<24);d=G[1486]|G[1487]<<8|(G[1488]<<16|G[1489]<<24);D[b+1|0]=d;D[b+2|0]=d>>>8;D[b+3|0]=d>>>16;D[b+4|0]=d>>>24;D[b+5|0]=c;D[b+6|0]=c>>>8;D[b+7|0]=c>>>16;D[b+8|0]=c>>>24;d=b+14|0;c=F[a+160>>2];d:{if((c|0)!=(e|0)){while(1){if(!G[e+4|0]){D[d+1|0]=34;D[d|0]=f;a=g+12|0;la(a,F[e>>2]);a=ma(a,4,d+2|0);D[a+2|0]=34;D[a|0]=34;D[a+1|0]=58;a=ma(e+5|0,32,a+3|0);D[a|0]=34;f=44;d=a+1|0}e=e+72|0;if((c|0)!=(e|0)){continue}break}if((f&255)==44){break d}}D[d|0]=f;d=d+1|0}D[d|0]=125;D[d+1|0]=125;a=(d-b|0)+2|0}_=g+16|0;return a|0}function Md(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=a+264|0;g=a+132|0;if(Da(301)>>>0>e>>>0){F[a+300>>2]=2;return-1}e=jb(g,jb(a,la(_a(d,301),2)));h=G[f+4|0]|G[f+5|0]<<8|(G[f+6|0]<<16|G[f+7|0]<<24);g=G[f|0]|G[f+1|0]<<8|(G[f+2|0]<<16|G[f+3|0]<<24);D[e|0]=g;D[e+1|0]=g>>>8;D[e+2|0]=g>>>16;D[e+3|0]=g>>>24;D[e+4|0]=h;D[e+5|0]=h>>>8;D[e+6|0]=h>>>16;D[e+7|0]=h>>>24;h=G[f+28|0]|G[f+29|0]<<8|(G[f+30|0]<<16|G[f+31|0]<<24);g=G[f+24|0]|G[f+25|0]<<8|(G[f+26|0]<<16|G[f+27|0]<<24);D[e+24|0]=g;D[e+25|0]=g>>>8;D[e+26|0]=g>>>16;D[e+27|0]=g>>>24;D[e+28|0]=h;D[e+29|0]=h>>>8;D[e+30|0]=h>>>16;D[e+31|0]=h>>>24;h=G[f+20|0]|G[f+21|0]<<8|(G[f+22|0]<<16|G[f+23|0]<<24);g=G[f+16|0]|G[f+17|0]<<8|(G[f+18|0]<<16|G[f+19|0]<<24);D[e+16|0]=g;D[e+17|0]=g>>>8;D[e+18|0]=g>>>16;D[e+19|0]=g>>>24;D[e+20|0]=h;D[e+21|0]=h>>>8;D[e+22|0]=h>>>16;D[e+23|0]=h>>>24;g=G[f+12|0]|G[f+13|0]<<8|(G[f+14|0]<<16|G[f+15|0]<<24);f=G[f+8|0]|G[f+9|0]<<8|(G[f+10|0]<<16|G[f+11|0]<<24);D[e+8|0]=f;D[e+9|0]=f>>>8;D[e+10|0]=f>>>16;D[e+11|0]=f>>>24;D[e+12|0]=g;D[e+13|0]=g>>>8;D[e+14|0]=g>>>16;D[e+15|0]=g>>>24;D[e+32|0]=F[a+296>>2]!=0;return Za(b,c,d,301)|0}function ja(a,b,c){var d=0,e=0,f=0;if(c>>>0>=512){Z(a|0,b|0,c|0);return a}e=a+c|0;a:{if(!((a^b)&3)){b:{if(!(a&3)){c=a;break b}if(!c){c=a;break b}c=a;while(1){D[c|0]=G[b|0];b=b+1|0;c=c+1|0;if(!(c&3)){break b}if(c>>>0>>0){continue}break}}d=e&-4;c:{if(d>>>0<64){break c}f=d+-64|0;if(f>>>0>>0){break c}while(1){F[c>>2]=F[b>>2];F[c+4>>2]=F[b+4>>2];F[c+8>>2]=F[b+8>>2];F[c+12>>2]=F[b+12>>2];F[c+16>>2]=F[b+16>>2];F[c+20>>2]=F[b+20>>2];F[c+24>>2]=F[b+24>>2];F[c+28>>2]=F[b+28>>2];F[c+32>>2]=F[b+32>>2];F[c+36>>2]=F[b+36>>2];F[c+40>>2]=F[b+40>>2];F[c+44>>2]=F[b+44>>2];F[c+48>>2]=F[b+48>>2];F[c+52>>2]=F[b+52>>2];F[c+56>>2]=F[b+56>>2];F[c+60>>2]=F[b+60>>2];b=b- -64|0;c=c- -64|0;if(f>>>0>=c>>>0){continue}break}}if(c>>>0>=d>>>0){break a}while(1){F[c>>2]=F[b>>2];b=b+4|0;c=c+4|0;if(d>>>0>c>>>0){continue}break}break a}if(e>>>0<4){c=a;break a}d=e-4|0;if(d>>>0>>0){c=a;break a}c=a;while(1){D[c|0]=G[b|0];D[c+1|0]=G[b+1|0];D[c+2|0]=G[b+2|0];D[c+3|0]=G[b+3|0];b=b+4|0;c=c+4|0;if(d>>>0>=c>>>0){continue}break}}if(c>>>0>>0){while(1){D[c|0]=G[b|0];b=b+1|0;c=c+1|0;if((e|0)!=(c|0)){continue}break}}return a}function td(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;j=_-16|0;_=j;g=F[9340];g=aa[F[F[g>>2]+4>>2]](g,c)|0;f=F[9340];f=aa[F[F[f>>2]>>2]](f)|0;k=xb(F[a+128>>2],g,f);f=k+2|0;g=(f>>>0)/3|0;a:{if(((f-L(g,3)|0)+(g<<2)|0)-2>>>0>e>>>0){F[a+228>>2]=2;e=-1;break a}e=F[9340];g=aa[F[F[e>>2]+4>>2]](e,c)|0;e=F[9340];l=aa[F[F[e>>2]>>2]](e)|0;e=F[a+128>>2];h=k+2|0;f=(h>>>0)/3|0;h=((((h-L(f,3)|0)+(f<<2)|0)-2|0)+d|0)-k|0;D[h+1|0]=8;D[h|0]=3;f=h+2|0;if(e>>>0>=128){while(1){D[f|0]=e|128;f=f+1|0;i=e>>>0>16383;e=e>>>7|0;if(i){continue}break}}D[f+1|0]=18;D[f|0]=e;f=f+2|0;b:{if(g>>>0<128){e=g;break b}e=g;while(1){D[f|0]=e|128;f=f+1|0;i=e>>>0>16383;e=e>>>7|0;if(i){continue}break}}D[f|0]=e;f=f+1|0;F[j+12>>2]=f;i=F[9340];m=g;g=((f+g|0)-h|0)+l|0;e=-1;if((aa[F[F[i>>2]+8>>2]](i,a,128,b,c,F[j+12>>2],m,h,g)|0)==-1){break a}c=F[a+128>>2]+1|0;F[a+128>>2]=c;b=0;c:{if(!(c&16777215)){break c}b=1;if(!(c&65535)){break c}b=c&255?3:2}c=b;e=(c<<5)+a|0;b=3;while(1){ka(e,32,b+37364|0,1,(b<<5)+a|0);f=b>>>0>c>>>0;b=b-1|0;if(f){continue}break}bb(a+132|0,h,g,g+h|0);e=Ca(h,k,d)}_=j+16|0;return e|0}function Ga(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;c=F[b>>2];e=c;g=F[b+36>>2];h=F[b+32>>2];i=F[b+28>>2];j=F[b+24>>2];k=F[b+20>>2];l=F[b+16>>2];f=F[b+12>>2];d=F[b+8>>2];m=(L(g,19)+16777216>>25)+c>>26;c=F[b+4>>2];b=e+L(g+(h+(i+(j+(k+(l+(f+(d+(m+c>>25)>>26)>>25)>>26)>>25)>>26)>>25)>>26)>>25,19)|0;D[a|0]=b;D[a+2|0]=b>>>16;D[a+1|0]=b>>>8;c=c+(b>>26)|0;D[a+5|0]=c>>>14;D[a+4|0]=c>>>6;d=d+(c>>25)|0;D[a+8|0]=d>>>13;D[a+7|0]=d>>>5;e=b>>>24&3;b=c&33554431;D[a+3|0]=e|b<<2;c=(d>>26)+f|0;D[a+11|0]=c>>>11;D[a+10|0]=c>>>3;d=d&67108863;D[a+6|0]=d<<3|b>>>22;b=l+(c>>25)|0;D[a+15|0]=b>>>18;D[a+14|0]=b>>>10;D[a+13|0]=b>>>2;f=c&33554431;D[a+9|0]=f<<5|d>>>21;c=(b>>26)+k|0;D[a+16|0]=c;D[a+12|0]=b<<6|f>>>19;D[a+18|0]=c>>>16;D[a+17|0]=c>>>8;b=(c>>25)+j|0;D[a+21|0]=b>>>15;D[a+20|0]=b>>>7;d=(b>>26)+i|0;D[a+24|0]=d>>>13;D[a+23|0]=d>>>5;e=c>>>24&1;c=b&67108863;D[a+19|0]=e|c<<1;b=(d>>25)+h|0;D[a+27|0]=b>>>12;D[a+26|0]=b>>>4;d=d&33554431;D[a+22|0]=d<<3|c>>>23;c=(b>>26)+g|0;D[a+30|0]=c>>>10;D[a+29|0]=c>>>2;b=b&67108863;D[a+25|0]=b<<4|d>>>21;c=c&33554431;D[a+31|0]=c>>>18;D[a+28|0]=c<<6|b>>>20}function ya(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=G[a+12|0];c=L(e,6);g=G[a|0];f=L(g,6);d=G[a+8|0];b=G[a+4|0];D[a+12|0]=G[c+3648|0]^(G[f+3649|0]^(d^b));h=L(d,6);D[a+8|0]=G[c+3649|0]^(G[h+3648|0]^(b^g));i=L(b,6);D[a|0]=G[i+3649|0]^(G[f+3648|0]^(d^e));d=G[a+5|0];j=L(d,6);b=G[a+1|0];k=L(b,6);c=G[a+13|0];f=G[a+9|0];D[a+1|0]=G[j+3649|0]^(G[k+3648|0]^(c^f));l=L(c,6);D[a+13|0]=G[l+3648|0]^(G[k+3649|0]^(d^f));D[a+4|0]=G[h+3649|0]^(e^(g^G[i+3648|0]));e=L(f,6);D[a+9|0]=G[l+3649|0]^(G[e+3648|0]^(b^d));D[a+5|0]=G[e+3649|0]^(c^(b^G[j+3648|0]));e=G[a+6|0];c=L(e,6);g=G[a+2|0];f=L(g,6);d=G[a+14|0];b=G[a+10|0];D[a+2|0]=G[c+3649|0]^(G[f+3648|0]^(d^b));h=L(d,6);D[a+14|0]=G[h+3648|0]^(G[f+3649|0]^(b^e));b=L(b,6);D[a+10|0]=G[h+3649|0]^(G[b+3648|0]^(e^g));D[a+6|0]=G[b+3649|0]^(d^(g^G[c+3648|0]));e=G[a+15|0];c=L(e,6);g=G[a+3|0];f=L(g,6);d=G[a+11|0];b=G[a+7|0];D[a+15|0]=G[c+3648|0]^(G[f+3649|0]^(d^b));h=G[c+3649|0];c=L(d,6);D[a+11|0]=h^(G[c+3648|0]^(b^g));b=L(b,6);D[a+3|0]=G[b+3649|0]^(G[f+3648|0]^(d^e));D[a+7|0]=G[c+3649|0]^(e^(g^G[b+3648|0]))}function ce(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(c>>>0<=31){F[a>>2]=2;return-1}c=G[a+64|0]|G[a+65|0]<<8|(G[a+66|0]<<16|G[a+67|0]<<24);d=G[a+60|0]|G[a+61|0]<<8|(G[a+62|0]<<16|G[a+63|0]<<24);D[b+24|0]=d;D[b+25|0]=d>>>8;D[b+26|0]=d>>>16;D[b+27|0]=d>>>24;D[b+28|0]=c;D[b+29|0]=c>>>8;D[b+30|0]=c>>>16;D[b+31|0]=c>>>24;c=G[a+56|0]|G[a+57|0]<<8|(G[a+58|0]<<16|G[a+59|0]<<24);d=G[a+52|0]|G[a+53|0]<<8|(G[a+54|0]<<16|G[a+55|0]<<24);D[b+16|0]=d;D[b+17|0]=d>>>8;D[b+18|0]=d>>>16;D[b+19|0]=d>>>24;D[b+20|0]=c;D[b+21|0]=c>>>8;D[b+22|0]=c>>>16;D[b+23|0]=c>>>24;c=G[a+48|0]|G[a+49|0]<<8|(G[a+50|0]<<16|G[a+51|0]<<24);d=G[a+44|0]|G[a+45|0]<<8|(G[a+46|0]<<16|G[a+47|0]<<24);D[b+8|0]=d;D[b+9|0]=d>>>8;D[b+10|0]=d>>>16;D[b+11|0]=d>>>24;D[b+12|0]=c;D[b+13|0]=c>>>8;D[b+14|0]=c>>>16;D[b+15|0]=c>>>24;c=G[a+40|0]|G[a+41|0]<<8|(G[a+42|0]<<16|G[a+43|0]<<24);a=G[a+36|0]|G[a+37|0]<<8|(G[a+38|0]<<16|G[a+39|0]<<24);D[b|0]=a;D[b+1|0]=a>>>8;D[b+2|0]=a>>>16;D[b+3|0]=a>>>24;D[b+4|0]=c;D[b+5|0]=c>>>8;D[b+6|0]=c>>>16;D[b+7|0]=c>>>24;return 32}function Oa(a,b,c){var d=0,e=0;a:{if(!a){break a}e=b;b=a+32|0;if(e>>>0>>0){break a}d=G[a+4|0]|G[a+5|0]<<8|(G[a+6|0]<<16|G[a+7|0]<<24);e=G[a|0]|G[a+1|0]<<8|(G[a+2|0]<<16|G[a+3|0]<<24);D[c|0]=e;D[c+1|0]=e>>>8;D[c+2|0]=e>>>16;D[c+3|0]=e>>>24;D[c+4|0]=d;D[c+5|0]=d>>>8;D[c+6|0]=d>>>16;D[c+7|0]=d>>>24;d=G[a+28|0]|G[a+29|0]<<8|(G[a+30|0]<<16|G[a+31|0]<<24);e=G[a+24|0]|G[a+25|0]<<8|(G[a+26|0]<<16|G[a+27|0]<<24);D[c+24|0]=e;D[c+25|0]=e>>>8;D[c+26|0]=e>>>16;D[c+27|0]=e>>>24;D[c+28|0]=d;D[c+29|0]=d>>>8;D[c+30|0]=d>>>16;D[c+31|0]=d>>>24;d=G[a+20|0]|G[a+21|0]<<8|(G[a+22|0]<<16|G[a+23|0]<<24);e=G[a+16|0]|G[a+17|0]<<8|(G[a+18|0]<<16|G[a+19|0]<<24);D[c+16|0]=e;D[c+17|0]=e>>>8;D[c+18|0]=e>>>16;D[c+19|0]=e>>>24;D[c+20|0]=d;D[c+21|0]=d>>>8;D[c+22|0]=d>>>16;D[c+23|0]=d>>>24;d=G[a+12|0]|G[a+13|0]<<8|(G[a+14|0]<<16|G[a+15|0]<<24);a=G[a+8|0]|G[a+9|0]<<8|(G[a+10|0]<<16|G[a+11|0]<<24);D[c+8|0]=a;D[c+9|0]=a>>>8;D[c+10|0]=a>>>16;D[c+11|0]=a>>>24;D[c+12|0]=d;D[c+13|0]=d>>>8;D[c+14|0]=d>>>16;D[c+15|0]=d>>>24;d=b}return d}function Fa(a,b){var c=0,d=0;c=G[a+4|0]|G[a+5|0]<<8|(G[a+6|0]<<16|G[a+7|0]<<24);d=G[a|0]|G[a+1|0]<<8|(G[a+2|0]<<16|G[a+3|0]<<24);D[b+32|0]=d;D[b+33|0]=d>>>8;D[b+34|0]=d>>>16;D[b+35|0]=d>>>24;D[b+36|0]=c;D[b+37|0]=c>>>8;D[b+38|0]=c>>>16;D[b+39|0]=c>>>24;c=G[a+28|0]|G[a+29|0]<<8|(G[a+30|0]<<16|G[a+31|0]<<24);d=G[a+24|0]|G[a+25|0]<<8|(G[a+26|0]<<16|G[a+27|0]<<24);D[b+56|0]=d;D[b+57|0]=d>>>8;D[b+58|0]=d>>>16;D[b+59|0]=d>>>24;D[b+60|0]=c;D[b+61|0]=c>>>8;D[b+62|0]=c>>>16;D[b+63|0]=c>>>24;c=G[a+20|0]|G[a+21|0]<<8|(G[a+22|0]<<16|G[a+23|0]<<24);d=G[a+16|0]|G[a+17|0]<<8|(G[a+18|0]<<16|G[a+19|0]<<24);D[b+48|0]=d;D[b+49|0]=d>>>8;D[b+50|0]=d>>>16;D[b+51|0]=d>>>24;D[b+52|0]=c;D[b+53|0]=c>>>8;D[b+54|0]=c>>>16;D[b+55|0]=c>>>24;c=G[a+12|0]|G[a+13|0]<<8|(G[a+14|0]<<16|G[a+15|0]<<24);a=G[a+8|0]|G[a+9|0]<<8|(G[a+10|0]<<16|G[a+11|0]<<24);D[b+40|0]=a;D[b+41|0]=a>>>8;D[b+42|0]=a>>>16;D[b+43|0]=a>>>24;D[b+44|0]=c;D[b+45|0]=c>>>8;D[b+46|0]=c>>>16;D[b+47|0]=c>>>24;Gb(b,b+32|0,1824)}function ic(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;g=_-48|0;_=g;a:{if((c|0)<=0){break a}D[b|0]=0;if(c>>>0<23){break a}F[g+32>>2]=F[a+112>>2];d=Xa(b,c,1535,g+32|0);h=b+c|0;b:{if((d|0)>(c|0)){break b}if((d|0)<=0){break a}f=b+d|0;e=c-d|0;d=Xa(f,e,1462,0);h=b+c|0;if((d|0)>(e|0)){break b}if((d|0)<=0){break a}b=e-d|0;c=d+f|0;c:{e=a+152|0;if((e|0)!=F[a+148>>2]){d=0;while(1){F[g+16>>2]=F[(L(d,68)+a|0)+184>>2];f=Xa(c,b,1068,g+16|0);if((f|0)>(b|0)){break c}if((f|0)<=0){break a}b=b-f|0;c=c+f|0;d=d+1|0;if(d>>>0<(F[a+148>>2]-e|0)/68>>>0){continue}break}}d=Xa(c,b,1439,0);if((d|0)>(b|0)){break c}if((d|0)<=0){break a}f=a+496|0;if((f|0)==F[a+492>>2]){break a}c=c+d|0;b=b-d|0;d=0;while(1){F[g>>2]=F[(L(d,68)+a|0)+528>>2];e=Xa(c,b,1068,g);h=b+c|0;if((e|0)>(b|0)){break b}if((e|0)<=0){break a}b=b-e|0;c=c+e|0;d=d+1|0;if(d>>>0<(F[a+492>>2]-f|0)/68>>>0){continue}break}break a}h=b+c|0}a=h-4|0;D[a|0]=46;D[a+1|0]=46;D[a+2|0]=46;D[a+3|0]=0}_=g+48|0}function gb(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;f=_-256|0;_=f;while(1){F[(d<<2)+f>>2]=G[(c|3)+b|0]|(G[(c|1)+b|0]<<16|G[b+c|0]<<24|G[(c|2)+b|0]<<8);c=c+4|0;d=d+1|0;if((d|0)!=16){continue}break}b=16;c=F[f>>2];while(1){e=c;c=(b<<2)+f|0;d=F[c-8>>2];d=e+(F[c-28>>2]+(ue(d,15)^ue(d,13)^d>>>10)|0)|0;e=c;c=F[c-60>>2];F[e>>2]=(ue(c,25)^ue(c,14)^c>>>3)+d;b=b+1|0;if((b|0)!=64){continue}break}n=F[a+80>>2];i=n;o=F[a+84>>2];b=o;p=F[a+108>>2];g=p;q=F[a+104>>2];c=q;r=F[a+100>>2];e=r;s=F[a+96>>2];j=s;t=F[a+92>>2];k=t;u=F[a+88>>2];d=u;while(1){l=d;d=b;b=m<<2;h=j;g=(F[b+2816>>2]+((((ue(h,26)^ue(h,21)^ue(h,7))+(h&e)|0)+g|0)+((h^-1)&c)|0)|0)+F[b+f>>2]|0;b=i;i=g+((ue(b,30)^ue(b,19)^ue(b,10))+((d^l)&b^d&l)|0)|0;j=g+k|0;g=c;c=e;e=h;k=l;m=m+1|0;if((m|0)!=64){continue}break}F[a+108>>2]=g+p;F[a+104>>2]=c+q;F[a+100>>2]=e+r;F[a+96>>2]=j+s;F[a+92>>2]=k+t;F[a+88>>2]=d+u;F[a+84>>2]=b+o;F[a+80>>2]=i+n;_=f+256|0}function Bc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;a:{if(c>>>0<116){F[a+7516>>2]=2;a=-1;break a}D[b|0]=123;c=G[1490]|G[1491]<<8|(G[1492]<<16|G[1493]<<24);d=G[1486]|G[1487]<<8|(G[1488]<<16|G[1489]<<24);D[b+1|0]=d;D[b+2|0]=d>>>8;D[b+3|0]=d>>>16;D[b+4|0]=d>>>24;D[b+5|0]=c;D[b+6|0]=c>>>8;D[b+7|0]=c>>>16;D[b+8|0]=c>>>24;c=G[1495]|G[1496]<<8|(G[1497]<<16|G[1498]<<24);d=G[1491]|G[1492]<<8|(G[1493]<<16|G[1494]<<24);D[b+6|0]=d;D[b+7|0]=d>>>8;D[b+8|0]=d>>>16;D[b+9|0]=d>>>24;D[b+10|0]=c;D[b+11|0]=c>>>8;D[b+12|0]=c>>>16;D[b+13|0]=c>>>24;D[b+14|0]=34;c=ma(a+96|0,32,b+15|0);D[c|0]=34;D[c+1|0]=44;D[c+12|0]=34;d=G[1504]|G[1505]<<8|(G[1506]<<16|G[1507]<<24);e=G[1500]|G[1501]<<8|(G[1502]<<16|G[1503]<<24);D[c+2|0]=e;D[c+3|0]=e>>>8;D[c+4|0]=e>>>16;D[c+5|0]=e>>>24;D[c+6|0]=d;D[c+7|0]=d>>>8;D[c+8|0]=d>>>16;D[c+9|0]=d>>>24;d=G[1508]|G[1509]<<8;D[c+10|0]=d;D[c+11|0]=d>>>8;a=ma(a,32,c+13|0);D[a|0]=34;D[a+1|0]=125;a=(a-b|0)+2|0}return a|0}function te(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;d=a;a:{b:{c:{d:{e:{f:{g:{h:{i:{j:{if(b){if(!c){break j}break i}a=(d>>>0)/(c>>>0)|0;$=0;break a}if(!d){break h}break g}if(!(c-1&c)){break f}g=(O(c)+33|0)-O(b)|0;e=0-g|0;break d}a=(b>>>0)/0|0;$=0;break a}a=32-O(b)|0;if(a>>>0<31){break e}break c}if((c|0)==1){break b}a=c?31-O(c-1^c)|0:32;c=a&31;if((a&63)>>>0>=32){a=0;b=b>>>c|0}else{a=b>>>c|0;b=((1<>>c}$=a;a=b;break a}g=a+1|0;e=63-a|0}a=g&63;f=a&31;if(a>>>0>=32){a=0;h=b>>>f|0}else{a=b>>>f|0;h=((1<>>f}f=a;a=e&63;e=a&31;if(a>>>0>=32){a=d<>>32-e|b<>>31;f=f<<1|h>>>31;i=l-(f+(a>>>0>e>>>0)|0)>>31;j=c&i;h=a-j|0;f=f-(a>>>0>>0)|0;b=b<<1|d>>>31;d=k|d<<1;k=i&1;g=g-1|0;if(g){continue}break}}$=b<<1|d>>>31;a=k|d<<1;break a}d=0;b=0}$=b;a=d}return a}function Xa(a,b,c,d){var e=0,f=0,g=0,h=0;g=_-16|0;_=g;F[g+12>>2]=d;e=_-160|0;_=e;f=-1;F[e+148>>2]=b?b-1|0:0;a=b?a:e+158|0;F[e+144>>2]=a;e=qa(e,0,144);F[e+76>>2]=-1;F[e+36>>2]=8;F[e+80>>2]=-1;F[e+44>>2]=e+159;F[e+84>>2]=e+144;a:{if((b|0)<0){F[9343]=61;break a}D[a|0]=0;f=0;b=_-208|0;_=b;F[b+204>>2]=d;a=b+160|0;qa(a,0,40);F[b+200>>2]=F[b+204>>2];b:{if((Db(0,c,b+200|0,b+80|0,a)|0)<0){c=-1;break b}h=F[e+76>>2]>=0;d=F[e>>2];if(F[e+72>>2]<=0){F[e>>2]=d&-33}c:{d:{e:{if(!F[e+48>>2]){F[e+48>>2]=80;F[e+28>>2]=0;F[e+16>>2]=0;F[e+20>>2]=0;f=F[e+44>>2];F[e+44>>2]=b;break e}if(F[e+16>>2]){break d}}a=-1;if(Fb(e)){break c}}a=Db(e,c,b+200|0,b+80|0,b+160|0)}c=a;if(f){aa[F[e+36>>2]](e,0,0)|0;F[e+48>>2]=0;F[e+44>>2]=f;F[e+28>>2]=0;a=F[e+20>>2];F[e+16>>2]=0;F[e+20>>2]=0;c=a?c:-1}a=F[e>>2];F[e>>2]=a|d&32;c=a&32?-1:c;if(!h){break b}}_=b+208|0;f=c}_=e+160|0;_=g+16|0;return f}function oc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=_-16|0;_=e;d=17;a:{if((G[a+7372|0]|!G[a+7364|0]?d:71)>>>0>c>>>0){F[a+7516>>2]=2;a=-1;break a}D[b|0]=123;c=G[1490]|G[1491]<<8|(G[1492]<<16|G[1493]<<24);d=G[1486]|G[1487]<<8|(G[1488]<<16|G[1489]<<24);D[b+1|0]=d;D[b+2|0]=d>>>8;D[b+3|0]=d>>>16;D[b+4|0]=d>>>24;D[b+5|0]=c;D[b+6|0]=c>>>8;D[b+7|0]=c>>>16;D[b+8|0]=c>>>24;c=G[1495]|G[1496]<<8|(G[1497]<<16|G[1498]<<24);d=G[1491]|G[1492]<<8|(G[1493]<<16|G[1494]<<24);D[b+6|0]=d;D[b+7|0]=d>>>8;D[b+8|0]=d>>>16;D[b+9|0]=d>>>24;D[b+10|0]=c;D[b+11|0]=c>>>8;D[b+12|0]=c>>>16;D[b+13|0]=c>>>24;D[b+14|0]=123;d=b+15|0;if(!(G[a+7372|0]|!G[a+7364|0])){D[b+15|0]=34;c=e+12|0;la(c,F[a+7368>>2]);c=ma(c,4,b+16|0);D[c+2|0]=34;D[c|0]=34;D[c+1|0]=58;a=ma(a+7373|0,32,c+3|0);D[a|0]=34;d=a+1|0}D[d|0]=125;D[d+1|0]=125;a=(d-b|0)+2|0}_=e+16|0;return a|0}function Jd(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=_-160|0;_=g;h=-1;c=Pa(b,c,b);a:{if((c|0)==-1){F[a+300>>2]=7;break a}h=F[9340];wb(b,c,aa[F[F[h>>2]>>2]](h)|0,g+136|0);if(G[g+136|0]!=3){F[a+300>>2]=3;h=-1;break a}if(!(F[g+148>>2]?F[g+144>>2]:0)){F[a+300>>2]=4;h=-1;break a}if(f){F[f>>2]=F[g+140>>2]}f=c+-64|0;if(!hb(a+264|0,b,f,b+f|0)){F[a+300>>2]=14;h=-1;break a}c=F[9340];if(aa[F[F[c>>2]+12>>2]](c,F[g+152>>2])>>>0>e>>>0){F[a+300>>2]=2;h=-1;break a}b:{c=F[g+140>>2];c:{if((c-F[a+260>>2]|0)>=0){h=a+132|0;cb(h,c);ja(g,h,132);break c}if((c-F[a+128>>2]|0)<0){break b}cb(ja(g,a,132),c)}c=F[9340];b=aa[F[F[c>>2]+16>>2]](c,g,128,b,f,F[g+148>>2],F[g+152>>2],d,e)|0;ia(g,132);h=-1;if((b|0)==-1){F[a+300>>2]=5;break a}F[a+296>>2]=1;h=b;break a}F[a+300>>2]=12;h=-1}_=g+160|0;return h|0}function qc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=_-16|0;_=e;a:{if((G[a+7364|0]?71:17)>>>0>c>>>0){F[a+7516>>2]=2;a=-1;break a}D[b|0]=123;c=G[1490]|G[1491]<<8|(G[1492]<<16|G[1493]<<24);d=G[1486]|G[1487]<<8|(G[1488]<<16|G[1489]<<24);D[b+1|0]=d;D[b+2|0]=d>>>8;D[b+3|0]=d>>>16;D[b+4|0]=d>>>24;D[b+5|0]=c;D[b+6|0]=c>>>8;D[b+7|0]=c>>>16;D[b+8|0]=c>>>24;c=G[1495]|G[1496]<<8|(G[1497]<<16|G[1498]<<24);d=G[1491]|G[1492]<<8|(G[1493]<<16|G[1494]<<24);D[b+6|0]=d;D[b+7|0]=d>>>8;D[b+8|0]=d>>>16;D[b+9|0]=d>>>24;D[b+10|0]=c;D[b+11|0]=c>>>8;D[b+12|0]=c>>>16;D[b+13|0]=c>>>24;D[b+14|0]=123;if(G[a+7364|0]){D[b+15|0]=34;c=e+12|0;la(c,F[a+7368>>2]);c=ma(c,4,b+16|0);D[c+2|0]=34;D[c|0]=34;D[c+1|0]=58;a=ma(a+7373|0,32,c+3|0);D[a|0]=34;a=a+1|0}else{a=b+15|0}D[a|0]=125;D[a+1|0]=125;a=(a-b|0)+2|0}_=e+16|0;return a|0}function Bb(a,b,c){a:{switch(b-9|0){case 0:b=F[c>>2];F[c>>2]=b+4;F[a>>2]=F[b>>2];return;case 6:b=F[c>>2];F[c>>2]=b+4;b=E[b>>1];F[a>>2]=b;F[a+4>>2]=b>>31;return;case 7:b=F[c>>2];F[c>>2]=b+4;F[a>>2]=H[b>>1];F[a+4>>2]=0;return;case 8:b=F[c>>2];F[c>>2]=b+4;b=D[b|0];F[a>>2]=b;F[a+4>>2]=b>>31;return;case 9:b=F[c>>2];F[c>>2]=b+4;F[a>>2]=G[b|0];F[a+4>>2]=0;return;case 16:b=F[c>>2]+7&-8;F[c>>2]=b+8;K[a>>3]=K[b>>3];return;case 17:aa[7](a,c);default:return;case 1:case 4:case 14:b=F[c>>2];F[c>>2]=b+4;b=F[b>>2];F[a>>2]=b;F[a+4>>2]=b>>31;return;case 2:case 5:case 11:case 15:b=F[c>>2];F[c>>2]=b+4;F[a>>2]=F[b>>2];F[a+4>>2]=0;return;case 3:case 10:case 12:case 13:break a}}b=F[c>>2]+7&-8;F[c>>2]=b+8;c=F[b+4>>2];F[a>>2]=F[b>>2];F[a+4>>2]=c}function qa(a,b,c){var d=0,e=0,f=0;a:{if(!c){break a}D[a|0]=b;e=a+c|0;D[e-1|0]=b;if(c>>>0<3){break a}D[a+2|0]=b;D[a+1|0]=b;D[e-3|0]=b;D[e-2|0]=b;if(c>>>0<7){break a}D[a+3|0]=b;D[e-4|0]=b;if(c>>>0<9){break a}e=0-a&3;f=e+a|0;d=L(b&255,16843009);F[f>>2]=d;b=c-e&-4;c=b+f|0;F[c-4>>2]=d;if(b>>>0<9){break a}F[f+8>>2]=d;F[f+4>>2]=d;F[c-8>>2]=d;F[c-12>>2]=d;if(b>>>0<25){break a}F[f+24>>2]=d;F[f+20>>2]=d;F[f+16>>2]=d;F[f+12>>2]=d;F[c-16>>2]=d;F[c-20>>2]=d;F[c-24>>2]=d;F[c-28>>2]=d;c=b;b=f&4|24;c=c-b|0;if(c>>>0<32){break a}d=se(d,0,1,1);e=$;b=b+f|0;while(1){F[b+24>>2]=d;F[b+28>>2]=e;F[b+16>>2]=d;F[b+20>>2]=e;F[b+8>>2]=d;F[b+12>>2]=e;F[b>>2]=d;F[b+4>>2]=e;b=b+32|0;c=c-32|0;if(c>>>0>31){continue}break}}return a}function Tb(a,b,c,d,e){var f=0,g=0,h=0,i=0;f=_-80|0;_=f;g=-1;h=F[b>>2];i=F[c+4>>2];if(!(h>>>0>i>>>0|i-h>>>0>2e3)){F[f+72>>2]=F[b+32>>2];h=F[b+28>>2];g=f- -64|0;F[g>>2]=F[b+24>>2];F[g+4>>2]=h;g=F[b+20>>2];F[f+56>>2]=F[b+16>>2];F[f+60>>2]=g;g=F[b+12>>2];F[f+48>>2]=F[b+8>>2];F[f+52>>2]=g;g=F[b+4>>2];b=F[b>>2];F[f+40>>2]=b;F[f+44>>2]=g;if(b>>>0>>0){b=f+40|4;while(1){ka(b,32,1869,1,b);g=F[f+40>>2]+1|0;F[f+40>>2]=g;if(g>>>0>2]){continue}break}}b=f+40|0;g=f|4;ka(b|4,32,1868,1,g);F[f>>2]=F[f+40>>2];a=F[a+4>>2];g=aa[F[F[a>>2]+16>>2]](a,g,32,F[c+8>>2],F[c+12>>2],F[c+24>>2],F[c+28>>2],d,e)|0;ia(b,36)}_=f+80|0;return g}function me(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0;l=_-112|0;_=l;m=(aa[F[441]](F[1416],c)|0)+2|0;n=(m>>>0)/3|0;a:{b:{c:{if(((m-L(n,3)|0)+(n<<2)|0)-2>>>0>e>>>0){break c}if(aa[F[440]](F[1416])>>>0>g>>>0){break c}if(i>>>0>=43){break b}}F[a>>2]=2;c=-1;break a}if(k>>>0<=31){F[a>>2]=1;c=-1;break a}g=l+48|0;Fa(j,g);ma(g,32,h);h=g;g=l+16|0;za(h,a+4|0,g);a=aa[F[441]](F[1416],c)|0;e=(d+e|0)-a|0;c=aa[F[442]](F[1416],g,32,b,c,e,a,l+8|0,8)|0;if((c|0)==-1){break a}ma(l+8|0,8,f);ma(e,a,d)}_=l+112|0;return c|0}function Hc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=Ib(a);if(Da(g)>>>0>e>>>0){F[a+7516>>2]=2;return-1}e=a+164|0;f=la(Na(sb(la(_a(d,g),4),a),a+96|0),(F[a+160>>2]-e|0)/72|0);h=F[a+160>>2];if((h|0)!=(e|0)){while(1){f=la(f,F[e>>2]);D[f|0]=G[e+4|0];f=Na(f+1|0,e+5|0);e=e+72|0;if((h|0)!=(e|0)){continue}break}}D[f|0]=G[a+7364|0];e=f+1|0;a:{if(!G[a+7364|0]){break a}e=la(e,F[a+7368>>2]);D[e|0]=G[a+7372|0];e=Na(e+1|0,a+7373|0);if(G[a+7364|0]<2){break a}e=la(e,F[a+7440>>2]);D[e|0]=G[a+7444|0];e=Na(e+1|0,a+7445|0)}la(e,F[a+7512>>2]);return Za(b,c,d,g)|0}function sa(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;d=-1;a:{if((b&3)==1){break a}d=b+2|0;g=((d&3)+L(d>>>2|0,3)|0)-2|0;d=-1;if((g|0)==-1){break a}e=b&-4;b:{if(!e){e=a;break b}e=a+e|0;d=a;while(1){i=G[d|0];f=G[d+1|0];h=G[(G[d+2|0]&127)+1632|0];D[c+2|0]=G[(G[d+3|0]&127)+1632|0]|h<<6;f=G[(f&127)+1632|0]<<6;D[c+1|0]=(f|h)>>>2;D[c|0]=(f|G[(i&127)+1632|0]<<12)>>>10;c=c+3|0;d=d+4|0;if((d|0)!=(e|0)){continue}break}}b=(a+b|0)-e|0;if(b){a=G[(G[e+1|0]&127)+1632|0]|G[(G[e|0]&127)+1632|0]<<6;if((b|0)==3){D[c+1|0]=(G[(G[e+2|0]&127)+1632|0]|a<<6)>>>2}D[c|0]=a>>>4}d=g}return d}function ma(a,b,c){var d=0,e=0,f=0,g=0,h=0;d=b-((b>>>0)%3|0)|0;a:{if(!d){e=a;break a}e=a+d|0;d=a;while(1){f=G[d+1|0];g=G[d|0];h=G[d+2|0];D[c+3|0]=G[(h&63)+1568|0];D[c|0]=G[(g>>>2|0)+1568|0];f=f<<8;D[c+2|0]=G[((f|h)>>>6&63)+1568|0];D[c+1|0]=G[((f|g<<16)>>>12&63)+1568|0];c=c+4|0;d=d+3|0;if((e|0)!=(d|0)){continue}break}}d=(a+b|0)-e|0;if(d){a=2;b=G[e|0];b:{if((d|0)==2){a=G[e+1|0]<<2;D[c+2|0]=G[(a&60)+1568|0];d=(a|b<<10)>>>6|0;a=3;break b}d=b<<4}D[c|0]=G[(d>>>6|0)+1568|0];D[c+1|0]=G[(d&63)+1568|0];c=a+c|0}return c}function Ld(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=_-16|0;_=f;b=Ya(b,c,d,e,a+300|0);a:{if((b|0)!=-1){b=b+d|0;c=eb(d,b,f+12|0);b:{if(!c){d=10;break b}d=9;if(F[f+12>>2]-3>>>0<4294967294){break b}c=ib(a,c,b);if(!c){d=10;break b}c=ib(a+132|0,c,b);if(!c){d=10;break b}c=Oa(c,b,a+264|0);if(!c){d=10;break b}g=a+296|0;c:{if(F[f+12>>2]==1){F[g>>2]=1;break c}d=10;if(!c|(b|0)==(c|0)){c=h}else{D[g|0]=G[c|0]!=0;c=c+1|0}if(!c){break b}}d=17;if((b|0)==(c|0)){break a}}F[a+300>>2]=d}e=-1}_=f+16|0;return e|0}function Ca(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;f=a;e=c;d=b-((b>>>0)%3|0)|0;if(d){f=a+d|0;d=a;while(1){g=G[d+1|0];h=G[d|0];i=G[d+2|0];D[e+3|0]=G[(i&63)+1568|0];D[e|0]=G[(h>>>2|0)+1568|0];g=g<<8;D[e+2|0]=G[((g|i)>>>6&63)+1568|0];D[e+1|0]=G[((g|h<<16)>>>12&63)+1568|0];e=e+4|0;d=d+3|0;if((f|0)!=(d|0)){continue}break}}d=(a+b|0)-f|0;if(d){a=2;b=G[f|0];a:{if((d|0)==2){a=G[f+1|0]<<2;D[e+2|0]=G[(a&60)+1568|0];d=(a|b<<10)>>>6|0;a=3;break a}d=b<<4}D[e|0]=G[(d>>>6|0)+1568|0];D[e+1|0]=G[(d&63)+1568|0];e=a+e|0}return e-c|0}function fc(a,b){a=a|0;b=b|0;var c=0,d=0;c=b+3285|0;b=a+164|0;a:{b:{if((b|0)!=F[a+160>>2]){while(1){if(Ka(b+5|0,c,32)){d=F[b>>2];c=F[a+160>>2]-72|0;F[a+160>>2]=c;if((b|0)==(c|0)){break b}while(1){c=b;b=b+72|0;ja(c,b,72);if(F[a+160>>2]!=(b|0)){continue}break}break b}b=b+72|0;if((b|0)!=F[a+160>>2]){continue}break}}d=-1;if(!G[a+7364|0]){break b}if(Ka(a+7373|0,c,32)){b=F[a+7368>>2];break a}if(G[a+7364|0]<2){break b}if(!Ka(a+7445|0,c,32)){break b}d=F[a+7440>>2]}b=d}if((b|0)==-1){F[a+7516>>2]=6}return b|0}function tc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;g=c;e=b;a:{b:{if(b<<5>>>0<=d>>>0){if(e){break b}e=0;break a}F[a+7516>>2]=1;e=-1;break a}j=a+169|0;k=a+7364|0;h=a+164|0;while(1){b=k;f=F[a+160>>2];if((b|0)!=(f|0)){b=f+72|0;F[a+160>>2]=b}b=b-72|0;if((h|0)!=(b|0)){while(1){f=b;b=b-72|0;ja(f,b,72);if((b|0)!=(h|0)){continue}break}}D[a+168|0]=0;b=F[a+7512>>2]+1|0;F[h>>2]=b;F[a+7512>>2]=b;Fa(g,j);g=g+32|0;i=i+1|0;if((i|0)!=(e|0)){continue}break}}ia(c,d);return e|0}function Ab(a,b){if(!a){return 0}a:{b:{if(a){if(b>>>0<=127){break b}c:{if(!F[F[9380]>>2]){if((b&-128)==57216){break b}break c}if(b>>>0<=2047){D[a+1|0]=b&63|128;D[a|0]=b>>>6|192;a=2;break a}if(!((b&-8192)!=57344&b>>>0>=55296)){D[a+2|0]=b&63|128;D[a|0]=b>>>12|224;D[a+1|0]=b>>>6&63|128;a=3;break a}if(b-65536>>>0<=1048575){D[a+3|0]=b&63|128;D[a|0]=b>>>18|240;D[a+2|0]=b>>>6&63|128;D[a+1|0]=b>>>12&63|128;a=4;break a}}F[9343]=25;a=-1}else{a=1}break a}D[a|0]=b;a=1}return a}function bc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=oa(d);if((e|0)==-1){F[a+3216>>2]=7;return-1}sa(c,d,c);d=_-48|0;_=d;a:{b:{if((b|0)!=1){ab(d+8|0,c,e);c=F[d+36>>2];if(!c){F[a+3216>>2]=4;break b}e=F[d+40>>2]}b=_-32|0;_=b;f=c;c=F[a+4>>2];fb(b,f,e,aa[F[F[c>>2]>>2]](c)|0);c:{if(!F[b+24>>2]){F[a+8>>2]=4;c=-1;break c}c=F[a+4>>2];c=aa[F[F[c>>2]+12>>2]](c,F[b+28>>2])|0}_=b+32|0;if((c|0)!=-1){break a}F[a+3216>>2]=F[a+8>>2];F[a+8>>2]=0}c=-1}_=d+48|0;return c|0}function Ka(a,b,c){var d=0,e=0,f=0,g=0;d=_-16|0;D[d+15|0]=0;a:{if(!c){break a}g=c-1|0;e=c&3;if(e){while(1){D[d+15|0]=G[d+15|0]|G[b|0]^G[a|0];b=b+1|0;a=a+1|0;c=c-1|0;f=f+1|0;if((e|0)!=(f|0)){continue}break}}if(g>>>0<3){break a}while(1){D[d+15|0]=G[d+15|0]|G[a|0]^G[b|0];D[d+15|0]=G[d+15|0]|G[a+1|0]^G[b+1|0];D[d+15|0]=G[d+15|0]|G[a+2|0]^G[b+2|0];D[d+15|0]=G[d+15|0]|G[a+3|0]^G[b+3|0];b=b+4|0;a=a+4|0;c=c-4|0;if(c){continue}break}}return!G[d+15|0]}function Qb(a,b,c,d){var e=0,f=0,g=0;e=_-48|0;_=e;ab(e+8|0,c,d);f=F[e+12>>2];c=(f|b)!=0;a:{if(f){if(!c){break a}c=F[e+16>>2]==32}if(!c|!F[e+36>>2]){break a}d=F[e+20>>2];if(!d|F[e+24>>2]!=32){break a}c=F[e+28>>2];if(!c|F[e+32>>2]!=32){break a}b:{c:{if(f){f=Ma(f,a+3221|0);if(b){if(f){break a}break c}if(!f){break b}break a}if(!b){break b}}if(Ma(b,a+3221|0)){break a}}if(Ma(d,a+3253|0)){break a}g=!Ma(c,a+3285|0)}_=e+48|0;return g}function de(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0;j=_-80|0;_=j;k=F[443];a:{if(aa[k|0](F[1416],oa(g))>>>0>i>>>0){F[a>>2]=2;g=-1;break a}k=oa(g);if(!(!((k|0)==-1|(c|0)!=43)&(e|0)==11)){F[a>>2]=7;g=-1;break a}c=b;b=j+48|0;sa(c,43,b);c=b;b=j+16|0;za(a+4|0,c,b);c=j+8|0;sa(d,11,c);sa(f,g,f);g=aa[F[444]](F[1416],b,32,c,8,f,k,h,i)|0;if((g|0)!=-1){break a}F[a>>2]=5}_=j+80|0;return g|0}function fe(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=_-16|0;_=h;a:{if(!(!f|g>>>0>=43)){F[a>>2]=2;g=-1;break a}g=-1;b=Ya(b,c,d,e,a);if((b|0)==-1){break a}b:{b=b+d|0;c=va(d,b,h+12|0);c:{if(!c){break c}if(F[h+12>>2]!=1){F[a>>2]=9;break c}c=Ja(c,b,a+4|0);if(c){break b}}if(F[a>>2]){break a}F[a>>2]=10;break a}if((b|0)!=(c|0)){F[a>>2]=17;break a}if(f){ma(a+4|0,32,f)}g=e}_=h+16|0;return g|0}function Ob(a){var b=0,c=0,d=0,e=0,f=0;b=a+48|0;d=F[a+44>>2];if((b|0)==(d|0)){d=36}else{c=4;while(1){c=c+100|0;b=b+100|0;if((d|0)!=(b|0)){continue}break}d=c+32|0}e=4;c=4;b=a+152|0;f=F[a+148>>2];if((b|0)!=(f|0)){while(1){c=c+68|0;b=b+68|0;if((f|0)!=(b|0)){continue}break}}b=a+496|0;a=F[a+492>>2];if((b|0)!=(a|0)){while(1){e=e+68|0;b=b+68|0;if((a|0)!=(b|0)){continue}break}}return((c+d|0)+e|0)+101|0}function ve(a,b,c){var d=0,e=0,f=0,g=0;g=c&63;f=g;e=f&31;if(f>>>0>=32){f=-1>>>e|0}else{d=-1>>>e|0;f=d|(1<>>0>=32){d=f<>>32-e|d<>>0>=32){d=-1<>>32-d}a=c&a;b=b&d;d=e&31;if(e>>>0>=32){c=0;a=b>>>d|0}else{c=b>>>d|0;a=((1<>>d}a=a|g;$=c|f;return a} +function na(a,b,c){var d=0,e=0,f=0;if(!(G[a|0]&32)){a:{d=b;b=a;a=F[b+16>>2];b:{if(!a){if(Fb(b)){break b}a=F[b+16>>2]}f=F[b+20>>2];if(a-f>>>0>>0){aa[F[b+36>>2]](b,d,c)|0;break a}c:{if(F[b+80>>2]<0){break c}a=c;while(1){e=a;if(!a){break c}a=e-1|0;if(G[d+a|0]!=10){continue}break}if(aa[F[b+36>>2]](b,d,e)>>>0>>0){break b}d=d+e|0;c=c-e|0;f=F[b+20>>2]}ja(f,d,c);F[b+20>>2]=F[b+20>>2]+c}}}}function cd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;e=F[a+84>>2];f=F[e+4>>2];g=F[a+28>>2];d=F[a+20>>2]-g|0;d=d>>>0>f>>>0?f:d;if(d){ja(F[e>>2],g,d);F[e>>2]=d+F[e>>2];f=F[e+4>>2]-d|0;F[e+4>>2]=f}d=F[e>>2];f=c>>>0>f>>>0?f:c;if(f){ja(d,b,f);d=f+F[e>>2]|0;F[e>>2]=d;F[e+4>>2]=F[e+4>>2]-f}D[d|0]=0;b=F[a+44>>2];F[a+28>>2]=b;F[a+20>>2]=b;return c|0}function xd(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0;f=_-16|0;_=f;b=Ya(b,c,d,e,a+228|0);a:{if((b|0)!=-1){b=b+d|0;c=eb(d,b,f+12|0);b:{if(!c){d=10;break b}d=9;if(F[f+12>>2]!=1){break b}c=ib(a,c,b);if(!c){d=10;break b}d=10;c=rb(c,b,a+132|0);if(!c){break b}d=17;if((b|0)==(c|0)){break a}}F[a+228>>2]=d}e=-1}_=f+16|0;return e|0}function Kd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=_-32|0;_=d;e=-1;c=Pa(b,c,b);a:{if((c|0)==-1){F[a+300>>2]=7;break a}f=b;b=F[9340];wb(f,c,aa[F[F[b>>2]>>2]](b)|0,d+8|0);if(G[d+8|0]!=3){F[a+300>>2]=3;break a}if(!F[d+20>>2]){F[a+300>>2]=4;break a}a=F[9340];e=aa[F[F[a>>2]+12>>2]](a,F[d+24>>2])|0}_=d+32|0;return e|0}function ia(a,b){var c=0,d=0,e=0;a:{if(!b){break a}c=a;d=b&7;if(d){while(1){D[c|0]=0;c=c+1|0;e=e+1|0;if((d|0)!=(e|0)){continue}break}}if(b-1>>>0<7){break a}a=a+b|0;while(1){D[c|0]=0;D[c+1|0]=0;D[c+2|0]=0;D[c+3|0]=0;D[c+4|0]=0;D[c+5|0]=0;D[c+6|0]=0;D[c+7|0]=0;c=c+8|0;if((a|0)!=(c|0)){continue}break}}}function Kb(a,b,c){var d=0;d=_-112|0;_=d;F[d+80>>2]=1779033703;F[d+84>>2]=-1150833019;F[d+72>>2]=0;F[d+76>>2]=0;F[d+64>>2]=0;F[d+104>>2]=528734635;F[d+108>>2]=1541459225;F[d+96>>2]=1359893119;F[d+100>>2]=-1694144372;F[d+88>>2]=1013904242;F[d+92>>2]=-1521486534;ra(d,a,b);Ba(d,c);ia(d,112);_=d+112|0}function Ma(a,b){var c=0,d=0,e=0;c=32;a:{b:{if((a|b)&3){break b}while(1){if(F[a>>2]!=F[b>>2]){break b}b=b+4|0;a=a+4|0;c=c-4|0;if(c>>>0>3){continue}break}if(!c){break a}}while(1){d=G[a|0];e=G[b|0];if((d|0)==(e|0)){b=b+1|0;a=a+1|0;c=c-1|0;if(c){continue}break a}break}return d-e|0}return 0}function _b(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=_-32|0;_=h;a:{if((oa(c)|0)!=32){F[a>>2]=7;c=-1;break a}sa(b,c,h);c=-1;b=oa(g);if((b|0)==-1){F[a>>2]=7;break a}sa(f,g,f);b:{if(b>>>0>=64){c=0;if(hb(h,d,e,f)){break b}}F[a>>2]=5;c=-1}}_=h+32|0;return c|0}function ra(a,b,c){var d=0,e=0,f=0;if(c){d=F[a+64>>2];while(1){D[a+d|0]=G[b+e|0];d=F[a+64>>2]+1|0;F[a+64>>2]=d;if((d|0)==64){gb(a,a);F[a+64>>2]=0;d=F[a+76>>2];f=F[a+72>>2]+512|0;d=f>>>0<512?d+1|0:d;F[a+72>>2]=f;F[a+76>>2]=d;d=0}e=e+1|0;if((e|0)!=(c|0)){continue}break}}}function hd(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=_+-64|0;_=h;a:{if(g>>>0<43){F[a>>2]=2;a=-1;break a}if(!F[a+100>>2]){F[a>>2]=16;a=-1;break a}g=a+68|0;a=h+32|0;Aa(g,32,0,0,d,e,a,32);ka(a,32,b,c,h);Ca(h,32,f);a=0}_=h- -64|0;return a|0}function Ra(a,b,c){var d=0,e=0,f=0;a:{if(!b){d=a;break a}while(1){d=te(a,b,10);f=$;e=se(d,f,10,0);c=c-1|0;D[c|0]=a-e|48;e=b>>>0>9;a=d;b=f;if(e){continue}break}}if(d){while(1){c=c-1|0;a=(d>>>0)/10|0;D[c|0]=d-L(a,10)|48;b=d>>>0>9;d=a;if(b){continue}break}}return c}function sc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;a:{if(c>>>0<=31){F[a+7516>>2]=1;a=-1;break a}d=G[a+7364|0];if(d>>>0<=1){D[a+7364|0]=d+1}ja(a+7440|0,a+7368|0,72);D[a+7372|0]=0;d=F[a+7512>>2]+1|0;F[a+7368>>2]=d;F[a+7512>>2]=d;Fa(b,a+7373|0);a=1}ia(b,c);return a|0}function fd(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=_-256|0;_=h;a:{if(g>>>0<43){F[a>>2]=2;a=-1;break a}if(!F[a+100>>2]){F[a>>2]=16;a=-1;break a}Aa(a+68|0,32,0,0,d,e,h,256);ka(h,256,b,c,f);Ca(f,32,f);a=0}_=h+256|0;return a|0}function gd(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=_-32|0;_=h;a:{if(g>>>0<43){F[a>>2]=2;a=-1;break a}if(!F[a+100>>2]){F[a>>2]=16;a=-1;break a}Aa(a+68|0,32,0,0,d,e,h,32);ka(h,32,b,c,f);Ca(f,32,f);a=0}_=h+32|0;return a|0}function Eb(a,b){var c=0,d=0,e=0;A(+a);d=v(1)|0;e=v(0)|0;c=d>>>20&2047;if((c|0)!=2047){if(!c){if(a==0){c=0}else{a=Eb(a*0x10000000000000000,b);c=F[b>>2]+-64|0}F[b>>2]=c;return a}F[b>>2]=c-1022;x(0,e|0);x(1,d&-2146435073|1071644672);a=+z()}return a}function Ya(a,b,c,d,e){var f=0,g=0;f=-1;g=oa(d);a:{b:{if((g|0)==-1){c=7;if(e){break b}break a}Pa(c,d,c);d=a;a=g-(aa[F[440]](2804)|0)|0;f=aa[F[444]](2804,d,b,c,g,c,a,c,a)|0;if(!e){break a}c=8;if((f|0)!=-1){break a}}F[e>>2]=c;f=-1}return f}function kc(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0;g=_-32|0;_=g;a:{if((oa(d)|0)!=32){F[a+3216>>2]=7;d=-1;break a}sa(c,d,g);d=-1;c=oa(f);if((c|0)==-1){F[a+3216>>2]=7;break a}sa(e,f,e);d=Rb(a,b,g,e,c)}_=g+32|0;return d|0}function zb(a,b,c){var d=0,e=0,f=0;e=1;if(a>>>0>=128){while(1){e=e+1|0;d=a>>>0>16383;a=a>>>7|0;if(d){continue}break}}d=1;if(b>>>0>=128){a=b;while(1){d=d+1|0;f=a>>>0>16383;a=a>>>7|0;if(f){continue}break}}return(((b+c|0)+e|0)+d|0)+37|0}function xb(a,b,c){var d=0,e=0,f=0;d=1;e=1;if(a>>>0>=128){while(1){e=e+1|0;f=a>>>0>16383;a=a>>>7|0;if(f){continue}break}}if(b>>>0>=128){a=b;while(1){d=d+1|0;f=a>>>0>16383;a=a>>>7|0;if(f){continue}break}}return(((b+c|0)+e|0)+d|0)+67|0}function Cb(a){var b=0,c=0,d=0;if(D[F[a>>2]]-48>>>0>=10){return 0}while(1){d=F[a>>2];c=-1;if(b>>>0<=214748364){c=D[d|0]-48|0;b=L(b,10);c=(c|0)>(2147483647-b|0)?-1:c+b|0}F[a>>2]=d+1;b=c;if(D[d+1|0]-48>>>0<10){continue}break}return b}function Ib(a){var b=0,c=0,d=0;b=4;c=a+164|0;d=F[a+160>>2];if((c|0)!=(d|0)){while(1){b=b+69|0;c=c+72|0;if((d|0)!=(c|0)){continue}break}}b=b+165|0;a:{if(!G[a+7364|0]){break a}b=b+69|0;if(G[a+7364|0]<2){break a}b=b+69|0}return b+4|0}function gc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0;f=_-32|0;_=f;a:{if((oa(c)|0)!=32){F[a+3216>>2]=7;c=-1;break a}sa(b,c,f);c=-1;b=oa(e);if((b|0)==-1){F[a+3216>>2]=7;break a}sa(d,e,d);c=Qb(a,f,d,b)}_=f+32|0;return c|0}function Za(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0;f=aa[F[441]](2804,d)|0;e=f+(aa[F[440]](2804)|0)|0;g=e+2|0;h=(g>>>0)/3|0;i=a;j=b;b=((g-L(h,3)|0)+(h<<2)|0)-2|0;a=(b+c|0)-e|0;aa[F[442]](2804,i,j,a,d,a,f,a,e)|0;Ca(a,e,c);return b}function se(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0;e=c>>>16|0;f=a>>>16|0;j=L(e,f);g=c&65535;h=a&65535;i=L(g,h);f=(i>>>16|0)+L(f,g)|0;e=(f&65535)+L(e,h)|0;$=(L(b,c)+j|0)+L(a,d)+(f>>>16)+(e>>>16)|0;return i&65535|e<<16}function eb(a,b,c){var d=0,e=0;F[c>>2]=0;a:{if(!a){break a}e=b;b=a+4|0;if(e>>>0>>0){break a}d=G[a|0]<<8;F[c>>2]=d;d=(d|G[a+1|0])<<8;F[c>>2]=d;d=(d|G[a+2|0])<<8;F[c>>2]=d;F[c>>2]=d|G[a+3|0];d=b}return d}function yc(a){a=a|0;var b=0,c=0,d=0;b=a+164|0;c=F[a+160>>2];a:{if((b|0)!=(c|0)){a=1;while(1){if(!G[b+4|0]){d=d+55|0;a=0}b=b+72|0;if((c|0)!=(b|0)){continue}break}b=16;if(!a){break a}}b=17}return b+d|0}function pa(a,b,c,d,e){var f=0;f=_-256|0;_=f;if(!(e&73728|(c|0)<=(d|0))){c=c-d|0;d=c>>>0<256;qa(f,b&255,d?c:256);if(!d){while(1){na(a,f,256);c=c-256|0;if(c>>>0>255){continue}break}}na(a,f,c)}_=f+256|0}function Fb(a){var b=0;b=F[a+72>>2];F[a+72>>2]=b-1|b;b=F[a>>2];if(b&8){F[a>>2]=b|32;return-1}F[a+4>>2]=0;F[a+8>>2]=0;b=F[a+44>>2];F[a+28>>2]=b;F[a+20>>2]=b;F[a+16>>2]=b+F[a+48>>2];return 0} +function wc(a){a=a|0;var b=0,c=0,d=0;b=a+164|0;c=F[a+160>>2];if((b|0)!=(c|0)){while(1){if(!G[b+4|0]){D[b+4|0]=1;d=d+1|0}b=b+72|0;if((c|0)!=(b|0)){continue}break}}D[a+7372|0]=1;return d|0}function ud(a,b){a=a|0;b=b|0;var c=0;c=F[9340];b=aa[F[F[c>>2]+4>>2]](c,b)|0;c=F[9340];c=aa[F[F[c>>2]>>2]](c)|0;b=xb(F[a+128>>2],b,c)+2|0;a=(b>>>0)/3|0;return((b-L(a,3)|0)+(a<<2)|0)-2|0}function va(a,b,c){var d=0;F[c>>2]=0;if(!(!a|a+4>>>0>b>>>0)){b=G[a|0]<<8;F[c>>2]=b;b=(b|G[a+1|0])<<8;F[c>>2]=b;b=(b|G[a+2|0])<<8;F[c>>2]=b;F[c>>2]=b|G[a+3|0];d=a+4|0}return d}function La(a){var b=0,c=0;b=F[9342];c=a+3&-4;a=b+c|0;a:{if(a>>>0<=b>>>0?c:0){break a}if(a>>>0>ba()<<16>>>0){if(!(Y(a|0)|0)){break a}}F[9342]=a;return b}F[9343]=48;return-1}function yd(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0;f=a+132|0;if(Da(232)>>>0>e>>>0){F[a+228>>2]=2;return-1}sb(jb(a,la(_a(d,232),1)),f);return Za(b,c,d,232)|0}function ob(a,b){var c=0,d=0;d=F[a+44>>2]==(a+48|0)?0:F[a+112>>2];c=F[a+4>>2];b=aa[F[F[c>>2]+4>>2]](c,b)|0;a=F[a+4>>2];return zb(d,b,aa[F[F[a>>2]>>2]](a)|0)}function Zd(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;if(c>>>0<43){F[a>>2]=2;return-1}if(e>>>0<=31){F[a>>2]=15;return-1}a=a+4|0;kb(d,a);ma(a,32,b);return 0}function Ub(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;if(c>>>0<43){F[a>>2]=2;return-1}if(e>>>0<=31){F[a>>2]=15;return-1}a=a+4|0;Fa(d,a);ma(a,32,b);return 0}function kd(a,b,c){a=a|0;b=b|0;c=c|0;if(c>>>0<43){F[a>>2]=15;return-1}if((Pa(b,c,b)|0)==-1){F[a>>2]=7;return-1}za(a+4|0,b,a+68|0);F[a+100>>2]=1;return 0}function qe(a){a=a|0;ia(a,36);F[a+32>>2]=0;F[a+24>>2]=0;F[a+28>>2]=0;F[a+16>>2]=0;F[a+20>>2]=0;F[a+8>>2]=0;F[a+12>>2]=0;F[a>>2]=0;F[a+4>>2]=0;return 36}function ge(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0;f=a+4|0;if(Da(68)>>>0>e>>>0){F[a>>2]=2;return-1}Na(la(_a(d,68),1),f);return Za(b,c,d,68)|0}function vb(a,b,c){var d=0,e=0;a=va(a,b,c);a:{if(!a){break a}if(!(!a|(a|0)==(b|0))){D[c+4|0]=G[a|0]!=0;d=a+1|0}if(!d){break a}e=Ja(d,b,c+5|0)}return e}function yb(a){var b=0,c=0,d=0;b=1;if(a>>>0>=128){c=a;while(1){b=b+1|0;d=c>>>0>16383;c=c>>>7|0;if(d){continue}break}}return(a+b|0)+104|0}function _a(a,b){var c=0,d=0;c=aa[F[441]](2804,b)+aa[F[440]](2804)|0;d=c+2|0;b=(d>>>0)/3|0;return((((d-L(b,3)|0)+(b<<2)|0)-2|0)+a|0)-c|0}function zc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;if(e>>>0<86){F[a+7516>>2]=2;return-1}e=a;a=d+22|0;bb(e,b,c,a);ma(a,64,d);return 86}function Sb(a){F[a+8>>2]=0;F[a+4>>2]=1888;F[a>>2]=1872;F[a+492>>2]=a+496;F[a+148>>2]=a+152;F[a+44>>2]=a+48;D[a+3220|0]=0;F[a+3216>>2]=0}function Xd(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;if(e>>>0<86){F[a>>2]=2;return-1}e=a+4|0;a=d+22|0;bb(e,b,c,a);ma(a,64,d);return 86}function lc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=oa(d);if((e|0)==-1){F[a+3216>>2]=7;return-1}sa(c,d,c);return Rb(a,b,0,c,e)|0}function Dc(a,b,c){a=a|0;b=b|0;c=c|0;a:{if(c>>>0<=63){F[a+7516>>2]=1;a=-1;break a}kb(b,a);Fa(b+32|0,a+96|0);a=0}ia(b,c);return a|0}function la(a,b){b=b<<8&16711680|b<<24|(b>>>8&65280|b>>>24);D[a|0]=b;D[a+1|0]=b>>>8;D[a+2|0]=b>>>16;D[a+3|0]=b>>>24;return a+4|0}function $b(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;if(e>>>0<43){F[a>>2]=2;return-1}Kb(b,c,d+11|0);ma(d+11|0,32,d);return 43}function id(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;if(!F[a+100>>2]){F[a>>2]=16;return-1}Aa(a+68|0,32,0,0,b,c,d,e);return 0}function vd(a,b,c){a=a|0;b=b|0;c=c|0;if(c>>>0<=159){F[a+228>>2]=1;return-1}$a(a,b,0);kb(b+128|0,a+132|0);ia(b,c);return 0}function hc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=oa(c);if((d|0)==-1){F[a+3216>>2]=7;return-1}sa(b,c,b);return Qb(a,0,b,d)|0}function Da(a){var b=0;b=(aa[F[441]](2804,a)+aa[F[440]](2804)|0)+2|0;a=(b>>>0)/3|0;return((b-L(a,3)|0)+(a<<2)|0)-2|0}function Ta(a,b,c,d){var e=0,f=0;a:{if(!a){break a}e=b;b=a+d|0;if(e>>>0>>0){break a}ja(c,a,d);f=b}return f}function oe(a,b){a=a|0;b=b|0;b=(aa[F[441]](F[1416],b)|0)+2|0;a=(b>>>0)/3|0;return((b-L(a,3)|0)+(a<<2)|0)-2|0}function ne(a){a=a|0;var b=0;b=(aa[F[440]](F[1416])|0)+2|0;a=(b>>>0)/3|0;return((b-L(a,3)|0)+(a<<2)|0)-2|0}function Mc(a){a=a|0;ia(a,7520);F[a+7512>>2]=0;F[a+7516>>2]=0;D[a+7364|0]=0;F[a+160>>2]=a+164;return 7520}function md(a,b,c){a=a|0;b=b|0;c=c|0;if(c>>>0<=31){F[a>>2]=1;return-1}Fa(b,a+4|0);F[a+100>>2]=0;return 0}function Pc(a){a=a|0;ia(a,7520);F[a+7512>>2]=0;F[a+7516>>2]=0;D[a+7364|0]=0;F[a+160>>2]=a+164;return a|0}function sd(a,b,c){a=a|0;b=b|0;c=c|0;if(c>>>0<43){F[a+228>>2]=2;return-1}return Ca(a+132|0,32,b)|0}function Id(a,b,c){a=a|0;b=b|0;c=c|0;if(c>>>0<43){F[a+300>>2]=2;return-1}return Ca(a+264|0,32,b)|0}function pe(a,b,c){a=a|0;b=b|0;c=c|0;if(c>>>0<43){F[a>>2]=15;return-1}sa(b,43,a+4|0);return 0}function ld(a,b,c){a=a|0;b=b|0;c=c|0;if(c>>>0<43){F[a>>2]=2;return-1}Ca(a+4|0,32,b);return 0}function Wc(a){a=a|0;a=F[a+7516>>2];if(a>>>0<=17){a=F[(a<<2)+2720>>2]}else{a=1191}return a|0}function Uc(a){a=a|0;a=F[a+3216>>2];if(a>>>0<=17){a=F[(a<<2)+2720>>2]}else{a=1191}return a|0}function Rd(a){a=a|0;a=F[a+300>>2];if(a>>>0<=17){a=F[(a<<2)+2720>>2]}else{a=1191}return a|0}function Bd(a){a=a|0;a=F[a+228>>2];if(a>>>0<=17){a=F[(a<<2)+2720>>2]}else{a=1191}return a|0}function dc(a,b){a=a|0;b=b|0;b=Pb(a,b)+2|0;a=(b>>>0)/3|0;return((b-L(a,3)|0)+(a<<2)|0)-2|0}function ue(a,b){var c=0,d=0;c=b&31;d=(-1>>>c&a)<>>a}function Wa(a){a=a|0;a=F[a>>2];if(a>>>0<=17){a=F[(a<<2)+2720>>2]}else{a=1191}return a|0}function oa(a){if((a&3)!=1){a=a+2|0;a=((a&3)+L(a>>>2|0,3)|0)-2|0}else{a=-1}return a}function Yc(a,b,c){a=a|0;b=b|0;c=c|0;if(a){D[a|0]=3}if(b){D[b|0]=2}if(c){D[c|0]=15}}function ib(a,b,c){b=Ta(b,c,a,128);if(!b){return 0}return eb(b,c,a+128|0)}function nc(a){a=a|0;if(G[a+7364|0]>=2){D[a+7364|0]=1;ia(a+7440|0,72)}}function ee(a,b){a=a|0;b=b|0;a=F[443];return aa[a|0](F[1416],oa(b))|0}function Vd(a){a=a|0;return(a>>>0<=17?F[(a<<2)+2720>>2]:1191)|0}function pc(a){a=a|0;return(G[a+7372|0]|!G[a+7364|0]?17:71)|0}function Pb(a,b){b=ob(a,b);if(!G[a+3220|0]){b=yb(b)}return b}function $d(a){a=a|0;ia(a,100);qa(a,0,100);return 100}function ec(a){a=a|0;return(F[a+44>>2]==(a+48|0))<<5}function jb(a,b){return la(Ua(b,a,128),F[a+128>>2])}function je(a){a=a|0;ia(a,68);qa(a,0,68);return 68}function Nc(a){a=a|0;ia(a,4);F[a>>2]=0;return a|0}function Lc(a){a=a|0;ia(a,3320);Sb(a);return 3320}function rc(a){a=a|0;return(G[a+7364|0]?71:17)|0}function Oc(a){a=a|0;ia(a,3320);Sb(a);return a|0}function Kc(a){a=a|0;ia(a,4);F[a>>2]=0;return 4}function Zc(a){a=a|0;a=_-a&-16;_=a;return a|0}function re(a,b){a=a|0;b=b|0;return b+16&-16}function $a(a,b,c){F[a+128>>2]=c;ja(a,b,128)}function od(a){a=a|0;ia(a,104);return a|0}function nd(a){a=a|0;ia(a,104);return 104}function ae(a){a=a|0;ia(a,100);return a|0}function Td(a){a=a|0;ia(a,304);return a|0}function Sd(a){a=a|0;ia(a,304);return 304}function Dd(a){a=a|0;ia(a,232);return a|0}function Cd(a){a=a|0;ia(a,232);return 232}function uc(a,b){a=a|0;b=b|0;return b<<5}function ke(a){a=a|0;ia(a,68);return a|0}function Xb(a){a=a|0;ia(a,36);return a|0}function Vc(a){a=a|0;return F[a+7516>>2]}function Tc(a){a=a|0;return F[a+3216>>2]}function tb(a){a=a|0;return G[a+3220|0]}function jd(a){a=a|0;return F[a+100>>2]}function _d(a,b){a=a|0;b=b|0;return b|0}function Ua(a,b,c){return ja(a,b,c)+c|0}function Qd(a){a=a|0;return F[a+300>>2]}function Lb(a){a=a|0;return F[a+128>>2]}function Jc(a){a=a|0;return Da(Ib(a))|0}function Ic(a){a=a|0;return Da(Ob(a))|0}function Hd(a){a=a|0;return F[a+296>>2]}function Ad(a){a=a|0;return F[a+228>>2]}function Wb(){F[9380]=37408;F[9362]=42}function zd(a){a=a|0;return Da(232)|0}function Nd(a){a=a|0;return Da(301)|0}function he(a){a=a|0;return Da(68)|0}function Va(a){a=a|0;return F[a>>2]}function Pa(a,b,c){return sa(a,b,c)}function za(a,b,c){Gb(c,a+32|0,b)}function wd(a){a=a|0;return 160}function vc(a){a=a|0;return 100}function rd(a){a=a|0;return 306}function Gd(a){a=a|0;return 220}function Cc(a){a=a|0;return 116}function ub(a){a=a|0;return 64}function qb(a){a=a|0;return 32}function Qa(a){a=a|0;return 43}function Ac(a){a=a|0;return 86}function Zb(a){a=a|0;return 8}function Sc(){return 7520}function Rc(){return 3320}function pd(){return 104}function be(){return 100}function _c(a){a=a|0;_=a}function Ud(){return 304}function Ed(){return 232}function $c(){return _|0}function pb(){return 32}function le(){return 68}function Yd(){return 86}function Yb(){return 36}function Vb(){return 43}function Xc(){return-1}function Qc(){return 4} +// EMSCRIPTEN_END_FUNCS +e=G;p(da);var aa=c([null,Zb,re,ie,_d,Wd,ed,dd,cd]);function ba(){return C.byteLength/65536|0}return{"d":Wb,"e":aa,"f":Yc,"g":Xc,"h":Wc,"i":Vd,"j":Vc,"k":Uc,"l":Tc,"m":Wa,"n":Va,"o":Sc,"p":Rc,"q":Qc,"r":Pc,"s":Oc,"t":Nc,"u":Mc,"v":Lc,"w":Kc,"x":Jc,"y":Ic,"z":Hc,"A":Gc,"B":Fc,"C":Ec,"D":ub,"E":Dc,"F":Cc,"G":Bc,"H":Ac,"I":zc,"J":yc,"K":xc,"L":wc,"M":vc,"N":uc,"O":tc,"P":qb,"Q":sc,"R":rc,"S":qc,"T":pc,"U":oc,"V":nc,"W":ub,"X":mc,"Y":lc,"Z":kc,"_":Qa,"$":jc,"aa":tb,"ba":ic,"ca":hc,"da":gc,"ea":fc,"fa":tb,"ga":ec,"ha":dc,"ia":cc,"ja":bc,"ka":ac,"la":Qa,"ma":$b,"na":_b,"oa":Wa,"pa":Va,"qa":Yb,"ra":Xb,"sa":qe,"ta":pe,"ua":Vb,"va":oe,"wa":ne,"xa":qb,"ya":me,"za":Wa,"Aa":Va,"Ba":le,"Ca":ke,"Da":je,"Ea":pb,"Fa":pb,"Ga":Ub,"Ha":Ub,"Ia":he,"Ja":ge,"Ka":fe,"La":ee,"Ma":de,"Na":ce,"Oa":be,"Pa":ae,"Qa":Wa,"Ra":Va,"Sa":$d,"Ta":pb,"Ua":Vb,"Va":Zd,"Wa":Yd,"Xa":Xd,"Ya":Ud,"Za":Td,"_a":Sd,"$a":Rd,"ab":Qd,"bb":Pd,"cb":Od,"db":Nd,"eb":Md,"fb":Ld,"gb":Kd,"hb":Jd,"ib":Qa,"jb":Id,"kb":Lb,"lb":Hd,"mb":Gd,"nb":Fd,"ob":Ed,"pb":Dd,"qb":Cd,"rb":Bd,"sb":Ad,"tb":zd,"ub":yd,"vb":xd,"wb":wd,"xb":vd,"yb":ud,"zb":td,"Ab":Qa,"Bb":sd,"Cb":Lb,"Db":rd,"Eb":qd,"Fb":Wa,"Gb":Va,"Hb":pd,"Ib":od,"Jb":nd,"Kb":qb,"Lb":md,"Mb":Qa,"Nb":ld,"Ob":kd,"Pb":jd,"Qb":id,"Rb":Qa,"Sb":hd,"Tb":gd,"Ub":fd,"Vb":bd,"Wb":ad,"Xb":$c,"Yb":_c,"Zb":Zc}}return ca(ea)} +// EMSCRIPTEN_END_ASM + + + + +)(sa)}function ta(){return{then:function(b){b({instance:new ra})}}}var ua=Error,WebAssembly={};t=[];"object"!=typeof WebAssembly&&q("no native wasm support detected"); +var va,wa=!1,xa="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0; +function u(b,c){if(b){var d=ya,e=b+c;for(c=b;d[c]&&!(c>=e);)++c;if(16f?e+=String.fromCharCode(f):(f-=65536,e+=String.fromCharCode(55296|f>>10,56320|f&1023))}}else e+=String.fromCharCode(f)}b=e}}else b="";return b} +function za(b,c,d,e){if(!(0=p){var v=b.charCodeAt(++k);p=65536+((p&1023)<<10)|v&1023}if(127>=p){if(d>=e)break;c[d++]=p}else{if(2047>=p){if(d+1>=e)break;c[d++]=192|p>>6}else{if(65535>=p){if(d+2>=e)break;c[d++]=224|p>>12}else{if(d+3>=e)break;c[d++]=240|p>>18;c[d++]=128|p>>12&63}c[d++]=128|p>>6&63}c[d++]=128|p&63}}c[d]=0;return d-f}function w(b,c,d){return za(b,ya,c,d)} +function x(b){for(var c=0,d=0;d=e?c++:2047>=e?c+=2:55296<=e&&57343>=e?(c+=4,++d):c+=3}return c}var Aa,y,ya,Ba,z,Ca,Ea,Fa,qa=a.INITIAL_MEMORY||16777216;a.wasmMemory?va=a.wasmMemory:va=new pa;va&&(Aa=va.buffer);qa=Aa.byteLength;var A=Aa;Aa=A;a.HEAP8=y=new Int8Array(A);a.HEAP16=Ba=new Int16Array(A);a.HEAP32=z=new Int32Array(A);a.HEAPU8=ya=new Uint8Array(A);a.HEAPU16=new Uint16Array(A);a.HEAPU32=Ca=new Uint32Array(A);a.HEAPF32=Ea=new Float32Array(A); +a.HEAPF64=Fa=new Float64Array(A);var Ga=[],Ha=[],Ia=[];function Ja(){var b=a.preRun.shift();Ga.unshift(b)}var B=0,Ka=null,La=null;function q(b){if(a.onAbort)a.onAbort(b);b="Aborted("+b+")";r(b);wa=!0;b=new ua(b+". Build with -sASSERTIONS for more info.");ba(b);throw b;}var Ma="data:application/octet-stream;base64,",C;C="olm_legacy.wasm";if(!C.startsWith(Ma)){var Na=C;C=a.locateFile?a.locateFile(Na,m):m+Na} +function Oa(){var b=C;try{if(b==C&&t)return new Uint8Array(t);var c=n(b);if(c)return c;if(la)return la(b);throw"both async and sync fetching of the wasm failed";}catch(d){q(d)}} +function Pa(){if(!t&&(ha||l)){if("function"==typeof fetch&&!C.startsWith("file://"))return fetch(C,{credentials:"same-origin"}).then(function(b){if(!b.ok)throw"failed to load wasm binary file at '"+C+"'";return b.arrayBuffer()}).catch(function(){return Oa()});if(ka)return new Promise(function(b,c){ka(C,function(d){b(new Uint8Array(d))},c)})}return Promise.resolve().then(function(){return Oa()})}var Qa;function Ra(b){for(;0>0];case "i8":return y[b>>0];case "i16":return Ba[b>>1];case "i32":return z[b>>2];case "i64":return z[b>>2];case "float":return Ea[b>>2];case "double":return Fa[b>>3];case "*":return Ca[b>>2];default:q("invalid type for getValue: "+c)}return null} +function D(b){var c="i8";c.endsWith("*")&&(c="*");switch(c){case "i1":y[b>>0]=0;break;case "i8":y[b>>0]=0;break;case "i16":Ba[b>>1]=0;break;case "i32":z[b>>2]=0;break;case "i64":Qa=[0,0];z[b>>2]=Qa[0];z[b+4>>2]=Qa[1];break;case "float":Ea[b>>2]=0;break;case "double":Fa[b>>3]=0;break;case "*":Ca[b>>2]=0;break;default:q("invalid type for setValue: "+c)}}function Ta(b,c,d){for(var e=0;e>0]=b.charCodeAt(e);d||(y[c>>0]=0)} +function Ua(b,c,d){d=Array(0>4;f=(f&15)<<4|k>>2;var v=(k&3)<<6|p;c+=String.fromCharCode(e);64!==k&&(c+=String.fromCharCode(f));64!==p&&(c+=String.fromCharCode(v))}while(d + + diff --git a/hydrogen/assets/paperclip-3961996319.da562307.svg b/hydrogen/assets/paperclip-3961996319.da562307.svg new file mode 100644 index 0000000..5538dd7 --- /dev/null +++ b/hydrogen/assets/paperclip-3961996319.da562307.svg @@ -0,0 +1,3 @@ + + + diff --git a/hydrogen/assets/paperclip.ec29fd9d.svg b/hydrogen/assets/paperclip.ec29fd9d.svg new file mode 100644 index 0000000..c18661e --- /dev/null +++ b/hydrogen/assets/paperclip.ec29fd9d.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/hydrogen/assets/plus-3937109722.5c243914.svg b/hydrogen/assets/plus-3937109722.5c243914.svg new file mode 100644 index 0000000..6f60a21 --- /dev/null +++ b/hydrogen/assets/plus-3937109722.5c243914.svg @@ -0,0 +1,3 @@ + + + diff --git a/hydrogen/assets/plus-4190356069.084c5e3d.svg b/hydrogen/assets/plus-4190356069.084c5e3d.svg new file mode 100644 index 0000000..04b67de --- /dev/null +++ b/hydrogen/assets/plus-4190356069.084c5e3d.svg @@ -0,0 +1,3 @@ + + + diff --git a/hydrogen/assets/plus.49560f96.svg b/hydrogen/assets/plus.49560f96.svg new file mode 100644 index 0000000..54e5d06 --- /dev/null +++ b/hydrogen/assets/plus.49560f96.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/hydrogen/assets/room-members-1680968332.b4f57622.svg b/hydrogen/assets/room-members-1680968332.b4f57622.svg new file mode 100644 index 0000000..e500f2e --- /dev/null +++ b/hydrogen/assets/room-members-1680968332.b4f57622.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/hydrogen/assets/room-members-2999414798.6534e8ec.svg b/hydrogen/assets/room-members-2999414798.6534e8ec.svg new file mode 100644 index 0000000..8c1e917 --- /dev/null +++ b/hydrogen/assets/room-members-2999414798.6534e8ec.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/hydrogen/assets/room-members-3084360280.6f64aaef.svg b/hydrogen/assets/room-members-3084360280.6f64aaef.svg new file mode 100644 index 0000000..c2e87ef --- /dev/null +++ b/hydrogen/assets/room-members-3084360280.6f64aaef.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/hydrogen/assets/room-members-3297708388.1a158fe2.svg b/hydrogen/assets/room-members-3297708388.1a158fe2.svg new file mode 100644 index 0000000..ceca0e3 --- /dev/null +++ b/hydrogen/assets/room-members-3297708388.1a158fe2.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/hydrogen/assets/room-members-3847743605.9fcf4567.svg b/hydrogen/assets/room-members-3847743605.9fcf4567.svg new file mode 100644 index 0000000..85c244c --- /dev/null +++ b/hydrogen/assets/room-members-3847743605.9fcf4567.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/hydrogen/assets/room-members-871477030.90b799fe.svg b/hydrogen/assets/room-members-871477030.90b799fe.svg new file mode 100644 index 0000000..09f92d9 --- /dev/null +++ b/hydrogen/assets/room-members-871477030.90b799fe.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/hydrogen/assets/room-members.35ed0bf9.svg b/hydrogen/assets/room-members.35ed0bf9.svg new file mode 100644 index 0000000..61cdf29 --- /dev/null +++ b/hydrogen/assets/room-members.35ed0bf9.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/hydrogen/assets/search-261439583.1bffaca1.svg b/hydrogen/assets/search-261439583.1bffaca1.svg new file mode 100644 index 0000000..3700c3e --- /dev/null +++ b/hydrogen/assets/search-261439583.1bffaca1.svg @@ -0,0 +1,3 @@ + + + diff --git a/hydrogen/assets/search-3263540198.1511780c.svg b/hydrogen/assets/search-3263540198.1511780c.svg new file mode 100644 index 0000000..b923e68 --- /dev/null +++ b/hydrogen/assets/search-3263540198.1511780c.svg @@ -0,0 +1,3 @@ + + + diff --git a/hydrogen/assets/search.21e0fd39.svg b/hydrogen/assets/search.21e0fd39.svg new file mode 100644 index 0000000..584b865 --- /dev/null +++ b/hydrogen/assets/search.21e0fd39.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/hydrogen/assets/send-1171052351.caa5c494.svg b/hydrogen/assets/send-1171052351.caa5c494.svg new file mode 100644 index 0000000..a21a578 --- /dev/null +++ b/hydrogen/assets/send-1171052351.caa5c494.svg @@ -0,0 +1,3 @@ + + + diff --git a/hydrogen/assets/send-3413346515.b0fb8626.svg b/hydrogen/assets/send-3413346515.b0fb8626.svg new file mode 100644 index 0000000..1742eef --- /dev/null +++ b/hydrogen/assets/send-3413346515.b0fb8626.svg @@ -0,0 +1,3 @@ + + + diff --git a/hydrogen/assets/send.7a090949.svg b/hydrogen/assets/send.7a090949.svg new file mode 100644 index 0000000..b64d074 --- /dev/null +++ b/hydrogen/assets/send.7a090949.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/hydrogen/assets/settings-2175246113.00804666.svg b/hydrogen/assets/settings-2175246113.00804666.svg new file mode 100644 index 0000000..85d1de1 --- /dev/null +++ b/hydrogen/assets/settings-2175246113.00804666.svg @@ -0,0 +1,3 @@ + + + diff --git a/hydrogen/assets/settings-878939771.57cf3680.svg b/hydrogen/assets/settings-878939771.57cf3680.svg new file mode 100644 index 0000000..4e3aee3 --- /dev/null +++ b/hydrogen/assets/settings-878939771.57cf3680.svg @@ -0,0 +1,3 @@ + + + diff --git a/hydrogen/assets/settings.45b8e09f.svg b/hydrogen/assets/settings.45b8e09f.svg new file mode 100644 index 0000000..fb8809a --- /dev/null +++ b/hydrogen/assets/settings.45b8e09f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/hydrogen/assets/theme-element-dark.a6fddb2f.css b/hydrogen/assets/theme-element-dark.a6fddb2f.css new file mode 100644 index 0000000..8142591 --- /dev/null +++ b/hydrogen/assets/theme-element-dark.a6fddb2f.css @@ -0,0 +1 @@ +@font-face{font-family:"emoji";src:local("Apple Color Emoji"),local("Segoe UI Emoji"),local("Segoe UI Symbol"),local("Noto Color Emoji"),local("Twemoji"),local("Twemoji Mozilla"),local("Android Emoji"),local("EmojiSymbols"),local("Symbola");unicode-range:U+1F300-1F5FF,U+1F600-1F64F,U+1F680-1F6FF,U+2600-26FF}html{height:100%}main{display:block}@media screen and (min-width: 600px){.PreSessionScreen{width:600px;box-sizing:border-box;margin:50px auto 0}}.room-placeholder{display:flex;flex-direction:row}.SessionView{position:fixed;height:100%;width:100%;display:grid;grid-template:"status status" auto "left middle" 1fr / 320px 1fr;min-height:0;min-width:0}.right-shown{grid-template:"status status status" auto "left middle right" 1fr / 320px 1fr 300px}.hydrogen.ios .SessionView{height:var(--ios-viewport-height, 100%);top:var(--ios-viewport-top, 0)}.middle .close-middle{display:none}@media screen and (max-width: 800px){.SessionView:not(.middle-shown):not(.right-shown){grid-template:"status" auto "left" 1fr / 1fr}.SessionView.middle-shown{grid-template:"status" auto "middle" 1fr / 1fr}.SessionView.right-shown{grid-template:"status" auto "right" 1fr / 1fr}.SessionView:not(.middle-shown):not(.right-shown) .room-placeholder{display:none}.SessionView.middle-shown .LeftPanel,.SessionView.right-shown .middle,.SessionView.right-shown .LeftPanel{display:none}.middle .close-middle{display:block!important}.LeftPanel .grid{display:none!important}.VerificationReadyTileView{flex-direction:column}.VerificationTileView__actions{justify-content:center}}.LeftPanel{grid-area:left;min-width:0;min-height:0}.room-placeholder,.middle{min-width:0;grid-area:middle;width:100%;min-height:0}.middle{display:flex;flex-direction:column}.SessionStatusView{grid-area:status}.lightbox{position:absolute;top:0;bottom:0;left:0;right:0;z-index:1;box-sizing:border-box;height:100%}.RoomView_body{flex:1 1;min-height:0;min-width:0;display:flex;flex-direction:column;height:100%}.RoomView_body .Timeline,.RoomView_body .TimelineLoadingView{flex:1 0}.middle-header{display:flex}.RoomGridView{display:grid}.RoomGridView.layout3x2{grid-template:"t0 t1 t2" 1fr "t3 t4 t5" 1fr / 1fr 1fr 1fr}.RoomGridView>.tile0{grid-area:t0}.RoomGridView>.tile1{grid-area:t1}.RoomGridView>.tile2{grid-area:t2}.RoomGridView>.tile3{grid-area:t3}.RoomGridView>.tile4{grid-area:t4}.RoomGridView>.tile5{grid-area:t5}.RoomGridView>div{display:flex;min-width:0;min-height:0}.RoomGridView>div.focus-ring{z-index:1;pointer-events:none}.menu{position:absolute;z-index:2}.menu .menu-item{box-sizing:border-box;width:100%}.Settings{display:flex;flex-direction:column}.SettingsBody{min-height:0;overflow-y:auto}.LazyListParent{flex:1 1;flex-basis:0;margin-top:15px}.LoadingView{display:flex;justify-content:center;align-items:center}.vertical-layout{display:flex;flex-direction:row;align-items:center;gap:12px}.vertical-layout>.stretch{flex:1 0}.popupContainer{position:absolute;white-space:nowrap}.SessionPickerView{padding:.4em}.SessionPickerView ul{list-style:none;padding:0}.SessionPickerView li{margin:.4em 0}.SessionPickerView .session-info{cursor:pointer;display:flex;align-items:center}.SessionPickerView .session-info>:not(:first-child){margin-left:8px}.SessionPickerView li .user-id{flex:1 1;overflow:hidden;text-overflow:ellipsis}.SessionPickerView li .error{margin:0 20px}.PasswordLoginView{padding:0 .4em .4em}.SessionLoadStatusView>.status,.LoginView_query-spinner{display:flex;gap:12px}.SessionLoadStatusView>.status p,.LoginView_query-spinner p{flex:1 1;margin:0}.SessionLoadStatusView .spinner{--size: 20px}.StartSSOLoginView{display:flex;flex-direction:column;padding:0 .4em}.StartSSOLoginView_button{flex:1 1;margin-top:12px}.LoginView_separator{justify-content:center;display:flex;margin:8px}.CompleteSSOView_title{display:flex;justify-content:center}.LoginView_sso{padding:.4em .4em 0}.LeftPanel{display:flex;flex-direction:column}.LeftPanel .utilities{display:flex}.LeftPanel .utilities .FilterField{flex:1 1;min-width:0}.LeftPanel ul{list-style:none;padding:0;margin:0}.RoomList{flex:1 0;overflow-y:auto;overscroll-behavior:contain}.RoomList>li>a{display:flex;align-items:center}.RoomList .description{margin:0;flex:1 1;min-width:0;display:flex}.RoomList .description>.name{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;flex:1 1}.RightPanelView{grid-area:right;min-height:0;min-width:0;display:flex;flex-direction:column}.RoomDetailsView,.MemberDetailsView{flex-direction:column;flex:1 1}.RoomDetailsView_avatar{display:flex}.RoomDetailsView_name h2,.MemberDetailsView_name h2{text-align:center}.MemberDetailsView_shield_container{display:flex;gap:4px}.MemberDetailsView_shield_red,.MemberDetailsView_shield_green,.MemberDetailsView_shield_black{background-size:contain;background-repeat:no-repeat;width:24px;height:24px;display:block;flex-shrink:0}.MemberDetailsView_shield_description{flex-grow:1;margin:0}.MemberDetailsView_shield_red{background-image:var(--icon-url-0)}.MemberDetailsView_shield_green{background-image:var(--icon-url-1)}.MemberDetailsView_shield_black{background-image:var(--icon-url-2)}.RoomDetailsView_label,.RoomDetailsView_row,.RoomDetailsView,.MemberDetailsView,.EncryptionIconView{display:flex;align-items:center;color:var(--text-color)}.RoomDetailsView_value{display:flex;justify-content:flex-end}.EncryptionIconView{justify-content:center}.RightPanelView_buttons{display:flex;justify-content:space-between;width:100%;box-sizing:border-box;padding:16px}.RightPanelView_buttons .hide{visibility:hidden}.MemberTileView a{display:flex;align-items:center}.middle-header{align-items:center}.middle-header h2{flex:1 1}.middle-header .room-description{flex:1 1;min-width:0}.RoomHeader .topic{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.RoomHeader .description{flex:1 1 auto;min-width:0}.middle-header h2{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin:0}.MessageComposer_replyPreview{display:grid;grid-template-columns:1fr auto}.MessageComposer_replyPreview .Timeline_message{grid-column:1/-1}.MessageComposer_input{display:flex;align-items:center}.MessageComposer_input>input{display:block;flex:1 1;min-width:0;box-sizing:border-box}.TimelineLoadingView{display:flex;align-items:center;justify-content:center}.TimelineLoadingView>:not(:first-child){margin-left:12px}.Timeline{display:flex;flex-direction:column;position:relative;min-height:0}.Timeline_jumpDown{position:absolute}.Timeline_scroller{overflow-y:scroll;overscroll-behavior-y:contain;overflow-anchor:none;padding:0;margin:0;position:relative;min-height:0;flex:1 0}.Timeline_scroller>ul{list-style:none;padding:1px 0;margin:0}.AnnouncementView{display:flex;align-items:center}.GapView_container{display:flex}.GapView_container>span{flex:1 1}.Timeline_messageBody img{max-width:400px;max-height:300px}.hydrogen{--avatar-size: 32px}.hydrogen .avatar{width:var(--avatar-size);height:var(--avatar-size);line-height:var(--avatar-size);font-size:calc(var(--avatar-size) * .6);overflow:hidden;flex-shrink:0;user-select:none;text-align:center;speak:none}.hydrogen .avatar img{width:100%;height:100%;object-fit:cover}.hydrogen .avatar.size-128{--avatar-size: 128px;width:var(--avatar-size);height:var(--avatar-size);line-height:var(--avatar-size);font-size:calc(var(--avatar-size) * .6)}.hydrogen .avatar.size-96{--avatar-size: 96px;width:var(--avatar-size);height:var(--avatar-size);line-height:var(--avatar-size);font-size:calc(var(--avatar-size) * .6)}.hydrogen .avatar.size-64{--avatar-size: 64px;width:var(--avatar-size);height:var(--avatar-size);line-height:var(--avatar-size);font-size:calc(var(--avatar-size) * .6)}.hydrogen .avatar.size-52{--avatar-size: 52px;width:var(--avatar-size);height:var(--avatar-size);line-height:var(--avatar-size);font-size:calc(var(--avatar-size) * .6)}.hydrogen .avatar.size-30{--avatar-size: 30px;width:var(--avatar-size);height:var(--avatar-size);line-height:var(--avatar-size);font-size:calc(var(--avatar-size) * .6)}.hydrogen .avatar.size-24{--avatar-size: 24px;width:var(--avatar-size);height:var(--avatar-size);line-height:var(--avatar-size);font-size:calc(var(--avatar-size) * .6)}.hydrogen .avatar.size-12{--avatar-size: 12px;width:var(--avatar-size);height:var(--avatar-size);line-height:var(--avatar-size);font-size:calc(var(--avatar-size) * .6)}@keyframes spinner{0%{transform:rotate(0);stroke-dasharray:0 0 10 90}45%{stroke-dasharray:0 0 90 10}75%{stroke-dasharray:0 50 50 0}to{transform:rotate(360deg);stroke-dasharray:10 90 0 0}}.hydrogen:not(.legacy) .spinner circle{transform-origin:50% 50%;animation-name:spinner;animation-duration:2s;animation-iteration-count:infinite;animation-timing-function:linear;stroke-dasharray:0 0 85 85;fill:none;stroke:currentcolor;stroke-width:12;stroke-linecap:butt}.hydrogen.legacy .spinner{display:inline-block;position:relative}.hydrogen.legacy .spinner div{box-sizing:border-box;display:block;position:absolute;padding:2px;border:2px solid currentcolor;border-radius:50%;animation:legacy-spinner 1.2s cubic-bezier(.5,0,.5,1) infinite;border-color:currentcolor transparent transparent transparent;width:var(--size);height:var(--size)}.hydrogen.legacy .spinner div:nth-child(1){animation-delay:-.45s}.hydrogen.legacy .spinner div:nth-child(2){animation-delay:-.3s}.hydrogen.legacy .spinner div:nth-child(3){animation-delay:-.15s}@keyframes legacy-spinner{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.spinner{--size: 20px;width:var(--size);height:var(--size)}.form-row.text>input,.form-row.text>textarea{display:block;width:100%;min-width:0;box-sizing:border-box}.FilterField{display:flex}.FilterField input{display:block;flex:1 1;min-width:0}.SessionStatusView{display:flex}.SessionStatusView p{margin:0 10px;word-break:break-all;word-break:break-word}body.hydrogen{overscroll-behavior:none;overflow:hidden}.hydrogen{margin:0}.hiddenWithLayout{visibility:hidden}.hidden{display:none!important}input::-ms-clear{display:none}@font-face{font-family:Inter;font-style:normal;font-weight:100;font-display:swap;src:url(./Inter-Thin.5d8e2ac4.woff2) format("woff2"),url(./Inter-Thin.5565b01e.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:100;font-display:swap;src:url(./Inter-ThinItalic.6b3ded18.woff2) format("woff2"),url(./Inter-ThinItalic.c413497b.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-weight:200;font-display:swap;src:url(./Inter-ExtraLight.da47c335.woff2) format("woff2"),url(./Inter-ExtraLight.d7be68a4.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:200;font-display:swap;src:url(./Inter-ExtraLightItalic.b3f94cfe.woff2) format("woff2"),url(./Inter-ExtraLightItalic.762fa4d2.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-weight:300;font-display:swap;src:url(./Inter-Light.0f7dfe72.woff2) format("woff2"),url(./Inter-Light.38326098.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:300;font-display:swap;src:url(./Inter-LightItalic.125c7e6a.woff2) format("woff2"),url(./Inter-LightItalic.ec6c76a8.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(./Inter-Regular.89d406b0.woff2) format("woff2"),url(./Inter-Regular.5b3a854b.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:400;font-display:swap;src:url(./Inter-Italic.bab4e808.woff2) format("woff2"),url(./Inter-Italic.7b187d57.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(./Inter-Medium.5d308f3d.woff2) format("woff2"),url(./Inter-Medium.0fc5d904.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:500;font-display:swap;src:url(./Inter-MediumItalic.76551c20.woff2) format("woff2"),url(./Inter-MediumItalic.1458af9d.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(./Inter-SemiBold.c7c3befe.woff2) format("woff2"),url(./Inter-SemiBold.04cd699f.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:600;font-display:swap;src:url(./Inter-SemiBoldItalic.d376ade4.woff2) format("woff2"),url(./Inter-SemiBoldItalic.420db54a.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(./Inter-Bold.6f5e9a23.woff2) format("woff2"),url(./Inter-Bold.20d46cff.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:700;font-display:swap;src:url(./Inter-BoldItalic.e09dcbe1.woff2) format("woff2"),url(./Inter-BoldItalic.31a185fa.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-weight:800;font-display:swap;src:url(./Inter-ExtraBold.0ef4267e.woff2) format("woff2"),url(./Inter-ExtraBold.45bae435.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:800;font-display:swap;src:url(./Inter-ExtraBoldItalic.d1e1f6a0.woff2) format("woff2"),url(./Inter-ExtraBoldItalic.30a1af87.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-weight:900;font-display:swap;src:url(./Inter-Black.7f1f5616.woff2) format("woff2"),url(./Inter-Black.067c82f7.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:900;font-display:swap;src:url(./Inter-BlackItalic.72d5983b.woff2) format("woff2"),url(./Inter-BlackItalic.c628a2cf.woff) format("woff")}.Timeline_jumpDown{width:40px;height:40px;bottom:16px;right:32px;border-radius:100%;border:1px solid var(--background-color-secondary--darker-7);background-image:var(--icon-url-3);background-position:center;background-color:var(--background-color-primary--darker-10);background-repeat:no-repeat;cursor:pointer}.Timeline_message{display:grid;grid-template:"avatar sender" auto "avatar body" auto "time body" 1fr "time reactions" auto / 30px 1fr;column-gap:8px;padding:4px;margin:0 12px;box-sizing:border-box}.Timeline_message:not(.continuation){margin-top:4px}.ReplyPreviewView .Timeline_message{display:grid;grid-template:"body" auto;margin-left:0;padding:0}.ReplyPreviewView .Timeline_message:not(.continuation){margin-top:0}@media screen and (max-width: 800px){.Timeline_message{grid-template:"avatar sender" auto "body body" 1fr "time time" auto "reactions reactions" auto / 30px 1fr}.Timeline_messageSender{margin-top:0!important;align-self:center}}.Timeline_message:hover:not(.disabled),.Timeline_message.selected,.Timeline_message.menuOpen{background-color:#8d97a51a;border-radius:4px}.Timeline_message:hover>.Timeline_messageOptions,.Timeline_message.menuOpen>.Timeline_messageOptions{display:block;user-select:none}.Timeline_messageAvatar{grid-area:avatar;text-decoration:none}.Timeline_messageSender{grid-area:sender;font-weight:700;line-height:1.7rem}.Timeline_messageSender,.Timeline_messageBody{margin:0;word-break:break-all;word-break:break-word}.Timeline_message:not(.continuation) .Timeline_messageSender,.Timeline_message:not(.continuation) .Timeline_messageBody{margin-top:4px}.Timeline_messageOptions{display:none;grid-area:body;align-self:start;justify-self:end;margin-top:-12px;margin-right:4px;border:var(--background-color-primary--darker-10) 1px solid;height:24px;width:24px;background-color:var(--background-color-primary);color:inherit;border-radius:4px;padding:0;text-align:center;line-height:22px;cursor:pointer}.Timeline_messageTime{grid-area:time}.Timeline_messageBody time{padding:2px 0 0 10px;user-select:none}.Timeline_messageBody time,.Timeline_messageTime{font-size:.8em;line-height:normal;color:var(--timeline-time-text-color)}.Timeline_messageBody.statusMessage{font-style:italic;color:var(--light-text-color)}.Timeline_messageBody{grid-area:body;line-height:2.2rem;width:100%;min-width:0}.hydrogen .Timeline_messageSender.usercolor1{color:var(--usercolor1)}.hydrogen .Timeline_messageSender.usercolor2{color:var(--usercolor2)}.hydrogen .Timeline_messageSender.usercolor3{color:var(--usercolor3)}.hydrogen .Timeline_messageSender.usercolor4{color:var(--usercolor4)}.hydrogen .Timeline_messageSender.usercolor5{color:var(--usercolor5)}.hydrogen .Timeline_messageSender.usercolor6{color:var(--usercolor6)}.hydrogen .Timeline_messageSender.usercolor7{color:var(--usercolor7)}.hydrogen .Timeline_messageSender.usercolor8{color:var(--usercolor8)}.Timeline_messageBody h1,.Timeline_messageBody h2,.Timeline_messageBody h3,.Timeline_messageBody h4,.Timeline_messageBody h5,.Timeline_messageBody h6{font-weight:700;margin:.7em 0}.Timeline_messageBody h1{font-size:1.6em}.Timeline_messageBody h2{font-size:1.5em}.Timeline_messageBody h3{font-size:1.4em}.Timeline_messageBody h4{font-size:1.3em}.Timeline_messageBody h5{font-size:1.2em}.Timeline_messageBody h6{font-size:1.1em}.Timeline_messageBody a{word-break:break-all}.Timeline_messageBody a.link{color:var(--link-color);text-decoration:none}.Timeline_messageBody .media{display:grid;margin-top:4px;width:100%}.Timeline_messageBody .media>a{text-decoration:none;width:100%;display:block}.Timeline_messageBody .media>*{grid-row:1;grid-column:1}.Timeline_messageBody .media img,.Timeline_messageBody .media video{width:100%;height:auto;align-self:start;border-radius:4px;display:block}.hydrogen:not(.legacy) .Timeline_messageBody .media img,.hydrogen:not(.legacy) .Timeline_messageBody .media video{align-self:stretch}.Timeline_messageBody .media>.status{align-self:end;justify-self:start;font-size:.8em}.Timeline_messageBody .media>progress{align-self:center;justify-self:center;width:75%}.Timeline_messageBody .media>time{align-self:end;justify-self:end}.Timeline_messageBody .media>time,.Timeline_messageBody .media>.status{color:var(--text-color);display:block;padding:2px;margin:4px;background-color:#ffffffbf;border-radius:4px}.Timeline_messageBody .media>.spacer{width:100%;align-self:start}.Timeline_messageBody code,.Timeline_messageBody pre{background-color:var(--background-color-secondary);font-family:monospace;font-size:.9em}.Timeline_messageBody code{border-radius:3px;padding:.2em .3em;margin:0}.Timeline_messageBody pre{border:1px solid var(--light-border);padding:.5em;max-height:30em;overflow:auto}.Timeline_messageBody pre>code{background-color:unset;border-radius:unset;display:block;font-size:unset}.Timeline_messageBody blockquote{margin-left:0;padding-left:20px;border-left:4px solid var(--light-border)}.Timeline_messageBody table{border:1px solid var(--background-color-secondary--darker-15);border-radius:2px;border-spacing:0}.Timeline_messageBody thead th{border-bottom:1px solid var(--background-color-secondary--darker-15)}.Timeline_messageBody td,.Timeline_messageBody th{padding:2px 5px}.Timeline_messageBody tbody tr:nth-child(2n){background-color:var(--background-color-secondary)}.Timeline_messageBody .pill{padding:0 5px;border-radius:15px;background-color:var(--background-color-secondary);border:1px solid var(--background-color-secondary--darker-10);text-decoration:none;display:inline-flex;align-items:center;line-height:2rem;vertical-align:top;margin:1px}.Timeline_messageBody .pill div.avatar{display:inline-block;margin-right:3px}.Timeline_message.unsent .Timeline_messageBody{color:var(--light-text-color)}.Timeline_message.unverified .Timeline_messageBody{color:var(--error-color)}.Timeline_messageReactions{grid-area:reactions;margin-top:6px}.Timeline_messageReactions button{display:inline-flex;line-height:2rem;margin-right:6px;padding:1px 6px;border:1px solid var(--light-border);border-radius:10px;background-color:var(--background-color-secondary);color:inherit;cursor:pointer;user-select:none;vertical-align:middle}.Timeline_messageReactions button.active{background-color:var(--accent-color--alpha-11);border-color:var(--accent-color)}@keyframes glow-reaction-border{0%{border-color:var(--background-color-secondary)}to{border-color:var(--accent-color)}}.Timeline_messageReactions button.active.pending{animation-name:glow-reaction-border;animation-duration:.5s;animation-direction:alternate;animation-iteration-count:infinite;animation-timing-function:linear}.Timeline_locationLink{padding:0 8px;border-radius:16px;border:1px solid var(--light-border);background-color:var(--background-color-secondary);text-decoration:none;display:inline-block;line-height:2rem;vertical-align:top;margin:1px 4px}.AnnouncementView{margin:5px 0;padding:5px 10%}.AnnouncementView>div{margin:0 auto;padding:10px 20px;background-color:var(--background-color-secondary);text-align:center;border-radius:10px}.GapView_container>:not(:first-child){margin-left:12px}.GapView{padding:52px 20px}.GapView.isAtTop{padding:52px 20px 12px}.DateHeader{font-weight:700;font-size:1.5rem;position:sticky;top:5px}.DateHeader time{margin:0 auto;max-width:350px;padding:12px;display:block;color:var(--light-text-color);background-color:var(--background-color-primary);border-radius:8px;text-align:center}.CallTileView>div>div{display:flex;flex-direction:column;gap:4px}.CallTileView_members>*{margin-right:-16px}.CallTileView_members{display:flex}.CallTileView_title{font-weight:700}.CallTileView_subtitle{font-size:12px}.CallTileView_memberCount:before{content:"";background-image:var(--icon-url-4);background-repeat:no-repeat;background-size:16px 16px;width:16px;height:16px;display:inline-flex;vertical-align:bottom;margin-right:4px}.CallView{height:40vh;display:grid}.CallView>*{grid-column:1;grid-row:1}.CallView_error{align-self:start;justify-self:center;margin:16px;z-index:1}.CallView_members{display:grid;gap:12px;background:var(--background-color-secondary--darker-5);padding:12px;margin:0;min-height:0;list-style:none;align-self:stretch}.StreamView{display:grid;border-radius:8px;overflow:hidden;background-color:#000}.StreamView>*{grid-column:1;grid-row:1}.StreamView video{width:100%;height:100%;min-height:0;object-fit:contain}.StreamView_avatar{align-self:center;justify-self:center}.StreamView_error{align-self:start;justify-self:center;z-index:1}.StreamView_muteStatus{align-self:start;justify-self:end;width:24px;height:24px;background-position:center;background-repeat:no-repeat;background-size:14px;display:block;background-color:var(--text-color);border-radius:4px;margin:4px}.StreamView_muteStatus.microphoneMuted{background-image:var(--icon-url-5)}.StreamView_muteStatus.cameraMuted{background-image:var(--icon-url-6)}.CallView_buttons{align-self:end;justify-self:center;display:flex;gap:12px;margin-bottom:16px;z-index:1}.CallView_buttons button{border-radius:100%;width:48px;height:48px;border:none;background-color:var(--accent-color);background-position:center;background-repeat:no-repeat}.CallView_buttons button:disabled{background-color:var(--accent-color--lighter-10)}.CallView_buttons .CallView_hangup{background-color:var(--error-color);background-image:var(--icon-url-7)}.CallView_buttons .CallView_hangup:disabled{background-color:var(--error-color--lighter-10)}.CallView_buttons .CallView_mutedMicrophone{background-color:var(--background-color-primary);background-image:var(--icon-url-8)}.CallView_buttons .CallView_unmutedMicrophone{background-image:var(--icon-url-9)}.CallView_buttons .CallView_mutedCamera{background-color:var(--background-color-primary);background-image:var(--icon-url-10)}.CallView_buttons .CallView_unmutedCamera{background-image:var(--icon-url-11)}.CallView_members.size1{grid-template-columns:1fr;grid-template-rows:1fr}.CallView_members.size2{grid-template-columns:1fr;grid-template-rows:repeat(2,1fr)}.CallView_members.square.size3,.CallView_members.square.size4{grid-template-columns:repeat(2,1fr);grid-template-rows:repeat(2,1fr)}.CallView_members.square.size5,.CallView_members.square.size6{grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(2,1fr)}.CallView_members.square.size7,.CallView_members.square.size8,.CallView_members.square.size9{grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr)}.CallView_members.square.size10{grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(4,1fr)}.CallView_members.tall.size3{grid-template-columns:1fr;grid-template-rows:repeat(3,1fr)}.CallView_members.tall.size4{grid-template-columns:1fr;grid-template-rows:repeat(4,1fr)}.CallView_members.tall.size5,.CallView_members.tall.size6{grid-template-rows:repeat(3,1fr);grid-template-columns:repeat(2,1fr)}.CallView_members.tall.size7,.CallView_members.tall.size8{grid-template-rows:repeat(4,1fr);grid-template-columns:repeat(2,1fr)}.CallView_members.tall.size9,.CallView_members.tall.size10{grid-template-rows:repeat(5,1fr);grid-template-columns:repeat(2,1fr)}.CallView_members.wide.size2{grid-template-columns:repeat(2,1fr);grid-template-rows:1fr}.CallView_members.wide.size3{grid-template-rows:1fr;grid-template-columns:repeat(3,1fr)}.CallView_members.wide.size4{grid-template-rows:1fr;grid-template-columns:repeat(4,1fr)}.CallView_members.wide.size5,.CallView_members.wide.size6{grid-template-rows:repeat(2,1fr);grid-template-columns:repeat(3,1fr)}.CallView_members.wide.size7,.CallView_members.wide.size8{grid-template-rows:repeat(2,1fr);grid-template-columns:repeat(4,1fr)}.CallView_members.wide.size9,.CallView_members.wide.size10{grid-template-rows:repeat(3,1fr);grid-template-columns:repeat(4,1fr)}.ErrorView_block{background:var(--error-color);color:var(--fixed-white);margin:16px}.ErrorView.ErrorView_inline{color:var(--error-color);margin:4px 0;padding:4px 0}.ErrorView.ErrorView_inline>p{margin:0}.ErrorView{font-weight:700;margin:16px;border-radius:8px;padding:12px;display:flex;gap:8px}.ErrorView_message{flex-basis:0;flex-grow:1;margin:0;word-break:break-all;word-break:break-word;align-self:center}.ErrorView_submit{align-self:end}.ErrorView_close{align-self:start;width:16px;height:16px;border:none;background:none;background-repeat:no-repeat;background-size:contain;cursor:pointer}.ErrorView_block .ErrorView_close{background-image:var(--icon-url-12)}.ErrorView_inline .ErrorView_close{background-image:var(--icon-url-13)}:root{font-size:10px;--icon-color: var(--background-color-secondary--darker-40);--light-border: var(--background-color-secondary--darker-5);--light-text-color: var(--background-color-secondary--darker-55);--timeline-time-text-color: var(--background-color-secondary--darker-35);--icon-background: var(--background-color-secondary--darker-7);--right-panel-text-color: var(--background-color-secondary--darker-35)}.hydrogen{font-family:Inter,sans-serif,"emoji";background-color:var(--background-color-primary);color:var(--text-color);font-size:1.4rem;--usercolor1: #368BD6;--usercolor2: #AC3BA8;--usercolor3: #03B381;--usercolor4: #E64F7A;--usercolor5: #FF812D;--usercolor6: #2DC2C5;--usercolor7: #5C56F5;--usercolor8: #74D12C}.hydrogen button{font-family:inherit}.avatar{border-radius:100%;background:var(--background-color-primary);color:var(--fixed-white)}.hydrogen .avatar.usercolor1{background-color:var(--usercolor1)}.hydrogen .avatar.usercolor2{background-color:var(--usercolor2)}.hydrogen .avatar.usercolor3{background-color:var(--usercolor3)}.hydrogen .avatar.usercolor4{background-color:var(--usercolor4)}.hydrogen .avatar.usercolor5{background-color:var(--usercolor5)}.hydrogen .avatar.usercolor6{background-color:var(--usercolor6)}.hydrogen .avatar.usercolor7{background-color:var(--usercolor7)}.hydrogen .avatar.usercolor8{background-color:var(--usercolor8)}.logo{height:48px;min-width:48px;background-image:var(--icon-url-14);background-repeat:no-repeat;background-position:center}.button-row{display:flex}.button-row>*{margin-right:10px}.button-row>*:last-child{margin-right:0}.button-row .button-action{margin:10px 0;flex:1 0 auto}.form-row.text textarea{font-family:Inter,sans-serif;background-color:var(--background-color-secondary);color:inherit}.form-group{margin:24px 0}.form-row{margin:12px 0}.form-row.text>input,.form-row.text>textarea{padding:12px;border:1px solid var(--light-border);border-radius:8px;margin-top:5px;font-size:1em;resize:vertical;background-color:var(--background-color-secondary);color:inherit}.form-row.check{display:flex;align-items:baseline;gap:4px}.form-row.text>label,.form-row.text>input{display:block}.form-row .form-row-description{font-size:1rem;color:var(--light-text-color);margin:8px 0 0}.button-action{cursor:pointer}a.button-action{text-decoration:none;text-align:center;display:block}.button-action.secondary{color:var(--accent-color)}.button-action.primary{background-color:var(--accent-color);border-radius:8px;color:var(--fixed-white);font-weight:700}.button-action.primary:disabled{color:var(--fixed-white--darker-10)}.button-action.primary.destructive{background-color:var(--error-color)}.button-action.secondary.destructive{color:var(--error-color)}.button-action{border:none;padding:10px;background:none;font-weight:500}.button-utility{cursor:pointer;width:32px;height:32px;background-position:center;background-color:var(--icon-background);background-repeat:no-repeat;border:none;border-radius:100%;display:block}.button-utility.grid{background-image:var(--icon-url-15)}.button-utility.settings{background-image:var(--icon-url-16)}.button-utility.create{background-image:var(--icon-url-17)}.button-utility.grid.on{background-image:var(--icon-url-18)}.FilterField{background-image:var(--icon-url-19);background-repeat:no-repeat;background-position:8px center;background-color:var(--icon-background);border:1px solid transparent;border-radius:16px;height:32px;align-items:center;padding-left:30px;box-sizing:border-box}.FilterField:focus-within{border:1px var(--icon-background) solid;background-color:var(--background-color-primary)}.FilterField:focus-within button{border-color:var(--background-color-primary)}.FilterField input{font-family:Inter;font-size:1.3rem;font-weight:500;line-height:1.573rem;outline:none;border:none;background-color:transparent;height:100%;color:var(--text-color)}.FilterField button{width:30px;height:30px;background-position:center;background-color:var(--icon-background);background-repeat:no-repeat;background-image:var(--icon-url-20);border:7px solid transparent;border-radius:100%;box-sizing:border-box}.PreSessionScreen{padding:30px}.PreSessionScreen h1{font-size:16px;text-align:center}.SessionLoadView{padding-top:16px}.StartSSOLoginView_button{border:1px solid var(--accent-color);border-radius:8px}.LoginView_back{background-image:var(--icon-url-21);background-color:transparent}.LoginView_separator{font-weight:500;font-size:1.5rem}.LoginView_forwardInfo{font-size:.9em;margin-left:1em;color:var(--light-text-color)}.CompleteSSOView_title{font-weight:500}@media screen and (min-width: 600px){.PreSessionScreen{box-shadow:0 6px 32px #0000001a;border-radius:8px}}.PreSessionScreen .logo{height:48px;min-width:48px}.LeftPanel{background:var(--background-color-secondary);font-size:1.5rem;padding:12px 8px 0}.LeftPanel>:not(:first-child){margin-top:12px}.LeftPanel .utilities>:not(:first-child){margin-left:8px}.LeftPanel .filter{border-bottom:1px solid var(--background-color-secondary)}.LeftPanel .filter input{padding:.8em;border:none}.LeftPanel .RoomList{padding:0 8px 0 0;margin-right:-8px}.RoomList>li{margin:0;padding:4px 8px 4px 0;align-items:center}.RoomList>li>a{text-decoration:none;align-items:center}.RoomList li:not(:first-child){margin-top:4px}.RoomList li.active{background:var(--background-color-secondary--darker-7);border-radius:5px}.RoomList li>a>*{margin-right:8px}.RoomList .description{align-items:center}.RoomList .name.unread{font-weight:600}.RoomList .badge{min-width:1.6rem;height:1.6rem;border-radius:1.6rem;box-sizing:border-box;padding:.1rem .3rem;background-color:var(--room-badge);color:var(--fixed-white);font-weight:700;font-size:1rem;line-height:1.4rem;text-align:center}.RoomList .badge.highlighted{background-color:var(--error-color)}a{color:inherit}.SessionStatusView{padding:4px;min-height:22px;background-color:var(--accent-color);color:var(--fixed-white);align-items:center}.SessionStatusView button.link{color:currentcolor;text-align:left}.SessionStatusView>.end{flex:1 1;display:flex;justify-content:flex-end;align-self:stretch;align-items:stretch}.SessionStatusView .dismiss{border:none;background:none;background-image:var(--icon-url-22);background-position:center;background-repeat:no-repeat;width:32px;cursor:pointer}.room-placeholder{align-items:center;justify-content:center;text-align:center;padding:20px}.SessionPickerView li{font-size:1.2em}.SessionPickerView .session-info{text-decoration:none;padding:12px;border:1px solid var(--light-border);border-radius:8px;background-image:var(--icon-url-23);background-position:center right 30px;background-repeat:no-repeat;font-weight:500}.SessionPickerView .session-actions{margin:10px 0 20px;display:flex}.SessionPickerView .session-actions>*{margin-right:10px}.SessionPickerView .session-actions>*:last-child{margin-right:0}.SessionPickerView .session-actions button{border:none;background:none;color:inherit}.SessionPickerView button.destructive{color:var(--error-color)}.RoomGridView>div.container{border-right:1px solid var(--background-color-secondary);border-bottom:1px solid var(--background-color-secondary)}.RoomGridView>.focused>.room-placeholder .unfocused{display:none}.RoomGridView>:not(.focused)>.room-placeholder .focused{display:none}.room-placeholder .unfocused{color:var(--right-panel-text-color)}.RoomGridView>div.focus-ring{border:2px solid var(--accent-color--darker-5);border-radius:12px}.middle-header{box-sizing:border-box;flex:0 0 56px;background:var(--background-color-primary);padding:0 16px;border-bottom:1px solid var(--background-color-secondary)}.middle-header h2{font-size:1.8rem;font-weight:600}.middle-header>:not(:last-child){margin-right:8px}.close-middle,.close-session{background-image:var(--icon-url-24);background-position-x:10px}.RoomHeader .topic{font-size:14rem}.RoomHeader .room-options{background-image:var(--icon-url-25)}.RoomView_error{color:var(--error-color);background:#efefef;height:0px;font-weight:700;transition:.25s all ease-out;padding-right:20px;padding-left:20px}.RoomView_error div{overflow:hidden;height:100%;width:100%;position:relative;display:flex;align-items:center}.RoomView_error:not(:empty){height:auto;padding-top:20px;padding-bottom:20px}.RoomView_error p{position:relative;display:block;width:100%;height:auto;margin:0}.RoomView_error button{width:40px;padding-top:20px;padding-bottom:20px;background:none;border:none;position:relative;border-radius:5px;transition:.1s all ease-out;cursor:pointer}.RoomView_error button:hover{background:#cfcfcf}.RoomView_error button:before{content:"\274c";position:absolute;top:15px;left:9px;width:20px;height:10px;font-size:10px;align-self:middle}.MessageComposer_replyPreview .Timeline_message{margin:5px 0 0;max-height:30vh;overflow:auto}.MessageComposer_replyPreview{background:var(--background-color-secondary);margin:0 10px 10px;box-shadow:0 0 5px var(--background-color-secondary--darker-15);border-radius:5px}.MessageComposer_input,.MessageComposer_replyPreview{padding:8px}.MessageComposer_replyPreview>.replying{display:inline-flex;flex-direction:row;align-items:center;font-weight:700}.MessageComposer_replyPreview>button.cancel{width:32px;height:32px;display:block;border:none;text-indent:200%;white-space:nowrap;overflow:hidden;background-color:transparent;background-image:var(--icon-url-26);background-repeat:no-repeat;background-position:center;background-size:18px;cursor:pointer}.MessageComposer_input:first-child{border-top:1px solid var(--background-color-secondary)}.MessageComposer_input>:not(:first-child){margin-left:12px}.MessageComposer_input>textarea{border:none;border-radius:24px;background:var(--background-color-secondary);color:inherit;font-size:14px;font-family:Inter,sans-serif;resize:none;flex:1 1;padding:14px;box-sizing:border-box;overflow:hidden;max-height:113px;overflow-y:auto;overflow-y:overlay}.MessageComposer_input>button.send{width:32px;height:32px;display:block;border-radius:100%;border:none;text-indent:200%;overflow:hidden;background-color:var(--accent-color);background-image:var(--icon-url-27);background-repeat:no-repeat;background-position:center;align-self:end;margin-bottom:8px}.MessageComposer_input>button.sendFile{width:32px;height:32px;display:block;border:none;text-indent:200%;white-space:nowrap;overflow:hidden;background-color:transparent;background-image:var(--icon-url-28);background-repeat:no-repeat;background-position:center}.MessageComposer.MessageComposer_canSend button.sendFile{display:none}.MessageComposer:not(.MessageComposer_canSend) button.send{display:none}.SettingsBody{padding:0 16px}.Settings h3{margin:16px 0 8px}.Settings p{max-width:700px}.Settings .row .label{font-weight:600}.Settings .row .label,.Settings .row .content{margin-top:4px;margin-bottom:4px}.Settings .row .content{margin-left:4px;flex:1 1}.Settings .row.code .content{font-family:monospace}.Settings .row .content button{display:inline-block;margin:0 8px}.Settings .row .content input[type=range]{width:100%;max-width:300px;min-width:160px}.Settings .row{margin:4px 0;display:flex;flex-wrap:wrap;align-items:center}.Settings .row .label{flex:0 0 200px;align-self:flex-start}.Settings .row .content p{margin:8px 0}.Settings .row .content p:first-child{margin-top:0}.Settings .row .content p:last-child{margin-bottom:0}.FeatureView{display:flex;gap:8px}.FeaturesView ul{list-style:none;padding:8px 16px}.FeaturesView input[type=checkbox]{align-self:start}.FeatureView h4{margin:0}.FeatureView p{margin:8px 0}.error{color:var(--error-color);font-weight:600}button.link{font-size:1em;border:none;text-decoration:underline;background:none;cursor:pointer;margin:-12px;padding:12px;color:inherit}.Settings a,.Settings .link{color:var(--accent-color);font-weight:600}.lightbox{background-color:#000000bf;display:grid;grid-template:"content close" auto "content details" 1fr / 1fr auto;color:var(--background-color-primary);padding:4px}@media (max-aspect-ratio: 1/1){.lightbox{grid-template:"close" auto "content" 1fr "details" auto / 1fr}.lightbox .details{width:100%!important}}.lightbox .picture{grid-area:content;background-size:contain;background-position:center;background-repeat:no-repeat;width:100%;height:100%;align-self:center;justify-self:center}.lightbox .loading{grid-area:content;align-self:center;justify-self:center;display:flex}.lightbox .loading>:not(:first-child){margin-left:8px}.lightbox .close{display:block;grid-area:close;justify-self:end;background-image:var(--icon-url-29);background-position:center;background-size:16px;background-repeat:no-repeat;width:16px;height:16px;padding:12px}.lightbox .details{grid-area:details;padding:12px;font-size:1.5rem;width:200px}.menu{border-radius:8px;box-shadow:2px 2px 10px #00000080;padding:4px;background-color:var(--background-color-primary);list-style:none;margin:0}.menu li{margin-bottom:10px}.menu .menu-item{color:var(--text-color)}.menu button{border-radius:4px;border:none;background-color:transparent;text-align:left;padding:8px 32px 8px 8px;font-size:1.5rem;height:24px;cursor:pointer}.menu .destructive button{color:var(--error-color)}.menu .quick-reactions{display:flex;padding:8px 32px 8px 8px}.menu .quick-reactions button{padding:2px 4px;text-align:center}.InviteView_body{display:flex;justify-content:space-around;align-items:center;flex:1 1;overflow:auto}.InviteView_invite{display:flex;width:100%;max-width:400px;flex-direction:column;padding:0 24px}.InviteView_roomProfile{display:grid;gap:4px;grid-template:"avatar name" auto "avatar description" 1fr / 72px 1fr;align-self:center;margin-bottom:24px}.InviteView_roomProfile h3{grid-area:name;margin:0}.InviteView_roomDescription{grid-area:description;font-size:1.2rem;margin:0;color:var(--light-text-color)}.InviteView_roomAvatar{grid-area:avatar}.InviteView_dmAvatar{align-self:center}.InviteView_inviter{text-align:center;margin:24px 0}.InviteView_inviter .avatar{display:inline-block;vertical-align:middle;margin-right:4px}.InviteView_buttonRow{margin:10px auto;max-width:200px;width:100%}.InviteView_buttonRow button{display:block;width:100%}.DisabledComposerView{padding:12px;background-color:var(--background-color-secondary)}.DisabledComposerView h3{margin:0}.UnknownRoomView_container{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center}.UnknownRoomView_body{height:100%;text-align:center;padding:16px;box-sizing:border-box}.UnknownRoomView h2{word-break:break-all;word-break:break-word}.UnknownRoomView button{max-width:200px;width:100%}.LoadingView{height:100%;width:100%}.LoadingView .spinner{margin-right:5px}.InvitePanelView{display:flex;flex-direction:column;justify-content:center;align-items:center}.InvitePanelView__form{margin-top:8px}.InvitePanelView__input{font-family:Inter;font-size:1.3rem;font-weight:500;line-height:1.573rem;outline:none;border:none;background-color:var(--icon-background);color:var(--text-color);height:32px;box-sizing:border-box;margin:5px;border-radius:16px;padding:15px;width:90%}.InvitePanelView__form,.InvitePanelView__btn{display:flex;flex-direction:column;justify-content:center;align-items:center}.InvitePanelView__btn{width:100px;height:30px;margin-top:8px}.InvitePanelView__heading{width:90%;text-align:center;margin:0}.RightPanelView{background:var(--background-color-secondary)}.RoomDetailsView{padding:0 16px 16px}.RoomDetailsView_id,.MemberDetailsView_id{color:var(--right-panel-text-color);font-size:12px}.RoomDetailsView_rows{margin-top:36px;width:100%}.RoomDetailsView_name h2,.MemberDetailsView_name h2{margin-bottom:4px;font-size:1.8rem}.RoomDetailsView_row{margin-bottom:20px;font-weight:500;font-size:15px;width:100%;background:none;border:none;padding:0}button.RoomDetailsView_row{cursor:pointer}button.RoomDetailsView_row:after{content:var(--icon-url-30);margin-left:12px}.RoomDetailsView_row:not(button):after{content:" ";width:19px}.RoomDetailsView_label:before{padding-right:16px;height:24px;width:20px}.RoomDetailsView_label{width:200px}.RoomDetailsView_value{color:var(--right-panel-text-color);flex:1 1}.MemberCount:before{content:var(--icon-url-31)}.EncryptionStatus:before{content:var(--icon-url-32)}.EncryptionIconView{width:52px;height:52px;border-radius:100%;background:var(--right-panel-text-color);border:3px solid var(--background-color-secondary);margin-left:-16px}.EncryptionIconView_encrypted,.EncryptionIconView_unencrypted{height:24px;width:24px}.EncryptionIconView_encrypted{content:var(--icon-url-33)}.EncryptionIconView_unencrypted{content:var(--icon-url-34)}.RightPanelView_buttons .button-utility{width:24px;height:24px}.RightPanelView_buttons .close{background-image:var(--icon-url-35)}.RightPanelView_buttons .back{background-image:var(--icon-url-36)}.MemberListView__list{padding-left:16px;padding-right:16px;margin:0}.MemberListView{display:flex;flex-direction:column;height:100%}.MemberListView__invite-container{display:flex;justify-content:center;align-items:center}.MemberListView__invite-btn{width:80%;height:32px;display:flex;justify-content:center;align-items:center}.MemberTileView{margin-bottom:8px;list-style:none}.MemberTileView a{text-decoration:none}.MemberTileView .avatar{margin-right:8px}.MemberTileView_name{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;flex:1 1}.MemberDetailsView_section{box-sizing:border-box;padding:16px;width:100%}.MemberDetailsView_label{font-size:12px;font-weight:600;color:var(--right-panel-text-color);text-transform:uppercase}.MemberDetailsView_value,.MemberDetailsView_options{margin-left:8px;margin-top:5px;font-size:12px}.MemberDetailsView_options{display:inline-flex;flex-direction:column}.MemberDetailsView_options a,.MemberDetailsView_options button{color:var(--accent-color);text-decoration:none;margin:0 0 3px;padding:0;border:none;background:none;cursor:pointer;text-align:left}.LazyListParent{overflow-y:auto}.LogoutScreen{height:100vh}.LogoutScreen .content{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center}.LogoutScreen .status{display:flex;gap:12px}.CreateRoomView_body,.JoinRoomView_body,.RoomBeingCreated_error{max-width:400px}.RoomBeingCreated_error{margin-top:48px}.centered-column{padding:0 12px;align-self:center;width:100%;box-sizing:border-box}.CreateRoomView_selectAvatar{border:none;background:none;cursor:pointer}.CreateRoomView_selectAvatarPlaceholder{width:64px;height:64px;border-radius:100%;background-color:var(--icon-background);background-image:var(--icon-url-37);background-repeat:no-repeat;background-position:center;background-size:36px}.JoinRoomView_status{display:flex;align-items:center;justify-content:center;margin-top:10px}.JoinRoomView_status .spinner{margin-right:5px}.ToastCollectionView{display:flex;position:fixed;flex-direction:column;z-index:1000;left:44px;top:52px}.ToastCollectionView ul{margin:0;padding:0}.VerificationToastNotificationView:not(:first-child),.CallToastNotificationView:not(:first-child){margin-top:12px}.VerificationToastNotificationView{display:flex;flex-direction:column}.CallToastNotificationView{display:grid;grid-template-rows:40px 1fr 1fr 48px;row-gap:4px}.VerificationToastNotificationView,.CallToastNotificationView{background-color:var(--background-color-secondary);border-radius:8px;color:var(--text-color);box-shadow:2px 2px 10px #00000080}.CallToastNotificationView{width:260px}.VerificationToastNotificationView{width:248px}.VerificationToastNotificationView__top{padding:8px;display:flex}.CallToastNotificationView__top{display:grid;grid-template-columns:auto 176px auto;align-items:center;justify-items:center}.VerificationToastNotificationView__dismiss-btn,.CallToastNotificationView__dismiss-btn{background:center var(--background-color-secondary--darker-5) var(--icon-url-38) no-repeat;border-radius:100%;height:15px;width:15px}.VerificationToastNotificationView__title,.CallToastNotificationView__name{font-weight:600;width:100%}.VerificationToastNotificationView__description{padding:8px}.CallToastNotificationView__description{margin-left:42px}.CallToastNotificationView__call-type:before{content:"";background-image:var(--icon-url-39);background-repeat:no-repeat;background-size:20px 20px;display:flex;width:20px;height:20px;padding-right:5px}.CallToastNotificationView__call-type:after{content:"";width:4px;height:4px;background-color:var(--text-color);border-radius:100%;align-self:center;margin:5px}.CallToastNotificationView__member-count:before{content:"";background-image:var(--icon-url-40);background-repeat:no-repeat;background-size:20px 20px;display:flex;width:20px;height:20px;padding-right:5px}.CallToastNotificationView__member-count,.CallToastNotificationView__call-type{display:flex;align-items:center}.CallToastNotificationView__info{display:flex;margin-left:42px}.CallToastNotificationView__action{display:flex;justify-content:end;margin-right:10px}.VerificationToastNotificationView__action{display:flex;justify-content:space-between;padding:8px}.CallToastNotificationView__action .button-action{width:100px;height:40px}.VerificationToastNotificationView__action .button-action{width:100px;height:32px;display:flex;align-items:center;justify-content:center}.VerifyEmojisView{width:100%}.VerificationCompleteView,.DeviceVerificationView,.SelectMethodView{display:flex;align-items:center;justify-content:center;flex-direction:column;width:100%}.SelectMethodView>div,.SelectMethodView__heading,.SelectMethodView__title{width:inherit;box-sizing:border-box}.VerificationCompleteView__heading,.VerifyEmojisView__heading,.SelectMethodView__heading,.MissingKeysView__heading,.WaitingForOtherUserView__heading{display:flex;align-items:center;gap:16px;flex-wrap:wrap;justify-content:center;padding:8px}.MissingKeysView__heading{text-align:center}.VerificationCompleteView>*,.SelectMethodView>*,.VerifyEmojisView>*,.WaitingForOtherUserView>*{padding:16px}.VerificationCancelledView__title,.VerificationCompleteView__title,.VerifyEmojisView__title,.SelectMethodView__title,.WaitingForOtherUserView__title{font-size:1.5em;text-align:center}.VerificationCompleteView__title,.VerifyEmojisView__title,.SelectMethodView__title,.WaitingForOtherUserView__title,.VerificationCancelledView__description,.MissingKeysView__description,.VerificationCompleteView__description,.VerifyEmojisView__description,.SelectMethodView__description,.WaitingForOtherUserView__description{text-align:center;margin:0}.VerificationCancelledView__actions,.MissingKeysView__actions,.SelectMethodView__actions,.VerifyEmojisView__actions,.WaitingForOtherUserView__actions{display:flex;justify-content:center;gap:12px;padding:16px}.EmojiCollection{display:flex;justify-content:center;gap:16px;flex-wrap:wrap}.EmojiContainer__emoji{font-size:3.2rem}.VerifyEmojisView__waiting,.EmojiContainer__name,.EmojiContainer__emoji{display:flex;justify-content:center;align-items:center}.EmojiContainer__name{font-weight:700}.VerifyEmojisView__waiting{gap:12px}.VerificationCompleteView__icon{background:var(--icon-url-41) no-repeat;background-size:contain;width:128px;height:128px}.SelectMethodView__name{overflow:hidden;text-overflow:ellipsis;width:100%;display:inline-block}.VerificationInProgressTileView,.VerificationCompletedTileView,.VerificationCancelledTileView,.VerificationReadyTileView{display:flex;gap:20px}.VerificationTileView__actions{display:flex;gap:16px}.VerificationTileView__description{display:flex;align-items:center;font-weight:700;font-size:1.4rem;color:var(--text-color);gap:4px;text-align:center}.VerificationInProgressTileView,.VerificationCompletedTileView,.VerificationCancelledTileView,.VerificationReadyTileView{background:var(--background-color-primary--darker-5);padding:8px;box-sizing:border-box;border-radius:8px}.VerificationTileView{display:flex;justify-content:center;padding:5px 10%;box-sizing:border-box}.VerificationInProgressTileView .VerificationTileView__shield,.VerificationReadyTileView .VerificationTileView__shield{background:var(--icon-url-42) no-repeat}.VerificationCompletedTileView .VerificationTileView__shield{background:var(--icon-url-43) no-repeat}.VerificationTileView__shield{width:20px;height:20px;display:flex;align-self:center}:root{--background-color-primary: #21262b;--background-color-secondary: #2D3239;--text-color: #fff;--accent-color: #03B381;--error-color: #FF4B55;--fixed-white: #fff;--room-badge: #61708b;--link-color: #238cf5}:root{--background-color-secondary--darker-7: #3d444d;--background-color-primary--darker-10: #374048;--background-color-secondary--darker-15: #4f5764;--background-color-secondary--darker-10: #444b56;--accent-color--alpha-11: rgba(3,179,129, .11);--background-color-secondary--darker-5: #383f47;--text-color--lighter-80: #333333;--accent-color--lighter-10: #02815d;--error-color--lighter-10: #ff1825;--background-color-secondary--darker-40: #8d97a5;--background-color-secondary--darker-55: #b8bec7;--background-color-secondary--darker-35: #7f8a9a;--fixed-white--darker-10: #ffffff;--accent-color--darker-5: #03cc93;--background-color-primary--darker-5: #2c3339}:root{--icon-url-0: url(./verification-error-3007923930.91f5da98.svg);--icon-url-1: url(./verified-3138359829.814d0123.svg);--icon-url-2: url(./encryption-status-2100926911.a90232b4.svg);--icon-url-3: url(./chevron-down-1956489915.3389f17f.svg);--icon-url-4: url(./room-members-871477030.90b799fe.svg);--icon-url-5: url(./mic-muted-2638557456.4d8c99b4.svg);--icon-url-6: url(./cam-muted-3489740486.a882d986.svg);--icon-url-7: url(./hangup-581771896.279a6adf.svg);--icon-url-8: url(./mic-muted-3642419863.228ee86f.svg);--icon-url-9: url(./mic-unmuted-211198830.1fde69c5.svg);--icon-url-10: url(./cam-muted-711199923.069dcf2b.svg);--icon-url-11: url(./cam-unmuted-2274150835.69bcdbc4.svg);--icon-url-12: url(./clear-2743697487.2f1a17f1.svg);--icon-url-13: url(./clear-2743697487.2f1a17f1.svg);--icon-url-14: url(./element-logo-1551909733.1d59f06a.svg);--icon-url-15: url(./enable-grid-2288309723.f83895c8.svg);--icon-url-16: url(./settings-878939771.57cf3680.svg);--icon-url-17: url(./plus-3937109722.5c243914.svg);--icon-url-18: url(./disable-grid-4240599831.c8dc25a1.svg);--icon-url-19: url(./search-261439583.1bffaca1.svg);--icon-url-20: url(./clear-4137897294.7b90e8df.svg);--icon-url-21: url(./chevron-left-2611498805.b5555a61.svg);--icon-url-22: url(./dismiss-2476348673.d0f98560.svg);--icon-url-23: url(./chevron-right-2390431650.ec9bf561.svg);--icon-url-24: url(./chevron-left-2611498805.b5555a61.svg);--icon-url-25: url(./vertical-ellipsis-487061581.e7709afd.svg);--icon-url-26: url(./clear-4137897294.7b90e8df.svg);--icon-url-27: url(./send-3413346515.b0fb8626.svg);--icon-url-28: url(./paperclip-3961996319.da562307.svg);--icon-url-29: url(./clear-2743697487.2f1a17f1.svg);--icon-url-30: url(./chevron-small-4098047679.489e66cc.svg);--icon-url-31: url(./room-members-3084360280.6f64aaef.svg);--icon-url-32: url(./encryption-status-3449529405.c200a9bb.svg);--icon-url-33: url(./e2ee-normal-1448349558.af8f5484.svg);--icon-url-34: url(./e2ee-disabled-1470792300.6863c16d.svg);--icon-url-35: url(./clear-4137897294.7b90e8df.svg);--icon-url-36: url(./chevron-thin-left-3078630092.d0d143e3.svg);--icon-url-37: url(./plus-3937109722.5c243914.svg);--icon-url-38: url(./clear-2743697487.2f1a17f1.svg);--icon-url-39: url(./video-call-2591082837.8f09bafc.svg);--icon-url-40: url(./room-members-2999414798.6534e8ec.svg);--icon-url-41: url(./verified-3138359829.814d0123.svg);--icon-url-42: url(./e2ee-normal-3923817510.8737e7ee.svg);--icon-url-43: url(./e2ee-normal-3127337641.2624a9c9.svg)} diff --git a/hydrogen/assets/theme-element-light.78427b5a.css b/hydrogen/assets/theme-element-light.78427b5a.css new file mode 100644 index 0000000..dbdb4ce --- /dev/null +++ b/hydrogen/assets/theme-element-light.78427b5a.css @@ -0,0 +1 @@ +@font-face{font-family:"emoji";src:local("Apple Color Emoji"),local("Segoe UI Emoji"),local("Segoe UI Symbol"),local("Noto Color Emoji"),local("Twemoji"),local("Twemoji Mozilla"),local("Android Emoji"),local("EmojiSymbols"),local("Symbola");unicode-range:U+1F300-1F5FF,U+1F600-1F64F,U+1F680-1F6FF,U+2600-26FF}html{height:100%}main{display:block}@media screen and (min-width: 600px){.PreSessionScreen{width:600px;box-sizing:border-box;margin:50px auto 0}}.room-placeholder{display:flex;flex-direction:row}.SessionView{position:fixed;height:100%;width:100%;display:grid;grid-template:"status status" auto "left middle" 1fr / 320px 1fr;min-height:0;min-width:0}.right-shown{grid-template:"status status status" auto "left middle right" 1fr / 320px 1fr 300px}.hydrogen.ios .SessionView{height:var(--ios-viewport-height, 100%);top:var(--ios-viewport-top, 0)}.middle .close-middle{display:none}@media screen and (max-width: 800px){.SessionView:not(.middle-shown):not(.right-shown){grid-template:"status" auto "left" 1fr / 1fr}.SessionView.middle-shown{grid-template:"status" auto "middle" 1fr / 1fr}.SessionView.right-shown{grid-template:"status" auto "right" 1fr / 1fr}.SessionView:not(.middle-shown):not(.right-shown) .room-placeholder{display:none}.SessionView.middle-shown .LeftPanel,.SessionView.right-shown .middle,.SessionView.right-shown .LeftPanel{display:none}.middle .close-middle{display:block!important}.LeftPanel .grid{display:none!important}.VerificationReadyTileView{flex-direction:column}.VerificationTileView__actions{justify-content:center}}.LeftPanel{grid-area:left;min-width:0;min-height:0}.room-placeholder,.middle{min-width:0;grid-area:middle;width:100%;min-height:0}.middle{display:flex;flex-direction:column}.SessionStatusView{grid-area:status}.lightbox{position:absolute;top:0;bottom:0;left:0;right:0;z-index:1;box-sizing:border-box;height:100%}.RoomView_body{flex:1 1;min-height:0;min-width:0;display:flex;flex-direction:column;height:100%}.RoomView_body .Timeline,.RoomView_body .TimelineLoadingView{flex:1 0}.middle-header{display:flex}.RoomGridView{display:grid}.RoomGridView.layout3x2{grid-template:"t0 t1 t2" 1fr "t3 t4 t5" 1fr / 1fr 1fr 1fr}.RoomGridView>.tile0{grid-area:t0}.RoomGridView>.tile1{grid-area:t1}.RoomGridView>.tile2{grid-area:t2}.RoomGridView>.tile3{grid-area:t3}.RoomGridView>.tile4{grid-area:t4}.RoomGridView>.tile5{grid-area:t5}.RoomGridView>div{display:flex;min-width:0;min-height:0}.RoomGridView>div.focus-ring{z-index:1;pointer-events:none}.menu{position:absolute;z-index:2}.menu .menu-item{box-sizing:border-box;width:100%}.Settings{display:flex;flex-direction:column}.SettingsBody{min-height:0;overflow-y:auto}.LazyListParent{flex:1 1;flex-basis:0;margin-top:15px}.LoadingView{display:flex;justify-content:center;align-items:center}.vertical-layout{display:flex;flex-direction:row;align-items:center;gap:12px}.vertical-layout>.stretch{flex:1 0}.popupContainer{position:absolute;white-space:nowrap}.SessionPickerView{padding:.4em}.SessionPickerView ul{list-style:none;padding:0}.SessionPickerView li{margin:.4em 0}.SessionPickerView .session-info{cursor:pointer;display:flex;align-items:center}.SessionPickerView .session-info>:not(:first-child){margin-left:8px}.SessionPickerView li .user-id{flex:1 1;overflow:hidden;text-overflow:ellipsis}.SessionPickerView li .error{margin:0 20px}.PasswordLoginView{padding:0 .4em .4em}.SessionLoadStatusView>.status,.LoginView_query-spinner{display:flex;gap:12px}.SessionLoadStatusView>.status p,.LoginView_query-spinner p{flex:1 1;margin:0}.SessionLoadStatusView .spinner{--size: 20px}.StartSSOLoginView{display:flex;flex-direction:column;padding:0 .4em}.StartSSOLoginView_button{flex:1 1;margin-top:12px}.LoginView_separator{justify-content:center;display:flex;margin:8px}.CompleteSSOView_title{display:flex;justify-content:center}.LoginView_sso{padding:.4em .4em 0}.LeftPanel{display:flex;flex-direction:column}.LeftPanel .utilities{display:flex}.LeftPanel .utilities .FilterField{flex:1 1;min-width:0}.LeftPanel ul{list-style:none;padding:0;margin:0}.RoomList{flex:1 0;overflow-y:auto;overscroll-behavior:contain}.RoomList>li>a{display:flex;align-items:center}.RoomList .description{margin:0;flex:1 1;min-width:0;display:flex}.RoomList .description>.name{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;flex:1 1}.RightPanelView{grid-area:right;min-height:0;min-width:0;display:flex;flex-direction:column}.RoomDetailsView,.MemberDetailsView{flex-direction:column;flex:1 1}.RoomDetailsView_avatar{display:flex}.RoomDetailsView_name h2,.MemberDetailsView_name h2{text-align:center}.MemberDetailsView_shield_container{display:flex;gap:4px}.MemberDetailsView_shield_red,.MemberDetailsView_shield_green,.MemberDetailsView_shield_black{background-size:contain;background-repeat:no-repeat;width:24px;height:24px;display:block;flex-shrink:0}.MemberDetailsView_shield_description{flex-grow:1;margin:0}.MemberDetailsView_shield_red{background-image:var(--icon-url-0)}.MemberDetailsView_shield_green{background-image:var(--icon-url-1)}.MemberDetailsView_shield_black{background-image:var(--icon-url-2)}.RoomDetailsView_label,.RoomDetailsView_row,.RoomDetailsView,.MemberDetailsView,.EncryptionIconView{display:flex;align-items:center;color:var(--text-color)}.RoomDetailsView_value{display:flex;justify-content:flex-end}.EncryptionIconView{justify-content:center}.RightPanelView_buttons{display:flex;justify-content:space-between;width:100%;box-sizing:border-box;padding:16px}.RightPanelView_buttons .hide{visibility:hidden}.MemberTileView a{display:flex;align-items:center}.middle-header{align-items:center}.middle-header h2{flex:1 1}.middle-header .room-description{flex:1 1;min-width:0}.RoomHeader .topic{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.RoomHeader .description{flex:1 1 auto;min-width:0}.middle-header h2{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin:0}.MessageComposer_replyPreview{display:grid;grid-template-columns:1fr auto}.MessageComposer_replyPreview .Timeline_message{grid-column:1/-1}.MessageComposer_input{display:flex;align-items:center}.MessageComposer_input>input{display:block;flex:1 1;min-width:0;box-sizing:border-box}.TimelineLoadingView{display:flex;align-items:center;justify-content:center}.TimelineLoadingView>:not(:first-child){margin-left:12px}.Timeline{display:flex;flex-direction:column;position:relative;min-height:0}.Timeline_jumpDown{position:absolute}.Timeline_scroller{overflow-y:scroll;overscroll-behavior-y:contain;overflow-anchor:none;padding:0;margin:0;position:relative;min-height:0;flex:1 0}.Timeline_scroller>ul{list-style:none;padding:1px 0;margin:0}.AnnouncementView{display:flex;align-items:center}.GapView_container{display:flex}.GapView_container>span{flex:1 1}.Timeline_messageBody img{max-width:400px;max-height:300px}.hydrogen{--avatar-size: 32px}.hydrogen .avatar{width:var(--avatar-size);height:var(--avatar-size);line-height:var(--avatar-size);font-size:calc(var(--avatar-size) * .6);overflow:hidden;flex-shrink:0;user-select:none;text-align:center;speak:none}.hydrogen .avatar img{width:100%;height:100%;object-fit:cover}.hydrogen .avatar.size-128{--avatar-size: 128px;width:var(--avatar-size);height:var(--avatar-size);line-height:var(--avatar-size);font-size:calc(var(--avatar-size) * .6)}.hydrogen .avatar.size-96{--avatar-size: 96px;width:var(--avatar-size);height:var(--avatar-size);line-height:var(--avatar-size);font-size:calc(var(--avatar-size) * .6)}.hydrogen .avatar.size-64{--avatar-size: 64px;width:var(--avatar-size);height:var(--avatar-size);line-height:var(--avatar-size);font-size:calc(var(--avatar-size) * .6)}.hydrogen .avatar.size-52{--avatar-size: 52px;width:var(--avatar-size);height:var(--avatar-size);line-height:var(--avatar-size);font-size:calc(var(--avatar-size) * .6)}.hydrogen .avatar.size-30{--avatar-size: 30px;width:var(--avatar-size);height:var(--avatar-size);line-height:var(--avatar-size);font-size:calc(var(--avatar-size) * .6)}.hydrogen .avatar.size-24{--avatar-size: 24px;width:var(--avatar-size);height:var(--avatar-size);line-height:var(--avatar-size);font-size:calc(var(--avatar-size) * .6)}.hydrogen .avatar.size-12{--avatar-size: 12px;width:var(--avatar-size);height:var(--avatar-size);line-height:var(--avatar-size);font-size:calc(var(--avatar-size) * .6)}@keyframes spinner{0%{transform:rotate(0);stroke-dasharray:0 0 10 90}45%{stroke-dasharray:0 0 90 10}75%{stroke-dasharray:0 50 50 0}to{transform:rotate(360deg);stroke-dasharray:10 90 0 0}}.hydrogen:not(.legacy) .spinner circle{transform-origin:50% 50%;animation-name:spinner;animation-duration:2s;animation-iteration-count:infinite;animation-timing-function:linear;stroke-dasharray:0 0 85 85;fill:none;stroke:currentcolor;stroke-width:12;stroke-linecap:butt}.hydrogen.legacy .spinner{display:inline-block;position:relative}.hydrogen.legacy .spinner div{box-sizing:border-box;display:block;position:absolute;padding:2px;border:2px solid currentcolor;border-radius:50%;animation:legacy-spinner 1.2s cubic-bezier(.5,0,.5,1) infinite;border-color:currentcolor transparent transparent transparent;width:var(--size);height:var(--size)}.hydrogen.legacy .spinner div:nth-child(1){animation-delay:-.45s}.hydrogen.legacy .spinner div:nth-child(2){animation-delay:-.3s}.hydrogen.legacy .spinner div:nth-child(3){animation-delay:-.15s}@keyframes legacy-spinner{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.spinner{--size: 20px;width:var(--size);height:var(--size)}.form-row.text>input,.form-row.text>textarea{display:block;width:100%;min-width:0;box-sizing:border-box}.FilterField{display:flex}.FilterField input{display:block;flex:1 1;min-width:0}.SessionStatusView{display:flex}.SessionStatusView p{margin:0 10px;word-break:break-all;word-break:break-word}body.hydrogen{overscroll-behavior:none;overflow:hidden}.hydrogen{margin:0}.hiddenWithLayout{visibility:hidden}.hidden{display:none!important}input::-ms-clear{display:none}@font-face{font-family:Inter;font-style:normal;font-weight:100;font-display:swap;src:url(./Inter-Thin.5d8e2ac4.woff2) format("woff2"),url(./Inter-Thin.5565b01e.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:100;font-display:swap;src:url(./Inter-ThinItalic.6b3ded18.woff2) format("woff2"),url(./Inter-ThinItalic.c413497b.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-weight:200;font-display:swap;src:url(./Inter-ExtraLight.da47c335.woff2) format("woff2"),url(./Inter-ExtraLight.d7be68a4.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:200;font-display:swap;src:url(./Inter-ExtraLightItalic.b3f94cfe.woff2) format("woff2"),url(./Inter-ExtraLightItalic.762fa4d2.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-weight:300;font-display:swap;src:url(./Inter-Light.0f7dfe72.woff2) format("woff2"),url(./Inter-Light.38326098.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:300;font-display:swap;src:url(./Inter-LightItalic.125c7e6a.woff2) format("woff2"),url(./Inter-LightItalic.ec6c76a8.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(./Inter-Regular.89d406b0.woff2) format("woff2"),url(./Inter-Regular.5b3a854b.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:400;font-display:swap;src:url(./Inter-Italic.bab4e808.woff2) format("woff2"),url(./Inter-Italic.7b187d57.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(./Inter-Medium.5d308f3d.woff2) format("woff2"),url(./Inter-Medium.0fc5d904.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:500;font-display:swap;src:url(./Inter-MediumItalic.76551c20.woff2) format("woff2"),url(./Inter-MediumItalic.1458af9d.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(./Inter-SemiBold.c7c3befe.woff2) format("woff2"),url(./Inter-SemiBold.04cd699f.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:600;font-display:swap;src:url(./Inter-SemiBoldItalic.d376ade4.woff2) format("woff2"),url(./Inter-SemiBoldItalic.420db54a.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(./Inter-Bold.6f5e9a23.woff2) format("woff2"),url(./Inter-Bold.20d46cff.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:700;font-display:swap;src:url(./Inter-BoldItalic.e09dcbe1.woff2) format("woff2"),url(./Inter-BoldItalic.31a185fa.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-weight:800;font-display:swap;src:url(./Inter-ExtraBold.0ef4267e.woff2) format("woff2"),url(./Inter-ExtraBold.45bae435.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:800;font-display:swap;src:url(./Inter-ExtraBoldItalic.d1e1f6a0.woff2) format("woff2"),url(./Inter-ExtraBoldItalic.30a1af87.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-weight:900;font-display:swap;src:url(./Inter-Black.7f1f5616.woff2) format("woff2"),url(./Inter-Black.067c82f7.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:900;font-display:swap;src:url(./Inter-BlackItalic.72d5983b.woff2) format("woff2"),url(./Inter-BlackItalic.c628a2cf.woff) format("woff")}.Timeline_jumpDown{width:40px;height:40px;bottom:16px;right:32px;border-radius:100%;border:1px solid var(--background-color-secondary--darker-7);background-image:var(--icon-url-3);background-position:center;background-color:var(--background-color-primary--darker-10);background-repeat:no-repeat;cursor:pointer}.Timeline_message{display:grid;grid-template:"avatar sender" auto "avatar body" auto "time body" 1fr "time reactions" auto / 30px 1fr;column-gap:8px;padding:4px;margin:0 12px;box-sizing:border-box}.Timeline_message:not(.continuation){margin-top:4px}.ReplyPreviewView .Timeline_message{display:grid;grid-template:"body" auto;margin-left:0;padding:0}.ReplyPreviewView .Timeline_message:not(.continuation){margin-top:0}@media screen and (max-width: 800px){.Timeline_message{grid-template:"avatar sender" auto "body body" 1fr "time time" auto "reactions reactions" auto / 30px 1fr}.Timeline_messageSender{margin-top:0!important;align-self:center}}.Timeline_message:hover:not(.disabled),.Timeline_message.selected,.Timeline_message.menuOpen{background-color:#8d97a51a;border-radius:4px}.Timeline_message:hover>.Timeline_messageOptions,.Timeline_message.menuOpen>.Timeline_messageOptions{display:block;user-select:none}.Timeline_messageAvatar{grid-area:avatar;text-decoration:none}.Timeline_messageSender{grid-area:sender;font-weight:700;line-height:1.7rem}.Timeline_messageSender,.Timeline_messageBody{margin:0;word-break:break-all;word-break:break-word}.Timeline_message:not(.continuation) .Timeline_messageSender,.Timeline_message:not(.continuation) .Timeline_messageBody{margin-top:4px}.Timeline_messageOptions{display:none;grid-area:body;align-self:start;justify-self:end;margin-top:-12px;margin-right:4px;border:var(--background-color-primary--darker-10) 1px solid;height:24px;width:24px;background-color:var(--background-color-primary);color:inherit;border-radius:4px;padding:0;text-align:center;line-height:22px;cursor:pointer}.Timeline_messageTime{grid-area:time}.Timeline_messageBody time{padding:2px 0 0 10px;user-select:none}.Timeline_messageBody time,.Timeline_messageTime{font-size:.8em;line-height:normal;color:var(--timeline-time-text-color)}.Timeline_messageBody.statusMessage{font-style:italic;color:var(--light-text-color)}.Timeline_messageBody{grid-area:body;line-height:2.2rem;width:100%;min-width:0}.hydrogen .Timeline_messageSender.usercolor1{color:var(--usercolor1)}.hydrogen .Timeline_messageSender.usercolor2{color:var(--usercolor2)}.hydrogen .Timeline_messageSender.usercolor3{color:var(--usercolor3)}.hydrogen .Timeline_messageSender.usercolor4{color:var(--usercolor4)}.hydrogen .Timeline_messageSender.usercolor5{color:var(--usercolor5)}.hydrogen .Timeline_messageSender.usercolor6{color:var(--usercolor6)}.hydrogen .Timeline_messageSender.usercolor7{color:var(--usercolor7)}.hydrogen .Timeline_messageSender.usercolor8{color:var(--usercolor8)}.Timeline_messageBody h1,.Timeline_messageBody h2,.Timeline_messageBody h3,.Timeline_messageBody h4,.Timeline_messageBody h5,.Timeline_messageBody h6{font-weight:700;margin:.7em 0}.Timeline_messageBody h1{font-size:1.6em}.Timeline_messageBody h2{font-size:1.5em}.Timeline_messageBody h3{font-size:1.4em}.Timeline_messageBody h4{font-size:1.3em}.Timeline_messageBody h5{font-size:1.2em}.Timeline_messageBody h6{font-size:1.1em}.Timeline_messageBody a{word-break:break-all}.Timeline_messageBody a.link{color:var(--link-color);text-decoration:none}.Timeline_messageBody .media{display:grid;margin-top:4px;width:100%}.Timeline_messageBody .media>a{text-decoration:none;width:100%;display:block}.Timeline_messageBody .media>*{grid-row:1;grid-column:1}.Timeline_messageBody .media img,.Timeline_messageBody .media video{width:100%;height:auto;align-self:start;border-radius:4px;display:block}.hydrogen:not(.legacy) .Timeline_messageBody .media img,.hydrogen:not(.legacy) .Timeline_messageBody .media video{align-self:stretch}.Timeline_messageBody .media>.status{align-self:end;justify-self:start;font-size:.8em}.Timeline_messageBody .media>progress{align-self:center;justify-self:center;width:75%}.Timeline_messageBody .media>time{align-self:end;justify-self:end}.Timeline_messageBody .media>time,.Timeline_messageBody .media>.status{color:var(--text-color);display:block;padding:2px;margin:4px;background-color:#ffffffbf;border-radius:4px}.Timeline_messageBody .media>.spacer{width:100%;align-self:start}.Timeline_messageBody code,.Timeline_messageBody pre{background-color:var(--background-color-secondary);font-family:monospace;font-size:.9em}.Timeline_messageBody code{border-radius:3px;padding:.2em .3em;margin:0}.Timeline_messageBody pre{border:1px solid var(--light-border);padding:.5em;max-height:30em;overflow:auto}.Timeline_messageBody pre>code{background-color:unset;border-radius:unset;display:block;font-size:unset}.Timeline_messageBody blockquote{margin-left:0;padding-left:20px;border-left:4px solid var(--light-border)}.Timeline_messageBody table{border:1px solid var(--background-color-secondary--darker-15);border-radius:2px;border-spacing:0}.Timeline_messageBody thead th{border-bottom:1px solid var(--background-color-secondary--darker-15)}.Timeline_messageBody td,.Timeline_messageBody th{padding:2px 5px}.Timeline_messageBody tbody tr:nth-child(2n){background-color:var(--background-color-secondary)}.Timeline_messageBody .pill{padding:0 5px;border-radius:15px;background-color:var(--background-color-secondary);border:1px solid var(--background-color-secondary--darker-10);text-decoration:none;display:inline-flex;align-items:center;line-height:2rem;vertical-align:top;margin:1px}.Timeline_messageBody .pill div.avatar{display:inline-block;margin-right:3px}.Timeline_message.unsent .Timeline_messageBody{color:var(--light-text-color)}.Timeline_message.unverified .Timeline_messageBody{color:var(--error-color)}.Timeline_messageReactions{grid-area:reactions;margin-top:6px}.Timeline_messageReactions button{display:inline-flex;line-height:2rem;margin-right:6px;padding:1px 6px;border:1px solid var(--light-border);border-radius:10px;background-color:var(--background-color-secondary);color:inherit;cursor:pointer;user-select:none;vertical-align:middle}.Timeline_messageReactions button.active{background-color:var(--accent-color--alpha-11);border-color:var(--accent-color)}@keyframes glow-reaction-border{0%{border-color:var(--background-color-secondary)}to{border-color:var(--accent-color)}}.Timeline_messageReactions button.active.pending{animation-name:glow-reaction-border;animation-duration:.5s;animation-direction:alternate;animation-iteration-count:infinite;animation-timing-function:linear}.Timeline_locationLink{padding:0 8px;border-radius:16px;border:1px solid var(--light-border);background-color:var(--background-color-secondary);text-decoration:none;display:inline-block;line-height:2rem;vertical-align:top;margin:1px 4px}.AnnouncementView{margin:5px 0;padding:5px 10%}.AnnouncementView>div{margin:0 auto;padding:10px 20px;background-color:var(--background-color-secondary);text-align:center;border-radius:10px}.GapView_container>:not(:first-child){margin-left:12px}.GapView{padding:52px 20px}.GapView.isAtTop{padding:52px 20px 12px}.DateHeader{font-weight:700;font-size:1.5rem;position:sticky;top:5px}.DateHeader time{margin:0 auto;max-width:350px;padding:12px;display:block;color:var(--light-text-color);background-color:var(--background-color-primary);border-radius:8px;text-align:center}.CallTileView>div>div{display:flex;flex-direction:column;gap:4px}.CallTileView_members>*{margin-right:-16px}.CallTileView_members{display:flex}.CallTileView_title{font-weight:700}.CallTileView_subtitle{font-size:12px}.CallTileView_memberCount:before{content:"";background-image:var(--icon-url-4);background-repeat:no-repeat;background-size:16px 16px;width:16px;height:16px;display:inline-flex;vertical-align:bottom;margin-right:4px}.CallView{height:40vh;display:grid}.CallView>*{grid-column:1;grid-row:1}.CallView_error{align-self:start;justify-self:center;margin:16px;z-index:1}.CallView_members{display:grid;gap:12px;background:var(--background-color-secondary--darker-5);padding:12px;margin:0;min-height:0;list-style:none;align-self:stretch}.StreamView{display:grid;border-radius:8px;overflow:hidden;background-color:#000}.StreamView>*{grid-column:1;grid-row:1}.StreamView video{width:100%;height:100%;min-height:0;object-fit:contain}.StreamView_avatar{align-self:center;justify-self:center}.StreamView_error{align-self:start;justify-self:center;z-index:1}.StreamView_muteStatus{align-self:start;justify-self:end;width:24px;height:24px;background-position:center;background-repeat:no-repeat;background-size:14px;display:block;background-color:var(--text-color);border-radius:4px;margin:4px}.StreamView_muteStatus.microphoneMuted{background-image:var(--icon-url-5)}.StreamView_muteStatus.cameraMuted{background-image:var(--icon-url-6)}.CallView_buttons{align-self:end;justify-self:center;display:flex;gap:12px;margin-bottom:16px;z-index:1}.CallView_buttons button{border-radius:100%;width:48px;height:48px;border:none;background-color:var(--accent-color);background-position:center;background-repeat:no-repeat}.CallView_buttons button:disabled{background-color:var(--accent-color--lighter-10)}.CallView_buttons .CallView_hangup{background-color:var(--error-color);background-image:var(--icon-url-7)}.CallView_buttons .CallView_hangup:disabled{background-color:var(--error-color--lighter-10)}.CallView_buttons .CallView_mutedMicrophone{background-color:var(--background-color-primary);background-image:var(--icon-url-8)}.CallView_buttons .CallView_unmutedMicrophone{background-image:var(--icon-url-9)}.CallView_buttons .CallView_mutedCamera{background-color:var(--background-color-primary);background-image:var(--icon-url-10)}.CallView_buttons .CallView_unmutedCamera{background-image:var(--icon-url-11)}.CallView_members.size1{grid-template-columns:1fr;grid-template-rows:1fr}.CallView_members.size2{grid-template-columns:1fr;grid-template-rows:repeat(2,1fr)}.CallView_members.square.size3,.CallView_members.square.size4{grid-template-columns:repeat(2,1fr);grid-template-rows:repeat(2,1fr)}.CallView_members.square.size5,.CallView_members.square.size6{grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(2,1fr)}.CallView_members.square.size7,.CallView_members.square.size8,.CallView_members.square.size9{grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr)}.CallView_members.square.size10{grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(4,1fr)}.CallView_members.tall.size3{grid-template-columns:1fr;grid-template-rows:repeat(3,1fr)}.CallView_members.tall.size4{grid-template-columns:1fr;grid-template-rows:repeat(4,1fr)}.CallView_members.tall.size5,.CallView_members.tall.size6{grid-template-rows:repeat(3,1fr);grid-template-columns:repeat(2,1fr)}.CallView_members.tall.size7,.CallView_members.tall.size8{grid-template-rows:repeat(4,1fr);grid-template-columns:repeat(2,1fr)}.CallView_members.tall.size9,.CallView_members.tall.size10{grid-template-rows:repeat(5,1fr);grid-template-columns:repeat(2,1fr)}.CallView_members.wide.size2{grid-template-columns:repeat(2,1fr);grid-template-rows:1fr}.CallView_members.wide.size3{grid-template-rows:1fr;grid-template-columns:repeat(3,1fr)}.CallView_members.wide.size4{grid-template-rows:1fr;grid-template-columns:repeat(4,1fr)}.CallView_members.wide.size5,.CallView_members.wide.size6{grid-template-rows:repeat(2,1fr);grid-template-columns:repeat(3,1fr)}.CallView_members.wide.size7,.CallView_members.wide.size8{grid-template-rows:repeat(2,1fr);grid-template-columns:repeat(4,1fr)}.CallView_members.wide.size9,.CallView_members.wide.size10{grid-template-rows:repeat(3,1fr);grid-template-columns:repeat(4,1fr)}.ErrorView_block{background:var(--error-color);color:var(--fixed-white);margin:16px}.ErrorView.ErrorView_inline{color:var(--error-color);margin:4px 0;padding:4px 0}.ErrorView.ErrorView_inline>p{margin:0}.ErrorView{font-weight:700;margin:16px;border-radius:8px;padding:12px;display:flex;gap:8px}.ErrorView_message{flex-basis:0;flex-grow:1;margin:0;word-break:break-all;word-break:break-word;align-self:center}.ErrorView_submit{align-self:end}.ErrorView_close{align-self:start;width:16px;height:16px;border:none;background:none;background-repeat:no-repeat;background-size:contain;cursor:pointer}.ErrorView_block .ErrorView_close{background-image:var(--icon-url-12)}.ErrorView_inline .ErrorView_close{background-image:var(--icon-url-13)}:root{font-size:10px;--icon-color: var(--background-color-secondary--darker-40);--light-border: var(--background-color-secondary--darker-5);--light-text-color: var(--background-color-secondary--darker-55);--timeline-time-text-color: var(--background-color-secondary--darker-35);--icon-background: var(--background-color-secondary--darker-7);--right-panel-text-color: var(--background-color-secondary--darker-35)}.hydrogen{font-family:Inter,sans-serif,"emoji";background-color:var(--background-color-primary);color:var(--text-color);font-size:1.4rem;--usercolor1: #368BD6;--usercolor2: #AC3BA8;--usercolor3: #03B381;--usercolor4: #E64F7A;--usercolor5: #FF812D;--usercolor6: #2DC2C5;--usercolor7: #5C56F5;--usercolor8: #74D12C}.hydrogen button{font-family:inherit}.avatar{border-radius:100%;background:var(--background-color-primary);color:var(--fixed-white)}.hydrogen .avatar.usercolor1{background-color:var(--usercolor1)}.hydrogen .avatar.usercolor2{background-color:var(--usercolor2)}.hydrogen .avatar.usercolor3{background-color:var(--usercolor3)}.hydrogen .avatar.usercolor4{background-color:var(--usercolor4)}.hydrogen .avatar.usercolor5{background-color:var(--usercolor5)}.hydrogen .avatar.usercolor6{background-color:var(--usercolor6)}.hydrogen .avatar.usercolor7{background-color:var(--usercolor7)}.hydrogen .avatar.usercolor8{background-color:var(--usercolor8)}.logo{height:48px;min-width:48px;background-image:var(--icon-url-14);background-repeat:no-repeat;background-position:center}.button-row{display:flex}.button-row>*{margin-right:10px}.button-row>*:last-child{margin-right:0}.button-row .button-action{margin:10px 0;flex:1 0 auto}.form-row.text textarea{font-family:Inter,sans-serif;background-color:var(--background-color-secondary);color:inherit}.form-group{margin:24px 0}.form-row{margin:12px 0}.form-row.text>input,.form-row.text>textarea{padding:12px;border:1px solid var(--light-border);border-radius:8px;margin-top:5px;font-size:1em;resize:vertical;background-color:var(--background-color-secondary);color:inherit}.form-row.check{display:flex;align-items:baseline;gap:4px}.form-row.text>label,.form-row.text>input{display:block}.form-row .form-row-description{font-size:1rem;color:var(--light-text-color);margin:8px 0 0}.button-action{cursor:pointer}a.button-action{text-decoration:none;text-align:center;display:block}.button-action.secondary{color:var(--accent-color)}.button-action.primary{background-color:var(--accent-color);border-radius:8px;color:var(--fixed-white);font-weight:700}.button-action.primary:disabled{color:var(--fixed-white--darker-10)}.button-action.primary.destructive{background-color:var(--error-color)}.button-action.secondary.destructive{color:var(--error-color)}.button-action{border:none;padding:10px;background:none;font-weight:500}.button-utility{cursor:pointer;width:32px;height:32px;background-position:center;background-color:var(--icon-background);background-repeat:no-repeat;border:none;border-radius:100%;display:block}.button-utility.grid{background-image:var(--icon-url-15)}.button-utility.settings{background-image:var(--icon-url-16)}.button-utility.create{background-image:var(--icon-url-17)}.button-utility.grid.on{background-image:var(--icon-url-18)}.FilterField{background-image:var(--icon-url-19);background-repeat:no-repeat;background-position:8px center;background-color:var(--icon-background);border:1px solid transparent;border-radius:16px;height:32px;align-items:center;padding-left:30px;box-sizing:border-box}.FilterField:focus-within{border:1px var(--icon-background) solid;background-color:var(--background-color-primary)}.FilterField:focus-within button{border-color:var(--background-color-primary)}.FilterField input{font-family:Inter;font-size:1.3rem;font-weight:500;line-height:1.573rem;outline:none;border:none;background-color:transparent;height:100%;color:var(--text-color)}.FilterField button{width:30px;height:30px;background-position:center;background-color:var(--icon-background);background-repeat:no-repeat;background-image:var(--icon-url-20);border:7px solid transparent;border-radius:100%;box-sizing:border-box}.PreSessionScreen{padding:30px}.PreSessionScreen h1{font-size:16px;text-align:center}.SessionLoadView{padding-top:16px}.StartSSOLoginView_button{border:1px solid var(--accent-color);border-radius:8px}.LoginView_back{background-image:var(--icon-url-21);background-color:transparent}.LoginView_separator{font-weight:500;font-size:1.5rem}.LoginView_forwardInfo{font-size:.9em;margin-left:1em;color:var(--light-text-color)}.CompleteSSOView_title{font-weight:500}@media screen and (min-width: 600px){.PreSessionScreen{box-shadow:0 6px 32px #0000001a;border-radius:8px}}.PreSessionScreen .logo{height:48px;min-width:48px}.LeftPanel{background:var(--background-color-secondary);font-size:1.5rem;padding:12px 8px 0}.LeftPanel>:not(:first-child){margin-top:12px}.LeftPanel .utilities>:not(:first-child){margin-left:8px}.LeftPanel .filter{border-bottom:1px solid var(--background-color-secondary)}.LeftPanel .filter input{padding:.8em;border:none}.LeftPanel .RoomList{padding:0 8px 0 0;margin-right:-8px}.RoomList>li{margin:0;padding:4px 8px 4px 0;align-items:center}.RoomList>li>a{text-decoration:none;align-items:center}.RoomList li:not(:first-child){margin-top:4px}.RoomList li.active{background:var(--background-color-secondary--darker-7);border-radius:5px}.RoomList li>a>*{margin-right:8px}.RoomList .description{align-items:center}.RoomList .name.unread{font-weight:600}.RoomList .badge{min-width:1.6rem;height:1.6rem;border-radius:1.6rem;box-sizing:border-box;padding:.1rem .3rem;background-color:var(--room-badge);color:var(--fixed-white);font-weight:700;font-size:1rem;line-height:1.4rem;text-align:center}.RoomList .badge.highlighted{background-color:var(--error-color)}a{color:inherit}.SessionStatusView{padding:4px;min-height:22px;background-color:var(--accent-color);color:var(--fixed-white);align-items:center}.SessionStatusView button.link{color:currentcolor;text-align:left}.SessionStatusView>.end{flex:1 1;display:flex;justify-content:flex-end;align-self:stretch;align-items:stretch}.SessionStatusView .dismiss{border:none;background:none;background-image:var(--icon-url-22);background-position:center;background-repeat:no-repeat;width:32px;cursor:pointer}.room-placeholder{align-items:center;justify-content:center;text-align:center;padding:20px}.SessionPickerView li{font-size:1.2em}.SessionPickerView .session-info{text-decoration:none;padding:12px;border:1px solid var(--light-border);border-radius:8px;background-image:var(--icon-url-23);background-position:center right 30px;background-repeat:no-repeat;font-weight:500}.SessionPickerView .session-actions{margin:10px 0 20px;display:flex}.SessionPickerView .session-actions>*{margin-right:10px}.SessionPickerView .session-actions>*:last-child{margin-right:0}.SessionPickerView .session-actions button{border:none;background:none;color:inherit}.SessionPickerView button.destructive{color:var(--error-color)}.RoomGridView>div.container{border-right:1px solid var(--background-color-secondary);border-bottom:1px solid var(--background-color-secondary)}.RoomGridView>.focused>.room-placeholder .unfocused{display:none}.RoomGridView>:not(.focused)>.room-placeholder .focused{display:none}.room-placeholder .unfocused{color:var(--right-panel-text-color)}.RoomGridView>div.focus-ring{border:2px solid var(--accent-color--darker-5);border-radius:12px}.middle-header{box-sizing:border-box;flex:0 0 56px;background:var(--background-color-primary);padding:0 16px;border-bottom:1px solid var(--background-color-secondary)}.middle-header h2{font-size:1.8rem;font-weight:600}.middle-header>:not(:last-child){margin-right:8px}.close-middle,.close-session{background-image:var(--icon-url-24);background-position-x:10px}.RoomHeader .topic{font-size:14rem}.RoomHeader .room-options{background-image:var(--icon-url-25)}.RoomView_error{color:var(--error-color);background:#efefef;height:0px;font-weight:700;transition:.25s all ease-out;padding-right:20px;padding-left:20px}.RoomView_error div{overflow:hidden;height:100%;width:100%;position:relative;display:flex;align-items:center}.RoomView_error:not(:empty){height:auto;padding-top:20px;padding-bottom:20px}.RoomView_error p{position:relative;display:block;width:100%;height:auto;margin:0}.RoomView_error button{width:40px;padding-top:20px;padding-bottom:20px;background:none;border:none;position:relative;border-radius:5px;transition:.1s all ease-out;cursor:pointer}.RoomView_error button:hover{background:#cfcfcf}.RoomView_error button:before{content:"\274c";position:absolute;top:15px;left:9px;width:20px;height:10px;font-size:10px;align-self:middle}.MessageComposer_replyPreview .Timeline_message{margin:5px 0 0;max-height:30vh;overflow:auto}.MessageComposer_replyPreview{background:var(--background-color-secondary);margin:0 10px 10px;box-shadow:0 0 5px var(--background-color-secondary--darker-15);border-radius:5px}.MessageComposer_input,.MessageComposer_replyPreview{padding:8px}.MessageComposer_replyPreview>.replying{display:inline-flex;flex-direction:row;align-items:center;font-weight:700}.MessageComposer_replyPreview>button.cancel{width:32px;height:32px;display:block;border:none;text-indent:200%;white-space:nowrap;overflow:hidden;background-color:transparent;background-image:var(--icon-url-26);background-repeat:no-repeat;background-position:center;background-size:18px;cursor:pointer}.MessageComposer_input:first-child{border-top:1px solid var(--background-color-secondary)}.MessageComposer_input>:not(:first-child){margin-left:12px}.MessageComposer_input>textarea{border:none;border-radius:24px;background:var(--background-color-secondary);color:inherit;font-size:14px;font-family:Inter,sans-serif;resize:none;flex:1 1;padding:14px;box-sizing:border-box;overflow:hidden;max-height:113px;overflow-y:auto;overflow-y:overlay}.MessageComposer_input>button.send{width:32px;height:32px;display:block;border-radius:100%;border:none;text-indent:200%;overflow:hidden;background-color:var(--accent-color);background-image:var(--icon-url-27);background-repeat:no-repeat;background-position:center;align-self:end;margin-bottom:8px}.MessageComposer_input>button.sendFile{width:32px;height:32px;display:block;border:none;text-indent:200%;white-space:nowrap;overflow:hidden;background-color:transparent;background-image:var(--icon-url-28);background-repeat:no-repeat;background-position:center}.MessageComposer.MessageComposer_canSend button.sendFile{display:none}.MessageComposer:not(.MessageComposer_canSend) button.send{display:none}.SettingsBody{padding:0 16px}.Settings h3{margin:16px 0 8px}.Settings p{max-width:700px}.Settings .row .label{font-weight:600}.Settings .row .label,.Settings .row .content{margin-top:4px;margin-bottom:4px}.Settings .row .content{margin-left:4px;flex:1 1}.Settings .row.code .content{font-family:monospace}.Settings .row .content button{display:inline-block;margin:0 8px}.Settings .row .content input[type=range]{width:100%;max-width:300px;min-width:160px}.Settings .row{margin:4px 0;display:flex;flex-wrap:wrap;align-items:center}.Settings .row .label{flex:0 0 200px;align-self:flex-start}.Settings .row .content p{margin:8px 0}.Settings .row .content p:first-child{margin-top:0}.Settings .row .content p:last-child{margin-bottom:0}.FeatureView{display:flex;gap:8px}.FeaturesView ul{list-style:none;padding:8px 16px}.FeaturesView input[type=checkbox]{align-self:start}.FeatureView h4{margin:0}.FeatureView p{margin:8px 0}.error{color:var(--error-color);font-weight:600}button.link{font-size:1em;border:none;text-decoration:underline;background:none;cursor:pointer;margin:-12px;padding:12px;color:inherit}.Settings a,.Settings .link{color:var(--accent-color);font-weight:600}.lightbox{background-color:#000000bf;display:grid;grid-template:"content close" auto "content details" 1fr / 1fr auto;color:var(--background-color-primary);padding:4px}@media (max-aspect-ratio: 1/1){.lightbox{grid-template:"close" auto "content" 1fr "details" auto / 1fr}.lightbox .details{width:100%!important}}.lightbox .picture{grid-area:content;background-size:contain;background-position:center;background-repeat:no-repeat;width:100%;height:100%;align-self:center;justify-self:center}.lightbox .loading{grid-area:content;align-self:center;justify-self:center;display:flex}.lightbox .loading>:not(:first-child){margin-left:8px}.lightbox .close{display:block;grid-area:close;justify-self:end;background-image:var(--icon-url-29);background-position:center;background-size:16px;background-repeat:no-repeat;width:16px;height:16px;padding:12px}.lightbox .details{grid-area:details;padding:12px;font-size:1.5rem;width:200px}.menu{border-radius:8px;box-shadow:2px 2px 10px #00000080;padding:4px;background-color:var(--background-color-primary);list-style:none;margin:0}.menu li{margin-bottom:10px}.menu .menu-item{color:var(--text-color)}.menu button{border-radius:4px;border:none;background-color:transparent;text-align:left;padding:8px 32px 8px 8px;font-size:1.5rem;height:24px;cursor:pointer}.menu .destructive button{color:var(--error-color)}.menu .quick-reactions{display:flex;padding:8px 32px 8px 8px}.menu .quick-reactions button{padding:2px 4px;text-align:center}.InviteView_body{display:flex;justify-content:space-around;align-items:center;flex:1 1;overflow:auto}.InviteView_invite{display:flex;width:100%;max-width:400px;flex-direction:column;padding:0 24px}.InviteView_roomProfile{display:grid;gap:4px;grid-template:"avatar name" auto "avatar description" 1fr / 72px 1fr;align-self:center;margin-bottom:24px}.InviteView_roomProfile h3{grid-area:name;margin:0}.InviteView_roomDescription{grid-area:description;font-size:1.2rem;margin:0;color:var(--light-text-color)}.InviteView_roomAvatar{grid-area:avatar}.InviteView_dmAvatar{align-self:center}.InviteView_inviter{text-align:center;margin:24px 0}.InviteView_inviter .avatar{display:inline-block;vertical-align:middle;margin-right:4px}.InviteView_buttonRow{margin:10px auto;max-width:200px;width:100%}.InviteView_buttonRow button{display:block;width:100%}.DisabledComposerView{padding:12px;background-color:var(--background-color-secondary)}.DisabledComposerView h3{margin:0}.UnknownRoomView_container{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center}.UnknownRoomView_body{height:100%;text-align:center;padding:16px;box-sizing:border-box}.UnknownRoomView h2{word-break:break-all;word-break:break-word}.UnknownRoomView button{max-width:200px;width:100%}.LoadingView{height:100%;width:100%}.LoadingView .spinner{margin-right:5px}.InvitePanelView{display:flex;flex-direction:column;justify-content:center;align-items:center}.InvitePanelView__form{margin-top:8px}.InvitePanelView__input{font-family:Inter;font-size:1.3rem;font-weight:500;line-height:1.573rem;outline:none;border:none;background-color:var(--icon-background);color:var(--text-color);height:32px;box-sizing:border-box;margin:5px;border-radius:16px;padding:15px;width:90%}.InvitePanelView__form,.InvitePanelView__btn{display:flex;flex-direction:column;justify-content:center;align-items:center}.InvitePanelView__btn{width:100px;height:30px;margin-top:8px}.InvitePanelView__heading{width:90%;text-align:center;margin:0}.RightPanelView{background:var(--background-color-secondary)}.RoomDetailsView{padding:0 16px 16px}.RoomDetailsView_id,.MemberDetailsView_id{color:var(--right-panel-text-color);font-size:12px}.RoomDetailsView_rows{margin-top:36px;width:100%}.RoomDetailsView_name h2,.MemberDetailsView_name h2{margin-bottom:4px;font-size:1.8rem}.RoomDetailsView_row{margin-bottom:20px;font-weight:500;font-size:15px;width:100%;background:none;border:none;padding:0}button.RoomDetailsView_row{cursor:pointer}button.RoomDetailsView_row:after{content:var(--icon-url-30);margin-left:12px}.RoomDetailsView_row:not(button):after{content:" ";width:19px}.RoomDetailsView_label:before{padding-right:16px;height:24px;width:20px}.RoomDetailsView_label{width:200px}.RoomDetailsView_value{color:var(--right-panel-text-color);flex:1 1}.MemberCount:before{content:var(--icon-url-31)}.EncryptionStatus:before{content:var(--icon-url-32)}.EncryptionIconView{width:52px;height:52px;border-radius:100%;background:var(--right-panel-text-color);border:3px solid var(--background-color-secondary);margin-left:-16px}.EncryptionIconView_encrypted,.EncryptionIconView_unencrypted{height:24px;width:24px}.EncryptionIconView_encrypted{content:var(--icon-url-33)}.EncryptionIconView_unencrypted{content:var(--icon-url-34)}.RightPanelView_buttons .button-utility{width:24px;height:24px}.RightPanelView_buttons .close{background-image:var(--icon-url-35)}.RightPanelView_buttons .back{background-image:var(--icon-url-36)}.MemberListView__list{padding-left:16px;padding-right:16px;margin:0}.MemberListView{display:flex;flex-direction:column;height:100%}.MemberListView__invite-container{display:flex;justify-content:center;align-items:center}.MemberListView__invite-btn{width:80%;height:32px;display:flex;justify-content:center;align-items:center}.MemberTileView{margin-bottom:8px;list-style:none}.MemberTileView a{text-decoration:none}.MemberTileView .avatar{margin-right:8px}.MemberTileView_name{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;flex:1 1}.MemberDetailsView_section{box-sizing:border-box;padding:16px;width:100%}.MemberDetailsView_label{font-size:12px;font-weight:600;color:var(--right-panel-text-color);text-transform:uppercase}.MemberDetailsView_value,.MemberDetailsView_options{margin-left:8px;margin-top:5px;font-size:12px}.MemberDetailsView_options{display:inline-flex;flex-direction:column}.MemberDetailsView_options a,.MemberDetailsView_options button{color:var(--accent-color);text-decoration:none;margin:0 0 3px;padding:0;border:none;background:none;cursor:pointer;text-align:left}.LazyListParent{overflow-y:auto}.LogoutScreen{height:100vh}.LogoutScreen .content{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center}.LogoutScreen .status{display:flex;gap:12px}.CreateRoomView_body,.JoinRoomView_body,.RoomBeingCreated_error{max-width:400px}.RoomBeingCreated_error{margin-top:48px}.centered-column{padding:0 12px;align-self:center;width:100%;box-sizing:border-box}.CreateRoomView_selectAvatar{border:none;background:none;cursor:pointer}.CreateRoomView_selectAvatarPlaceholder{width:64px;height:64px;border-radius:100%;background-color:var(--icon-background);background-image:var(--icon-url-37);background-repeat:no-repeat;background-position:center;background-size:36px}.JoinRoomView_status{display:flex;align-items:center;justify-content:center;margin-top:10px}.JoinRoomView_status .spinner{margin-right:5px}.ToastCollectionView{display:flex;position:fixed;flex-direction:column;z-index:1000;left:44px;top:52px}.ToastCollectionView ul{margin:0;padding:0}.VerificationToastNotificationView:not(:first-child),.CallToastNotificationView:not(:first-child){margin-top:12px}.VerificationToastNotificationView{display:flex;flex-direction:column}.CallToastNotificationView{display:grid;grid-template-rows:40px 1fr 1fr 48px;row-gap:4px}.VerificationToastNotificationView,.CallToastNotificationView{background-color:var(--background-color-secondary);border-radius:8px;color:var(--text-color);box-shadow:2px 2px 10px #00000080}.CallToastNotificationView{width:260px}.VerificationToastNotificationView{width:248px}.VerificationToastNotificationView__top{padding:8px;display:flex}.CallToastNotificationView__top{display:grid;grid-template-columns:auto 176px auto;align-items:center;justify-items:center}.VerificationToastNotificationView__dismiss-btn,.CallToastNotificationView__dismiss-btn{background:center var(--background-color-secondary--darker-5) var(--icon-url-38) no-repeat;border-radius:100%;height:15px;width:15px}.VerificationToastNotificationView__title,.CallToastNotificationView__name{font-weight:600;width:100%}.VerificationToastNotificationView__description{padding:8px}.CallToastNotificationView__description{margin-left:42px}.CallToastNotificationView__call-type:before{content:"";background-image:var(--icon-url-39);background-repeat:no-repeat;background-size:20px 20px;display:flex;width:20px;height:20px;padding-right:5px}.CallToastNotificationView__call-type:after{content:"";width:4px;height:4px;background-color:var(--text-color);border-radius:100%;align-self:center;margin:5px}.CallToastNotificationView__member-count:before{content:"";background-image:var(--icon-url-40);background-repeat:no-repeat;background-size:20px 20px;display:flex;width:20px;height:20px;padding-right:5px}.CallToastNotificationView__member-count,.CallToastNotificationView__call-type{display:flex;align-items:center}.CallToastNotificationView__info{display:flex;margin-left:42px}.CallToastNotificationView__action{display:flex;justify-content:end;margin-right:10px}.VerificationToastNotificationView__action{display:flex;justify-content:space-between;padding:8px}.CallToastNotificationView__action .button-action{width:100px;height:40px}.VerificationToastNotificationView__action .button-action{width:100px;height:32px;display:flex;align-items:center;justify-content:center}.VerifyEmojisView{width:100%}.VerificationCompleteView,.DeviceVerificationView,.SelectMethodView{display:flex;align-items:center;justify-content:center;flex-direction:column;width:100%}.SelectMethodView>div,.SelectMethodView__heading,.SelectMethodView__title{width:inherit;box-sizing:border-box}.VerificationCompleteView__heading,.VerifyEmojisView__heading,.SelectMethodView__heading,.MissingKeysView__heading,.WaitingForOtherUserView__heading{display:flex;align-items:center;gap:16px;flex-wrap:wrap;justify-content:center;padding:8px}.MissingKeysView__heading{text-align:center}.VerificationCompleteView>*,.SelectMethodView>*,.VerifyEmojisView>*,.WaitingForOtherUserView>*{padding:16px}.VerificationCancelledView__title,.VerificationCompleteView__title,.VerifyEmojisView__title,.SelectMethodView__title,.WaitingForOtherUserView__title{font-size:1.5em;text-align:center}.VerificationCompleteView__title,.VerifyEmojisView__title,.SelectMethodView__title,.WaitingForOtherUserView__title,.VerificationCancelledView__description,.MissingKeysView__description,.VerificationCompleteView__description,.VerifyEmojisView__description,.SelectMethodView__description,.WaitingForOtherUserView__description{text-align:center;margin:0}.VerificationCancelledView__actions,.MissingKeysView__actions,.SelectMethodView__actions,.VerifyEmojisView__actions,.WaitingForOtherUserView__actions{display:flex;justify-content:center;gap:12px;padding:16px}.EmojiCollection{display:flex;justify-content:center;gap:16px;flex-wrap:wrap}.EmojiContainer__emoji{font-size:3.2rem}.VerifyEmojisView__waiting,.EmojiContainer__name,.EmojiContainer__emoji{display:flex;justify-content:center;align-items:center}.EmojiContainer__name{font-weight:700}.VerifyEmojisView__waiting{gap:12px}.VerificationCompleteView__icon{background:var(--icon-url-41) no-repeat;background-size:contain;width:128px;height:128px}.SelectMethodView__name{overflow:hidden;text-overflow:ellipsis;width:100%;display:inline-block}.VerificationInProgressTileView,.VerificationCompletedTileView,.VerificationCancelledTileView,.VerificationReadyTileView{display:flex;gap:20px}.VerificationTileView__actions{display:flex;gap:16px}.VerificationTileView__description{display:flex;align-items:center;font-weight:700;font-size:1.4rem;color:var(--text-color);gap:4px;text-align:center}.VerificationInProgressTileView,.VerificationCompletedTileView,.VerificationCancelledTileView,.VerificationReadyTileView{background:var(--background-color-primary--darker-5);padding:8px;box-sizing:border-box;border-radius:8px}.VerificationTileView{display:flex;justify-content:center;padding:5px 10%;box-sizing:border-box}.VerificationInProgressTileView .VerificationTileView__shield,.VerificationReadyTileView .VerificationTileView__shield{background:var(--icon-url-42) no-repeat}.VerificationCompletedTileView .VerificationTileView__shield{background:var(--icon-url-43) no-repeat}.VerificationTileView__shield{width:20px;height:20px;display:flex;align-self:center}:root{--background-color-primary: #fff;--background-color-secondary: #f6f6f6;--text-color: #2E2F32;--accent-color: #03b381;--error-color: #FF4B55;--fixed-white: #fff;--room-badge: #61708b;--link-color: #238cf5}:root{--background-color-secondary--darker-7: #e4e4e4;--background-color-primary--darker-10: #e6e6e6;--background-color-secondary--darker-15: #d0d0d0;--background-color-secondary--darker-10: #dddddd;--accent-color--alpha-11: rgba(3,179,129, .11);--background-color-secondary--darker-5: #e9e9e9;--text-color--lighter-80: #fcfcfc;--accent-color--lighter-10: #04e5a5;--error-color--lighter-10: #ff7e85;--background-color-secondary--darker-40: #909090;--background-color-secondary--darker-55: #6a6a6a;--background-color-secondary--darker-35: #9d9d9d;--fixed-white--darker-10: #e6e6e6;--accent-color--darker-5: #039a6f;--background-color-primary--darker-5: #f2f2f2}:root{--icon-url-0: url(./verification-error-3007923930.91f5da98.svg);--icon-url-1: url(./verified-1676512664.5538d685.svg);--icon-url-2: url(./encryption-status-689620003.8086e625.svg);--icon-url-3: url(./chevron-down-3300400168.d1a083a1.svg);--icon-url-4: url(./room-members-3297708388.1a158fe2.svg);--icon-url-5: url(./mic-muted-2617055184.e8d1962f.svg);--icon-url-6: url(./cam-muted-2247331037.b0b2cf01.svg);--icon-url-7: url(./hangup-1798659826.d0cb8438.svg);--icon-url-8: url(./mic-muted-4213153786.513608a5.svg);--icon-url-9: url(./mic-unmuted-3178778883.b8f57412.svg);--icon-url-10: url(./cam-muted-1894081672.22150c2b.svg);--icon-url-11: url(./cam-unmuted-2215154474.a82b7bf1.svg);--icon-url-12: url(./clear-2743697487.2f1a17f1.svg);--icon-url-13: url(./clear-2203718389.37dd36a5.svg);--icon-url-14: url(./element-logo-703176763.fc54fc8d.svg);--icon-url-15: url(./enable-grid-2071838379.ab4f40c5.svg);--icon-url-16: url(./settings-2175246113.00804666.svg);--icon-url-17: url(./plus-4190356069.084c5e3d.svg);--icon-url-18: url(./disable-grid-3304422220.8a79cfcb.svg);--icon-url-19: url(./search-3263540198.1511780c.svg);--icon-url-20: url(./clear-426756705.361f7a30.svg);--icon-url-21: url(./chevron-left-3506338632.4e437777.svg);--icon-url-22: url(./clear-2743697487.2f1a17f1.svg);--icon-url-23: url(./chevron-right-847198822.23380c56.svg);--icon-url-24: url(./chevron-left-3506338632.4e437777.svg);--icon-url-25: url(./vertical-ellipsis-3416547705.f619a721.svg);--icon-url-26: url(./clear-426756705.361f7a30.svg);--icon-url-27: url(./send-1171052351.caa5c494.svg);--icon-url-28: url(./paperclip-2441131778.1f5e29f3.svg);--icon-url-29: url(./clear-2743697487.2f1a17f1.svg);--icon-url-30: url(./chevron-small-781914114.936b4943.svg);--icon-url-31: url(./room-members-3847743605.9fcf4567.svg);--icon-url-32: url(./encryption-status-475927392.2fedc0bd.svg);--icon-url-33: url(./e2ee-normal-1448349558.af8f5484.svg);--icon-url-34: url(./e2ee-disabled-1470792300.6863c16d.svg);--icon-url-35: url(./clear-426756705.361f7a30.svg);--icon-url-36: url(./chevron-thin-left-3831175135.13f60c05.svg);--icon-url-37: url(./plus-4190356069.084c5e3d.svg);--icon-url-38: url(./clear-2203718389.37dd36a5.svg);--icon-url-39: url(./video-call-3307702325.5e74dd9a.svg);--icon-url-40: url(./room-members-1680968332.b4f57622.svg);--icon-url-41: url(./verified-1676512664.5538d685.svg);--icon-url-42: url(./e2ee-normal-3652557173.2a97dccf.svg);--icon-url-43: url(./e2ee-normal-2713987956.215b3ddf.svg)} diff --git a/hydrogen/assets/theme-element-runtime.054f90d4.css b/hydrogen/assets/theme-element-runtime.054f90d4.css new file mode 100644 index 0000000..20c9f56 --- /dev/null +++ b/hydrogen/assets/theme-element-runtime.054f90d4.css @@ -0,0 +1 @@ +@font-face{font-family:"emoji";src:local("Apple Color Emoji"),local("Segoe UI Emoji"),local("Segoe UI Symbol"),local("Noto Color Emoji"),local("Twemoji"),local("Twemoji Mozilla"),local("Android Emoji"),local("EmojiSymbols"),local("Symbola");unicode-range:U+1F300-1F5FF,U+1F600-1F64F,U+1F680-1F6FF,U+2600-26FF}html{height:100%}main{display:block}@media screen and (min-width: 600px){.PreSessionScreen{width:600px;box-sizing:border-box;margin:50px auto 0}}.room-placeholder{display:flex;flex-direction:row}.SessionView{position:fixed;height:100%;width:100%;display:grid;grid-template:"status status" auto "left middle" 1fr / 320px 1fr;min-height:0;min-width:0}.right-shown{grid-template:"status status status" auto "left middle right" 1fr / 320px 1fr 300px}.hydrogen.ios .SessionView{height:var(--ios-viewport-height, 100%);top:var(--ios-viewport-top, 0)}.middle .close-middle{display:none}@media screen and (max-width: 800px){.SessionView:not(.middle-shown):not(.right-shown){grid-template:"status" auto "left" 1fr / 1fr}.SessionView.middle-shown{grid-template:"status" auto "middle" 1fr / 1fr}.SessionView.right-shown{grid-template:"status" auto "right" 1fr / 1fr}.SessionView:not(.middle-shown):not(.right-shown) .room-placeholder{display:none}.SessionView.middle-shown .LeftPanel,.SessionView.right-shown .middle,.SessionView.right-shown .LeftPanel{display:none}.middle .close-middle{display:block!important}.LeftPanel .grid{display:none!important}.VerificationReadyTileView{flex-direction:column}.VerificationTileView__actions{justify-content:center}}.LeftPanel{grid-area:left;min-width:0;min-height:0}.room-placeholder,.middle{min-width:0;grid-area:middle;width:100%;min-height:0}.middle{display:flex;flex-direction:column}.SessionStatusView{grid-area:status}.lightbox{position:absolute;top:0;bottom:0;left:0;right:0;z-index:1;box-sizing:border-box;height:100%}.RoomView_body{flex:1 1;min-height:0;min-width:0;display:flex;flex-direction:column;height:100%}.RoomView_body .Timeline,.RoomView_body .TimelineLoadingView{flex:1 0}.middle-header{display:flex}.RoomGridView{display:grid}.RoomGridView.layout3x2{grid-template:"t0 t1 t2" 1fr "t3 t4 t5" 1fr / 1fr 1fr 1fr}.RoomGridView>.tile0{grid-area:t0}.RoomGridView>.tile1{grid-area:t1}.RoomGridView>.tile2{grid-area:t2}.RoomGridView>.tile3{grid-area:t3}.RoomGridView>.tile4{grid-area:t4}.RoomGridView>.tile5{grid-area:t5}.RoomGridView>div{display:flex;min-width:0;min-height:0}.RoomGridView>div.focus-ring{z-index:1;pointer-events:none}.menu{position:absolute;z-index:2}.menu .menu-item{box-sizing:border-box;width:100%}.Settings{display:flex;flex-direction:column}.SettingsBody{min-height:0;overflow-y:auto}.LazyListParent{flex:1 1;flex-basis:0;margin-top:15px}.LoadingView{display:flex;justify-content:center;align-items:center}.vertical-layout{display:flex;flex-direction:row;align-items:center;gap:12px}.vertical-layout>.stretch{flex:1 0}.popupContainer{position:absolute;white-space:nowrap}.SessionPickerView{padding:.4em}.SessionPickerView ul{list-style:none;padding:0}.SessionPickerView li{margin:.4em 0}.SessionPickerView .session-info{cursor:pointer;display:flex;align-items:center}.SessionPickerView .session-info>:not(:first-child){margin-left:8px}.SessionPickerView li .user-id{flex:1 1;overflow:hidden;text-overflow:ellipsis}.SessionPickerView li .error{margin:0 20px}.PasswordLoginView{padding:0 .4em .4em}.SessionLoadStatusView>.status,.LoginView_query-spinner{display:flex;gap:12px}.SessionLoadStatusView>.status p,.LoginView_query-spinner p{flex:1 1;margin:0}.SessionLoadStatusView .spinner{--size: 20px}.StartSSOLoginView{display:flex;flex-direction:column;padding:0 .4em}.StartSSOLoginView_button{flex:1 1;margin-top:12px}.LoginView_separator{justify-content:center;display:flex;margin:8px}.CompleteSSOView_title{display:flex;justify-content:center}.LoginView_sso{padding:.4em .4em 0}.LeftPanel{display:flex;flex-direction:column}.LeftPanel .utilities{display:flex}.LeftPanel .utilities .FilterField{flex:1 1;min-width:0}.LeftPanel ul{list-style:none;padding:0;margin:0}.RoomList{flex:1 0;overflow-y:auto;overscroll-behavior:contain}.RoomList>li>a{display:flex;align-items:center}.RoomList .description{margin:0;flex:1 1;min-width:0;display:flex}.RoomList .description>.name{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;flex:1 1}.RightPanelView{grid-area:right;min-height:0;min-width:0;display:flex;flex-direction:column}.RoomDetailsView,.MemberDetailsView{flex-direction:column;flex:1 1}.RoomDetailsView_avatar{display:flex}.RoomDetailsView_name h2,.MemberDetailsView_name h2{text-align:center}.MemberDetailsView_shield_container{display:flex;gap:4px}.MemberDetailsView_shield_red,.MemberDetailsView_shield_green,.MemberDetailsView_shield_black{background-size:contain;background-repeat:no-repeat;width:24px;height:24px;display:block;flex-shrink:0}.MemberDetailsView_shield_description{flex-grow:1;margin:0}.MemberDetailsView_shield_red{background-image:var(--icon-url-0)}.MemberDetailsView_shield_green{background-image:var(--icon-url-1)}.MemberDetailsView_shield_black{background-image:var(--icon-url-2)}.RoomDetailsView_label,.RoomDetailsView_row,.RoomDetailsView,.MemberDetailsView,.EncryptionIconView{display:flex;align-items:center;color:var(--text-color)}.RoomDetailsView_value{display:flex;justify-content:flex-end}.EncryptionIconView{justify-content:center}.RightPanelView_buttons{display:flex;justify-content:space-between;width:100%;box-sizing:border-box;padding:16px}.RightPanelView_buttons .hide{visibility:hidden}.MemberTileView a{display:flex;align-items:center}.middle-header{align-items:center}.middle-header h2{flex:1 1}.middle-header .room-description{flex:1 1;min-width:0}.RoomHeader .topic{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.RoomHeader .description{flex:1 1 auto;min-width:0}.middle-header h2{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin:0}.MessageComposer_replyPreview{display:grid;grid-template-columns:1fr auto}.MessageComposer_replyPreview .Timeline_message{grid-column:1/-1}.MessageComposer_input{display:flex;align-items:center}.MessageComposer_input>input{display:block;flex:1 1;min-width:0;box-sizing:border-box}.TimelineLoadingView{display:flex;align-items:center;justify-content:center}.TimelineLoadingView>:not(:first-child){margin-left:12px}.Timeline{display:flex;flex-direction:column;position:relative;min-height:0}.Timeline_jumpDown{position:absolute}.Timeline_scroller{overflow-y:scroll;overscroll-behavior-y:contain;overflow-anchor:none;padding:0;margin:0;position:relative;min-height:0;flex:1 0}.Timeline_scroller>ul{list-style:none;padding:1px 0;margin:0}.AnnouncementView{display:flex;align-items:center}.GapView_container{display:flex}.GapView_container>span{flex:1 1}.Timeline_messageBody img{max-width:400px;max-height:300px}.hydrogen{--avatar-size: 32px}.hydrogen .avatar{width:var(--avatar-size);height:var(--avatar-size);line-height:var(--avatar-size);font-size:calc(var(--avatar-size) * .6);overflow:hidden;flex-shrink:0;user-select:none;text-align:center;speak:none}.hydrogen .avatar img{width:100%;height:100%;object-fit:cover}.hydrogen .avatar.size-128{--avatar-size: 128px;width:var(--avatar-size);height:var(--avatar-size);line-height:var(--avatar-size);font-size:calc(var(--avatar-size) * .6)}.hydrogen .avatar.size-96{--avatar-size: 96px;width:var(--avatar-size);height:var(--avatar-size);line-height:var(--avatar-size);font-size:calc(var(--avatar-size) * .6)}.hydrogen .avatar.size-64{--avatar-size: 64px;width:var(--avatar-size);height:var(--avatar-size);line-height:var(--avatar-size);font-size:calc(var(--avatar-size) * .6)}.hydrogen .avatar.size-52{--avatar-size: 52px;width:var(--avatar-size);height:var(--avatar-size);line-height:var(--avatar-size);font-size:calc(var(--avatar-size) * .6)}.hydrogen .avatar.size-30{--avatar-size: 30px;width:var(--avatar-size);height:var(--avatar-size);line-height:var(--avatar-size);font-size:calc(var(--avatar-size) * .6)}.hydrogen .avatar.size-24{--avatar-size: 24px;width:var(--avatar-size);height:var(--avatar-size);line-height:var(--avatar-size);font-size:calc(var(--avatar-size) * .6)}.hydrogen .avatar.size-12{--avatar-size: 12px;width:var(--avatar-size);height:var(--avatar-size);line-height:var(--avatar-size);font-size:calc(var(--avatar-size) * .6)}@keyframes spinner{0%{transform:rotate(0);stroke-dasharray:0 0 10 90}45%{stroke-dasharray:0 0 90 10}75%{stroke-dasharray:0 50 50 0}to{transform:rotate(360deg);stroke-dasharray:10 90 0 0}}.hydrogen:not(.legacy) .spinner circle{transform-origin:50% 50%;animation-name:spinner;animation-duration:2s;animation-iteration-count:infinite;animation-timing-function:linear;stroke-dasharray:0 0 85 85;fill:none;stroke:currentcolor;stroke-width:12;stroke-linecap:butt}.hydrogen.legacy .spinner{display:inline-block;position:relative}.hydrogen.legacy .spinner div{box-sizing:border-box;display:block;position:absolute;padding:2px;border:2px solid currentcolor;border-radius:50%;animation:legacy-spinner 1.2s cubic-bezier(.5,0,.5,1) infinite;border-color:currentcolor transparent transparent transparent;width:var(--size);height:var(--size)}.hydrogen.legacy .spinner div:nth-child(1){animation-delay:-.45s}.hydrogen.legacy .spinner div:nth-child(2){animation-delay:-.3s}.hydrogen.legacy .spinner div:nth-child(3){animation-delay:-.15s}@keyframes legacy-spinner{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.spinner{--size: 20px;width:var(--size);height:var(--size)}.form-row.text>input,.form-row.text>textarea{display:block;width:100%;min-width:0;box-sizing:border-box}.FilterField{display:flex}.FilterField input{display:block;flex:1 1;min-width:0}.SessionStatusView{display:flex}.SessionStatusView p{margin:0 10px;word-break:break-all;word-break:break-word}body.hydrogen{overscroll-behavior:none;overflow:hidden}.hydrogen{margin:0}.hiddenWithLayout{visibility:hidden}.hidden{display:none!important}input::-ms-clear{display:none}@font-face{font-family:Inter;font-style:normal;font-weight:100;font-display:swap;src:url(./Inter-Thin.5d8e2ac4.woff2) format("woff2"),url(./Inter-Thin.5565b01e.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:100;font-display:swap;src:url(./Inter-ThinItalic.6b3ded18.woff2) format("woff2"),url(./Inter-ThinItalic.c413497b.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-weight:200;font-display:swap;src:url(./Inter-ExtraLight.da47c335.woff2) format("woff2"),url(./Inter-ExtraLight.d7be68a4.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:200;font-display:swap;src:url(./Inter-ExtraLightItalic.b3f94cfe.woff2) format("woff2"),url(./Inter-ExtraLightItalic.762fa4d2.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-weight:300;font-display:swap;src:url(./Inter-Light.0f7dfe72.woff2) format("woff2"),url(./Inter-Light.38326098.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:300;font-display:swap;src:url(./Inter-LightItalic.125c7e6a.woff2) format("woff2"),url(./Inter-LightItalic.ec6c76a8.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(./Inter-Regular.89d406b0.woff2) format("woff2"),url(./Inter-Regular.5b3a854b.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:400;font-display:swap;src:url(./Inter-Italic.bab4e808.woff2) format("woff2"),url(./Inter-Italic.7b187d57.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(./Inter-Medium.5d308f3d.woff2) format("woff2"),url(./Inter-Medium.0fc5d904.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:500;font-display:swap;src:url(./Inter-MediumItalic.76551c20.woff2) format("woff2"),url(./Inter-MediumItalic.1458af9d.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(./Inter-SemiBold.c7c3befe.woff2) format("woff2"),url(./Inter-SemiBold.04cd699f.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:600;font-display:swap;src:url(./Inter-SemiBoldItalic.d376ade4.woff2) format("woff2"),url(./Inter-SemiBoldItalic.420db54a.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(./Inter-Bold.6f5e9a23.woff2) format("woff2"),url(./Inter-Bold.20d46cff.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:700;font-display:swap;src:url(./Inter-BoldItalic.e09dcbe1.woff2) format("woff2"),url(./Inter-BoldItalic.31a185fa.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-weight:800;font-display:swap;src:url(./Inter-ExtraBold.0ef4267e.woff2) format("woff2"),url(./Inter-ExtraBold.45bae435.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:800;font-display:swap;src:url(./Inter-ExtraBoldItalic.d1e1f6a0.woff2) format("woff2"),url(./Inter-ExtraBoldItalic.30a1af87.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-weight:900;font-display:swap;src:url(./Inter-Black.7f1f5616.woff2) format("woff2"),url(./Inter-Black.067c82f7.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:900;font-display:swap;src:url(./Inter-BlackItalic.72d5983b.woff2) format("woff2"),url(./Inter-BlackItalic.c628a2cf.woff) format("woff")}.Timeline_jumpDown{width:40px;height:40px;bottom:16px;right:32px;border-radius:100%;border:1px solid var(--background-color-secondary--darker-7);background-image:var(--icon-url-3);background-position:center;background-color:var(--background-color-primary--darker-10);background-repeat:no-repeat;cursor:pointer}.Timeline_message{display:grid;grid-template:"avatar sender" auto "avatar body" auto "time body" 1fr "time reactions" auto / 30px 1fr;column-gap:8px;padding:4px;margin:0 12px;box-sizing:border-box}.Timeline_message:not(.continuation){margin-top:4px}.ReplyPreviewView .Timeline_message{display:grid;grid-template:"body" auto;margin-left:0;padding:0}.ReplyPreviewView .Timeline_message:not(.continuation){margin-top:0}@media screen and (max-width: 800px){.Timeline_message{grid-template:"avatar sender" auto "body body" 1fr "time time" auto "reactions reactions" auto / 30px 1fr}.Timeline_messageSender{margin-top:0!important;align-self:center}}.Timeline_message:hover:not(.disabled),.Timeline_message.selected,.Timeline_message.menuOpen{background-color:#8d97a51a;border-radius:4px}.Timeline_message:hover>.Timeline_messageOptions,.Timeline_message.menuOpen>.Timeline_messageOptions{display:block;user-select:none}.Timeline_messageAvatar{grid-area:avatar;text-decoration:none}.Timeline_messageSender{grid-area:sender;font-weight:700;line-height:1.7rem}.Timeline_messageSender,.Timeline_messageBody{margin:0;word-break:break-all;word-break:break-word}.Timeline_message:not(.continuation) .Timeline_messageSender,.Timeline_message:not(.continuation) .Timeline_messageBody{margin-top:4px}.Timeline_messageOptions{display:none;grid-area:body;align-self:start;justify-self:end;margin-top:-12px;margin-right:4px;border:var(--background-color-primary--darker-10) 1px solid;height:24px;width:24px;background-color:var(--background-color-primary);color:inherit;border-radius:4px;padding:0;text-align:center;line-height:22px;cursor:pointer}.Timeline_messageTime{grid-area:time}.Timeline_messageBody time{padding:2px 0 0 10px;user-select:none}.Timeline_messageBody time,.Timeline_messageTime{font-size:.8em;line-height:normal;color:var(--timeline-time-text-color)}.Timeline_messageBody.statusMessage{font-style:italic;color:var(--light-text-color)}.Timeline_messageBody{grid-area:body;line-height:2.2rem;width:100%;min-width:0}.hydrogen .Timeline_messageSender.usercolor1{color:var(--usercolor1)}.hydrogen .Timeline_messageSender.usercolor2{color:var(--usercolor2)}.hydrogen .Timeline_messageSender.usercolor3{color:var(--usercolor3)}.hydrogen .Timeline_messageSender.usercolor4{color:var(--usercolor4)}.hydrogen .Timeline_messageSender.usercolor5{color:var(--usercolor5)}.hydrogen .Timeline_messageSender.usercolor6{color:var(--usercolor6)}.hydrogen .Timeline_messageSender.usercolor7{color:var(--usercolor7)}.hydrogen .Timeline_messageSender.usercolor8{color:var(--usercolor8)}.Timeline_messageBody h1,.Timeline_messageBody h2,.Timeline_messageBody h3,.Timeline_messageBody h4,.Timeline_messageBody h5,.Timeline_messageBody h6{font-weight:700;margin:.7em 0}.Timeline_messageBody h1{font-size:1.6em}.Timeline_messageBody h2{font-size:1.5em}.Timeline_messageBody h3{font-size:1.4em}.Timeline_messageBody h4{font-size:1.3em}.Timeline_messageBody h5{font-size:1.2em}.Timeline_messageBody h6{font-size:1.1em}.Timeline_messageBody a{word-break:break-all}.Timeline_messageBody a.link{color:var(--link-color);text-decoration:none}.Timeline_messageBody .media{display:grid;margin-top:4px;width:100%}.Timeline_messageBody .media>a{text-decoration:none;width:100%;display:block}.Timeline_messageBody .media>*{grid-row:1;grid-column:1}.Timeline_messageBody .media img,.Timeline_messageBody .media video{width:100%;height:auto;align-self:start;border-radius:4px;display:block}.hydrogen:not(.legacy) .Timeline_messageBody .media img,.hydrogen:not(.legacy) .Timeline_messageBody .media video{align-self:stretch}.Timeline_messageBody .media>.status{align-self:end;justify-self:start;font-size:.8em}.Timeline_messageBody .media>progress{align-self:center;justify-self:center;width:75%}.Timeline_messageBody .media>time{align-self:end;justify-self:end}.Timeline_messageBody .media>time,.Timeline_messageBody .media>.status{color:var(--text-color);display:block;padding:2px;margin:4px;background-color:#ffffffbf;border-radius:4px}.Timeline_messageBody .media>.spacer{width:100%;align-self:start}.Timeline_messageBody code,.Timeline_messageBody pre{background-color:var(--background-color-secondary);font-family:monospace;font-size:.9em}.Timeline_messageBody code{border-radius:3px;padding:.2em .3em;margin:0}.Timeline_messageBody pre{border:1px solid var(--light-border);padding:.5em;max-height:30em;overflow:auto}.Timeline_messageBody pre>code{background-color:unset;border-radius:unset;display:block;font-size:unset}.Timeline_messageBody blockquote{margin-left:0;padding-left:20px;border-left:4px solid var(--light-border)}.Timeline_messageBody table{border:1px solid var(--background-color-secondary--darker-15);border-radius:2px;border-spacing:0}.Timeline_messageBody thead th{border-bottom:1px solid var(--background-color-secondary--darker-15)}.Timeline_messageBody td,.Timeline_messageBody th{padding:2px 5px}.Timeline_messageBody tbody tr:nth-child(2n){background-color:var(--background-color-secondary)}.Timeline_messageBody .pill{padding:0 5px;border-radius:15px;background-color:var(--background-color-secondary);border:1px solid var(--background-color-secondary--darker-10);text-decoration:none;display:inline-flex;align-items:center;line-height:2rem;vertical-align:top;margin:1px}.Timeline_messageBody .pill div.avatar{display:inline-block;margin-right:3px}.Timeline_message.unsent .Timeline_messageBody{color:var(--light-text-color)}.Timeline_message.unverified .Timeline_messageBody{color:var(--error-color)}.Timeline_messageReactions{grid-area:reactions;margin-top:6px}.Timeline_messageReactions button{display:inline-flex;line-height:2rem;margin-right:6px;padding:1px 6px;border:1px solid var(--light-border);border-radius:10px;background-color:var(--background-color-secondary);color:inherit;cursor:pointer;user-select:none;vertical-align:middle}.Timeline_messageReactions button.active{background-color:var(--accent-color--alpha-11);border-color:var(--accent-color)}@keyframes glow-reaction-border{0%{border-color:var(--background-color-secondary)}to{border-color:var(--accent-color)}}.Timeline_messageReactions button.active.pending{animation-name:glow-reaction-border;animation-duration:.5s;animation-direction:alternate;animation-iteration-count:infinite;animation-timing-function:linear}.Timeline_locationLink{padding:0 8px;border-radius:16px;border:1px solid var(--light-border);background-color:var(--background-color-secondary);text-decoration:none;display:inline-block;line-height:2rem;vertical-align:top;margin:1px 4px}.AnnouncementView{margin:5px 0;padding:5px 10%}.AnnouncementView>div{margin:0 auto;padding:10px 20px;background-color:var(--background-color-secondary);text-align:center;border-radius:10px}.GapView_container>:not(:first-child){margin-left:12px}.GapView{padding:52px 20px}.GapView.isAtTop{padding:52px 20px 12px}.DateHeader{font-weight:700;font-size:1.5rem;position:sticky;top:5px}.DateHeader time{margin:0 auto;max-width:350px;padding:12px;display:block;color:var(--light-text-color);background-color:var(--background-color-primary);border-radius:8px;text-align:center}.CallTileView>div>div{display:flex;flex-direction:column;gap:4px}.CallTileView_members>*{margin-right:-16px}.CallTileView_members{display:flex}.CallTileView_title{font-weight:700}.CallTileView_subtitle{font-size:12px}.CallTileView_memberCount:before{content:"";background-image:var(--icon-url-4);background-repeat:no-repeat;background-size:16px 16px;width:16px;height:16px;display:inline-flex;vertical-align:bottom;margin-right:4px}.CallView{height:40vh;display:grid}.CallView>*{grid-column:1;grid-row:1}.CallView_error{align-self:start;justify-self:center;margin:16px;z-index:1}.CallView_members{display:grid;gap:12px;background:var(--background-color-secondary--darker-5);padding:12px;margin:0;min-height:0;list-style:none;align-self:stretch}.StreamView{display:grid;border-radius:8px;overflow:hidden;background-color:#000}.StreamView>*{grid-column:1;grid-row:1}.StreamView video{width:100%;height:100%;min-height:0;object-fit:contain}.StreamView_avatar{align-self:center;justify-self:center}.StreamView_error{align-self:start;justify-self:center;z-index:1}.StreamView_muteStatus{align-self:start;justify-self:end;width:24px;height:24px;background-position:center;background-repeat:no-repeat;background-size:14px;display:block;background-color:var(--text-color);border-radius:4px;margin:4px}.StreamView_muteStatus.microphoneMuted{background-image:var(--icon-url-5)}.StreamView_muteStatus.cameraMuted{background-image:var(--icon-url-6)}.CallView_buttons{align-self:end;justify-self:center;display:flex;gap:12px;margin-bottom:16px;z-index:1}.CallView_buttons button{border-radius:100%;width:48px;height:48px;border:none;background-color:var(--accent-color);background-position:center;background-repeat:no-repeat}.CallView_buttons button:disabled{background-color:var(--accent-color--lighter-10)}.CallView_buttons .CallView_hangup{background-color:var(--error-color);background-image:var(--icon-url-7)}.CallView_buttons .CallView_hangup:disabled{background-color:var(--error-color--lighter-10)}.CallView_buttons .CallView_mutedMicrophone{background-color:var(--background-color-primary);background-image:var(--icon-url-8)}.CallView_buttons .CallView_unmutedMicrophone{background-image:var(--icon-url-9)}.CallView_buttons .CallView_mutedCamera{background-color:var(--background-color-primary);background-image:var(--icon-url-10)}.CallView_buttons .CallView_unmutedCamera{background-image:var(--icon-url-11)}.CallView_members.size1{grid-template-columns:1fr;grid-template-rows:1fr}.CallView_members.size2{grid-template-columns:1fr;grid-template-rows:repeat(2,1fr)}.CallView_members.square.size3,.CallView_members.square.size4{grid-template-columns:repeat(2,1fr);grid-template-rows:repeat(2,1fr)}.CallView_members.square.size5,.CallView_members.square.size6{grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(2,1fr)}.CallView_members.square.size7,.CallView_members.square.size8,.CallView_members.square.size9{grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr)}.CallView_members.square.size10{grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(4,1fr)}.CallView_members.tall.size3{grid-template-columns:1fr;grid-template-rows:repeat(3,1fr)}.CallView_members.tall.size4{grid-template-columns:1fr;grid-template-rows:repeat(4,1fr)}.CallView_members.tall.size5,.CallView_members.tall.size6{grid-template-rows:repeat(3,1fr);grid-template-columns:repeat(2,1fr)}.CallView_members.tall.size7,.CallView_members.tall.size8{grid-template-rows:repeat(4,1fr);grid-template-columns:repeat(2,1fr)}.CallView_members.tall.size9,.CallView_members.tall.size10{grid-template-rows:repeat(5,1fr);grid-template-columns:repeat(2,1fr)}.CallView_members.wide.size2{grid-template-columns:repeat(2,1fr);grid-template-rows:1fr}.CallView_members.wide.size3{grid-template-rows:1fr;grid-template-columns:repeat(3,1fr)}.CallView_members.wide.size4{grid-template-rows:1fr;grid-template-columns:repeat(4,1fr)}.CallView_members.wide.size5,.CallView_members.wide.size6{grid-template-rows:repeat(2,1fr);grid-template-columns:repeat(3,1fr)}.CallView_members.wide.size7,.CallView_members.wide.size8{grid-template-rows:repeat(2,1fr);grid-template-columns:repeat(4,1fr)}.CallView_members.wide.size9,.CallView_members.wide.size10{grid-template-rows:repeat(3,1fr);grid-template-columns:repeat(4,1fr)}.ErrorView_block{background:var(--error-color);color:var(--fixed-white);margin:16px}.ErrorView.ErrorView_inline{color:var(--error-color);margin:4px 0;padding:4px 0}.ErrorView.ErrorView_inline>p{margin:0}.ErrorView{font-weight:700;margin:16px;border-radius:8px;padding:12px;display:flex;gap:8px}.ErrorView_message{flex-basis:0;flex-grow:1;margin:0;word-break:break-all;word-break:break-word;align-self:center}.ErrorView_submit{align-self:end}.ErrorView_close{align-self:start;width:16px;height:16px;border:none;background:none;background-repeat:no-repeat;background-size:contain;cursor:pointer}.ErrorView_block .ErrorView_close{background-image:var(--icon-url-12)}.ErrorView_inline .ErrorView_close{background-image:var(--icon-url-13)}:root{font-size:10px;--icon-color: var(--background-color-secondary--darker-40);--light-border: var(--background-color-secondary--darker-5);--light-text-color: var(--background-color-secondary--darker-55);--timeline-time-text-color: var(--background-color-secondary--darker-35);--icon-background: var(--background-color-secondary--darker-7);--right-panel-text-color: var(--background-color-secondary--darker-35)}.hydrogen{font-family:Inter,sans-serif,"emoji";background-color:var(--background-color-primary);color:var(--text-color);font-size:1.4rem;--usercolor1: #368BD6;--usercolor2: #AC3BA8;--usercolor3: #03B381;--usercolor4: #E64F7A;--usercolor5: #FF812D;--usercolor6: #2DC2C5;--usercolor7: #5C56F5;--usercolor8: #74D12C}.hydrogen button{font-family:inherit}.avatar{border-radius:100%;background:var(--background-color-primary);color:var(--fixed-white)}.hydrogen .avatar.usercolor1{background-color:var(--usercolor1)}.hydrogen .avatar.usercolor2{background-color:var(--usercolor2)}.hydrogen .avatar.usercolor3{background-color:var(--usercolor3)}.hydrogen .avatar.usercolor4{background-color:var(--usercolor4)}.hydrogen .avatar.usercolor5{background-color:var(--usercolor5)}.hydrogen .avatar.usercolor6{background-color:var(--usercolor6)}.hydrogen .avatar.usercolor7{background-color:var(--usercolor7)}.hydrogen .avatar.usercolor8{background-color:var(--usercolor8)}.logo{height:48px;min-width:48px;background-image:var(--icon-url-14);background-repeat:no-repeat;background-position:center}.button-row{display:flex}.button-row>*{margin-right:10px}.button-row>*:last-child{margin-right:0}.button-row .button-action{margin:10px 0;flex:1 0 auto}.form-row.text textarea{font-family:Inter,sans-serif;background-color:var(--background-color-secondary);color:inherit}.form-group{margin:24px 0}.form-row{margin:12px 0}.form-row.text>input,.form-row.text>textarea{padding:12px;border:1px solid var(--light-border);border-radius:8px;margin-top:5px;font-size:1em;resize:vertical;background-color:var(--background-color-secondary);color:inherit}.form-row.check{display:flex;align-items:baseline;gap:4px}.form-row.text>label,.form-row.text>input{display:block}.form-row .form-row-description{font-size:1rem;color:var(--light-text-color);margin:8px 0 0}.button-action{cursor:pointer}a.button-action{text-decoration:none;text-align:center;display:block}.button-action.secondary{color:var(--accent-color)}.button-action.primary{background-color:var(--accent-color);border-radius:8px;color:var(--fixed-white);font-weight:700}.button-action.primary:disabled{color:var(--fixed-white--darker-10)}.button-action.primary.destructive{background-color:var(--error-color)}.button-action.secondary.destructive{color:var(--error-color)}.button-action{border:none;padding:10px;background:none;font-weight:500}.button-utility{cursor:pointer;width:32px;height:32px;background-position:center;background-color:var(--icon-background);background-repeat:no-repeat;border:none;border-radius:100%;display:block}.button-utility.grid{background-image:var(--icon-url-15)}.button-utility.settings{background-image:var(--icon-url-16)}.button-utility.create{background-image:var(--icon-url-17)}.button-utility.grid.on{background-image:var(--icon-url-18)}.FilterField{background-image:var(--icon-url-19);background-repeat:no-repeat;background-position:8px center;background-color:var(--icon-background);border:1px solid transparent;border-radius:16px;height:32px;align-items:center;padding-left:30px;box-sizing:border-box}.FilterField:focus-within{border:1px var(--icon-background) solid;background-color:var(--background-color-primary)}.FilterField:focus-within button{border-color:var(--background-color-primary)}.FilterField input{font-family:Inter;font-size:1.3rem;font-weight:500;line-height:1.573rem;outline:none;border:none;background-color:transparent;height:100%;color:var(--text-color)}.FilterField button{width:30px;height:30px;background-position:center;background-color:var(--icon-background);background-repeat:no-repeat;background-image:var(--icon-url-20);border:7px solid transparent;border-radius:100%;box-sizing:border-box}.PreSessionScreen{padding:30px}.PreSessionScreen h1{font-size:16px;text-align:center}.SessionLoadView{padding-top:16px}.StartSSOLoginView_button{border:1px solid var(--accent-color);border-radius:8px}.LoginView_back{background-image:var(--icon-url-21);background-color:transparent}.LoginView_separator{font-weight:500;font-size:1.5rem}.LoginView_forwardInfo{font-size:.9em;margin-left:1em;color:var(--light-text-color)}.CompleteSSOView_title{font-weight:500}@media screen and (min-width: 600px){.PreSessionScreen{box-shadow:0 6px 32px #0000001a;border-radius:8px}}.PreSessionScreen .logo{height:48px;min-width:48px}.LeftPanel{background:var(--background-color-secondary);font-size:1.5rem;padding:12px 8px 0}.LeftPanel>:not(:first-child){margin-top:12px}.LeftPanel .utilities>:not(:first-child){margin-left:8px}.LeftPanel .filter{border-bottom:1px solid var(--background-color-secondary)}.LeftPanel .filter input{padding:.8em;border:none}.LeftPanel .RoomList{padding:0 8px 0 0;margin-right:-8px}.RoomList>li{margin:0;padding:4px 8px 4px 0;align-items:center}.RoomList>li>a{text-decoration:none;align-items:center}.RoomList li:not(:first-child){margin-top:4px}.RoomList li.active{background:var(--background-color-secondary--darker-7);border-radius:5px}.RoomList li>a>*{margin-right:8px}.RoomList .description{align-items:center}.RoomList .name.unread{font-weight:600}.RoomList .badge{min-width:1.6rem;height:1.6rem;border-radius:1.6rem;box-sizing:border-box;padding:.1rem .3rem;background-color:var(--room-badge);color:var(--fixed-white);font-weight:700;font-size:1rem;line-height:1.4rem;text-align:center}.RoomList .badge.highlighted{background-color:var(--error-color)}a{color:inherit}.SessionStatusView{padding:4px;min-height:22px;background-color:var(--accent-color);color:var(--fixed-white);align-items:center}.SessionStatusView button.link{color:currentcolor;text-align:left}.SessionStatusView>.end{flex:1 1;display:flex;justify-content:flex-end;align-self:stretch;align-items:stretch}.SessionStatusView .dismiss{border:none;background:none;background-image:var(--icon-url-22);background-position:center;background-repeat:no-repeat;width:32px;cursor:pointer}.room-placeholder{align-items:center;justify-content:center;text-align:center;padding:20px}.SessionPickerView li{font-size:1.2em}.SessionPickerView .session-info{text-decoration:none;padding:12px;border:1px solid var(--light-border);border-radius:8px;background-image:var(--icon-url-23);background-position:center right 30px;background-repeat:no-repeat;font-weight:500}.SessionPickerView .session-actions{margin:10px 0 20px;display:flex}.SessionPickerView .session-actions>*{margin-right:10px}.SessionPickerView .session-actions>*:last-child{margin-right:0}.SessionPickerView .session-actions button{border:none;background:none;color:inherit}.SessionPickerView button.destructive{color:var(--error-color)}.RoomGridView>div.container{border-right:1px solid var(--background-color-secondary);border-bottom:1px solid var(--background-color-secondary)}.RoomGridView>.focused>.room-placeholder .unfocused{display:none}.RoomGridView>:not(.focused)>.room-placeholder .focused{display:none}.room-placeholder .unfocused{color:var(--right-panel-text-color)}.RoomGridView>div.focus-ring{border:2px solid var(--accent-color--darker-5);border-radius:12px}.middle-header{box-sizing:border-box;flex:0 0 56px;background:var(--background-color-primary);padding:0 16px;border-bottom:1px solid var(--background-color-secondary)}.middle-header h2{font-size:1.8rem;font-weight:600}.middle-header>:not(:last-child){margin-right:8px}.close-middle,.close-session{background-image:var(--icon-url-24);background-position-x:10px}.RoomHeader .topic{font-size:14rem}.RoomHeader .room-options{background-image:var(--icon-url-25)}.RoomView_error{color:var(--error-color);background:#efefef;height:0px;font-weight:700;transition:.25s all ease-out;padding-right:20px;padding-left:20px}.RoomView_error div{overflow:hidden;height:100%;width:100%;position:relative;display:flex;align-items:center}.RoomView_error:not(:empty){height:auto;padding-top:20px;padding-bottom:20px}.RoomView_error p{position:relative;display:block;width:100%;height:auto;margin:0}.RoomView_error button{width:40px;padding-top:20px;padding-bottom:20px;background:none;border:none;position:relative;border-radius:5px;transition:.1s all ease-out;cursor:pointer}.RoomView_error button:hover{background:#cfcfcf}.RoomView_error button:before{content:"\274c";position:absolute;top:15px;left:9px;width:20px;height:10px;font-size:10px;align-self:middle}.MessageComposer_replyPreview .Timeline_message{margin:5px 0 0;max-height:30vh;overflow:auto}.MessageComposer_replyPreview{background:var(--background-color-secondary);margin:0 10px 10px;box-shadow:0 0 5px var(--background-color-secondary--darker-15);border-radius:5px}.MessageComposer_input,.MessageComposer_replyPreview{padding:8px}.MessageComposer_replyPreview>.replying{display:inline-flex;flex-direction:row;align-items:center;font-weight:700}.MessageComposer_replyPreview>button.cancel{width:32px;height:32px;display:block;border:none;text-indent:200%;white-space:nowrap;overflow:hidden;background-color:transparent;background-image:var(--icon-url-26);background-repeat:no-repeat;background-position:center;background-size:18px;cursor:pointer}.MessageComposer_input:first-child{border-top:1px solid var(--background-color-secondary)}.MessageComposer_input>:not(:first-child){margin-left:12px}.MessageComposer_input>textarea{border:none;border-radius:24px;background:var(--background-color-secondary);color:inherit;font-size:14px;font-family:Inter,sans-serif;resize:none;flex:1 1;padding:14px;box-sizing:border-box;overflow:hidden;max-height:113px;overflow-y:auto;overflow-y:overlay}.MessageComposer_input>button.send{width:32px;height:32px;display:block;border-radius:100%;border:none;text-indent:200%;overflow:hidden;background-color:var(--accent-color);background-image:var(--icon-url-27);background-repeat:no-repeat;background-position:center;align-self:end;margin-bottom:8px}.MessageComposer_input>button.sendFile{width:32px;height:32px;display:block;border:none;text-indent:200%;white-space:nowrap;overflow:hidden;background-color:transparent;background-image:var(--icon-url-28);background-repeat:no-repeat;background-position:center}.MessageComposer.MessageComposer_canSend button.sendFile{display:none}.MessageComposer:not(.MessageComposer_canSend) button.send{display:none}.SettingsBody{padding:0 16px}.Settings h3{margin:16px 0 8px}.Settings p{max-width:700px}.Settings .row .label{font-weight:600}.Settings .row .label,.Settings .row .content{margin-top:4px;margin-bottom:4px}.Settings .row .content{margin-left:4px;flex:1 1}.Settings .row.code .content{font-family:monospace}.Settings .row .content button{display:inline-block;margin:0 8px}.Settings .row .content input[type=range]{width:100%;max-width:300px;min-width:160px}.Settings .row{margin:4px 0;display:flex;flex-wrap:wrap;align-items:center}.Settings .row .label{flex:0 0 200px;align-self:flex-start}.Settings .row .content p{margin:8px 0}.Settings .row .content p:first-child{margin-top:0}.Settings .row .content p:last-child{margin-bottom:0}.FeatureView{display:flex;gap:8px}.FeaturesView ul{list-style:none;padding:8px 16px}.FeaturesView input[type=checkbox]{align-self:start}.FeatureView h4{margin:0}.FeatureView p{margin:8px 0}.error{color:var(--error-color);font-weight:600}button.link{font-size:1em;border:none;text-decoration:underline;background:none;cursor:pointer;margin:-12px;padding:12px;color:inherit}.Settings a,.Settings .link{color:var(--accent-color);font-weight:600}.lightbox{background-color:#000000bf;display:grid;grid-template:"content close" auto "content details" 1fr / 1fr auto;color:var(--background-color-primary);padding:4px}@media (max-aspect-ratio: 1/1){.lightbox{grid-template:"close" auto "content" 1fr "details" auto / 1fr}.lightbox .details{width:100%!important}}.lightbox .picture{grid-area:content;background-size:contain;background-position:center;background-repeat:no-repeat;width:100%;height:100%;align-self:center;justify-self:center}.lightbox .loading{grid-area:content;align-self:center;justify-self:center;display:flex}.lightbox .loading>:not(:first-child){margin-left:8px}.lightbox .close{display:block;grid-area:close;justify-self:end;background-image:var(--icon-url-29);background-position:center;background-size:16px;background-repeat:no-repeat;width:16px;height:16px;padding:12px}.lightbox .details{grid-area:details;padding:12px;font-size:1.5rem;width:200px}.menu{border-radius:8px;box-shadow:2px 2px 10px #00000080;padding:4px;background-color:var(--background-color-primary);list-style:none;margin:0}.menu li{margin-bottom:10px}.menu .menu-item{color:var(--text-color)}.menu button{border-radius:4px;border:none;background-color:transparent;text-align:left;padding:8px 32px 8px 8px;font-size:1.5rem;height:24px;cursor:pointer}.menu .destructive button{color:var(--error-color)}.menu .quick-reactions{display:flex;padding:8px 32px 8px 8px}.menu .quick-reactions button{padding:2px 4px;text-align:center}.InviteView_body{display:flex;justify-content:space-around;align-items:center;flex:1 1;overflow:auto}.InviteView_invite{display:flex;width:100%;max-width:400px;flex-direction:column;padding:0 24px}.InviteView_roomProfile{display:grid;gap:4px;grid-template:"avatar name" auto "avatar description" 1fr / 72px 1fr;align-self:center;margin-bottom:24px}.InviteView_roomProfile h3{grid-area:name;margin:0}.InviteView_roomDescription{grid-area:description;font-size:1.2rem;margin:0;color:var(--light-text-color)}.InviteView_roomAvatar{grid-area:avatar}.InviteView_dmAvatar{align-self:center}.InviteView_inviter{text-align:center;margin:24px 0}.InviteView_inviter .avatar{display:inline-block;vertical-align:middle;margin-right:4px}.InviteView_buttonRow{margin:10px auto;max-width:200px;width:100%}.InviteView_buttonRow button{display:block;width:100%}.DisabledComposerView{padding:12px;background-color:var(--background-color-secondary)}.DisabledComposerView h3{margin:0}.UnknownRoomView_container{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center}.UnknownRoomView_body{height:100%;text-align:center;padding:16px;box-sizing:border-box}.UnknownRoomView h2{word-break:break-all;word-break:break-word}.UnknownRoomView button{max-width:200px;width:100%}.LoadingView{height:100%;width:100%}.LoadingView .spinner{margin-right:5px}.InvitePanelView{display:flex;flex-direction:column;justify-content:center;align-items:center}.InvitePanelView__form{margin-top:8px}.InvitePanelView__input{font-family:Inter;font-size:1.3rem;font-weight:500;line-height:1.573rem;outline:none;border:none;background-color:var(--icon-background);color:var(--text-color);height:32px;box-sizing:border-box;margin:5px;border-radius:16px;padding:15px;width:90%}.InvitePanelView__form,.InvitePanelView__btn{display:flex;flex-direction:column;justify-content:center;align-items:center}.InvitePanelView__btn{width:100px;height:30px;margin-top:8px}.InvitePanelView__heading{width:90%;text-align:center;margin:0}.RightPanelView{background:var(--background-color-secondary)}.RoomDetailsView{padding:0 16px 16px}.RoomDetailsView_id,.MemberDetailsView_id{color:var(--right-panel-text-color);font-size:12px}.RoomDetailsView_rows{margin-top:36px;width:100%}.RoomDetailsView_name h2,.MemberDetailsView_name h2{margin-bottom:4px;font-size:1.8rem}.RoomDetailsView_row{margin-bottom:20px;font-weight:500;font-size:15px;width:100%;background:none;border:none;padding:0}button.RoomDetailsView_row{cursor:pointer}button.RoomDetailsView_row:after{content:var(--icon-url-30);margin-left:12px}.RoomDetailsView_row:not(button):after{content:" ";width:19px}.RoomDetailsView_label:before{padding-right:16px;height:24px;width:20px}.RoomDetailsView_label{width:200px}.RoomDetailsView_value{color:var(--right-panel-text-color);flex:1 1}.MemberCount:before{content:var(--icon-url-31)}.EncryptionStatus:before{content:var(--icon-url-32)}.EncryptionIconView{width:52px;height:52px;border-radius:100%;background:var(--right-panel-text-color);border:3px solid var(--background-color-secondary);margin-left:-16px}.EncryptionIconView_encrypted,.EncryptionIconView_unencrypted{height:24px;width:24px}.EncryptionIconView_encrypted{content:var(--icon-url-33)}.EncryptionIconView_unencrypted{content:var(--icon-url-34)}.RightPanelView_buttons .button-utility{width:24px;height:24px}.RightPanelView_buttons .close{background-image:var(--icon-url-35)}.RightPanelView_buttons .back{background-image:var(--icon-url-36)}.MemberListView__list{padding-left:16px;padding-right:16px;margin:0}.MemberListView{display:flex;flex-direction:column;height:100%}.MemberListView__invite-container{display:flex;justify-content:center;align-items:center}.MemberListView__invite-btn{width:80%;height:32px;display:flex;justify-content:center;align-items:center}.MemberTileView{margin-bottom:8px;list-style:none}.MemberTileView a{text-decoration:none}.MemberTileView .avatar{margin-right:8px}.MemberTileView_name{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;flex:1 1}.MemberDetailsView_section{box-sizing:border-box;padding:16px;width:100%}.MemberDetailsView_label{font-size:12px;font-weight:600;color:var(--right-panel-text-color);text-transform:uppercase}.MemberDetailsView_value,.MemberDetailsView_options{margin-left:8px;margin-top:5px;font-size:12px}.MemberDetailsView_options{display:inline-flex;flex-direction:column}.MemberDetailsView_options a,.MemberDetailsView_options button{color:var(--accent-color);text-decoration:none;margin:0 0 3px;padding:0;border:none;background:none;cursor:pointer;text-align:left}.LazyListParent{overflow-y:auto}.LogoutScreen{height:100vh}.LogoutScreen .content{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center}.LogoutScreen .status{display:flex;gap:12px}.CreateRoomView_body,.JoinRoomView_body,.RoomBeingCreated_error{max-width:400px}.RoomBeingCreated_error{margin-top:48px}.centered-column{padding:0 12px;align-self:center;width:100%;box-sizing:border-box}.CreateRoomView_selectAvatar{border:none;background:none;cursor:pointer}.CreateRoomView_selectAvatarPlaceholder{width:64px;height:64px;border-radius:100%;background-color:var(--icon-background);background-image:var(--icon-url-37);background-repeat:no-repeat;background-position:center;background-size:36px}.JoinRoomView_status{display:flex;align-items:center;justify-content:center;margin-top:10px}.JoinRoomView_status .spinner{margin-right:5px}.ToastCollectionView{display:flex;position:fixed;flex-direction:column;z-index:1000;left:44px;top:52px}.ToastCollectionView ul{margin:0;padding:0}.VerificationToastNotificationView:not(:first-child),.CallToastNotificationView:not(:first-child){margin-top:12px}.VerificationToastNotificationView{display:flex;flex-direction:column}.CallToastNotificationView{display:grid;grid-template-rows:40px 1fr 1fr 48px;row-gap:4px}.VerificationToastNotificationView,.CallToastNotificationView{background-color:var(--background-color-secondary);border-radius:8px;color:var(--text-color);box-shadow:2px 2px 10px #00000080}.CallToastNotificationView{width:260px}.VerificationToastNotificationView{width:248px}.VerificationToastNotificationView__top{padding:8px;display:flex}.CallToastNotificationView__top{display:grid;grid-template-columns:auto 176px auto;align-items:center;justify-items:center}.VerificationToastNotificationView__dismiss-btn,.CallToastNotificationView__dismiss-btn{background:center var(--background-color-secondary--darker-5) var(--icon-url-38) no-repeat;border-radius:100%;height:15px;width:15px}.VerificationToastNotificationView__title,.CallToastNotificationView__name{font-weight:600;width:100%}.VerificationToastNotificationView__description{padding:8px}.CallToastNotificationView__description{margin-left:42px}.CallToastNotificationView__call-type:before{content:"";background-image:var(--icon-url-39);background-repeat:no-repeat;background-size:20px 20px;display:flex;width:20px;height:20px;padding-right:5px}.CallToastNotificationView__call-type:after{content:"";width:4px;height:4px;background-color:var(--text-color);border-radius:100%;align-self:center;margin:5px}.CallToastNotificationView__member-count:before{content:"";background-image:var(--icon-url-40);background-repeat:no-repeat;background-size:20px 20px;display:flex;width:20px;height:20px;padding-right:5px}.CallToastNotificationView__member-count,.CallToastNotificationView__call-type{display:flex;align-items:center}.CallToastNotificationView__info{display:flex;margin-left:42px}.CallToastNotificationView__action{display:flex;justify-content:end;margin-right:10px}.VerificationToastNotificationView__action{display:flex;justify-content:space-between;padding:8px}.CallToastNotificationView__action .button-action{width:100px;height:40px}.VerificationToastNotificationView__action .button-action{width:100px;height:32px;display:flex;align-items:center;justify-content:center}.VerifyEmojisView{width:100%}.VerificationCompleteView,.DeviceVerificationView,.SelectMethodView{display:flex;align-items:center;justify-content:center;flex-direction:column;width:100%}.SelectMethodView>div,.SelectMethodView__heading,.SelectMethodView__title{width:inherit;box-sizing:border-box}.VerificationCompleteView__heading,.VerifyEmojisView__heading,.SelectMethodView__heading,.MissingKeysView__heading,.WaitingForOtherUserView__heading{display:flex;align-items:center;gap:16px;flex-wrap:wrap;justify-content:center;padding:8px}.MissingKeysView__heading{text-align:center}.VerificationCompleteView>*,.SelectMethodView>*,.VerifyEmojisView>*,.WaitingForOtherUserView>*{padding:16px}.VerificationCancelledView__title,.VerificationCompleteView__title,.VerifyEmojisView__title,.SelectMethodView__title,.WaitingForOtherUserView__title{font-size:1.5em;text-align:center}.VerificationCompleteView__title,.VerifyEmojisView__title,.SelectMethodView__title,.WaitingForOtherUserView__title,.VerificationCancelledView__description,.MissingKeysView__description,.VerificationCompleteView__description,.VerifyEmojisView__description,.SelectMethodView__description,.WaitingForOtherUserView__description{text-align:center;margin:0}.VerificationCancelledView__actions,.MissingKeysView__actions,.SelectMethodView__actions,.VerifyEmojisView__actions,.WaitingForOtherUserView__actions{display:flex;justify-content:center;gap:12px;padding:16px}.EmojiCollection{display:flex;justify-content:center;gap:16px;flex-wrap:wrap}.EmojiContainer__emoji{font-size:3.2rem}.VerifyEmojisView__waiting,.EmojiContainer__name,.EmojiContainer__emoji{display:flex;justify-content:center;align-items:center}.EmojiContainer__name{font-weight:700}.VerifyEmojisView__waiting{gap:12px}.VerificationCompleteView__icon{background:var(--icon-url-41) no-repeat;background-size:contain;width:128px;height:128px}.SelectMethodView__name{overflow:hidden;text-overflow:ellipsis;width:100%;display:inline-block}.VerificationInProgressTileView,.VerificationCompletedTileView,.VerificationCancelledTileView,.VerificationReadyTileView{display:flex;gap:20px}.VerificationTileView__actions{display:flex;gap:16px}.VerificationTileView__description{display:flex;align-items:center;font-weight:700;font-size:1.4rem;color:var(--text-color);gap:4px;text-align:center}.VerificationInProgressTileView,.VerificationCompletedTileView,.VerificationCancelledTileView,.VerificationReadyTileView{background:var(--background-color-primary--darker-5);padding:8px;box-sizing:border-box;border-radius:8px}.VerificationTileView{display:flex;justify-content:center;padding:5px 10%;box-sizing:border-box}.VerificationInProgressTileView .VerificationTileView__shield,.VerificationReadyTileView .VerificationTileView__shield{background:var(--icon-url-42) no-repeat}.VerificationCompletedTileView .VerificationTileView__shield{background:var(--icon-url-43) no-repeat}.VerificationTileView__shield{width:20px;height:20px;display:flex;align-self:center} diff --git a/hydrogen/assets/theme-element.json b/hydrogen/assets/theme-element.json new file mode 100644 index 0000000..9561cec --- /dev/null +++ b/hydrogen/assets/theme-element.json @@ -0,0 +1 @@ +{"version":1,"name":"Element","id":"element","values":{"variants":{"light":{"base":true,"default":true,"name":"Light","variables":{"background-color-primary":"#fff","background-color-secondary":"#f6f6f6","text-color":"#2E2F32","accent-color":"#03b381","error-color":"#FF4B55","fixed-white":"#fff","room-badge":"#61708b","link-color":"#238cf5"}},"dark":{"dark":true,"default":true,"name":"Dark","variables":{"background-color-primary":"#21262b","background-color-secondary":"#2D3239","text-color":"#fff","accent-color":"#03B381","error-color":"#FF4B55","fixed-white":"#fff","room-badge":"#61708b","link-color":"#238cf5"}}}},"source":{"built-assets":{"element-light":"theme-element-light.78427b5a.css","element-dark":"theme-element-dark.a6fddb2f.css"},"runtime-asset":"theme-element-runtime.054f90d4.css","derived-variables":["background-color-secondary--darker-7","background-color-primary--darker-10","background-color-secondary--darker-15","background-color-secondary--darker-10","accent-color--alpha-11","background-color-secondary--darker-5","text-color--lighter-80","accent-color--lighter-10","error-color--lighter-10","background-color-secondary--darker-40","background-color-secondary--darker-55","background-color-secondary--darker-35","fixed-white--darker-10","accent-color--darker-5","background-color-primary--darker-5","icon-color=background-color-secondary--darker-40","light-border=background-color-secondary--darker-5","light-text-color=background-color-secondary--darker-55","timeline-time-text-color=background-color-secondary--darker-35","icon-background=background-color-secondary--darker-7","right-panel-text-color=background-color-secondary--darker-35"],"icon":{"icon-url-0":"verification-error.80ad562b.svg?primary=error-color","icon-url-1":"verified.b90752ec.svg?primary=accent-color","icon-url-2":"encryption-status.8054183e.svg?primary=text-color","icon-url-3":"chevron-down.9a7440b9.svg?primary=icon-color","icon-url-4":"room-members.35ed0bf9.svg?primary=text-color","icon-url-5":"mic-muted.56aa03b9.svg?primary=text-color--lighter-80","icon-url-6":"cam-muted.9f690631.svg?primary=text-color--lighter-80","icon-url-7":"hangup.8b163c30.svg?primary=background-color-primary","icon-url-8":"mic-muted.56aa03b9.svg?primary=text-color","icon-url-9":"mic-unmuted.c180f63a.svg?primary=background-color-primary","icon-url-10":"cam-muted.9f690631.svg?primary=text-color","icon-url-11":"cam-unmuted.67e18332.svg?primary=background-color-primary","icon-url-12":"clear.0d180c33.svg?primary=fixed-white","icon-url-13":"clear.0d180c33.svg?primary=text-color","icon-url-14":"element-logo.86bc8565.svg?primary=accent-color","icon-url-15":"enable-grid.eef43c65.svg?primary=icon-color","icon-url-16":"settings.45b8e09f.svg?primary=icon-color","icon-url-17":"plus.49560f96.svg?primary=icon-color","icon-url-18":"disable-grid.371ceaaa.svg?primary=icon-color","icon-url-19":"search.21e0fd39.svg?primary=icon-color","icon-url-20":"clear.0d180c33.svg?primary=icon-color","icon-url-21":"chevron-left.b8b2c5fc.svg?primary=icon-color","icon-url-22":"clear.0d180c33.svg?primary=background-color-primary","icon-url-23":"chevron-right.885731d1.svg?primary=icon-color","icon-url-24":"chevron-left.b8b2c5fc.svg?primary=icon-color","icon-url-25":"vertical-ellipsis.70ab5d25.svg?primary=icon-color","icon-url-26":"clear.0d180c33.svg?primary=icon-color","icon-url-27":"send.7a090949.svg?primary=background-color-primary","icon-url-28":"paperclip.ec29fd9d.svg?primary=icon-color","icon-url-29":"clear.0d180c33.svg?primary=fixed-white","icon-url-30":"chevron-small.dfd7e618.svg?primary=icon-color","icon-url-31":"room-members.35ed0bf9.svg?primary=icon-color","icon-url-32":"encryption-status.8054183e.svg?primary=icon-color","icon-url-33":"e2ee-normal.bef76bd4.svg?primary=fixed-white","icon-url-34":"e2ee-disabled.8507165d.svg?primary=fixed-white","icon-url-35":"clear.0d180c33.svg?primary=icon-color","icon-url-36":"chevron-thin-left.d111869b.svg?primary=icon-color","icon-url-37":"plus.49560f96.svg?primary=icon-color","icon-url-38":"clear.0d180c33.svg?primary=text-color","icon-url-39":"video-call.d3cb081e.svg?primary=light-text-color","icon-url-40":"room-members.35ed0bf9.svg?primary=light-text-color","icon-url-41":"verified.b90752ec.svg?primary=accent-color","icon-url-42":"e2ee-normal.bef76bd4.svg?primary=background-color-secondary--darker-40","icon-url-43":"e2ee-normal.bef76bd4.svg?primary=accent-color"}}} \ No newline at end of file diff --git a/hydrogen/assets/verification-error-3007923930.91f5da98.svg b/hydrogen/assets/verification-error-3007923930.91f5da98.svg new file mode 100644 index 0000000..d4326b7 --- /dev/null +++ b/hydrogen/assets/verification-error-3007923930.91f5da98.svg @@ -0,0 +1,3 @@ + + + diff --git a/hydrogen/assets/verification-error.80ad562b.svg b/hydrogen/assets/verification-error.80ad562b.svg new file mode 100644 index 0000000..73a5170 --- /dev/null +++ b/hydrogen/assets/verification-error.80ad562b.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/hydrogen/assets/verified-1676512664.5538d685.svg b/hydrogen/assets/verified-1676512664.5538d685.svg new file mode 100644 index 0000000..617bc24 --- /dev/null +++ b/hydrogen/assets/verified-1676512664.5538d685.svg @@ -0,0 +1,3 @@ + + + diff --git a/hydrogen/assets/verified-3138359829.814d0123.svg b/hydrogen/assets/verified-3138359829.814d0123.svg new file mode 100644 index 0000000..626e186 --- /dev/null +++ b/hydrogen/assets/verified-3138359829.814d0123.svg @@ -0,0 +1,3 @@ + + + diff --git a/hydrogen/assets/verified.b90752ec.svg b/hydrogen/assets/verified.b90752ec.svg new file mode 100644 index 0000000..fd6c9f7 --- /dev/null +++ b/hydrogen/assets/verified.b90752ec.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/hydrogen/assets/vertical-ellipsis-3416547705.f619a721.svg b/hydrogen/assets/vertical-ellipsis-3416547705.f619a721.svg new file mode 100644 index 0000000..44c362b --- /dev/null +++ b/hydrogen/assets/vertical-ellipsis-3416547705.f619a721.svg @@ -0,0 +1,3 @@ + + + diff --git a/hydrogen/assets/vertical-ellipsis-487061581.e7709afd.svg b/hydrogen/assets/vertical-ellipsis-487061581.e7709afd.svg new file mode 100644 index 0000000..eb1641d --- /dev/null +++ b/hydrogen/assets/vertical-ellipsis-487061581.e7709afd.svg @@ -0,0 +1,3 @@ + + + diff --git a/hydrogen/assets/vertical-ellipsis.70ab5d25.svg b/hydrogen/assets/vertical-ellipsis.70ab5d25.svg new file mode 100644 index 0000000..1d5dd9e --- /dev/null +++ b/hydrogen/assets/vertical-ellipsis.70ab5d25.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/hydrogen/assets/video-call-2591082837.8f09bafc.svg b/hydrogen/assets/video-call-2591082837.8f09bafc.svg new file mode 100644 index 0000000..a0e02c7 --- /dev/null +++ b/hydrogen/assets/video-call-2591082837.8f09bafc.svg @@ -0,0 +1,4 @@ + + + + diff --git a/hydrogen/assets/video-call-3307702325.5e74dd9a.svg b/hydrogen/assets/video-call-3307702325.5e74dd9a.svg new file mode 100644 index 0000000..6461caf --- /dev/null +++ b/hydrogen/assets/video-call-3307702325.5e74dd9a.svg @@ -0,0 +1,4 @@ + + + + diff --git a/hydrogen/assets/video-call.d3cb081e.svg b/hydrogen/assets/video-call.d3cb081e.svg new file mode 100644 index 0000000..1dce1db --- /dev/null +++ b/hydrogen/assets/video-call.d3cb081e.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/hydrogen/config.sample.json b/hydrogen/config.sample.json new file mode 100644 index 0000000..c4ef1cc --- /dev/null +++ b/hydrogen/config.sample.json @@ -0,0 +1,16 @@ +{ + "push": { + "appId": "io.element.hydrogen.web", + "gatewayUrl": "https://matrix.org", + "applicationServerKey": "BC-gpSdVHEXhvHSHS0AzzWrQoukv2BE7KzpoPO_FfPacqOo3l1pdqz7rSgmB04pZCWaHPz7XRe6fjLaC-WPDopM" + }, + "defaultHomeServer": "matrix.org", + "bugReportEndpointUrl": "https://element.io/bugreports/submit", + "themeManifests": [ + "assets/theme-element.json" + ], + "defaultTheme": { + "light": "element-light", + "dark": "element-dark" + } +} \ No newline at end of file diff --git a/hydrogen/icon.png b/hydrogen/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..b6c70c00a4957f34bda8d23ef1dd258f074f8764 GIT binary patch literal 15862 zcmdUW^;=Zk_x2eE29TDN4gu+*m2zlM5Tpe`IwYkPgdwCs5R{Vc5Tu5N0SW0wx{;FZ zeh<&*`%k<-3|!aDK6|gT_u8xOdxfgMP$alVeGdQt0%avR4FG^3?>;y%@SE(;s%G#X zu9MO$7XTpqb@zdEI_8^$Up{b^*K^f$v~=|_akcE3Sr$wQkjiOP;RWPuc9rAWqmai|294;jDZd0&!62Qc3A zuk6c4?=Ph5S%1mJVbDlV(>Ha<+L zI-T+wxO|@~wI)G7P~T+3ewosEGGz;q!C?v{{{Q3874{?{V_-a+L|ozK1H+dPAWo5h zQh}rYP^WOm3Rv$yJT`I;)WAf5z#I+?*3eGed>N}$q>MjB6u6H`kDdDt=zvHN z$}IyC*y=Dwu~w!F$lN`3QKSR2Yk*BStQj&$gL%zo+F-Qsn~O8^P0zT9gV43$y+sil zptbtHg+q0G)G0?785`n}%J@k*dvd^TIrUCT9pow?&P(P6q5H2?2{uTF=_^ zbm(&?6LXZ*%m#<3&cAz4*t6_$!o=d1qIL*kQ)OgjTihR!IDn#XWpYvc%Yk)US?8!R z<~{&U%2POuMFL`ACIx@XvAs6=e1Ew!l1PCg`OBi@gW>O>ermA2mq53BZuB594tN6D zzF&VN-+tdlFw|8wIn;>Ml zdQOd;$k;5A$8G<>i+mLwTq~Ue;U0=;mptwwoHhx(Re}=VR-K^AtvyZ)FvoEAI_*12 z6eQJD=KHh?rupAHq;11n8Nf3D5ACDs+`A^64h!I9+VzbKuoG0}dtmgY#dui=GDy zAvL03$S>7hJjcIcknvo!N{>fug`5e)Mf|Nv(?ubbxF0TWjeym!OHx=>1i<4`!R+pv zTT5Fk_BX3=Z2&o5cMm}zJ!buh8siT@MbuFbOc5=71pZ+&IxMfbkuM9wO1hp%&c}M- zwyIGhez(`_TM4+(Ac>~>HL|&pRxMZT#Es}cx3J?6DY{!Og0Z(K66?~Vz9FNdhTwaf zl5*Z~^e$wb7zoCoGGmFA9`J)dHHh~{yAv^-nVK{t(W(1_E zObZWkSO(nLdEa0&qf+c^IOBOgc)WVGsBTHCkj^6Hgb%@<=oi-L)qD2LS6d_{P4aMUOj zusltkbtJlaj;K+B;>1|%ZrNm?i!=VS74LDliuF?@+h-xyYBZJIW_>d4XE$+kBR{!c z?B*YGAMpL{o;&OLwIzP-zUnD;X|IZz7)6u#=id-HiI-eqq=$pU=DbL)AYm)S5$C~` zsKJPj2@3%uW}y!E+@A-%^Y{yzsEU7WB7hAuw{$8)3{QlIUGKpb(W6Ie<^)oSh)(FE z>J*z`Dx#IH+H5}l)31^xWp`Sc>m^{5gqvvwNZn^K_|kwCnD4xVAPEwIqFb}SfN--Yc$ud!we(f+^-K_wJv3uz;+Ily+Qwvl3&3g6 zkERpna+4n%x`cL22VdKZl!^N;&zEfHD28 zSTfPLoQMBD?)0m)2|` zhv8~}QZ{oM^UMZs`7#xpGL+ATCS2enSHM7J3KklGG;_jt)?ZDIur?dho8?+7ZtXjr zVVH_R5udh|jIZt!e&jHit|?<{+Q)?4;^K1Gx~t%$e5YJ}j+Fw2br6pA}cBwO!2$Gj0hco`7<@+4RYMz~5{32SRJE?h)x zDtFQJ-?9>*cgN>+D0<9Gv0PaG(f1zcBB#nZJt*I5PILby7C+pJBriMg8$fyzUhVfy zf7V%9^hV{At1vMWpgV*9dQC%As;JDcNRkArB8hss!;r?gdR9H5j2G0%Ec?!V2A{0- z6w(iQ176+k_ouTVXIjNBL*|HiJY)YHoFd_ZBCpNAZu-=3sMKeNG)i&aK%E-4xus%F z#`FGeuI1Tdmnl;tiR8tT_?R+9COk<(%D#n^^gpC#*!Q+uOiGFx-$*(W0~o4O+7&Oz zN0eueBYVJSzF@2!;Xg%(~^EM)FmLN++sI3g&Eq{WG3}VUBJ>CqIIF z-gX|D8)>KjPgPL7ws_&@c)AOMhL2^6&@+y;p+_{fUvrZ>OK3FLKWB$H@n2P$j|5qj z7p|>q7%Z|8pv$d0TlJaU7$jzUf`?VkpS!r}UQO2Xe|n?M=P0gK(5m`qAG;mjn>}91 z=&g8gd^SXnZ1=5HeBut$gUG8IS;KFTeC5}B7+!t1*IVa|m5gV3iQD{Gsgo(z`j+Cs zy5JM{x2+qKLNxbw<`*dS_j4qxR7<^tQgPC^9m$Ef*#=*sD)bIc?R?ua56>dg%~qTziQ|REOK${a-8a4#Iga5OmnUO zWIB>gB)?ba;N#f!<`=Zxu~h3I%@DXVf2r8bvMOm6DeY#G>O%aW5)Zi(S1UvJo_W=i z(wr_40pFKftY0DdygE-BWd8YiDsHVMoKc)vUcNge*%uXXQ+-pN^2=UCl#+{XyWn7= zhH}@BlG67tJJ}gd?HQhC=EvGg2$|j5-hDwsF`w1eK~V`Cz`<7SYiEbNFYW?%ih%oGCu;VMHi|d!V zpR<-qv55<fcRChtC99VnqL>`&F*S`1Rhln?U8$1cLpNzb?Tj52v2yQ1#>@+lGO5 z{y+eT@Hx7GLPjV0O(xII_V)wqf}O&J0NKoxA0r7H?lq^z*9=+<9Eo)+)bX2m`xHqm z4CN^;l#hKwws9O{V8#g7^Hw6_GYCM=OR)c#KupofQs{a%=R&3d3S|IahDdMZ(%uT3 z63MLXG4oTDW6h-IBojYJv7qoldD`baYC*!E;HU(6mpiOl3HqpG6V;tzM$29&)cR}k zncGs()N}K)&wI4|ODMrJ$fvU>A>d4H7xzT#J%e^-CvU<=;9#)x{P@#^u&E6&EpLx~ zx0WQ?_S;4(^li<{WWV}~!nI0`Cvh@oq$HnCT1D^6EzV+TQ={oa@+j$Kd&6f7`kT88 zQU|g`zIx;}5&!xXAwB)z3i$wv60DJ@M&tY^w(T`ujZ+jKw5R+!ONxckcM%)&iF-VJ*@sH=$qJxoa6)l0Ik&J9*i=JxhN9WE|7K!Lxko;rzF>;US9GsVZ ztPG_J8ro>jIuyGl1)>&*X_TL^cRe@q;vFwDrq!HWy!RL%&4jPgcJee99`X_}yOdXP zy!ADn+ZT=ux^V>1A1-~-_`?<!A0 zfN{>pFk7Ha%)kh1U75JlGFQ9y+41GihWf?FG0haNMp>0<CLP=S7oRbpRkHLHX4$w~Jezt(e9 zB;LVaO8LPKKQozrV#k#EDzUC32jz07b}!oM^qX=1PWS4pS`{6*{-Y6$EuSGpjD@vd ziUpjzNY~)d&e2hNERh2qPtpy%KdzrmO?R8lCh9^Ws_EMO30{o}GWGIVK7&s9ZMq&x zJsWugMDXjmb8)Ph9Sl;2@HnPmw7WpQ;~#Pr`R4))($;T#UO2wC5$}zX6E|>RUf@Ex zct-l|uH5f>ZolRfD*>H=-EZ^2kb?52Gr)Fw4tJRcSVUC>m&D$r9r zB*m|KRDF)T92!*rN%!w5ZH{kt6=yAMf%tk5yx?7Q=xMoneKnT9Z<30Y7it zf`faMqVFc=*Mz(95w(ojHXm|U*V_^L^!PbTh+9>*>QkaaK@1Pe`>My_?)-@RbK3N4 z{b*?jjDZ!x1)j#dZ2Uv@;{j$bczyEH7T#&4jCU)akz{qk{o) zxmYMc&rm%c&@kaSWACw*m3)&o?iJP(C_*c`vM1fx{LI}Qa}{AIkPe5`lsRf}=*tF{ zT5f)^wF?5TKrzgzxDTKHJ$JIww>B%?9U!P}#C{jDd_PM*k(VbY+}Ev>z^k)Pe`hp( z9$cS|t}kM&tpD3|)^me73$8%sIi=sYdw8{Mx5fd&%pGpnv@& z=GJ0?wY2jX)=a#?AUyAWk53s2TCm=kw>6tNvznzdrZu_EaLvk!^B%13r_a+jP|I=Y zHjLNim07FIeAu)4;#Nh>LO_N%8$VHQh3G&Nx0!fI{IeS-r-q7EF8mqupDTRjp(}~7 zt@9VI?f#9{aA$S|`*c4uV99L}Jg`+@fADYNi=LtjX^2dvMo{deT^fID(Du&|qH`vC-iD7a5<9*MOzgH`i8$`iC zLeIDPLJBEpXGQX>g-D@N%A@CqtIm+&t($>Gap@i&P+`c>LubHJ2Oo-U=3?NS6i51n z-8_N2?<-2%9*@C|uDHafPiQ7`br8Ha5E=HhuNBT>#Kn9pQV;QLUWTJ{4dQ&tTtnH1-CxHja)uTRCG9wI5A8L4UM1}$d~;JpTA%V0YL`i&qMK?l7(mjMsSrR|JkWr=~!0`uZkanZRqA8ac{ zWUb2X;{iVGK5+B5JpuNQbhqb?v3TI0XGM_W#vl08qLl&xPOMRN)`NPIJz&7{#&jtS zL3r;T3$}`fg1CWX^5$>WFNTw~}hwgm+fiHQGNtn;PM5`*#E`oY$w9 z{KMXRP>F{j#6vjk`9ktb{}F%IK%A>tJ*y&*c~=?@=%n0o%B!(MAItCU3#)s(QJI&W z-IsSU+H=-10O%Fe4hbnC>?t3(%gcL@B;)4RGRR2K)e7SJQp+3pRR!K9Qt#DxhlE&& z)(~)E0naDUMtPkb>~#+X0Sse-2G)jwuf5fc|5bbHeyP`vP0AfSmaQrd^Qij%JK~bb zQE}@=csV{taKvmk;@Dx9KksPMzN#3AU`9F3rGXuf-v!TOs-Yc zuy1c<*cBnDRqbL1I*+B7=0;S0hh+Gs{%}#zWhFoFv zs=T`rNmlY{MbH&-g32A9zK3a^;%j5pK(W}$Z;<-<-N?%ijr~kxs-lq)wc-Z~^t~&E_`em3*TW`&r zdeyz|_^)kW2KPjfC+>=ZDOUMYE{Wug&+*5~0}_Ko+%JD_KWY^voX+*~F0HXu+RR+TIRY%9vwN`CO%kD)-T_Y z8v6=#T|j=j90vwrNTlz%9H{2pU~0!GTkU+MFurkKkf`sjyq@kwSGR#;7jO2)%i@!#-!yS^>1 zVEsA5aF=^vn6G1rO7*DF`QEdK=5OeE6C+tvM>*|o6-bo!U8lX!b}KCjk2u0@zoAsh z=}gr~$`ZxhJ1V>TQP&Zp2N{DRKxE4Rx-Hxx&`px7d}E396L+$E&F`PC`1m^y|Mv(8c5#9j}- z4&yhC$Z`DLdjb7a4rvpkpu-R>4P3*E`AtMHy8rslsRl4=KFxg8J4#_#X3RJJD09vxS@ z(((=hqJgzexuIe{q}?!tu^^XGf{#OXRA=EgJ~0gRn*ACvQ%lXy+@j+wl-WOAkz?`R z$1O^9X}E?^st=*IEOYeR@=B z;107iRw@?DQ%b&#)DNrQmbN^(rp7){BW+MFAwL(V^!{X`8=rsqVL$WRn6&7O`8~Y~ zRsJ$phAp7K&rRwUqFo;l%szt%Z^Y=GN39R0<_LKKE;Udkyb? z?}Mw`7?`Ke^lr$|hp9#SP+RIe#Vv!nTDv|w5}M{vc&5Fw3x%tDvwndsSnU^lRfNFH z%y}B$pIAJAx;2cl4RTfM?n^E%T8S72WMH2TC>~PNQ;Ej&9g8H{qIDivSTLa=0fr5G3;DfRLoG zEJZpFX4+ewVv;R%(4#WS6u9*S!FYN;k>SdDe`L%6AbXGEXpUADqO*G#t7uBsrzvf| z@`;iuNRcjHwb#I2yj`iSUf;;HqdvT#1>yMOcr;za!qld~Eu$8izqr2m=wgWoKI(|y zwokz{p?Ds;U_w_jKx?aSWJiEeSoo4WX${D*0q~{z<>=(a)DLf`s|#~tL5*Mya(Xsa z{)yDClL|LTM35kRjGt}uOxl_npkkv&H2D`og}*NSyunyWP+V*b$y%3~W>RP^c*Gsx z7u$;ScnU%L21gZYY+UX~Jz$sL_|S^^GrI$9Obut=w<; z3t6wi8TSa2kqZyDZn6*=egd*E7@|#H6ku+c5p|jCVLR|-5|I+Yb6yDl>8RrEt!*4d z*QcU(14aKe-6B4G30u;m41)pb>oByX13}}j3;bykutH!-{(Yo8gbEYt0Xe!^vYntj zgTWUww8)XC6b8Z4YBV9sk=tB+mQztoZSLNt(K^tWL_RNUthbxC>==iiQG&JI>%qng zYm7@)1a13r-ulO#Ktqo^Ayd#lZNaKd7L+VLO{LPop6Yi z%ILm7;bIFJ^TfS$^!G&Z$Lmz*<%%nqKBu#2QQ(nS8{(_oX+*~{Y}3=<{6g_eC0Z)> zqu}2gJcQcNCnfBgCx`_afL~2W{qFobNKJu#J@6V*LK-9;o@G&`DV}4X@GzeLG@gA zQNeRZsN3tjM8fJ6=@3H`a@@9ep$4{Vc36YDu1u!2(4Rr@IYi8H`=7lav-KQNrkPCq z?cObd4_OoU?nT3lUk(uC8HXN}9+6qN9By5oI)xkV;FmBv_046W3d=^m%_Kdy0k0qlplS zpusCJ-r{}zYiAXK4s2(QncdHnm~&VXY!QDeT5z}QPC`H%YmEm z3;jlFgaZ2VwW1TozJDY!lCaI{Ys++4Ny{)$%#@xvL7jvr?~5a0vXX+$BtaZKz)5mS z^N5829d_c5jnuSzpdn<;7PZs!};L?8@LBQU~)<^{U&QH$M{J5YP6V=EG}kazR}hQ zU+&j*3|a(vg_!$|_3}we0){DcKs<0yMqR21Yb8<$X=J5Njr?RJ5kftZ7kM3_2G$1iORj7uic9M(r^+EEFKg`8VlME~L|KzV+UTQ*rd z#_90R$u*WJrjXe(76Lj4E5iC9HlE`5Ctyh5ZO0Y=-`%~x%&SRU_B;RJE<*fcvL9R5 z0sx)I9T$MI_;u&h;Os4KJnW?Bl@kp@Ru+QDm=NfY!gOFE4^iC;WNi1FFwsq}y=1_A zY0SWeT@3+@q18rV-;vyloFKf}LLAM<6_rRijv;;x#cY5Ot6%+Kqx8*>V8=Lk&WZ_x z9$2*Zrpo&z>`Wzsw*+WU`z`4~e0q7AdbTs(-lzO3IJxhOaU`0t~=to&zz zUe|d9tq}xZEUu=L4w=PKff`5q&0ibSa?}g9H~?*|f>@Y9Tg&Cb&*92WBRls5;xbwu)H4RFN-a;ax zL9~d(wp2%lve}aImkB-$yJIl92cmr|Q%q`_HibW z1Cu@2{#(#7OfY4BMX}(=i|mUJcwUdiYWVp)5ga5i{*5QEYb^B}L8t~F;hcT|j??iw zx4Zwq8esC|W8Wh{A}Pc9WEez<+eyK4pBEx3n5=0eO?z@dMNNQC-!&9yJVFVAJ|O6Z zgpf|3;;%25!$9Ghfa2H@|69ugmI zH)CMZ1I`@ux9#?&-2-Nk{fs>Y&YYI$dSH?AGv>zY*D#fe>wEudQuMj-NRhs z_Q@}kGt(C0ZBAp{_KBFr&8Ay$n%cj2?%KGJMm*{+#8CsWNk$~LT_-W?E~T{+*55`l zcjHZu*E_%!^V9s^2Bb`f6m6>df|s2YaZaS4@kbbLtZEzxe{ztz*?~dDdh(N93+9B0 zZ^G&X>6c}5gqWL{Y$Tk4Znd2s=&R_=9#ToWUdlnDUUu-_?TAXSDpQ>m}Hc$?A+hXx+$9|;}5$zxX!nGxV%YV<{*tAC={9913p$3b_( zm!?!iNBs#5#lJ$y1_WLPMH<@v!&8N>&mMpT8uRcUzZNE8OP=ALG21wqE10{2o$w(* zK+@pkHr!9Fi8u*{3<|;^87DIg=I3ZCK5vBGf6r#{r}7?p`7R`r)=T`M2HQNO*tWiA zL_!JT^gjg!4XV@z8 zvQY4v8RQaaF{m#x;7cSHrFb-N)3RtUw2T08G>^#h4b_5KUK0QS|ASh2GgSh%P0z59 zmbh{{*+5c$U&#_;Kd^d%C6dyZ?Cq zDoXYrNrw&4jjyF2n_9XXTo4#Q@`l}-@o82uJ8f8 z;*>~Su31REGhSvIsIy}G13B^{t)gxH#I`vxX!vvu3)ZC-P4%E-)xfs&wWD}PswuN( zbH!&zRiP&9{BOH~C{VnKULj&=oO`!m_+OIG+Zs z%=VTfHnG4w?VcNSFzSW_DGkl(CXqIF42A%NhCqic$_!`T3rm7(Lfi;&8b!CmD^7e7 zlxJ43%`+XaU;!S<7I51k$AiJ!vWa>|T4nbeXr^FgbCx=n20jz?yi z8?HLaJP4I7+K}NI1ywD?DL6yJs~xrB0@h@hy8rGN?7t92TLrTp%Fz>Tbk&>DyL2U>4jN z+j9N=(2s&^SU2H_hKgfMpfjnUqj{q!<(5yd>gvZskRu8AEGy7YIx{e4(>%888e_Ya zORq4tEGWkL2EmdtvtFA(n=x7xQ)KjM@icQK!lIu)tOqVqGMpL0^9&+r1?&yjhR$$E zKf=l-D&s(NF|#A5`RF7x%&qD>#$IP6nOSk)nDEzLzh|r?0Duf>wlDl;2cG=3dd2*UBybc<6{1tPN?S{ChvLdWz6g#jEf;;!hH%Vg!wPGH1bnkBu+@SU^`j z&@ZLbbfopJ6&0q-|f|GT*>U5;kG;gl8fnX}m>YUaB{JxYS zr?0P}6B3u@_!)V8P_=@1JBpz$+EoW<0-oQ;^UCOz~-daAj z)|Zcu2aJL%3okup%L{^LJ)}W@+t76t{5|0X!S^n!%UXqN9$#gG2F&X4{YQML+GIbo zLRebg+8FyDj+2ymb19?T{yVTmS1}EF???3)-Vks(%fbLWK<(UXFGN}7Wn3I{_ zw@*#4?sQ70u+XO5@3j-LlbUvF6u~c=rrqdg9Euys#w$NP0Cclr!R9ViA^Bt0Y2Z$O zv0TDizI1lhQG9Fx@sbI3FJ<0XB_C=zO6fW3lL`qW7kH6gnM_PuDQ1pjzQJ(%UgjV1 zDd+L&Edw|KkY0!og@e|Rbp*M21I5-B?m+p3r1~(yLS$kWJ)6Y=#6cDFlloJYZdEm@&HUfNI5nN%^S84^ z^b!*5!L|RQmIrwNh2+9cv~X!^+@`QLUxb!;$JH#{ z+rz)fOV6h|l8QGJ!4f***UpSyy|?1eyO<=NVM&#f@!s5}&!$wBfxb)rKD$!-HN{kf`(1Me}<+YHjMjWU)=LQHmDI}ZazU$^9$8uqQx6tCIdAtA3t&X|ZD0%}M8wE3>$)?i7T z&Dj|)Z!>a+s$QBJ{&-`)mk4`)61)7`h*7+pW!Ha0CH5M@K2)obsdtCUzv<&llHl(3zBG@s4 zNayGl3)zzM{ixnf)$U$YUH;1W0H`D>_~Y|{Q_VKFbQ@Z;&D#ytwDAX3;aMW7O;4lS zNR3uh{c66D^Gy3VL&NCw)?EPWh%MRb%{R#6{R-{#<+2}%w!P!{L3g*T!Yxt}c$`R; z@%Y0ai?4~3Y)Q#}7VGN(^7kih_Jq4J-ZWbj{*s`#y2;&!?n#BCuNL*}ZmTW-zx ztH`b-6GlyhxcdJnc6dmBSdZnatt^+3wc9b{K17%sZxa5vi}YhGM4LN(&w(u0Ace(N zEbBb28C^IbWMjT%=0zIt^Oeiw9YIt{BM4+uPFty2Z&2YNj~PUh!s zs|D2rj=8G!wV-%!jC5C&gOSWliH8a`ns*e8^|M*dSdcYCt-Xg8$Etk_wn6P6&cBqn zv(dY$f=B}f=TI!a#HNqt%->TAp3m9WIMl#3RX+^HVEuiC*^9aN4j@OFZ7V!Q3L6_0;ykb0`l8lV zJzyB_E|R94?q%%x@*as4d$Ui)sjG%w4s%#=$d3Gt2aR{iV7$ zEpj4(0UPU(xo$@%EcZ{4Z94*Bo@)$xClUW2#0=ELY@&<}xFDv3}er|hpI zppqUf1{?P~c40g&)|5K4yDMN*QD?3E$LQ9)c?awY=qLOvu`_5_G%su40r@bwAWK1u zILBn?QQhqsdprSsa+j8lHrv!WB!KS_3MMfJt|Ca^TJ`IiRGj(G!H!3l zoRmx_pp%st*9F0dWz~4g1y-F+LFeB+zm=d=88f{r&A1n?36fxK5s|)87G{6Sn8JCy zO(Hi@SuMW*Zm1sUbIaIiWEbJF0HeD8dgUSV2yA(gF}`$qw9@yChQdllW= z?|uU{8fi`jsFID#l2KmBFc219#h8-vSj5(c#Sxh5`JpaZ$;R z-Zbom@&3=)0b`qYS_LxXUdDNT7~-csdJI%I<-_@#qKnef+zWiVK&qU2Nz=xf@l8^= zYy{R&xwTb=c+W=QgzQk%U$u&H8^Ehp1m}=E@nXfWWQ|DpzuCln{2HnCtX|?p7gzNEF)Y zlLp2}B%nmRH^5GJe(FG1`#g;^_5!PAn0pmBTeL3a+GR@sWjDorQ?&>XzWd>JL-EJ` zz?%lcp-W;MJdwlGC?NoE$*}Jad}NHC;8cucU|>}EdLnCI4hJN!y})q7LtaZzJDZ5a zG_+=wwGrC@-`d2IN->72_WsQyeYGF$u{H|+ZQktjWDemR!8`qIUH2e8R+9Qli}$C7 z6^mf7Tn<`OtNZJnPKN~D)thX&rB*tB9llK4?NjuUsa1dfr4qh4SAuf6xk_M@El}IOKvYFwC3G`nXNA`*nrOWkN>d|r-3n@{_0}F zl08VVMyOgHwoo6zk+KrBI?yw)W5!(VdezbMamiljojHprFA8mww ze?5PDloIrRKc|;pLOdI1U80cki8o=LH%tWRU~t3N1V(-UcC@Z&z-T13dLjHUCAR&moRR$xf67KyJ`Me@@g^r?w zqMnfeod>f0KaZ+6V|r%h;0(aere0@m7(HLcgMwU{O>z^+jCkfdj~n?wK`_S<{?NNmqB!t%*w=EdbtXtu510~`2^LLrW_`Rk#7xDbak;wv%D!Nb zsEX}FN)qW!*Q*)cBEWAWC@fBSqPdk1!lzg;l3tfNAE7Mb8| zp*R28na;f}deZh2d@TC^$Vtr)jO@4?y|9?Gg%7uDRY`Ya9Y4@N&(S)L+Y}345673n zLey?6Vb;ZWWAkl-_%p@ytF}Gx`Sc8)hYnD9hx<3CQlO^i<+(xixKZt#djkA_%}x0( zh#H&-Wz->l7xD5Jm5&F!)6#9A`@qRh%HfH9-0A^;WFp>^Ohz>$uktjn!Nu2de5MZt z{nRq}+&_;b!|y@W&r9xg9;yZj47bH`x#e(FMMz96jMz!m13Ld{yLR4#6Y%s;*cn@e z{*MLXp3e9H^!fUS3teD9gS0|pYf3m)kjoubR2}X_pUV3`r$*ptN37I^z;bnq|ZFYYzz$j7H40i^k1Oo&P?+kuSqRN|4}Md2lvFA#j5A{4cR!9R-0d% z%TnYMmKMo$Em;8!yn8* zRge{6qtgH%iU>Ekw{(J~e+WxKe%*&zh4e!5@KZO~0jaXdecMzVd2GK8b>vgb^eF|l zfKO-2m&J3ozzX+zG^H?xRCKwh%kL0KLXp60f=3geVICE($Ikx zuInK=P8&-|!m z92Y9jXC(8{8FTe7le?$;S+1n-8t?w=z!1hp+nre-^7AueA$@-(QLN>%GgQ$joP8Do z%AQNj`sn>jvK!zD0^3QbQmg3^&YVbr>6kVHe4sKS!n#EFU7ipkI_N=+kk7p z-eV;BCx886gQusTokugBlELX3|0DT+I_1j$T;B1HF$rTK0A=<*Y@eFs2c{W0NAW+S z7%xuv8ePa>G>p+Z11!hhhUh3F&()d5zWd2S8Ysau48^<(kx-KZH(&s{J}L2?{qnxc zn=(2T98i+x;ewaKb(;aykMRRf1T_bY!4IGr2A qfVzsY#sho9|9{$wab70fFboWBRw7m9=)sZ(pe+AFu0+Pz|Nj9m=!OOW literal 0 HcmV?d00001 diff --git a/hydrogen/index.html b/hydrogen/index.html new file mode 100644 index 0000000..268dfb8 --- /dev/null +++ b/hydrogen/index.html @@ -0,0 +1,24 @@ + + + + + + + + Hydrogen Chat + + + + + + + + + + + + + + + + diff --git a/hydrogen/sw.js b/hydrogen/sw.js new file mode 100644 index 0000000..6d7e3a0 --- /dev/null +++ b/hydrogen/sw.js @@ -0,0 +1,2 @@ +const k="icon.png",H=["config.json","assets/theme-element.json","index.html"],N=["assets/icon-maskable.965d12c4.png","assets/download-sandbox.48a866e9.html","assets/olm.cf9a793b.js","assets/olm.3fc8dbfe.wasm","assets/verification-error-3007923930.91f5da98.svg","assets/verified-3138359829.814d0123.svg","assets/encryption-status-2100926911.a90232b4.svg","assets/chevron-down-1956489915.3389f17f.svg","assets/room-members-871477030.90b799fe.svg","assets/mic-muted-2638557456.4d8c99b4.svg","assets/cam-muted-3489740486.a882d986.svg","assets/hangup-581771896.279a6adf.svg","assets/cam-unmuted-2274150835.69bcdbc4.svg","assets/mic-muted-3642419863.228ee86f.svg","assets/mic-unmuted-211198830.1fde69c5.svg","assets/clear-2743697487.2f1a17f1.svg","assets/element-logo-1551909733.1d59f06a.svg","assets/enable-grid-2288309723.f83895c8.svg","assets/settings-878939771.57cf3680.svg","assets/plus-3937109722.5c243914.svg","assets/disable-grid-4240599831.c8dc25a1.svg","assets/search-261439583.1bffaca1.svg","assets/chevron-left-2611498805.b5555a61.svg","assets/clear-4137897294.7b90e8df.svg","assets/dismiss-2476348673.d0f98560.svg","assets/chevron-right-2390431650.ec9bf561.svg","assets/send-3413346515.b0fb8626.svg","assets/vertical-ellipsis-487061581.e7709afd.svg","assets/paperclip-3961996319.da562307.svg","assets/chevron-small-4098047679.489e66cc.svg","assets/room-members-3084360280.6f64aaef.svg","assets/encryption-status-3449529405.c200a9bb.svg","assets/e2ee-normal-1448349558.af8f5484.svg","assets/e2ee-disabled-1470792300.6863c16d.svg","assets/chevron-thin-left-3078630092.d0d143e3.svg","assets/video-call-2591082837.8f09bafc.svg","assets/room-members-2999414798.6534e8ec.svg","assets/e2ee-normal-3923817510.8737e7ee.svg","assets/e2ee-normal-3127337641.2624a9c9.svg","assets/cam-muted-711199923.069dcf2b.svg","assets/verified-1676512664.5538d685.svg","assets/encryption-status-689620003.8086e625.svg","assets/chevron-down-3300400168.d1a083a1.svg","assets/room-members-3297708388.1a158fe2.svg","assets/mic-muted-2617055184.e8d1962f.svg","assets/cam-muted-2247331037.b0b2cf01.svg","assets/hangup-1798659826.d0cb8438.svg","assets/mic-muted-4213153786.513608a5.svg","assets/clear-2203718389.37dd36a5.svg","assets/cam-muted-1894081672.22150c2b.svg","assets/mic-unmuted-3178778883.b8f57412.svg","assets/element-logo-703176763.fc54fc8d.svg","assets/settings-2175246113.00804666.svg","assets/enable-grid-2071838379.ab4f40c5.svg","assets/cam-unmuted-2215154474.a82b7bf1.svg","assets/clear-426756705.361f7a30.svg","assets/plus-4190356069.084c5e3d.svg","assets/search-3263540198.1511780c.svg","assets/disable-grid-3304422220.8a79cfcb.svg","assets/chevron-left-3506338632.4e437777.svg","assets/chevron-right-847198822.23380c56.svg","assets/vertical-ellipsis-3416547705.f619a721.svg","assets/send-1171052351.caa5c494.svg","assets/paperclip-2441131778.1f5e29f3.svg","assets/chevron-small-781914114.936b4943.svg","assets/room-members-3847743605.9fcf4567.svg","assets/chevron-thin-left-3831175135.13f60c05.svg","assets/video-call-3307702325.5e74dd9a.svg","assets/room-members-1680968332.b4f57622.svg","assets/encryption-status-475927392.2fedc0bd.svg","assets/e2ee-normal-3652557173.2a97dccf.svg","assets/e2ee-normal-2713987956.215b3ddf.svg","assets/index.e65aa065.js","assets/theme-element-light.78427b5a.css","assets/theme-element-dark.a6fddb2f.css","assets/theme-element-runtime.054f90d4.css","assets/verification-error.80ad562b.svg","assets/verified.b90752ec.svg","assets/encryption-status.8054183e.svg","assets/chevron-down.9a7440b9.svg","assets/room-members.35ed0bf9.svg","assets/mic-muted.56aa03b9.svg","assets/cam-muted.9f690631.svg","assets/hangup.8b163c30.svg","assets/mic-unmuted.c180f63a.svg","assets/cam-unmuted.67e18332.svg","assets/clear.0d180c33.svg","assets/element-logo.86bc8565.svg","assets/enable-grid.eef43c65.svg","assets/settings.45b8e09f.svg","assets/plus.49560f96.svg","assets/disable-grid.371ceaaa.svg","assets/search.21e0fd39.svg","assets/chevron-left.b8b2c5fc.svg","assets/chevron-right.885731d1.svg","assets/vertical-ellipsis.70ab5d25.svg","assets/send.7a090949.svg","assets/paperclip.ec29fd9d.svg","assets/chevron-small.dfd7e618.svg","assets/e2ee-normal.bef76bd4.svg","assets/e2ee-disabled.8507165d.svg","assets/chevron-thin-left.d111869b.svg","assets/video-call.d3cb081e.svg","assets/icon.8024c299.png"],b=["assets/main.bdb9a925.js","assets/olm_legacy.bc22f405.js","assets/Inter-Thin.5d8e2ac4.woff2","assets/Inter-ThinItalic.6b3ded18.woff2","assets/Inter-ExtraLight.da47c335.woff2","assets/Inter-Light.0f7dfe72.woff2","assets/Inter-LightItalic.125c7e6a.woff2","assets/Inter-ExtraLightItalic.b3f94cfe.woff2","assets/Inter-MediumItalic.76551c20.woff2","assets/Inter-Regular.89d406b0.woff2","assets/Inter-Italic.bab4e808.woff2","assets/Inter-SemiBoldItalic.d376ade4.woff2","assets/Inter-Medium.5d308f3d.woff2","assets/Inter-BoldItalic.e09dcbe1.woff2","assets/Inter-SemiBold.c7c3befe.woff2","assets/Inter-ExtraBold.0ef4267e.woff2","assets/Inter-ExtraBoldItalic.d1e1f6a0.woff2","assets/Inter-Black.7f1f5616.woff2","assets/Inter-BlackItalic.72d5983b.woff2","assets/Inter-Bold.6f5e9a23.woff2","assets/Inter-Thin.5565b01e.woff","assets/Inter-ThinItalic.c413497b.woff","assets/Inter-ExtraLight.d7be68a4.woff","assets/Inter-Light.38326098.woff","assets/Inter-ExtraLightItalic.762fa4d2.woff","assets/Inter-MediumItalic.1458af9d.woff","assets/Inter-LightItalic.ec6c76a8.woff","assets/Inter-Regular.5b3a854b.woff","assets/Inter-Italic.7b187d57.woff","assets/Inter-Medium.0fc5d904.woff","assets/Inter-SemiBoldItalic.420db54a.woff","assets/Inter-BoldItalic.31a185fa.woff","assets/Inter-SemiBold.04cd699f.woff","assets/Inter-Black.067c82f7.woff","assets/Inter-ExtraBold.45bae435.woff","assets/Inter-ExtraBoldItalic.30a1af87.woff","assets/Inter-BlackItalic.c628a2cf.woff","assets/Inter-Bold.20d46cff.woff","assets/manifest.1f23c85b.json"],u=`hydrogen-assets-${"3895512102"}`,r="hydrogen-assets",A="hydrogen-media-thumbnails-v2";self.addEventListener("install",function(e){e.waitUntil((async()=>{await(await caches.open(u)).addAll(H);const a=await caches.open(r);await Promise.all(N.map(async n=>{await a.match(n)||await a.add(n)}))})())});self.addEventListener("activate",e=>{self.clients.claim(),e.waitUntil(I())});async function I(){const e=await caches.keys();for(const s of e)s!==u&&s!==r&&s!==A&&await caches.delete(s);const t=await caches.open(r),a=await t.keys(),n=N.concat(b).map(s=>new URL(s,self.registration.scope).href);for(const s of a)n.some(i=>i===s.url)||t.delete(s)}self.addEventListener("fetch",e=>{e.request.method==="GET"&&e.respondWith(D(e))});function C(e){if(e.pathname.startsWith("/_matrix/media/r0/thumbnail/")||e.pathname.startsWith("/_matrix/client/v1/media/thumbnail/")){const t=parseInt(e.searchParams.get("width"),10),a=parseInt(e.searchParams.get("height"),10);if(t<=50&&a<=50)return!0}return!1}const m=new URL(self.registration.scope);let w=new AbortController;async function D({request:e,clientId:t}){try{if(e.url.includes("config.json")||/theme-.+\.json/.test(e.url))return F(e);const a=new URL(e.url);if(a.origin===m.origin&&a.pathname===m.pathname&&(e=new Request(new URL("index.html",m.href))),a.pathname.indexOf("/_matrix/client/v1/media")===0){const i=await self.clients.get(t),{accessToken:o,homeserver:p}=await l(i,"getAuthInfo",{});if(!o)throw new Error("Token returned from getAuthInfo message in sw.js is null!");if(!p)throw new Error("homeserver returned from getAuthInfo message in sw.js is null!");if(new URL(p).origin===a.origin){const h=new Headers(e.headers);h.set("authorization",`Bearer ${o}`),e=new Request(e,{mode:"cors",credentials:"omit",headers:h})}}let s=await U(e);return s||(C(a)?s=await fetch(e,{signal:w.signal,mode:"cors",credentials:"omit"}):s=await fetch(e,{signal:w.signal}),await L(e,s)),s}catch(a){throw a.name!=="TypeError"&&a.name!=="AbortError"&&console.error("error in service worker",a),a}}async function F(e){let t=await U(e);const a=O(e);return t||await a}async function O(e){const t=await fetch(e,{signal:w.signal,headers:{"Cache-Control":"no-cache"}});return L(e,t.clone()),t}async function L(e,t){if(t.status>=400)return;const a=new URL(e.url),n=self.registration.scope;if(C(a))(await caches.open(A)).put(e,t.clone());else if(e.url.startsWith(n)){let s=e.url.substr(n.length),i;b.includes(s)?i=r:H.includes(s)&&(i=u),i&&await(await caches.open(i)).put(e,t.clone())}}async function U(e){let a=await(await caches.open(u)).match(e);if(a||(a=await(await caches.open(r)).match(e),a))return a;const s=new URL(e.url);if(C(s)){const i=await caches.open(A);a=await i.match(e),(a==null?void 0:a.status)>=400&&(await i.delete(e),a=null)}return a}self.addEventListener("message",e=>{var n;const t=s=>e.source.postMessage({replyTo:e.data.id,payload:s}),{replyTo:a}=e.data;if(a){const s=E.get(a);s&&(E.delete(a),s(e.data.payload))}else switch((n=e.data)==null?void 0:n.type){case"version":t({version:"0.5.1",buildHash:"3895512102"});break;case"skipWaiting":self.skipWaiting();break;case"haltRequests":e.waitUntil(v().finally(()=>t()));break;case"closeSession":e.waitUntil(M(e.data.payload.sessionId,e.source.id).finally(()=>t()));break}});const y="new_message";async function P(e){if(e.notification.tag!==y){console.log("clicked notif with tag",e.notification.tag);return}const{sessionId:t,roomId:a}=e.notification.data,s=`${`#/session/${t}`}/room/${a}`,i=await T(async o=>await l(o,"hasSessionOpen",{sessionId:t}));if(i){if(console.log("notificationclick: client has session open, showing room there"),i.postMessage({type:"openRoom",payload:{roomId:a}}),"focus"in i)try{await i.focus()}catch(o){console.error(o)}}else if(self.clients.openWindow){console.log("notificationclick: no client found with session open, opening new window");const o=new URL(`./${s}`,m).href;await self.clients.openWindow(o)}}self.addEventListener("notificationclick",e=>{e.notification.close(),e.waitUntil(P(e))});async function W(e){var n;console.log("got a push message",e);const t=e.session_id;let a=e.sender_display_name||e.sender;if(a&&e.event_id){const s=e.room_id;if(!!await T(async c=>{if(c.visibilityState==="visible"&&c.focused)return await l(c,"hasRoomOpen",{sessionId:t,roomId:s})})){console.log("client is focused, room is open, don't show notif");return}const o=Array.from(await self.registration.getNotifications({tag:y})),S=o.filter(c=>c.data.roomId===s).some(c=>c.data.multi),h=o.some(c=>!c.data.multi),f=e.room_name||e.room_alias;let R=!1,d,g;if(S){console.log("already have a multi message, don't do anything");return}else h?(console.log("showing multi message notification"),R=!0,d=f||a,g="New messages"):(console.log("showing new message notification"),f&&f!==a?d=`${a} in ${f}`:d=a,g=((n=e.content)==null?void 0:n.body)||"New message");await self.registration.showNotification(d,{body:g,data:{sessionId:t,roomId:s,multi:R},tag:y,badge:k})}}self.addEventListener("push",e=>{e.waitUntil(W(e.data.json()))});async function M(e,t){const a=await self.clients.matchAll();await Promise.all(a.map(async n=>{n.id!==t&&await l(n,"closeSession",{sessionId:e})}))}async function v(){const e=await self.clients.matchAll({type:"window"});await Promise.all(e.map(t=>l(t,"haltRequests"))),w.abort()}const E=new Map;let _=0;function l(e,t,a){_+=1;const n=_,s=new Promise(i=>{E.set(n,i)});return e.postMessage({type:t,id:n,payload:a}),s}async function T(e){const t=await self.clients.matchAll({type:"window"});for(const a of t)if(await e(a))return a} +//# sourceMappingURL=sw.js.map diff --git a/hydrogen/sw.js.map b/hydrogen/sw.js.map new file mode 100644 index 0000000..44a587b --- /dev/null +++ b/hydrogen/sw.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sw.js","sources":["../src/platform/web/sw.js"],"sourcesContent":["/*\nCopyright 2020 Bruno Windels \nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nconst NOTIFICATION_BADGE_ICON = \"icon.png\";\n\n// These are replaced by rollup plugins\nconst UNHASHED_PRECACHED_ASSETS = DEFINE_UNHASHED_PRECACHED_ASSETS;\nconst HASHED_PRECACHED_ASSETS = DEFINE_HASHED_PRECACHED_ASSETS;\nconst HASHED_CACHED_ON_REQUEST_ASSETS = DEFINE_HASHED_CACHED_ON_REQUEST_ASSETS;\n\nconst unhashedCacheName = `hydrogen-assets-${DEFINE_GLOBAL_HASH}`;\nconst hashedCacheName = `hydrogen-assets`;\nconst mediaThumbnailCacheName = `hydrogen-media-thumbnails-v2`;\n\nself.addEventListener(\"install\", function (e) {\n e.waitUntil(\n (async () => {\n const unhashedCache = await caches.open(unhashedCacheName);\n await unhashedCache.addAll(UNHASHED_PRECACHED_ASSETS);\n const hashedCache = await caches.open(hashedCacheName);\n await Promise.all(\n HASHED_PRECACHED_ASSETS.map(async (asset) => {\n if (!(await hashedCache.match(asset))) {\n await hashedCache.add(asset);\n }\n })\n );\n })()\n );\n});\n\nself.addEventListener(\"activate\", (event) => {\n // on a first page load/sw install,\n // start using the service worker on all pages straight away\n self.clients.claim();\n event.waitUntil(purgeOldCaches());\n});\n\nasync function purgeOldCaches() {\n // remove any caches we don't know about\n const keyList = await caches.keys();\n for (const key of keyList) {\n if (\n key !== unhashedCacheName &&\n key !== hashedCacheName &&\n key !== mediaThumbnailCacheName\n ) {\n await caches.delete(key);\n }\n }\n // remove the cache for any old hashed resource\n const hashedCache = await caches.open(hashedCacheName);\n const keys = await hashedCache.keys();\n const hashedAssetURLs = HASHED_PRECACHED_ASSETS.concat(\n HASHED_CACHED_ON_REQUEST_ASSETS\n ).map((a) => new URL(a, self.registration.scope).href);\n\n for (const request of keys) {\n if (!hashedAssetURLs.some((url) => url === request.url)) {\n hashedCache.delete(request);\n }\n }\n}\n\nself.addEventListener(\"fetch\", (event) => {\n /*\n service worker shouldn't handle xhr uploads because otherwise\n the progress events won't fire.\n This has to do with xhr not being supported in service workers.\n */\n if (event.request.method === \"GET\") {\n event.respondWith(handleRequest(event));\n }\n});\n\nfunction isCacheableThumbnail(url) {\n if (\n url.pathname.startsWith(\"/_matrix/media/r0/thumbnail/\") ||\n url.pathname.startsWith(\"/_matrix/client/v1/media/thumbnail/\")\n ) {\n const width = parseInt(url.searchParams.get(\"width\"), 10);\n const height = parseInt(url.searchParams.get(\"height\"), 10);\n if (width <= 50 && height <= 50) {\n return true;\n }\n }\n return false;\n}\n\nconst baseURL = new URL(self.registration.scope);\nlet pendingFetchAbortController = new AbortController();\n\nasync function handleRequest({ request, clientId }) {\n try {\n // Special caching strategy for config.json and theme json files\n if (\n request.url.includes(\"config.json\") ||\n /theme-.+\\.json/.test(request.url)\n ) {\n return handleStaleWhileRevalidateRequest(request);\n }\n\n // rewrite / to /index.html so it hits the cache\n const url = new URL(request.url);\n if (\n url.origin === baseURL.origin &&\n url.pathname === baseURL.pathname\n ) {\n request = new Request(new URL(\"index.html\", baseURL.href));\n }\n\n // Add access token for authenticated media endpoints\n const pathNameStartsWithMediaPrefix =\n url.pathname.indexOf(\"/_matrix/client/v1/media\") === 0;\n if (pathNameStartsWithMediaPrefix) {\n const client = await self.clients.get(clientId);\n const { accessToken, homeserver } = await sendAndWaitForReply(\n client,\n \"getAuthInfo\",\n {}\n );\n if (!accessToken) {\n throw new Error(\n \"Token returned from getAuthInfo message in sw.js is null!\"\n );\n }\n if (!homeserver) {\n throw new Error(\n \"homeserver returned from getAuthInfo message in sw.js is null!\"\n );\n }\n // Is this request actually going to the homeserver?\n const isRequestForHomeserver =\n new URL(homeserver).origin === url.origin;\n if (isRequestForHomeserver) {\n // Only add the access-token if we know that this request\n // is going to the homeserver.\n const headers = new Headers(request.headers);\n headers.set(\"authorization\", `Bearer ${accessToken}`);\n request = new Request(request, {\n mode: \"cors\",\n credentials: \"omit\",\n headers,\n });\n }\n }\n\n let response = await readCache(request);\n if (!response) {\n // use cors so the resource in the cache isn't opaque and uses up to 7mb\n // https://developers.google.com/web/tools/chrome-devtools/progressive-web-apps?utm_source=devtools#opaque-responses\n if (isCacheableThumbnail(url)) {\n response = await fetch(request, {\n signal: pendingFetchAbortController.signal,\n mode: \"cors\",\n credentials: \"omit\",\n });\n } else {\n response = await fetch(request, {\n signal: pendingFetchAbortController.signal,\n });\n }\n await updateCache(request, response);\n }\n return response;\n } catch (err) {\n if (err.name !== \"TypeError\" && err.name !== \"AbortError\") {\n console.error(\"error in service worker\", err);\n }\n throw err;\n }\n}\n\n/**\n * Stale-while-revalidate caching for certain files\n * see https://developer.chrome.com/docs/workbox/caching-strategies-overview/#stale-while-revalidate\n */\nasync function handleStaleWhileRevalidateRequest(request) {\n let response = await readCache(request);\n const networkResponsePromise = fetchAndUpdateCache(request);\n if (response) {\n return response;\n } else {\n return await networkResponsePromise;\n }\n}\n\nasync function fetchAndUpdateCache(request) {\n const response = await fetch(request, {\n signal: pendingFetchAbortController.signal,\n headers: {\n \"Cache-Control\": \"no-cache\",\n },\n });\n updateCache(request, response.clone());\n return response;\n}\n\nasync function updateCache(request, response) {\n // don't write error responses to the cache\n if (response.status >= 400) {\n return;\n }\n const url = new URL(request.url);\n const baseURL = self.registration.scope;\n if (isCacheableThumbnail(url)) {\n const cache = await caches.open(mediaThumbnailCacheName);\n cache.put(request, response.clone());\n } else if (request.url.startsWith(baseURL)) {\n let assetName = request.url.substr(baseURL.length);\n let cacheName;\n if (HASHED_CACHED_ON_REQUEST_ASSETS.includes(assetName)) {\n cacheName = hashedCacheName;\n } else if (UNHASHED_PRECACHED_ASSETS.includes(assetName)) {\n cacheName = unhashedCacheName;\n }\n if (cacheName) {\n const cache = await caches.open(cacheName);\n await cache.put(request, response.clone());\n }\n }\n}\n\nasync function readCache(request) {\n const unhashedCache = await caches.open(unhashedCacheName);\n let response = await unhashedCache.match(request);\n if (response) {\n return response;\n }\n const hashedCache = await caches.open(hashedCacheName);\n response = await hashedCache.match(request);\n if (response) {\n return response;\n }\n\n const url = new URL(request.url);\n if (isCacheableThumbnail(url)) {\n const mediaThumbnailCache = await caches.open(mediaThumbnailCacheName);\n response = await mediaThumbnailCache.match(request);\n // added in 0.1.26, remove previously cached error responses, remove this in some time\n if (response?.status >= 400) {\n await mediaThumbnailCache.delete(request);\n response = null;\n }\n }\n return response;\n}\n\nself.addEventListener(\"message\", (event) => {\n const reply = (payload) =>\n event.source.postMessage({ replyTo: event.data.id, payload });\n const { replyTo } = event.data;\n if (replyTo) {\n const resolve = pendingReplies.get(replyTo);\n if (resolve) {\n pendingReplies.delete(replyTo);\n resolve(event.data.payload);\n }\n } else {\n switch (event.data?.type) {\n case \"version\":\n reply({\n version: DEFINE_VERSION,\n buildHash: DEFINE_GLOBAL_HASH,\n });\n break;\n case \"skipWaiting\":\n self.skipWaiting();\n break;\n case \"haltRequests\":\n event.waitUntil(haltRequests().finally(() => reply()));\n break;\n case \"closeSession\":\n event.waitUntil(\n closeSession(\n event.data.payload.sessionId,\n event.source.id\n ).finally(() => reply())\n );\n break;\n }\n }\n});\n\nconst NOTIF_TAG_NEW_MESSAGE = \"new_message\";\n\nasync function openClientFromNotif(event) {\n if (event.notification.tag !== NOTIF_TAG_NEW_MESSAGE) {\n console.log(\"clicked notif with tag\", event.notification.tag);\n return;\n }\n const { sessionId, roomId } = event.notification.data;\n const sessionHash = `#/session/${sessionId}`;\n const roomHash = `${sessionHash}/room/${roomId}`;\n const clientWithSession = await findClient(async (client) => {\n return await sendAndWaitForReply(client, \"hasSessionOpen\", {\n sessionId,\n });\n });\n if (clientWithSession) {\n console.log(\n \"notificationclick: client has session open, showing room there\"\n );\n // use a message rather than clientWithSession.navigate here as this refreshes the page on chrome\n clientWithSession.postMessage({\n type: \"openRoom\",\n payload: { roomId },\n });\n if (\"focus\" in clientWithSession) {\n try {\n await clientWithSession.focus();\n } catch (err) {\n console.error(err);\n } // I've had this throw on me on Android\n }\n } else if (self.clients.openWindow) {\n console.log(\n \"notificationclick: no client found with session open, opening new window\"\n );\n const roomURL = new URL(`./${roomHash}`, baseURL).href;\n await self.clients.openWindow(roomURL);\n }\n}\n\nself.addEventListener(\"notificationclick\", (event) => {\n event.notification.close();\n event.waitUntil(openClientFromNotif(event));\n});\n\nasync function handlePushNotification(n) {\n console.log(\"got a push message\", n);\n const sessionId = n.session_id;\n let sender = n.sender_display_name || n.sender;\n if (sender && n.event_id) {\n const roomId = n.room_id;\n const hasFocusedClientOnRoom = !!(await findClient(async (client) => {\n if (client.visibilityState === \"visible\" && client.focused) {\n return await sendAndWaitForReply(client, \"hasRoomOpen\", {\n sessionId,\n roomId,\n });\n }\n }));\n if (hasFocusedClientOnRoom) {\n console.log(\"client is focused, room is open, don't show notif\");\n return;\n }\n const newMessageNotifs = Array.from(\n await self.registration.getNotifications({\n tag: NOTIF_TAG_NEW_MESSAGE,\n })\n );\n const notifsForRoom = newMessageNotifs.filter(\n (n) => n.data.roomId === roomId\n );\n const hasMultiNotification = notifsForRoom.some((n) => n.data.multi);\n const hasSingleNotifsForRoom = newMessageNotifs.some(\n (n) => !n.data.multi\n );\n const roomName = n.room_name || n.room_alias;\n let multi = false;\n let label;\n let body;\n if (hasMultiNotification) {\n console.log(\"already have a multi message, don't do anything\");\n return;\n } else if (hasSingleNotifsForRoom) {\n console.log(\"showing multi message notification\");\n multi = true;\n label = roomName || sender;\n body = \"New messages\";\n } else {\n console.log(\"showing new message notification\");\n if (roomName && roomName !== sender) {\n label = `${sender} in ${roomName}`;\n } else {\n label = sender;\n }\n body = n.content?.body || \"New message\";\n }\n await self.registration.showNotification(label, {\n body,\n data: { sessionId, roomId, multi },\n tag: NOTIF_TAG_NEW_MESSAGE,\n badge: NOTIFICATION_BADGE_ICON,\n });\n }\n // we could consider hiding previous notifications here based on the unread count\n // (although we can't really figure out which notifications to hide) and also hiding\n // notifications makes it hard to ensure we always show a notification after a push message\n // when no client is visible, see https://goo.gl/yqv4Q4\n}\n\nself.addEventListener(\"push\", (event) => {\n event.waitUntil(handlePushNotification(event.data.json()));\n});\n\nasync function closeSession(sessionId, requestingClientId) {\n const clients = await self.clients.matchAll();\n await Promise.all(\n clients.map(async (client) => {\n if (client.id !== requestingClientId) {\n await sendAndWaitForReply(client, \"closeSession\", {\n sessionId,\n });\n }\n })\n );\n}\n\nasync function haltRequests() {\n // first ask all clients to block sending any more requests\n const clients = await self.clients.matchAll({ type: \"window\" });\n await Promise.all(\n clients.map((client) => {\n return sendAndWaitForReply(client, \"haltRequests\");\n })\n );\n // and only then abort the current requests\n pendingFetchAbortController.abort();\n}\n\nconst pendingReplies = new Map();\nlet messageIdCounter = 0;\nfunction sendAndWaitForReply(client, type, payload) {\n messageIdCounter += 1;\n const id = messageIdCounter;\n const promise = new Promise((resolve) => {\n pendingReplies.set(id, resolve);\n });\n client.postMessage({ type, id, payload });\n return promise;\n}\n\nasync function findClient(predicate) {\n const clientList = await self.clients.matchAll({ type: \"window\" });\n for (const client of clientList) {\n if (await predicate(client)) {\n return client;\n }\n }\n}\n"],"names":[],"mappings":"AAiBA,KAAM,GAA0B,WAG1B,EAA4B,oCAC5B,EAA0B,kCAC1B,EAAkC,0CAElC,EAAoB,mBAAmB,OAAA,oBAAA,IACvC,EAAkB,kBAClB,EAA0B,+BAEhC,KAAK,iBAAiB,UAAW,SAAU,EAAG,CAC1C,EAAE,UACG,UAAY,CAET,KAAM,AADgB,MAAM,QAAO,KAAK,CAAiB,GACrC,OAAO,CAAyB,EACpD,KAAM,GAAc,KAAM,QAAO,KAAK,CAAe,EACrD,KAAM,SAAQ,IACV,EAAwB,IAAI,KAAO,IAAU,CACzC,AAAM,KAAM,GAAY,MAAM,CAAK,GAC/B,KAAM,GAAY,IAAI,CAAK,CAEnD,CAAiB,CACjB,CACA,GAAY,CACZ,CACA,CAAC,EAED,KAAK,iBAAiB,WAAY,AAAC,GAAU,CAGzC,KAAK,QAAQ,QACb,EAAM,UAAU,EAAc,CAAE,CACpC,CAAC,EAED,kBAAgC,CAE5B,KAAM,GAAU,KAAM,QAAO,OAC7B,SAAW,KAAO,GACd,AACI,IAAQ,GACR,IAAQ,GACR,IAAQ,GAER,KAAM,QAAO,OAAO,CAAG,EAI/B,KAAM,GAAc,KAAM,QAAO,KAAK,CAAe,EAC/C,EAAO,KAAM,GAAY,OACzB,EAAkB,EAAwB,OAC5C,CACH,EAAC,IAAI,AAAC,GAAM,GAAI,KAAI,EAAG,KAAK,aAAa,KAAK,EAAE,IAAI,EAErD,SAAW,KAAW,GAClB,AAAK,EAAgB,KAAK,AAAC,GAAQ,IAAQ,EAAQ,GAAG,GAClD,EAAY,OAAO,CAAO,CAGtC,CAEA,KAAK,iBAAiB,QAAS,AAAC,GAAU,CAMtC,AAAI,EAAM,QAAQ,SAAW,OACzB,EAAM,YAAY,EAAc,CAAK,CAAC,CAE9C,CAAC,EAED,WAA8B,EAAK,CAC/B,GACI,EAAI,SAAS,WAAW,8BAA8B,GACtD,EAAI,SAAS,WAAW,qCAAqC,EAC/D,CACE,KAAM,GAAQ,SAAS,EAAI,aAAa,IAAI,OAAO,EAAG,EAAE,EAClD,EAAS,SAAS,EAAI,aAAa,IAAI,QAAQ,EAAG,EAAE,EAC1D,GAAI,GAAS,IAAM,GAAU,GACzB,MAAO,EAEd,CACD,MAAO,EACX,CAEA,KAAM,GAAU,GAAI,KAAI,KAAK,aAAa,KAAK,EAC/C,GAAI,GAA8B,GAAI,iBAEtC,iBAA6B,CAAE,UAAS,YAAY,CAChD,GAAI,CAEA,GACI,EAAQ,IAAI,SAAS,aAAa,GAClC,iBAAiB,KAAK,EAAQ,GAAG,EAEjC,MAAO,GAAkC,CAAO,EAIpD,KAAM,GAAM,GAAI,KAAI,EAAQ,GAAG,EAW/B,GATI,EAAI,SAAW,EAAQ,QACvB,EAAI,WAAa,EAAQ,UAEzB,GAAU,GAAI,SAAQ,GAAI,KAAI,aAAc,EAAQ,IAAI,CAAC,GAKzD,EAAI,SAAS,QAAQ,0BAA0B,IAAM,EACtB,CAC/B,KAAM,GAAS,KAAM,MAAK,QAAQ,IAAI,CAAQ,EACxC,CAAE,cAAa,cAAe,KAAM,GACtC,EACA,cACA,CAAE,CAClB,EACY,GAAI,CAAC,EACD,KAAM,IAAI,OACN,2DACpB,EAEY,GAAI,CAAC,EACD,KAAM,IAAI,OACN,gEACpB,EAKY,GADI,GAAI,KAAI,CAAU,EAAE,SAAW,EAAI,OACX,CAGxB,KAAM,GAAU,GAAI,SAAQ,EAAQ,OAAO,EAC3C,EAAQ,IAAI,gBAAiB,UAAU,GAAa,EACpD,EAAU,GAAI,SAAQ,EAAS,CAC3B,KAAM,OACN,YAAa,OACb,SACpB,CAAiB,CACJ,CACJ,CAED,GAAI,GAAW,KAAM,GAAU,CAAO,EACtC,MAAK,IAGD,CAAI,EAAqB,CAAG,EACxB,EAAW,KAAM,OAAM,EAAS,CAC5B,OAAQ,EAA4B,OACpC,KAAM,OACN,YAAa,MACjC,CAAiB,EAED,EAAW,KAAM,OAAM,EAAS,CAC5B,OAAQ,EAA4B,MACxD,CAAiB,EAEL,KAAM,GAAY,EAAS,CAAQ,GAEhC,CACV,OAAQ,EAAP,CACE,KAAI,GAAI,OAAS,aAAe,EAAI,OAAS,cACzC,QAAQ,MAAM,0BAA2B,CAAG,EAE1C,CACT,CACL,CAMA,iBAAiD,EAAS,CACtD,GAAI,GAAW,KAAM,GAAU,CAAO,EACtC,KAAM,GAAyB,EAAoB,CAAO,EAC1D,MAAI,IAGO,KAAM,EAErB,CAEA,iBAAmC,EAAS,CACxC,KAAM,GAAW,KAAM,OAAM,EAAS,CAClC,OAAQ,EAA4B,OACpC,QAAS,CACL,gBAAiB,UACpB,CACT,CAAK,EACD,SAAY,EAAS,EAAS,MAAO,CAAA,EAC9B,CACX,CAEA,iBAA2B,EAAS,EAAU,CAE1C,GAAI,EAAS,QAAU,IACnB,OAEJ,KAAM,GAAM,GAAI,KAAI,EAAQ,GAAG,EACzB,EAAU,KAAK,aAAa,MAClC,GAAI,EAAqB,CAAG,EAExB,AADc,MAAM,QAAO,KAAK,CAAuB,GACjD,IAAI,EAAS,EAAS,MAAO,CAAA,UAC5B,EAAQ,IAAI,WAAW,CAAO,EAAG,CACxC,GAAI,GAAY,EAAQ,IAAI,OAAO,EAAQ,MAAM,EAC7C,EACJ,AAAI,EAAgC,SAAS,CAAS,EAClD,EAAY,EACL,EAA0B,SAAS,CAAS,GACnD,GAAY,GAEZ,GAEA,KAAM,AADQ,MAAM,QAAO,KAAK,CAAS,GAC7B,IAAI,EAAS,EAAS,MAAO,CAAA,CAEhD,CACL,CAEA,iBAAyB,EAAS,CAE9B,GAAI,GAAW,KAAM,AADC,MAAM,QAAO,KAAK,CAAiB,GACtB,MAAM,CAAO,EAMhD,GALI,GAIJ,GAAW,KAAM,AADG,MAAM,QAAO,KAAK,CAAe,GACxB,MAAM,CAAO,EACtC,GACA,MAAO,GAGX,KAAM,GAAM,GAAI,KAAI,EAAQ,GAAG,EAC/B,GAAI,EAAqB,CAAG,EAAG,CAC3B,KAAM,GAAsB,KAAM,QAAO,KAAK,CAAuB,EACrE,EAAW,KAAM,GAAoB,MAAM,CAAO,EAE9C,kBAAU,SAAU,KACpB,MAAM,GAAoB,OAAO,CAAO,EACxC,EAAW,KAElB,CACD,MAAO,EACX,CAEA,KAAK,iBAAiB,UAAW,AAAC,GAAU,CAtQ5C,MAuQI,KAAM,GAAQ,AAAC,GACX,EAAM,OAAO,YAAY,CAAE,QAAS,EAAM,KAAK,GAAI,SAAO,CAAE,EAC1D,CAAE,WAAY,EAAM,KAC1B,GAAI,EAAS,CACT,KAAM,GAAU,EAAe,IAAI,CAAO,EAC1C,AAAI,GACA,GAAe,OAAO,CAAO,EAC7B,EAAQ,EAAM,KAAK,OAAO,EAEtC,KACQ,QAAQ,KAAM,OAAN,cAAY,UACX,UACD,EAAM,CACF,QAAS,QACT,UAAW,4BAC/B,CAAiB,EACD,UACC,cACD,KAAK,YAAW,EAChB,UACC,eACD,EAAM,UAAU,EAAc,EAAC,QAAQ,IAAM,EAAO,CAAA,CAAC,EACrD,UACC,eACD,EAAM,UACF,EACI,EAAM,KAAK,QAAQ,UACnB,EAAM,OAAO,EACrC,EAAsB,QAAQ,IAAM,GAAO,CAC3C,EACgB,MAGhB,CAAC,EAED,KAAM,GAAwB,cAE9B,iBAAmC,EAAO,CACtC,GAAI,EAAM,aAAa,MAAQ,EAAuB,CAClD,QAAQ,IAAI,yBAA0B,EAAM,aAAa,GAAG,EAC5D,MACH,CACD,KAAM,CAAE,YAAW,UAAW,EAAM,aAAa,KAE3C,EAAW,GADG,aAAa,YACO,IAClC,EAAoB,KAAM,GAAW,KAAO,IACvC,KAAM,GAAoB,EAAQ,iBAAkB,CACvD,WACZ,CAAS,CACJ,EACD,GAAI,GASA,GARA,QAAQ,IACJ,gEACZ,EAEQ,EAAkB,YAAY,CAC1B,KAAM,WACN,QAAS,CAAE,QAAQ,CAC/B,CAAS,EACG,SAAW,GACX,GAAI,CACA,KAAM,GAAkB,OAC3B,OAAQ,EAAP,CACE,QAAQ,MAAM,CAAG,CACpB,UAEE,KAAK,QAAQ,WAAY,CAChC,QAAQ,IACJ,0EACZ,EACQ,KAAM,GAAU,GAAI,KAAI,KAAK,IAAY,CAAO,EAAE,KAClD,KAAM,MAAK,QAAQ,WAAW,CAAO,CACxC,CACL,CAEA,KAAK,iBAAiB,oBAAqB,AAAC,GAAU,CAClD,EAAM,aAAa,QACnB,EAAM,UAAU,EAAoB,CAAK,CAAC,CAC9C,CAAC,EAED,iBAAsC,EAAG,CAvVzC,MAwVI,QAAQ,IAAI,qBAAsB,CAAC,EACnC,KAAM,GAAY,EAAE,WACpB,GAAI,GAAS,EAAE,qBAAuB,EAAE,OACxC,GAAI,GAAU,EAAE,SAAU,CACtB,KAAM,GAAS,EAAE,QASjB,GAR+B,CAAC,CAAE,KAAM,GAAW,KAAO,IAAW,CACjE,GAAI,EAAO,kBAAoB,WAAa,EAAO,QAC/C,MAAO,MAAM,GAAoB,EAAQ,cAAe,CACpD,YACA,QACpB,CAAiB,CAER,CAAA,EAC2B,CACxB,QAAQ,IAAI,mDAAmD,EAC/D,MACH,CACD,KAAM,GAAmB,MAAM,KAC3B,KAAM,MAAK,aAAa,iBAAiB,CACrC,IAAK,CACrB,CAAa,CACb,EAIc,EAAuB,AAHP,EAAiB,OACnC,AAAC,GAAM,EAAE,KAAK,SAAW,CACrC,EACmD,KAAK,AAAC,GAAM,EAAE,KAAK,KAAK,EAC7D,EAAyB,EAAiB,KAC5C,AAAC,GAAM,CAAC,EAAE,KAAK,KAC3B,EACc,EAAW,EAAE,WAAa,EAAE,WAClC,GAAI,GAAQ,GACR,EACA,EACJ,GAAI,EAAsB,CACtB,QAAQ,IAAI,iDAAiD,EAC7D,MACH,KAAM,AAAI,GACP,SAAQ,IAAI,oCAAoC,EAChD,EAAQ,GACR,EAAQ,GAAY,EACpB,EAAO,gBAEP,SAAQ,IAAI,kCAAkC,EAC9C,AAAI,GAAY,IAAa,EACzB,EAAQ,GAAG,QAAa,IAExB,EAAQ,EAEZ,EAAO,MAAE,UAAF,cAAW,OAAQ,eAE9B,KAAM,MAAK,aAAa,iBAAiB,EAAO,CAC5C,OACA,KAAM,CAAE,YAAW,SAAQ,OAAO,EAClC,IAAK,EACL,MAAO,CACnB,CAAS,CACJ,CAKL,CAEA,KAAK,iBAAiB,OAAQ,AAAC,GAAU,CACrC,EAAM,UAAU,EAAuB,EAAM,KAAK,KAAM,CAAA,CAAC,CAC7D,CAAC,EAED,iBAA4B,EAAW,EAAoB,CACvD,KAAM,GAAU,KAAM,MAAK,QAAQ,SAAQ,EAC3C,KAAM,SAAQ,IACV,EAAQ,IAAI,KAAO,IAAW,CAC1B,AAAI,EAAO,KAAO,GACd,KAAM,GAAoB,EAAQ,eAAgB,CAC9C,WACpB,CAAiB,CAEjB,CAAS,CACT,CACA,CAEA,kBAA8B,CAE1B,KAAM,GAAU,KAAM,MAAK,QAAQ,SAAS,CAAE,KAAM,QAAQ,CAAE,EAC9D,KAAM,SAAQ,IACV,EAAQ,IAAI,AAAC,GACF,EAAoB,EAAQ,cAAc,CACpD,CACT,EAEI,EAA4B,MAAK,CACrC,CAEA,KAAM,GAAiB,GAAI,KAC3B,GAAI,GAAmB,EACvB,WAA6B,EAAQ,EAAM,EAAS,CAChD,GAAoB,EACpB,KAAM,GAAK,EACL,EAAU,GAAI,SAAQ,AAAC,GAAY,CACrC,EAAe,IAAI,EAAI,CAAO,CACtC,CAAK,EACD,SAAO,YAAY,CAAE,OAAM,KAAI,SAAS,CAAA,EACjC,CACX,CAEA,iBAA0B,EAAW,CACjC,KAAM,GAAa,KAAM,MAAK,QAAQ,SAAS,CAAE,KAAM,QAAQ,CAAE,EACjE,SAAW,KAAU,GACjB,GAAI,KAAM,GAAU,CAAM,EACtB,MAAO,EAGnB"} \ No newline at end of file

    >>0?e+1|0:e;v=se(Ia,Ja,18,0);f=v+d|0;d=$+e|0;e=f;f=e>>>0>>0?d+1|0:d;d=m>>25;v=(m&33554431)<<7|R>>>25;m=v+e|0;e=d+f|0;d=m;e=d>>>0>>0?e+1|0:e;v=e>>31>>>6|0;m=v+d|0;S=m;f=m>>>0>>0?e+1|0:e;m=f;v=e;e=S&-67108864;f=v-((e>>>0>d>>>0)+f|0)|0;v=d-e|0;P=f;d=za+Ta|0;f=y+na|0;d=f>>>0>>0?d+1|0:d;e=se(na,za,18,0);f=e+f|0;d=$+d|0;d=e>>>0>f>>>0?d+1|0:d;e=j>>25;y=(j&33554431)<<7|H>>>25;j=y+f|0;f=d+e|0;d=j;f=d>>>0>>0?f+1|0:f;y=f>>31>>>6|0;j=d+y|0;e=f;T=j;e=j>>>0>>0?e+1|0:e;j=e;H=T&-67108864;J=d-H|0;R=J+v|0;d=f-((d>>>0>>0)+e|0)|0;e=d+P|0;F[g+1984>>2]=R;F[g+1988>>2]=J>>>0>R>>>0?e+1|0:e;F[g+1824>>2]=J-v;F[g+1828>>2]=d-((v>>>0>J>>>0)+P|0);e=Ha+Za|0;d=O+Ga|0;e=d>>>0>>0?e+1|0:e;y=se(Ga,Ha,18,0);d=y+d|0;f=$+e|0;f=d>>>0>>0?f+1|0:f;e=d;d=m>>26;m=(m&67108863)<<6|S>>>26;e=e+m|0;d=d+f|0;f=e;d=e>>>0>>0?d+1|0:d;y=d>>31>>>7|0;m=e+y|0;P=m;e=m>>>0>>0?d+1|0:d;m=e;e=P&-33554432;d=d-(m+(e>>>0>f>>>0)|0)|0;y=f-e|0;v=d;d=ra+Sa|0;f=x+ma|0;d=f>>>0>>0?d+1|0:d;x=se(ma,ra,18,0);e=x+f|0;f=$+d|0;f=e>>>0>>0?f+1|0:f;d=e;e=j>>26;j=(j&67108863)<<6|T>>>26;d=d+j|0;e=e+f|0;f=d;e=d>>>0>>0?e+1|0:e;d=e;x=d>>31>>>7|0;j=x+f|0;J=j;d=j>>>0>>0?d+1|0:d;j=d;T=J&-33554432;O=f-T|0;S=O+y|0;d=e-((f>>>0>>0)+d|0)|0;e=d+v|0;F[g+1992>>2]=S;F[g+1996>>2]=O>>>0>S>>>0?e+1|0:e;F[g+1832>>2]=O-y;F[g+1836>>2]=d-((y>>>0>O>>>0)+v|0);d=Fa+Ya|0;f=N+Ea|0;d=f>>>0>>0?d+1|0:d;x=se(Ea,Fa,18,0);f=x+f|0;e=$+d|0;e=f>>>0>>0?e+1|0:e;d=f;f=m>>25;x=(m&33554431)<<7|P>>>25;m=d+x|0;d=e+f|0;f=m;d=f>>>0>>0?d+1|0:d;x=d>>31>>>6|0;m=f+x|0;N=m;e=m>>>0>>0?d+1|0:d;m=e;e=N&-67108864;d=d-(m+(e>>>0>f>>>0)|0)|0;x=f-e|0;y=d;f=la+Ra|0;d=u+ka|0;f=d>>>0>>0?f+1|0:f;u=se(ka,la,18,0);d=u+d|0;e=$+f|0;e=d>>>0>>0?e+1|0:e;f=d;d=j>>25;j=(j&33554431)<<7|J>>>25;f=f+j|0;e=d+e|0;e=f>>>0>>0?e+1|0:e;d=e;u=d>>31>>>6|0;j=f+u|0;O=j;d=j>>>0>>0?d+1|0:d;j=d;J=O&-67108864;v=f-J|0;P=v+x|0;f=e-((f>>>0>>0)+d|0)|0;d=f+y|0;F[g+2e3>>2]=P;F[g+2004>>2]=v>>>0>P>>>0?d+1|0:d;F[g+1840>>2]=v-x;F[g+1844>>2]=f-((v>>>0>>0)+y|0);d=Da+Xa|0;f=Q+Ca|0;d=f>>>0>>0?d+1|0:d;u=se(Ca,Da,18,0);f=u+f|0;e=$+d|0;e=f>>>0>>0?e+1|0:e;d=e;e=m>>26;u=(m&67108863)<<6|N>>>26;m=u+f|0;f=d+e|0;e=m;f=e>>>0>>0?f+1|0:f;d=f;u=d>>31>>>7|0;m=u+e|0;v=m;d=m>>>0>>0?d+1|0:d;m=d;u=f;f=v&-33554432;d=u-((f>>>0>e>>>0)+d|0)|0;u=e-f|0;x=d;e=ia+Qa|0;d=A+ha|0;e=d>>>0>>0?e+1|0:e;f=se(ha,ia,18,0);d=f+d|0;e=$+e|0;e=d>>>0>>0?e+1|0:e;f=d;d=j>>26;j=(j&67108863)<<6|O>>>26;f=f+j|0;d=d+e|0;d=f>>>0>>0?d+1|0:d;e=f;A=d>>31>>>7|0;j=A+e|0;Q=j;f=j>>>0>>0?d+1|0:d;j=f;O=Q&-33554432;y=e-O|0;N=y+u|0;f=d-((e>>>0>>0)+f|0)|0;d=f+x|0;F[g+2008>>2]=N;F[g+2012>>2]=y>>>0>N>>>0?d+1|0:d;F[g+1848>>2]=y-u;F[g+1852>>2]=f-((u>>>0>y>>>0)+x|0);f=Ba+Wa|0;d=W+Aa|0;f=d>>>0>>0?f+1|0:f;A=se(Aa,Ba,18,0);e=A+d|0;d=$+f|0;d=e>>>0>>0?d+1|0:d;f=e;e=m>>25;m=(m&33554431)<<7|v>>>25;f=f+m|0;e=d+e|0;e=f>>>0>>0?e+1|0:e;d=e;A=d>>31>>>6|0;m=f+A|0;y=m;d=m>>>0>>0?d+1|0:d;m=d;u=e;e=y&-67108864;d=u-((e>>>0>f>>>0)+d|0)|0;A=f-e|0;u=d;e=ea+Pa|0;d=B+da|0;e=d>>>0>>0?e+1|0:e;B=se(da,ea,18,0);f=B+d|0;d=$+e|0;d=f>>>0>>0?d+1|0:d;e=f;f=j>>25;j=(j&33554431)<<7|Q>>>25;e=e+j|0;d=d+f|0;f=e;d=e>>>0>>0?d+1|0:d;B=d>>31>>>6|0;j=e+B|0;v=j;e=j>>>0>>0?d+1|0:d;j=e;Q=v&-67108864;x=f-Q|0;W=x+A|0;d=d-((f>>>0>>0)+e|0)|0;f=d+u|0;F[g+2016>>2]=W;F[g+2020>>2]=x>>>0>W>>>0?f+1|0:f;F[g+1856>>2]=x-A;F[g+1860>>2]=d-((x>>>0>>0)+u|0);f=(m&67108863)<<6|y>>>26;d=f+Va|0;e=(m>>26)+M|0;e=d>>>0>>0?e+1|0:e;f=d;m=d;d=e;B=d>>31>>>7|0;f=B+f|0;x=f;d=f>>>0>>0?d+1|0:d;f=d;u=e;e=x&-33554432;d=u-((e>>>0>m>>>0)+d|0)|0;B=m-e|0;A=d;d=j>>26;j=(j&67108863)<<6|v>>>26;m=j+Oa|0;e=d+t|0;e=j>>>0>m>>>0?e+1|0:e;d=e;t=d>>31>>>7|0;j=m+t|0;y=j;d=j>>>0>>0?d+1|0:d;j=d;M=y&-33554432;u=m-M|0;v=u+B|0;e=e-((m>>>0>>0)+d|0)|0;d=e+A|0;F[g+2024>>2]=v;F[g+2028>>2]=v>>>0>>0?d+1|0:d;F[g+1864>>2]=u-B;F[g+1868>>2]=e-((u>>>0>>0)+A|0);d=o&-33554432;e=c-d|0;m=Y-((c>>>0>>0)+X|0)|0;c=f;f=f>>25;o=(c&33554431)<<7|x>>>25;d=p&-67108864;p=b-d|0;c=o+p|0;d=(V-((b>>>0>>0)+E|0)|0)+f|0;d=c>>>0

    @>BHuLps|Rm;1xjhYQT za6gJ9CID#F=1D#vMDDnt0)flse^{2Q19T_Yp4jQR1zP|+2?oER@XML;%QTFo3v;B# zW+#uS=hefrtam(nv0=k(Z z0LTU87@|_Q{p8HPJ7|0F_n`8bgY*cpJf$SfPH#_kaW8TKR(7{PimEc-2#{}e}nsQiD-@Jl|P zzX#m}NLhrm=kJQ@Lr#mzAKmhWe+39t?eAZJOHBbp_m@=NQ1s{%@u(KGnhl3$RNH5@ zG-wZpNK`*WfM6T%96v>G2j(p3KN9WT zCQ1%{-vEgjlP(ZItmj!n%`_=$=?O%Tc&=N7^bYZUOkgh$xmOm0kL_H~JKpsbuOref zYE88F%wQ4Ey#fADQHY0UzwBPTD_9j4$0IYTbQhA#*}yRwoCX1Ofwio@ z5wCLe7OjDu;NIS5p9OEMeysyFuwEN8th>E@zeIUPxgXvkj$yqKJ+Nzz%k(LNV)b8zPf0R-q% zU_`mK<(+NCNQVGH1tW<68=1kc1SmrcPrX!|;(znbKb?d8z5mG#Nlim4f@Nwr2DsWi zDH5s?IyJ38Lbfph)=h7wE8JA@WttAD9&Gl0W4H}X@Syxel-pr-6c>%1#!HD*^~6he z?H(nv)S(5Zj2AR1XoqYQWpO2^CQz%0Avz*Nq-zzxp(;?bY_fL^h9>3m9R-3v0VpQ^ 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

    )zWBYd7YpBya~Iy>z?px z56iJb7kn6S8neB~plyhKn(_lfA21@2e`%~ZY1+VxgT51)cdJL{^DKR5I3SJD6dE@c zmCP}-tAy0|`^B92zs_EHZgWiI&IgNOgm7$JeZ%{WY>8Y5dOV;)VQp{i_VQw#tu05e z&E@%<+sii`p_2i)^r1AOoU&@NHf!a)Ro~hem3m`ZiuB@&S{8?9Y8|RrEy0%kBJZu# zT5GFIm^b_E&b6L((Z}lFYDXI$k2$aMMw+MR*Y{?922whIcbFGY>n0BE$d@h|{I{e8aV!GD#tnR2qIycAOgE{B|*kO5Hjaxi^% z)Zg!8Vo#{p__`@om5a_fDPxydJvqu$5rpKiOw?N)R;{%ua;7ajkLmN)2$4>&+9I4| zeTXO55Y4y9X9+|G!>M^@eXc|4SrTHhcI4QxI`ULKNQ1+5ZB;1c^~$YhYmyms&#|yY1zzsZqILX6&E1 z<1z_O-cKSPkpZB9r-{Lvgl8!Lll1b|04l423WfkJI;t4@y07q+*O?e~3Vtt1?l5)LIs6PSXK=WA+}5fq=|iPTPJw@}#p2 zAHZ4exf49zplwqU_LTd4yGs}I{%jj7dkMC>`~I{>zPx6`ohm8Os84wx%Z$tJN1kr} z;;+Mg@A58wUvnJVIayoCo$gz&YjKxz2;+U$iuW-tk>?MCvfu)t#R$^O&-f4z6YTJU z#`SUQ*|i?7ho>}QRq0utY!(iOi7UzT${PSqK(W79dSzR`oyDD9-K^)L@!9rhzV=HMnEC8QB&A7*+lwTsc$p}tKLRH zIa<5&8w9*pW3N(fp>eF;W8^LH**&hq6h=RLFy1DrcdrVXmc&RA@Nj@V-xQh;VgGB&xH*&a$R zsHbXfXR|&RX)7?udP@L*FY1of7nqDAz!$ERsm@(OpRtY;6(b{G`LD3oyrDt_XGTNGjeML`S2YvDB!4%og0-L~C?9H-h5? zb5~3av%A#Rt z&`_|t5`rCp)&TUVjRC3$4M`d((@+WuT^G=mN+s&maJmXkC7IF@hiLt!;7sRRVMyad zW)!x`2qsxDEhCYt>LoqK8f!p>01i$dZbYJsRIof|ZU-|?S$DOhV5EG>rNmX2#Oto3 zx{yyJ6@((*1^F?yXQc6l0LHzk`De|IS(48WyRGk@EF+eKor401kw<{N0o8N;5F=4rzI54}80tP_ejlJ!Hj}BKZWek28{ABI zL!f%QnetZuH7}LBks5{5uJZwt>3ET>NR@^t$cmK1uc-jAqIWMYYtf5}&7g@TgKg%svmg9HD!erXy5Rp7m z!5Z?+ztVPaU&l4{GS=Kzvw-&aJ|N#=iP}U<5rJ)}N5`Lp5~9A1x8C*=Pr2te`lbUjS61 z_MbII`qu{o$1~#A%BYU|!mF}=bK$2kRw-(bfF?G!{-lAT;$k9RnUqlwGZ8A?sWv#EcxEu|k{(Lm z2|b3JW&oUSI9Ro{CLgO2^_6!$ux5j6@B-c2QNQoRPfdr16*_)Oh@wjuvwws@Mv1QM zrtU+AjPM}>OQ`3%KjF)gm_V6!oBxu;3=N3dv+hr&y6f#}2J|;&V*_oWkOhBM)hd3>eQZD5#*t;7v$kU2uvwsKsxOer>v-vKY}mVcnq~$?`Ds(j|THu6@Xm> z4Bkq)Y#Nt7A=ktg)rau9oXv}kd$DIaw3Qc0Y47xv3abNsUJEC{)v5=xN%f#CykE$s z(uy;MJfg+#=0h-D+}5hymd=rHL2nt9L#eo<&hSTCjWH*Y5T_x%`*1X*X$v^IlD-uQ z<$X81_5x+-q|g7DhXEHi4}Sj`A3qu^b;D$09+%@mM4dTZEM9`o8_2P1Og6L?uGDIT zvF{3EjP!m?c?N5bsw$8b?e01z_{oXhhad6>eNerzJsLdf5`SCWcftGSlQaac33BRV z%TZvNkLE*&gDZ;OH>Z681+td&Sn(y+IR6py(|~O4#_7zT;9joDO8!KW;aG(Sf+1yr zD*b(ga%JNI@RERUI4Fy+II5LPT@jYNLU7L4BAXu7rOQF+1Xx85vyjB$CTtd)8DPP-6Ch;fM= zfU}ryD#&D2xY2Uh6=9R&WcGqfW6x*69IDKpgHM--NL+Zb;gl!?=4&0TUxzolZB#uFaWhk zvin;t3pS}+RBGHQz_tIab)ISe-@}=vb71iM26I#yQ?5Jm2^dV)sGD?spXfYTnsj40ajn$K|*;>fiCF_9t)1t!) zY6v9d{b{Dt;Uy?8(du$BF-(eKRgu02Pr8f1SK${3bc6eMteNT9ny}p-ms?TlIk9+x z_gZcmHBeqq7|2Dx_3A2ne8i7Z=jXD+E?2{>2CzKS8aj!!NE46o~g-?m6Dn_F} ztDD_BW9?7DiBi|^=NsE2`UOYrvsN+|=Y?i%qsuFk!i9;kl2T(rC6FrmCL~P5S{e zLU$N^`nrqKpxqQGw4kul+tT4dUw;l`o;WT=Dg^ew-|;+Y(=IPM?Y-R6(Ou*uB}K>G z7r~)`ixQRUS_eJf&k6kd*%O3dl9_#D_;`>S^*@mo%a`&5BflWOtKs*$Pm z@%UbmTww5&QCRKWx)fSXr!u|{rucF0+bls3y@mh#x%E_diT0V)IDG4h(IoH8HbV|- zHvh!pL#_pxEo!Xrv73D3dJwx}>5jI2ycADiNp;6%Q1B2!kP4db83Sg+=x9c0%DAMu z+18j(JPWYozAJb!fj;P)^rYvJ-{w?8QH^{GWyHDgkg6R{nOc*_^c{{}1vMm5u6AJJ zZDhX{ly2dj2q0H~BTSe^_~ha?bft6sJn+7Y9my(xlY<6{_tf7BpG!v1E>CMx(_mt& z(~zGe-9nSHvy$oBmv^C~PD6jEvn$Gw?T}i+=HS!*ANlVD3NFYb&~5Q$4g@_4&nbrL z2rpXt>30-cKzD|G{2J+>}zBtICO#ewxsUqG}R`w(htCpfNB$>FK9bnvFJgo8r%a>}}R9FX!N z;a^dwu((V=@kL4$XE{Fz&gzLjv4tvI1?p6w{Wu1*X_7&dD|m0IgglDwV%K+|f~FYw z1;Iila^!?bKXwmMS)sKzz(oNlT(4?N)B+kFeeNEi-dnpa1iRc1>9>l-BAcvT>R4d+ zz`i-Z7IIRME-qOgyOr{1c&zMy;ut{VY(g}4CR&*1ZZnzu*d)#FXKg_B4UsM?^c~~NK*aqWJMLeh47M*=i5bm4 zRDy}kv6&$xNCGG%MXc*B+`CzE_D z3+Rf?Wl1EFKi?gd5phe1j-(ag$-@HHv(fSnOsO*MfD*lt8$n0z6a0&p=5)8c>z zvbSAYlj97{-?m?zw*V^XWhaNA7af86%r2-`>Gj@?zV^i6Blcb&3|6Njdw^4JL;})c zM-L46iou*Csg&%m3+BiTAvrT~(w%@eb!3rCE$M3wXf|DN`kvqp5Mu6f@LB2X!BJCD&qm0#LZ@6ST7;>;BidSZKL|tBG9J}_ z-qn@$BPuPgER`ZmWbgPbS&y|egHyjV`O`PmQH)uXvwcuw@7Yv#B6*7=v9CE!!ikIL z_m^5VpVao(wb#tltL?RXo3*jgRD=^aZ~GLPG*tkdBiU>@%^2CL|-| zuNA7ZZ0-7!E#91XyPG~8ICk!nYFMViK3pz_%5|ZbwV#a3&V$A6hpqBpYhNzJ%RZ=o zdR3MpkRPB_8QKC9$DAx#W0F39B!VT$>d!pv`u!fShsb@eyH348rlL2>FD?h{X2aZL z#}CK!_r&{KQHsq@{Bz!30XH2*E<_`r{8z+6WLh!nn#G#-R}EY<=^&fN5kLVVlyW4Q zN3FM|gjm#F6$OWeNFHdo7mfVV+`1yD|C?nk0*}3IeEub4CkEIADjz~POS@B9KyGx* z=vJZ^>ebK$;B~A4b|p5BL#Chr9wk3L*~T7p4YKnNCLv}k-~yeq#ydNvlX!?wjpo{F znDdo8AiXI$IRAN05%`v_I_lJK`c8fsco%Xfx%1BaBA}If=tRd5cVZrb&L5V0f^>za z=Wq6{8Gj}mtTGfe6kHh(D%L~B=3hK*;^K$3H_|Z!5}6I!M0h`NAqlWwUWLiq6*Da~ z;T_dz%^jHg&1$S>s{u{;}JN z03cYufuF|kKcGr{4jSY%P#m!Xmnadv3UKSFQ5`Z(MWGv1NR&LSSVs-jL_Qy7u;gq4 z>vUz;mh+6}NI(X0$7ydewS!dYU^1oBPUq50ii4+?v1UB4&2Jv^F%4*y4^Bf@G)rFK z6J-2Oynxvz^eIqLQ^xJA0;m5R$jGH;3KSTnK_!z~?j&pH@2gS>_&pUkbwAHd8EkBK zM!~5LGwn+7#*85WXCec2E_3)eps-MDuOf+3ohL(!Kk7*4C56bSwbkFf?8MVk$e1IQ z8B1`irRHcTQzyo-TN=$=9fJh%ga{nrek`TB1K)8X!EUU_2J|!_q%+l<>iwN8X*sS$a zu213mX8WQDWokQ}dsT{*2fk78w#pts0I)W_6f@^}NHL=U%piIN>lrYkHrb|2G{4@~ zQ&oudqN7iW7>T=H?>e&G*Bu@~a{|0tLp&e+=6yOeF1X0$UACxUNrxKOtcq#qoV1g( zb(hRta>Y3rCGRqZZFgmTC)H`|2g&A5CCY$O_xWUHp5@$pTo5siHd86m2aV+{mrrWH z)bhh(_lIQ%Z+&-p$KvQcmT!ZwnT)2B5oRyGu_GN!M91|$c^`i0y}`#zCz7d}>8dCm zN62AQ*KtlZ(5}LaghW(0W9M%2L`y5D-rZ>Am%b{z`v|c7rx~ z??-H6srXfu^?gp(-d~Hq@LzTQq|N^O(OVb^E!>`vRuf<9%-KLlpY?H#2 zU=)F4N#AZr>3s?9t3>nOPGs4qpj_<{_am&8J?UicF|-&|kT%{I-nTr+9F(kdi0N^Guj-TulEIZ`ApB5 zD>L!TM49qEO3~cWs#J=G)cR?6*%V!a0wYfXL9%7Gjsgg#g+(d;0e~|RN@iBKoylgSS2L1)$>r=8!XMSM2>2qa zgTl|pcsQ*R|6Pbr|K9J9%g}zL)#bwdbLw_oN1Zz}9t=iHos+>`eHbpaf!W#}20YWIpK4R%jbc5{?mYc&_ z9hZ=Ib{47;6ITcxP{8CC(etIUqsBK;d{;k??*}7(#^Ttf_7Q>X2xKAVE{;MZv!1Cz zoQ$9)c_)}ZXHz_c#;=m78|2x6UFi}(vN~aitly|@5tm^7Z=M6}BDVVp{BIgej zXnUMmaRlm?utYg4&DxZKiuuN^^(Z_+FI|!VrfcF@0+hzRo6x^+l$4>oZp#h-xG(v5 z>V3TEUM1Ip>k9ES)UpJnIf@14OU#ctoq@EDTMi|4APOx7I$eTzX$U?Vp*VcCmHaKU zj68d0)cZQWmmamR4wxr#>Y6?9qm9Jjvv*?hx9GrDA70<~42A3?TzM1q3gQlnSa^w58F-4RE=*uv4A8^07!H-i$RdpHGM zzvuN3=k5K+YJ*7v-fupIWMVnu9`8*fnJI_k^53Y1_1osm;K-pAin{BaDSA@6cqgLE zHVG~a$m=*^h8|r30h;y1&#QW?l!VmDaqay7kZHl(L{}h#F<=&0<17^BXjjM}2n-)8 zLmo&0OP}bm{Y83N_Q3}{Ha)dDm1qRwiSzs(h3#vCxBV&JEEq_s5BAysHKgjsG?bOo z7-q}rkA41ssWe9FsZ2<$5R1G$&!@>oz@bIU|Bo|K)adGsUG6_h-+b~27XJ=Rn(OX1 z(_xqhcNtAOEhn(CryJEYh3HGXIP_lJ?yHPH3Tw-Z@?wnjm3C=MO~ebzh;jq<({I&= z4-2M1lM7399fciiRl}-S?eD!@IV#SyKRe0=m^F%;#@RhVQLoBrB&xVHr_5oHnDO`> z=#8;<*rkcY*nAVeU6s{A8$&NZ;<)Md0kDc=vVw313zn{~oTmHmPy6Qc^IXFOj@py? zwja|ZQj6pH6tF>eS9!MLrx4sAb$a|PaLWm?lWGWWr|ts!t7QfIBtMZ&KFmlxXh-4?zp)cg zhY-B$;Bnlb=n-IKnv`)>$?7(0;r_C83{hQK)3Zw3b0<5KVvIcdQWE#X2w|qYi$3$^ zACB@Cr(sl!x5A$5-OG9^%DNuY|T*vCZxX!%&XrI`+SiK6`b zwp%)q(w0C5tYx8}gBaXVd6Ob z{2=|+YPY0GvdEu(DZFY=#zG-zzZ`X{{Fxfll%lI`Z9Gu22gG=eMkJce58{LMQqvpl z2$_DkmSD0fJ?YfmMU9{EHr=gOl|>vJq{c|INv0BCddkcD!^)J@&eI?(>oy+t zNsN~IwHMmWS`i|&bfEdXH0NPJv>)toc zaL$*#&G^f5C%Zbax4_Z;vw&~E3k3O+x(#2t@|IIV=+O+C(!R7G9F-pyMnCsoJu6?T z6Xi=@>C{Ax7PHYT=YQ=S_lN$T@5i_+gmuH|)P#lwGB-pJ?0;0mO52u!P>pQ`#wM^jovt`c8jP ze&+`u^aq)n-9KUxxB2&ER;fBI{ek!W?@Bmldjm?`0p|z^TM271dGXHP9yTs5juNw>I5M*rOD|TFpAPRp?euQzm+rM z0Wmw`4)jbzC}e&kIVniBE5u0l=!0E<iP|rYa-ZjP~##y}N?}W)o6(TzwKpt3Hdv?2xj9dt_kSqdOMFxeL z(uKJWITcT-HEk62Uk8U%uC*<`Srf8->8anHCjOUA^>`pgOnyIh&-b~Ay}oAzS9J`R zgx0idisRCMpLWSC&C{TeCALrgUt;0wv2edUD|e(Yt@duTU>126pl&juKB__clgw-hLJxBTqq7fH8X{a^m#(hxS~K;Q6n zpIaQD_Ijc5w}{z{@8_#EH;(S#ShLBxLLq3PFZ6}`^Bz2^HsIs_k?{O*%`i+zGfX_q zGbe{%@<9N&s{jAa-#f>(`7U+ITaUQUevi*mZN_~_uNC~k2l(>KK+mv;is_Se`2GTt z1SHX4#y@q;heP@%Y8dftfVbcE1m z5Q|m0f_HCDDIbTQJ=idA2JzU3E&#T{wM7w#sDb5nu8M6P2Bs*u6_$^a3Jms6fLnoX z-|wZXU614&pJHqAWo!{$tD*UbJIgVpOk(46pjZ_ue?k4BxK2n1DzC-Dfa~r;_q)l}Ig#_k95qnso|CjmD}PZGwagV!$Q@UCtUC+%g^ood=%HkJ z^e)w1PO-yTqTAa}RoxL8CazBI;-}biFnujW7tlGTbm*wBKeQ|DXi& zgbci~K!4~E%*84B_(r6^a~r|#0yye?y1Kmm49L|{czPe3}E5Kne}}7GR|F-+0FcY@(($N>eDbrb5ctDkfh0rUIN#0i>SQBLM4x zz~2T))|+p`E2HkFt!ve+*OiwpQw51HR&E_$KGt+`P``Pqn~^*^|B_~OO1XM*%;pW8 zY}&P*qtCc`x9#1wX6f2$0H3;Z{j%Fnlh1$eyXQD*)@IgWW@8JJ>%TR^BKG&`{$)b+ zSc*2c>19C*n$-_@>QuF+Hqz-wBKJ$4=Vz2|vn5pfl5-`DN^fA9V8{+ie zn2khBA8UX3Ee7-87Vt~gS=B#Ht}Kjjp)GO=&+f;UvxQ;)OzxnN49GXfFaPL0HEu8C zhChe!OI1%{Rh!G1G^3@>0}J)ZgE(5!ZPHo5WL~Z@Ti&QG0G4i-PX#Ua|f#+U! z=pj5~s9Kill66I!^H;hU1JAEzTaWMJ+;7sT3NI=?i~}&8kIPYC4Z)o$e_>+TID+C| zL?wBEK*Nc*4-FgAbD3@oqY!xnqhY8|Hb(y2A5N?(&8w-ZW;1U zufhZZq0A3{0*9BX8IL3`T>8Mu~HMyv8XTHgp8VkT1S%e3;P!c zy0h?+H^1pU2AEtoh!LN{Hzl%!ZVwR2FjO6y!5k3*n;17^FY0$g4LqklT<9-cO4m+- zw{&fB@v%wGU5P(H#a>>SQ!Dh+4Lky_EH;Z^E8y{|ErN$;;ACpG;}>YMFfm}$F8fkS z`_;Ow(9nt41V-qaP<{z@qN;;NOJ5BN>V-!T!*ds}3!&^JO7n}Eu!RbWbI7?_6b;XG z9v&5MLOzC1C3L7bKOGkQoFj`v!7jT-sRKB)O4(5%6XUqQv53J}(G<+Ua#EcBrjP|G zNai?#JSkQf$M%XUPY?VsX3d&F^>!3f!^Q0bgEk3&ftjD5+8~H#9GHpp;ndjyD`C;9 zI4_dLE78txyMSUCyJWr|v!?&geQQsIwaa5)K86TNnFDg{G5t^0T?;kJ{8{wO;7S`Z zrv1UeiVYU2TnW#?NWslV+Qq z8Q$^wB|h)sL+MWc+Sn9x;L%?%H|hDNREHU4;}M0(js1X~9|;>gTfT4KlRK#2=|e5J za;MJ%P{YbZ$nVV?I*3vc^KNTYl?PeDQB&hC-C5c^bO+KV$DiGUuCt29qocb1rTSQu zPkQ4GZU~}5udk)k!;!9n6Q~gngYy0zY>hBOJMr%mmEgGs(-GDpI$uaLIg>tZ+Og;1 zU?TX})d*RP3GxWLIQC=gKf8y;bmoWlf^)r~wgSwGqKBb~kx{?5Vv1Re9AMD-Y`V$pQIgpf`h7Tm!qLnsB zrh`7c`J4y*fx&0wgt(-kgZ;zcS8%ub1}Y^9-Ik%TiH)XBOZu}_KJXy)DXL0FQcg0d zOk#C@Na4*wV3L5ffL^j&!PA|*cFOsdcJKRusWKyEQSbrVh$wV>2D=QRJ1fE4;je#?faxgHjsHLPM@nH4mb44%W&THl} zNiM@C!}Zi1fH}GhSK%V7V7DiR%oz+mqdwFn4HfJUuiL9YX>eYHv^)bK(`7Bt6!=Kz zGt1|`HTnzaj+-FL0|5aAiada1YIE~F3sm(E&676%DVTnh4A}K4220p5r?CaZ$19Re3d@!nS#2! zhVau4`qOK&(}l9NpjIvd?NcAlIKz)AnjM72UWDxUE?S~|0)?(!)RSMUP~QA5g800x zuxwIn{Qo0;zA$j=s>s=4|5?y`m=W5pr9f8w38mZ44A$xOS2Hmm>%={ zNBO;Hkvl9^(!5e!{?+8STXUEC_FY}~a#0jGjBeat`4)5HQrvS;n;U`h3A1C1Em$A% z(XTxx0gHAhAF9wb$Or2dtf&tn6k}P>9$MS*A$0BRZ6o@h&7^dn5Cx-~UZFZsCpeql zENEf)h4!n4_ogP8DBxG3{Hko2qO@^klTMc3ijwIHDE0@%vqs3X;3{wX)Ib5J!U3z# zjvmr0Wj@N{z>YA0q7X6ojHn9fgSHOdp8qkvM8W5(7jv{RFu^=W!PoO7*>BOm0WZ8D zu~U|lZBZ;cZRFRB1aca1DF!46;sd{O29mPRdFtprjx*4XVks)!52$mX9^tmmzt9c- zua*>U`rnwv#E0Xur~8^3P|w8vNg~K>)^+UWyLI(CdGq3H%4H&SkL+~(ZUde_;NRJ@ zg}H1+VelDPG$og1@-Dpso9=CepPl4<^O7DrOb(Lyj?1X4XN@n$U(LC7)-Jn@zI=&< z3keFwJBF$EJwyRy@=3hKR8rn-5W(R-55uoh*qun27CK&Q1)I-IjZVA+iyglcLL}T_vsN`|sxPO}T($De$5!>`YBkRi*vj_^VDNtKkq~DM(p6ol zrwu;$3yjcpdSIA4Kp*9M$L&Uo+O!2|R{!>h1NyGsf1)g- z-Uo8(K@qOE+V%g(s{ejlppTVu&i=`h&G6?Y3%=GqM8%xL(`TU z85`YAN_6RK$z<+5^YH2OVSFM;yVNAfjx`e;{iU{aNkX4=eH}tg>W)xJpG(is>dml8 z??FoZ9_F*Q(0eU!kYrp!CEf4es1Pwvl?x=l7VBs`Lq6<^Z#qwLE#l{Q?oRwU+DkMy zAIeJ0DF`mK{fAg1$4*a1*+J+%jz=$O0(buxOClc0mBpgl+y3+NIeAjyj^*v-ZlA)+ zR!;n7rpU6a)cryqz{=j>vjkr}$A38n3sBBwB;U8jZC%rh-!3&9hMm4j{-O7+wlv|d z4?bWQ_I~A4&qQnhi;&AQ`69)0fg_)*cJaUQ;D(4Y8TT<3Im-0%T^)Ns+dMXrt8()Gvi4h} z9izv8d55?vAN^EL8|Xic@i{`3gUyJfIca`#S+?z{oXbHD9SRKg1Th*fT%4ppS+s(R zA2yE5^tI?Offb&Xu!#eUwRTW|(VcUKa~H#&oz_#IAPhzUfvFdwT^Fs3W^ZgJbyX72IO~1)5o(XtDV# zYZbGmAWk_=R0#ultb6jT{zmeE$N`9Y6|B;fiV}rM~BuT=T?QSYp)lPVT&LI?SACbjrtw3E ztAwO!OUd`g_Ja2jrWmfe%WRMC&>nej#a&@>XlCgdZ$4bvEcRsYq?Y1n=bbw=J$Drewu-*tO?fz`J(V%#M4aPiUS z1zqlrK|F0|_$)4gONr|2=A}@?2j4f>y)_&Jvb%33bLJ)@eUwP9q1T}h&`l`+l&BwU zWDu4-Wo~djrNsQa?wIH?d3VR%^x^&7&9Lxw&=W~lwz$xC2X%KujyOXY6E02<)oE$z z?Vjh%MF&-MeslRl5AmD~ORoGybd=NCq3@!x}YVo%Swta0$Y5*V(Z>kcruh z6=Q7HAaFiMy%=OddR09Qd_Al@wM)7**%50R;vH1l5a?lVEx1a-b@UBc11?GZRx?pc zAr~UKCf8K>_HnhUqO5G?f+D4lrYtHgnLs2CpuMf&>v>^xRlSAwel7eJO-ZO3wsBK5 zK$OUP*>IC7Z5fyt(hGo0tinX}80w_w;@*LV?FJ@-?K*n_cNjb7JxFxiV6PL-^id)B zE@TeBlzA)kQ6q}&Tt4CcNZ&z)lMVT;(7VU33J-?n7N7Fv!A}@09;1HOcbblOo*r0FJ%yX^@OChy{-wb9(Zcz>E(#ES)hE>Cc;2$aPGJ zijo~22hPb|*oEDGa>0j3{D2vSGTdr-|AQ#{50-cM9g?uWcWUIzSlnyB!Z}cUZpI~* z5l0)ownTfF^9_Xa4%lwXVr}}k{H{5$%-gvzm`zAlfxMz*9n&MRvCMLUWCS2}iMw&I zE{C%^5$(fBc8$0Wg^-?+-;Y&>FlE*5{SXlSYw%`?Ob&hBgiXJKIgocw@i3>5i4g_M zA%qy0z9VC(Z#IaEHlZ?P)CW)GpR6=3%0r5n^{(`vU$tKaK9|Z>9lSWxtiCp)Ag@b$ zNyFPin40)9+FtnOGY{zd$}Sbhp&ia#BhQu`%6O~(!*_nslc1y6NOM;|uKY^i zLFI`}oRz`j#HstmIcV{K=NU8p7K+R)mHOtPrK)V}p|*;p&t*O5!%}q=m)jec$Shhx z3(64GAPoU9Qvx-p+rw77eyrphgCT<4x?*Vns|C6-SGsdaV~9Mn;ZK9J;4spur3UHL z`WOoO#iHJ9&E1!|Hiyc2f29=sYpR*h@cF&LjO)X9Ke{)PbUwK-NMo$<&=2O_d)M0eH7z|? z#>*XPMCKuxRrMmUco$%qT*9$Nt^k&Xt4s3ka3f9c@Xj?C*EZ6t*Y28Fx`{(_04$Sn z4Vr}FSM^AR>l=^-r~*Z;xC2;m01evk7CxGlQG&)QAma7sWNu@JJGj;Xx2a`>p5q!ij}`y%%z_=5WSx@CW>(oDc|^jlMU6nwCuoCowAf{no=07f$V|b%Z8A#YE)@< zkNg2v8|o)%xf1@JEw=J~=VX0n1-=s+*P%bZ?bV2x>u1O*BMn^xvl+j2zw5~HXUze~ z%D>@|n@D1J$LrpGbYHYaAuS()DjPs7kZ>Anvs>owyyOm$o;uvxWD~K)G3ezh@g4EQ zW-fe{wI0u0?k}4C4C4vLv0i1^g8C=_vbTo_^|qEB*oKH zQQ+TiWT2Z`W0o4S=d72CoS%JqeOZ^hbtjO?y zQp1!WfzJGeFi~+=u0Ob2RcA%KqixRXPy??kM868k~yW3HyCgrR1b1DI;zm}5hgZQTbuOBS11 zKG(CUf&F%tJ9&@%e#K2;VQBW@Q=WXd$^{ypp^hR_{`pax)!e6~9Qe z^2ENEjTEPQ?v(x})+++0l}1idGiNz*6htSmn&opon;Q6z6)GwgeXH7rB5f6EtotyL z=5Bu6Nl?GEdz4xBi&+0VUy?MOhJTcVedtUNXqW@0bDuG>7o5GtnvgyP7kIML8n~)L z=2=7cHM$>;&5cuD$f?OIlAqSI9DjCVayei-zoqF>yJ_*|b*(f?3};otHT~bmz7@}R z|1NrCye*^)=FffPHGvPTB$ZMBB+B{;CVZEkS?oQZ!DE;RNXr*cBHT08$ua8q1jTRi z7D6a0XCptd6udFZVA-c2);{uQFC6Z8XdJWrvPIq!YNs;rtO%%2f#9sAZ&w z?s4$Uh>E#`#?~=PWIi<*Sz+){Uo+P%_3Ql6m6rI%>HgBzgBE;;{Y|{lv+%o~objP^~BK#@6L?WC3BA@&}Q59Zg)b z++EUjySSxa$UYkz=j$&F@^xgLt&54vRabeGpEq(c)i34y2S}TdUw3Lg&Gy5)V>9ya zeD~h|UG{-qvRg*;UlKhH4!icD6`Sr0@A8e=Up@Ismx)ovUU&OzJHyktbF&xx1WaDr z%_B~K0d~EQ5gQ&;k$Yc>vxkswM;=iWUce{ds*2Z1Dzl5*U@4-8BQ{4{Q7sFK-dhx zc#|Msj^TSc;s9AdroXP+ShPdRUz6cJPE$D<>oH1bpyo4__pgzDHIXv7O>MO&3m=p` zu&++5{mbknWupF+5qjEUJ#5|DP0H_)5k5}SIg|w)9-Y|wE9Y1w*F3`?hm?>^NU9D- z&xVE(TnE1I{k{2;x@NkXLUz|$(-d~ay6uM15Yp3M5t85Z=^98}AeJ_NlLlFgWJ(&9 zG1?%CzM(idoVuaEEN8KRmL$CHD>jd;y{-Xt5Z#$eU}jJMN!I49$j_9WTZb>^{WP=W ztlYG19-oV?oZJ1?t+#vKH8HOs<6>FGG+4dD-3-Oa3ES&7Igl{3<(!Jy&lR{@R7p*n zvg=)YUE>rmZdrp7ypJD}0YmP#bKFoNTEHssl6LAM5=f)9gJnPV42MS}`W>32f{rh4 ze;d=!arnlLe;!mnkW8HgB3zi<;mG#!yKtCt8>AVVit)zA<&P?us2`Y`5{xryAf(6E zlh1#j33);pKaYul@E+Ho3_*?XdstevVfR?!(_H5!i1A4ZD5Wf81$T^3CX*KisvDs^ zjJQ;dHWqC*{!qV+b5THua5*kw1pa-X8?z78Bb|6q&vh4YQRWP&hwaUPI=?;NXjJKt z0%+Roc?NVsPKU5N8-xIh5D?OAzI9kw&!FtDu8V#JIL694ijTNlAEq*LNk9z!p!?ORLAqXn6mg=cX z+g`PHy=gtQXBHz+6voGP9Tie@G~NBvwsoP$i%xi3T>VSjB%Q zm+#XKO_OQu_yK4#_&d1t{X}Wq>bk!4H54#V?>JZFB(BJZ3`322FIZlS~sm0B)< ze?-Bf$N@Ie%Gpnz1L^ZOGB3F?lmI$AozLwxqe^uzYRLq5{7$42+*c{;|McY{#WSy^ z50l7lA638X38&=VoXSEu!tDYm*Ft_>IlKp~jX}iuwZ*xUeD_~w1>`TDD#{PdUq`&W z@OV$`x!@{!`SbSPJP}bI^q2F7Ujbby-Ut~-`%wKBdm{Ms zUoM7#ffd`qrtY{_#VRLnKW|?sj%8*P;MO)9f-BdXhhW)eKHKAg1#%T!+f}{LxyX2a zHCju~Fmm@ss|hTz(78sDganJB<{ubBaUi-GEbEv!3Pu@t+W`qhL2G@zHT+CYQASMo zK|Afq(M6Mj1sMTF?Q`?Od0HqmrIPD*ohjjHfhDvfb`ml{`t}?=RDAnaD0V{LzIb){ z_~tpz+WWBUICb4sHBSQXAYK9 zl1Bd>UOK3OpJ31!GS8mVNBjQ+~p$SGGb*S+OHucHZlGd+W&@f0A<#>nWQaJ6Ex>B z>QktH*3i)LT%ni1;HM9|IS!)GGbgAdU^&D@4#emr(q!Mjgm>f<;w)ig^W#e% zYt%&|?dR{j*Z$z~W9@CKXfl&kIayEUxkviY!J}fT#iwgd!19N#dp`OJ2NkAAkoyxV zFT?@X05DnYVVBzJDV1G)BS>$PO-xuP!vfZ$$t$nI&-DqFT_UgGRvx!}54I{EWbc2y z0`=t;v-U1uHn<{4#Wqj0dmvvz?;9@$mCl{8T%}|dq+8I!TSCjsV>j16pjBnhhst} zo6A!jle+33jr+cMpugTr%UAu+^iIJ~z=yb{@QXHERvaHvDDYxq#b=o@$}~t68=6Oa zwzhO*kvUAAc3AN@{kEbnzb|n|@q~`YrqEtmHZjrmGf|4gw`j|6;EW{{a=xh4>s+Gz zWv+Mj$@sVT6&Q}EfM}r?+5vGH9op$2f$>CHMmS1FSn;XUe1eDYXW{(=H_7x%6-g*s z5>kFHJr{pn_>1tjLpRy`~_fCAgDy6dY@Qe3X6R3u(Fh5G4Ka=L^%aO4%R+9p2{SmmLZwHo7Ksn z6qD$cO@ow7xnV~9G9rGJ5&o58M{B=sGoHNuPawx#y zGy2gKzyk>l&~ch95ns8~jxr1{9RMs`4vMn#Hs6We0>P{zkYAW!0tDJvG$n|oyVWYl z25v0P&sG-5$2wLH%&o19No=bY3EL&Uo)m0Mh)ig2O-{I$HhYk$2FVl2gzdspJ*$Sw z?=^kb<+m#8&6u5R4WW69thQ|-7q&uSdRrG0O8hncjh?YIw4V{j)4}tPJcK^O42mF1 zA^Qc5K)N>aK1j#d{A;=_dFPVwN9i}gCDM=-hcxGLvG%RKzhNs9OOs^OUDP}cN_hY=v1Di%aur9y+(gz}L*)&{A0euR*61h3m2YsJwicO@9ykvaGo7O|ie#Aplxm4&f?I z9Lz&TNOOG5b9lC?1-oU^!&&l-qd?ssT_i{QjOJ%J&g-BP<9_a$K{?l*dF0R$^v)G_ zvoqc+2@L4a$}@hz(4L1eojzhsUJ0HfE5^3(=GX80YTv_FmlC({F{|$by_TeHd@4r6| zpK%LK0ZvAf7jo}Dxg#m3BJ|^JvGM5GJ=Q6TIsaq9^(`~q@!saQ%}S~4TrJsWBeILy zQCHncs9~j-w5|IS2`5pux^%n*AGc20}4qVI=N8voH{!;+QNsgmRHs<*fd!rVN|EX_1P zUQvpUUA~dpjq>AZeei5#itj6N3ZNK)7TGH(o+Owg+q>%OO?CAKxS4M}%{&ut7jBzD z5ogIAk~eA|rJw^4o=G*Uc8p%D*Twz{2rMnA$#&iw`9*fo5O@fQ(Tc;EvT(D_R+aJs@-apqAcK*dh zTAJoB0lrgE6efD)L7il}#EoH02w_C~?Uz^d+l&vR5LHumYI}d>ab#j+n#+c3Krna3 z2j74xOe_>NvQQ8GW5)XiTkkhcCUP8vKd1$ycG9l06RN}J?c7Cn>pUlTl*{1pepL@L-Xxd>)!`y${q?L zmXteOXcQutE}!Mq1`#xFU39mc5!}~nYHx}ZN>U$SqcKtKQ&2!N4IM4Ri!i8Z=KjnB zs2!KaS+FwLS}hF-PeC%$+sU`MZ0@`NFC4MlIle2EYB3Ux>S^gndwlM*0X+j_W9Ni| zfNQolWnK9fjc#K}lbk6b-)|W;)DsAu3(e~H-*u6Nis8s)88CpwzVs{dl)0wD(`L37 zxx~r+X~pcZ1?C?+f55@>Y4JnWjpiG=Ih}bgca%#NCPbQ|^m5uVUv8ht*G&heeV~S& z{te=)$rTN;X8|lh+or7QH@wU61%Q%`zU&pwQ^<~yr$vgB6%%Bq-%D)rmF8Y55kUDo zF=x+CqRC6+D?0O2&jNu?A2 z&D&A<`LS9GsaGaC73siLyfJ8^-%x{eNV{a4FY3Y#OPnVNtdrhwioQP6Am6aXaT}L9 zz9JUd`v9?dDgsERNX!Dib5E z2tslA!+*R&pW=81#y1D{K%%d_ycJiK-qv=}lH!I^aU9AMaVfsf%|^$-#>^)ACabBR z^<6Ow%hO%C(pI8}D;$M;VEm~GdHvBjmC?x~G-av4f?~%15+$&{YNa-HZ|t<*-M0Oc zEZ?9$|9D+#*}uYOA-(~5&Q2ZtXk}H!-|RYWkZA}Y3Nsrf0p+f4pdok;_Xgpj>CPqX z>5_%L$wo^1r$hnx4WMRO9TxlF^Q9il0;8U86~0MS2!fA^cq4|#hMQ5Bh>0e>df=(D zw(#+*f}Au^Xk8}nu?ejEISFiXR>cYreDu~+zMST7>o#FZbn zC|!i!leXSo4PN@sdWqy)vc#(1Gb_qB%r{{tJJFVy$5jc0T9-v0VW8zeYrz)+Pq!^E zF0Dg$$S^z9BM4dwuoQSgdhy2Eet8{pS%hU0&R{r><(p{d=c?hVH6y*4;a8M_8yMcl z@=mvrxoWv;%!r$lz;pv>n0G8?NSw+@cBH`w6=5(u%_demz{FLB^rcgVG_heZm;j72 zV>pH?FWZvghjhJ4b-iK^H;z`Z09?snAbXCFCaR`rKDp5T5e2PMtjzA zywym+CEk^>zMHOu)fY*XuHzq1LHoDFBU7CUDbqzo#`=2t*9?;a#m4~qskXeud7TxG zP+Fo64T=nBRGSB*uQw}^b+%MSoPW-qd#NzDk!`3$oTpJ*gup|HDgIA_Ud9o=yT+={F8R)5C@ zr>sJzsKHYvvb3iw6a`Mmlk|m>GZvvU)X*7Y*@;<@pAv(}>~HKHVeREC#oa2o8$pLe z`@>R@&1q05?pAGUUE{wJzO*RLsD^vTF9)}Fe(?5UA}Z>9iBf*3u*diuY(m2WdP>a) znhyX|ZouGNiDU#CxPi0&Tj%O0N(uvA6FPTyYOebA7D13u+&l3xcmmWTjzCTDT+>nW z{9#K0Tvkr>fTOtiNTi^Y8ReD8{3J4C4x;ieaeOgn2%5maZOKanX^;AOa|O*?+&hGf zw25e0fuQCnc@;bXGU4kPifBqZ9p|nPMI!q+LWKUY$>U;^0Kg5a4@eY#N*?|>$FDl}*+9B~A|qsah6 z(S!G9B#kvFXDaZ!-K2J`vF1(AfCD;qPKwQTl0Dx@{rq~}LLnG0;saDt2AUGf697Co zg9@_1&rpj`G#iS`8SbRlq&IXP)W=T`3^n9GQCQCOAaA#A=-k7XpMXrv6*z+x7}gxz zP~sir>-SfnIiN7C;n4~bpA!8Q!NK988yvULD&6&yPQ_;K=6qp@;qu_cQLWFA57+JW z$EEtK7$4hpq;q{WYa;V`#rx-K?`7f304o`w7{Tj|PgL_yCt~)A0$YIC05#Vx#tT0b zya7(Y+dsuX_Wzpf|8`3qJ>x+yMJR&IJQ)zO#;;rIz%Wd9;&baz(KGht?-8`6<17v0 zEZb&XIuia_sw3OU+kH*UdS#xZDSSGko?>>sk&HlG2|$g1P>7Vb@sJM?Y1R;^5yU4j z+ey27xb)ufHR-9^yT8J(XJEufzskFVzwlgbJk6ukBfxbvpSZEA^Jt3Rhb4KoHPMR5 z@~j=LGSzn{LXeS)G$*5-Ow~3v{UT&7cN_OMBph`>6hZH_I}xN3BneR@16ruKEG+VY z(LD4Ga@la#Lj*eFy}6YN$3AJJ^&Pe~SkClz!@H3X>X{I(TeThvUz8DL#xhqk(=i(f zGE4J{(PKRK)AU%uCXO3!^Ylw${wFN{Ij#zj{i}pz|z_kmB)kmTj@R@ z@wdWIH|%=b`~pDcaZv{se`5oZ(uk?E#N4X`gc+cIaw743$4Yy=Z=89__lD3Od1u$v zcww{$?57%F*G?~e5Q$U*aSZJ>h`s@3!WiF(rQD;Q%4)>GfHLtOVc0_MaSt%34Bg{& zLJZ&JSrj)^HrFrxp^an&I*_!hV-L;vat>z&$DP}mBQCJ}3;q3~&TESy%B(Z^?H;dqEWhMIxY%R%EC5m%I@SP7|Be?j$4tdRdQ0!?EzB=Cgy zyUCr92do?MyyQjE6j1_p>Fl#s%)DwLRWxCEg*Lo+?69%m8u_Ep=OtJ9nW2)`v0<<1 zGQw%Ark?d|>e;FB0lKyynzCK5R%|&;VwqIAh|l3)D3Dod3P({a3Ues`EUWQ3vf@h@ zK7!Iqe6nK(bpk80Vt-X8rt%Es#Q9e>Lf+0r@SdElFuTpp+as`H{Rc{u4pvW&{or5I zxdqZ00glqeUcga7DJpzDqb@|s+hizmH{?N_yA8wp+)6d4FPtebHfJ<6WRn%PUEtC$1PY?Zwf!Xq7 zw__2#U!SkCuq5QzaAE3uma}N&6K`fSjJ)kkdUJ|s8T{LD*x=fSc^C_wn>8mwzq3N0 zqm@PAj;~d0w%Iif_=aiuozXHXX6`mhfxQXH>qQ5k`VRmg>(um@4%FWI#ft*#0#BCg zrPsSqq}R@*mrE?aX~D%h+LFPUDn>Zgs+^T!O0g_bcgcc&orSa|askd@dJFp5+sMz` z$J?hT+&ciwRe-5J0pW!qWJ|m1R3P2giL+}f@3Khr6_Jge-Qb^v-$9jgtmyz7e_){v zAc~W|qpRv|Rttp)c5Dcf2@*dr3d7$juYX%)br78CPaym1ceJ@vqn-yAtYZs|kw=)2 z?*S2T@3U>Y&p>F>G~@#zad7MYUz|57HZHw^xm#BP*6gDd7iH4_aySl4bDTvl z`bs`F{z{&l(&apC+~qtMmQVzue`e@f_v>LPx_P$sdA0Xv zEn6&?j>5f4cTn`kK1Qy+kG*MsZ-ecHE-1D^lBAn(8SpH4mR<%SQF_hDPmZhCYb+{f z*~|XCV*FTUY_o&zJDnJxQ~DG*4MxLJK1BN5puHnH$d6vD_{X0qh?mm1kHmf3mFNEy zHu)LkA3?)I9|!GFF`s|J?e$?FiKIV;{hr1t^zCtcy`xgOi1xh){UOr^le^uoyCeq7Qr~> z*NXdctHdm10fWMJ`EfUs2wZ`!dbXn)t(Ac-3F426V890gpr zopdCjJ<s)$iw#>=mOmaM6~36ROnlz^n>c0rt_Ro$hmsexwoQGq3 zZ#BcvEEY%!B}oyl(x+4W$NkK|-!<++ycupF?GcU7<6 zV{?2>Qy|SJiE%ALy9)xKPzcdzll>jQ|!H7eWW0D}4iKY#{_VS9EWZ?`z&0o$c zNx&mxpUe6UNq(#9IEu2{InI^jmgWh}X5Z{X zg7PT?Eq_k~gmmI&WX>aO#MuX3jKby1hcYR#Ds}(P`c1w&4MoN?1$8+M(WhPXrA=AhKWkin!*qgJZWk$D!2woMKNK=mFRwJ+ z3K$+&S_LH$!^2|VYLZ zSLIeig1(1z9o)^!2l-mTlZ>V;8GR5G{huuK)dzO{Ox`hOUO~-QR_51y>A&sv4HNaP(xJb2V4g^7$x_$T6(@^t)9{Lzv3nXdF45w;qNieD^V)G$cVk;-#j! zY5LR4i+dT4h*Pi&Z({u~+P<=?dj6a!%5O>|_|Z*+0@yBhG)s5G!|L{C?iN;zNDM1I zx9G{KZc875*v+BW!pDyB(bvp*+5_tw7U9zwF~Fq*)JZVMru|O%zKfN7CW=*G?T{lj zUprocxlV%Bm$+YS|K=gPl1Y@(S!uk;o?#=P%Etr+elSJb+gd;Y?}NO?I?RuYT>g^2 zgnNk0zez}Gl#n3tde{FZmXiGzi)FnNdqesK4~(qev^-ihKI`u2IFh$gi85fn$5Xa03!hNhTg z9ll(+4<+#Rj(=E4_;{o09wsJ&yZrtSzO>rAAG6$ln&oq~@2|DX!j4D`;0X7*s^|a9 zXM_F)go}yIau&j1oCTt=oLdMtU4SU;3a2d5K?hJU!(IC^-TS9$Sp?_c!k5Vcnw<7u zs%2bt4#!tIZ}~s7FxO0lP?PK95XI)je-98+Lw7%qu!YlEeXO(2QtfPN{9P0* zLKxv~n-h`j>ZWA=Nw|BwrvRUCyMMATBagYP@f0%3@O2piTg*M;UKRNJPxt!!sl-pd z75C6oDAanq-ydlIBHpE+^lDJHCGDi&Ue@I5>-};fh1{o_47Yw8WsP96{8(U}rPA5l z__ruXlsL@SJ}V^I(H)d|64!dDdO+x@zMEJR(97EZO9*hznkzFt_bA|ZWbZwXu6z!4 zgAVtUUJh-cR{|nw1ceV`azzTqUAu1`OpEsOqV2kv6k_fW3aU^2<41o?-Yx_6jnA=Z z_zbr#w)nTIkoWQ)YbQi;g*!;C(u&P6a}_2q@pf?4JwT{dPING)#Q)^1oij>WPBc{P zW#tPT3lAEDF<8#QRzD~v=BKJhrY1XAV%0cUIlT3#IDo{{!`r<=l4)tVl{}dxe!_(v z9QoG!C;HM-k7MqBJ}4&UpsHIYFFQ|S zM>kc=FVEz{ZhV2wx5`o=nG4gp0_UFsz-T3F^RotSMFX7D`vNa zU%fJ5lVV>1Tz>&%QcD=Tt_5k&E>+IPqpL06o_58BQT_&Qnh^oIDM$yTTefrY&XJ2X z(oKq&WhEk3#J4Zph;sd1D-LF}xK+KNM2$lx-%vzURopWe>h? z@w}!%xpu}Cp+{w4M7gE4`V8);Q>YCx@gXU29D%7;HdQuLt#m;IdI_l~g3$`Dbg+!_ zI>VtVat7@MnfR9CzzeIxY6c$TNpBd(bqO{H(mi<9_-hc7bT zzj=lBs;+P38#3F*CiqkZ2r!rOD^_FT&ud;(VlIJYY7l1Sx*&-XNBlFVv0NXd zI~`vA-;vuP^n-7(RQvGsMoLT+x{SpZ)(ko;B`#5 zxavT;m-arZ>YsX@@b7si?w^_XSGfyE_yV)Zc(7v)Ao`Z@%1fl>C52dNp){`uFJ)Er zwNk}+1S>7Fq+jQ~4!}GRIL=d{U!7a_>Y{$$+soSJz6A4Wi-iFmfpp{5tMm<*s60pc z+F9C)ywZ<1tn)wLyj<>QZa!;1-^a->-*CYpXWjV-p}T5WF$h!qa<1s+Fb;m!auGdupkXkdKTDDdMNwSOeyL*BqewIGv|(@NVeEz8J6P$LJ# z>uts=T(Js}H@O+3$VCARsHJooajan%LAiW@e!ti{Jp#4D8KU0l3yj=WX6z7x3D1%A z&0GK<7Tae=u&wy!Ydy`$l_R(oI8)p=WtCo1FkFwwLlg*W3kn8nkwplmpbjL|h%gE^ zMgjgG<*~PCK|lZs51d4Pxc%Wc;(tL=bRc>c%M`{pa<3ad%LM?5p@6{aW85jJ?q9CI zIZk+(!y@y^47d>jWKgWl3Qn_3>?#h5=Ved6hJtMN07qkB*^SZcCAJrbVAPsd=wPcG z69;=B%~wiC0kSRm;A-0Een2cpW*Dt@0fJ2g_0-7J6c{yi5<2pWbqn7+m=rsSYfIuT zIQfCUcuEMc^Ff#o(^NO$kg5450=*A@mw9oj{J{SMCW!xrcBBsP#dIWOF^Qp{7=#W` zIPtN8*gZDSICR?{-x0^%3-AdG$P&sY16*u;#fnjw^KM*|kIN)VH3^F87APkSad9NR zmW(mTx-rrdJs()){R0IOv`!Mn16zp~0BRvn?+zyIoa*mYH%2ojPV;;)p`#TGa1~*I z53EZLjyRS5N>?G~gjG3mpjf^jpqKkRfb8tk?S{ohDU4#{UB=9mT}Euq_BRn<&)^b2PJTBTTF2chrJTA(ei2&Ts?O2sH<)I4d*^GJa zf^clm3heRVrMJ_}o$h(}smz3k`NGiHk~JDTz6|0~a;0tZVpm3TOt~a9vwW`BTu?!9 zT6?F93x-|}zuzq%UJa0+>L7(xeds@-w(2^M!rWFTM#Otap z#DK0qAI~-Gpxl0n2?JD=;x3i~Qi}ool;=_K5T|?VDF-=d1%v)S=#6ese=EQ!SnwR< ze6*sVD6);w3?DK8oo1Yb6F`-0`xdqawZg8ubA#p54dC`uoBQ_4UyrMIKexWqyxR2N z`41xI+sl7FYjQNMHveb#0mSM&{19v_X>}sbB1y+dx61JbJ(#%s22XpuPc#<3csqQ4 z&njM`KE`*Pe7`+A68R&=j}}a8o>I9AHCg~o%a{Ho^N^Mh4D{c6;UdcJk-1cpL`Y&% zBI!Ozwy?eLvhYd3wchc*;Paj6EW62t=bP6SKJvRZ*ax3-vmHgVpIUerdQv*XXr{;0lG@s8eGydfihGm8oN(Y{@ zQSngf6X^g5>9sx6PVohJA(s_F9$g}1*f;&g+8UIIh95qBrIOr<;0{~lAaaqcGLtlD z?mCGIRMS*dqDpAkmK`=_(L7jDizyvhg64>znTW!z6(FR}w&w8|oEq!=ng&heODV&OjQ=f70|M!+FEaeJayA32%Y#!J+CC z3dM=)YQ;%|OZudRC+QO?tdisnDnsy`08Z}YNr;4@(AbG^Y7ip!bt!u7q&Ef)YW8>9oTgP1K)Wbyp`vO48 zu`&$E{%t;7vCDQRRJXy~M$Kzs>4J0prd0r?AEVsE%QQ`8V$56*)D8Y82aBty&*AjqoNL z?*sZ#dNpQdY_eqHMK8V<#jDz>%DCIN9K7QW{w6G|yl>%Bk&%8mGkGtHhpk(?@6)xe z$G>zfR>Lrx_Kh}Gf3L&0B6;FG0VQSv4XHDQH_Na(*{Shi?q4QUk9;*2c#j6zP~pnchKdJk#P_ z=Hq0+Gt5m)&-~8U#IE|i-n_Q2FL<@@6T3MVCet3Ns4~z+_V%|#uWtxp%F>j(sN-EZ zPxxNi>+eC@om9HJCt7q+P`|y#w*(U?{rh-)7~W}X^hG#$!Ga@#AY-wDDG zCH{Seo@K8p4GZ=Kn{1l#N9tWQl#$ZXk9nfaPE z`=6_>z*+Bn#?y}xr4gmbLciWKy&zjw2Tdtv1JsRVWw>8!DN@Xo0}SPgFDAVqp#%fe zVZe0mdk3Mj{wy)=_Jd5|@EzWsKOf{eUwB6LExl*qv$Y$e#W6QnANpstz%3qTE-Y5X z8rucz9L9A5(;gQ5#&E(!aBqe&5FvOkuR#=$ekL#x{(G7*0%l%lzOb3+zq=Qx8^(U! z$Spv=3^ahfNEJjv2?dtxxAFaR|4jJ$$-g&pS#A^LXSto9j%Up`t+XLj70 z;LI}{{5Qok+1Qsv+=S$dl>k8ohy=QAmgRoo@Kvw7_i5)VJ-_*4zC9^uyA!hGxn5 z%YEBvzP{nZe920SprqVm^3OgH9R$kBzrcd8|I`(EV6(W>GtP>>FAIs)js5*7o&h^V zhFr-;Ax@+v(}V z%5g2gIpb3#d2kA@78puK4hLgP1(ukkwj62i=^Xr+(^ta)w`0{c`=ZB=T@vy2b~|Wi{hb{BJ1{K8C;(mU%h+k1HffYd9FYl1Z$C^gD)+%;Z$QQ5`Swq#T=^;#& zd{$Dvh*2>6D`e|Op_+pcb? zjfm4)spB)2K$rdfQQEn5)%To5=Cl1@789x)d-@@saY>O0uhaTO(Dzt3F#9*Yf`~w^ zoKs{F;Burtx^}i(?L9|<%X>D5-rAu~bQ#2P$M3{{)&ng+awn#bZAUQ`9w)+8C8KAL zeB%SH+#8L(Y<93%X?Oe_|NKD=J-7y{kqv^FBAgHg%Ph$+E?*;p)1g#mdKzZdxyGur z56Qzfzb;!SY00E(l0YCwZ-s4=!E)gl*_lbGS?5|SX+N5aZ@N=3ky#ZFd{P0*;fj1S zJd>71whK2dn2pmd1MT%#P37t+vS`HRbA`)i5H{^E8IVCnfsA{zfuH3bu4Hn4lDkH> zP$3z|s?`%p#gQ?P^b6Ppffkq}P{H)H2E+s{u&@TkIG|wU$qda_{VEI>WX5I*GL;n_ zG&0`EF*Hla0hR;cz-E)p^*x{WS*tD_Ek0U52mSRkxcNHC+=In%=!gs}OKO9aU{xlc zgAIszt&uLRdzH$j6aaD)ATvFm=^HsAxx0{bPg1;b7J?0&6W*=&Q+?fhom?rmZVyp> z?EHN_)6endUZchS7tLy|7N_>mV*j}P(bxd1AOLM;z>-hlsH9_B*r|&EHVWX`(8Ft! zQmWXQsM3x$s`g+mvaHg4^xv7XrQvaW7Bo4faeO>RJj^gyMRS2m-pA3qBluwjQaIC` zoclN*Rf?(H+FqpwFAN$vn}#e!6|34hA}+LG#ZvPzo&8%nCVEXr(UO@iD$$_XtYr~Z zX*P;F4&Xt|Fs4toq{Bpyw++Ew@-UKn86nxKOZwuohQLYh!PwSy8mGGXIjd7bEN4v+fC;e|`+vucYbOt@8Hv%l$sM zzNKxFrB|lMmo#g(y%CYZFv1Himq;r%mu9YD6&O+LuEiVm#Rao8Ne?^+s~+5za%BTk zIG~fQ+uB|P5T}5DehKa(J2wfz^S^l=I8W|tk6bKXgDgVJ4)2KPFyL8==g>R^v$6lA zwL-B(rw<}?(fqkJzLo|W)8^ff0?8T}e`cpC7<*WV7NSIJ$Fi<$PN-Bs6ENk|Lx*;> z(Kvw=5|1is?~V^Y+lDH_NV~g$Kl78C1F9@N`wi~4KDk#T8!P*US%#&0LZ!BH%Ljg0 zvl0L7OA=MZ7Cv=1R)!Y0?OyQG6z8qY5_P~b@hwA*NlqJ>{6UZnTAK?2-aX9m*MVK> zqu#YkN2f@eN!Tx$903piqv{v0 zqr{()s*9gdULar(>GcI!I`dqH9$y5`YoVdpd=!r#l3Ai-%P{i?f3iU`qYs+zhvEag z0UpIUi*oJ}q1fjzPM`;KuEEa(xHBN#?j7zYcp^PvNS8iN|D~_O9|axj%i-2 zQ_k+g6j=7^vbkioRfIPC(rrC6WuzDwoJ*yDL!n zB3$#^#;K;pc8ms5II0m43@QnAJyrfk~r5T9i+ z`}Y#ijV#|JN&Vfr-(sN&etmuJQ1wq_1l49{upoH3W?HlAyO<)I3?+7c{BBT7nUP~85y zTS&>CI%FO^vtA*U?2@C{u*_ODu+OLMICz14%ShH7(%ulg*&5bP@oEsX0lW zI5>yoMdW!CNpMbrHxa}gCBZo_;T(WHOop+0k!(gNyr>sh1h7XQn)2@f-W5G_*KBrK z?e*Z0h9o0Fz%JRt`rwRt?UbaVckZg)N$wW!(%3G^Xapc^sIpTmcD~!Wv#xB1s~twM z+VN_)a;|b$DIWu+5O==WshqpB!_y9>SnhniQ#Dt$fW5B5$&$t>V!%zt!N(f@>8N5Yc$VS-3~M*U+e;6qHK6cejUdZru)NyLYrvYWD5* z5Km9%mqE<5Rkqc*Q8b2NO%*bz^FE@o>f%IBlFK%4eHYCIP031ZK1dhS+2t;G)(4fy z-+;v$_*m-YdVxWXlPv$=8TbqM**>5j7!5f9+-LG;Tl0ror%abd{FXoj!=4WI-w%Xl zhjI^!t;yQu;FZzKX?`JQE;>CSN7ebR02|wnrAC(idj|aCm|lqy8D1fARZLtw7ir_S zx6>m&+bceT>J^<-!31%$8!(bz(cU1c7$`BdyT_B0V#aZ`N*E=+n8_?D23AHWkM1z+ zJ{M0-7;Z1HJ364~Tf-)U$(Cm*ijEnW3?kdH#=S6ARBD`HoXF&-rpow+iG~TerNDtB zQ>WWp+Xef!Fc5UyQsOx{ETQmV-1d;z$lxz}dfcROvDqiEeK|R&4?Y{ffRThq zWg%EfREhITEe2@ObzMRlVa+{Spk>KwH8?d!yyE9(ev4IJN@$qMATjGxI;7q5N zVocY;Rp91@KaQ`&7{~Np<5j?lf?kA zr}f;e4}?}br>AW9qRQE*a*&BaVF&7yVOh9dFT^ zxfrLN4Aj^mm0Wl8pP>3jwj3;2~KPbx#d#{uoQO-u;5&%ZmcZTzOU|#)ile{ z445?@)VV2{&cM{Ge$~-4%sc@A`U7~thlgDNAI=6CO%Sh?ztBnlMW7` zKq~2 zZvR$kRVAm`cEGR9&V7j&B?wPp;Y0nyo7*A0jIzLyKCMcs&8wDShruRDm~i#@oWvY0 zgAXlCJ}cAyX^>OsSua~sm6Wzx(lb|w{U1flYV&3|%3@!X9(&8s-s+GZwG`mbx?O%yiOX=kzB zz)GM#ETr09wvMH;+yNlyP1>2P2wUlUnAq7(bpoNT;iYm%cw8jer4p9np31~7k?m3? z0p1?WJOQQ5TA(8W2zeO`nmIs?1;b+iB%fORHk%m(-^&>0Jxj9IwK=!0-$~h`1>R3c zA~Uslrh!Z5Yrgnv4OW-FTljDOu8V;n)_V(x`~YZrLF?)->@Xsq3ARZcYtu{#4rZjZ z8KL?jAyj~tTUgctoBz{XaQ!H z13C-NnaIZ=+O(Y0M{COL0az%@F@20t_Q;b%uk4zU{CKJW6u)d>Em9aq6-o`$yHLRf z5Z*^-)>vigEIi0WpV_P3dgaqIvAKU@wJ{J>jWkR18)7i33&8GHz)6Zt)PU<5(5=A= z^$m4rQldfZrlb!^j?G(da!e0ifMy_g@ z7qJnKX{Rr~32#^k%FM;>aJi&t2TL=JEHv$3H=9|sy`W|aRczWjH?LBiQo6)Uoowm) z|BiVEhL3s0qCqENbQMv?w$ijl_Mpi(kptiJ{7~f7Fs7=)?P9UvT@hc%{rpzK5 z=UWt%sNsLUSat6L=SMUuv4*eWRhXceGdViKQ(6mhJ4(s)M-?s8W2a>KUkrl0ctqf~ z0QbqTH4gKZ4r=3P>iHmhN0SycF^64S_Oi?SI343|+HmcLy_|3bz$uKSl|X~(p}}nX zYHVX8kFBtl{F#-x?4`9^=z0$dE# z{^K53eT1(9zDUK!a>@a;3{%mwf6=GHo%YT>U{g8u047M$yMMt)Ub#`4?{zX- z-g{tincjb9Ld(1c4}95C|BX_Ed<85tsMsiM@pFH#jhN*=X?SZO)YlDL+qOL-Ybrz1 z4yR+Pn|GNe*k-MvNZaArSasX3@L)f8oThb0t<_Yfv>itCbGOc(qKNAR*y@&DHf^@V zC^15qUF&j0)--jxAhLY09q%pQy$8hnKGUp-lM3S4i0pL9b0Eu@clMYQrQidArU2se z{dPB98+tRLCoiSf*`)(3&xATr87oHu4RyaPbc#Z^Nm;=Kl~+|VbQthpruVXa(nDx z;r0p?Gc>Hgu|gt!(-v*+g)sD^WlfR8hqWtTE`5*=0W_cn`SrxLPdIz zst-bAH>pt+iy$BW*e4w8@z+_+h}U_0*}U+b@;e=7pawrLn8gBZAyKZ^7AHe0n+cP> z-k*EtW#SBuqZpvxTfh#-0!Zvy4r)2J_9oV4(#XeoVrEw?fN%t9uGT?|*6o#^&TnGb z!1)vSce;jXL}c8`mjj5ynjxn00Ic-G-}ba@hbA zSiJo1Ob5|ca~qIy{&*~>M?y{}zyyGOg!8Y^KqUn=1>Ar?Qi@okFEo~0w0xQ#0g>p6 z+ikf#=w;4- zW2we}SHvVV`cE7ua_UQ5U2pVf1%$0?H|Di-HxSM(tJ>L*0{)rq1+7pAB^#qQg z&{!V3aOR)atG2lJc>DMtPXBoi++6ualp1Mx+BwVTzR4vGadAsvex$*MRzB~%m-@il z%iI550MMxG z7@br;Nwal`V)0%RRL>_~%RkFkq+GC;J>#aR2Tux4fx87uKwtQ1bS?=>z#%yB8w;i3;BW2rMUlHeHb*PRbBvh!@?tF(wl? z9n?VKIKaP_# zJ;?BAnEb4*|E69H+E>GFB4jCIB`#+hpDS|k%muiH0S;`a{9))Cz2x6|(Vr{ReQUkV z`cU3zzm)DNPe1Eq?P-p;{xq{?zM#Jp9Rg9~iUR_M%AjB9zS1CVJ+(8R*svKvC$UUHfst3lnK2Y*XOk2L zcKsusaX#C{E>uICAn%|SVa!bES$*f(7C0anEZcwk@_{hQRWtUaNJug7C)%8xd>WZ`yE) zoZ0z(jR3p8%yGd=%*E=Cto))4U6L&$kIOt@=Lw|?zMsD;GjYFaE<-9p=|ccJ{WpYz zl&QSHOGbAqL+6V(F_~AAX!6R3-_2aO(2lsl+jEA{*HG5{t39{%dOUYYOW)m!lWY-ecIdd>N2qHpN;l+)?c^FLaAt~#Y(6Ss1+(@YCDNOBtef!e%GuYqUJhQg-v zaN@{T>IxbS-V|ZT)Ovx&b1K!0l7O%;lWh zM8`ytn2{yg@Z9-7vn&U}*VkMHcUBy=XXc96QoP?XWG2!z^uBJcrD<*u;~RHz=NUR9 zdanh9PSE?I{kuTi)sgqfWu>hdSGdO2`L-5Jl)A@8j_5Au_+P23*?G*A0YO(CrR5yg-g*?SukZ3$#$Pyp>yB4L)g z;Cjxbe)_gp>{@-Td&$MK1#o-L!uQ=Jw|pJZN>2!bhkg5n%vgWn19TCFk$okY7;Yoy z>%j>gCE@VPaQnarH=mXixa%2!*?5Q!OzxTT@b|0nHtR)tb8|rrUL3_|!Y?b8LV*Nb zKJ9em%!QF#@}|DEK4!f^wE>{77#)VD#uNql58j4CAZkJha81yrflVQ>anVJwycUc& zHbs~n6R~G_lee2i(AWGeHZH0-lHZhx3GSzhv+Eds$%-Dl5rG#HONfIB}u4` zV^(dsQjn*}kaoB%C+c-|y&!2q+X8UT01msumjfte?wU6jwtGu9pfARl` z?IX@|)>#>Y$1-hxNO!dVfXBxGgquv4)dGm!)I$S*NvXfMaLFItGKX`H>mu#(0tMr{ zJTc9aKbtR!lkQ`~mC5dIQV6kEdekO}{O*OPn1~&viyoQbDCe~T&Ix}A%@crb0XLD? z11aa_KZbc|R%2qtXd=SwMepSiAy_SFzOMNUWWL*nRxdv76!e z8WWkqQ9ZpfKFrVz!bLzHhdA=U-A9mbkT5+WF4{1~fF^S6#i6^_wwAwh$O`}99TfZj z*nQ`cW(*gFE@WdY`B83pFf!iL*RTL2X$|}Uj7crihaj~i|+Rc{Y6GlUx5o* zkk4!r^_!?Y(Y4_a@_WPW5N#y5N;Op~`Klx|TfsxBj_N`S4MrywNSu_%8%6+LN zYk4IJR8(?~XG|V2n*kkcq*(4Iy<}I>Ms^o1&BTOxzCK`U2q;5^GAqN)ijyqPN4vG> zgFwiG6eJ@6o$>A1s2F(&d!I8($ySc%EvSf+cX06%sAErriz%{?$ztaf{`rkzBDCVO zE-3FiEz$bSo@d$j(V^N9t^mRusIfj>w~Hp;tMQ}xOr^2>i|ZmP6@&cc?U$T_%KoN+ z=Jo^iCXt{2IsbWKeHtFZEa1}_RN!h0uyfi;7bC z`OBK8=HgU9x3Rvq6}&*H_wG56AX;Pg8f1w6r!l#=6-G8GKO)vElV@*8aBSEE<32nH z0=4T|(V{2B2d$<@d{a6XSEG{s*?2(iPoOW_nr$ilnP17r+d-8T zoACar9O{ZUXS&R{Kl9i9f~!Iw(*@QRtYoL|6@H9JUIQ23I0`KHo@ZDthAh7&S?&)( z_a7UZ@jrAFSm`%ocvuA4FeTYA=U~RyjLyqKRQ9)L08i}_-Bk(z8|F~kMNDb)-c~tzWXuxKFI5d z1uKdmZh4lwj;ATkR~U8^gH5>*dF9#AmoyM%ops{&P;iU4i~1l(5c0l{n?jR!iIZ>t zwy9QVWxke%Q9>b}*rF0{6+WOKmNESAbEu}nW{72=kv za~Dx|i$tQ`6pr?{y9ez7Z6Sn8e>ikN|RXP1$aP9$dn)D>+fYI?|&UF{?vV$Os4%*ugONiLKn6bv2rQRHn1<=PooG zc)nlWmh&TB+eQUrkv^UBxxqI5vH`d`ivM!l!_JuDE z$AVGRSaaauiN=Z^o=~#RdS3p9$uExOTZU4VhXl;|48$|oFCjdZ?rtI}-k{lx-4SLg z63MMCXrVTXDS-Q4UF~e)aC`9Jk6S|vVHN3%Np=|t$i0%mW&?LDF!Kf|N^Y&inHUy* zcBdu187K-5UkFGTuYpOe;8AiUju zLX_5Jo*YPKUL6odmplg+>pbq%-`afmpEy~q3Sm0)pdTC$!CxHMRE{8e-U5uEU~G)Eq-TDrSPb=PG^@3dE87TVc|sAm^XABoRZ`QfURm`+jO1{Y<4nN#Krnj*e~;8`gjY{v4~TQ4DL45#a2i1FMy`u2#cK-bWMiBG)#`6O2jS9L~j1BjH9h#}r@MfQCqP6%$v{eE)d#VULl ze0hQj5s5_Fitvr64;R$Fn&Rz0AW=y7Du?p!SCp>a;~Nc20&+$~^f%A%#~%78lP8DQ zAN&LIwJQ)MNoINVLvD@OP9Vs8IVabBMu9$z;3Ih;oFCR>iC@$W=`DNoo#B6_NHz{(!5u=;gE z=v{HPl9u4tXm^IwVRRGuCXrt;y6Ysv5c8*bHZZ*x(O7$6>C%ZYr0B8`0Vh#BOwR9l zyZ3>gRK2}561Z9>nWYQHc!c=pP+rkD%_U8)_$d`n;j=l4{-n)uycc7!Ule@&WgA&f zq(NS*K&pKrOz;gon%|ymytlwA&B~IF^OOJY=K}&{F5iexvw_dRk&pbmME@9W6=(So zteo1}Bsa$h@eQSM6gls|>FozLpo^kxXV|Q4hYW+j*%Pe#8dOSyZ!*0;EaT+>Pv?>Z zZ+~uAO7wCw-&nI7g|RAV2p>Uv{r=?eFz>N_}B3_H4)6U~*)W{ezW|&SUFswwf^_c^G(x&M=>wNz!2= zvY)x7WYFu*!LXO0*4>=n3|LOUdq(8kOt|R`nf6Qu{S4>18Qp>lgQiUc@}@oTN+2Zn zj7RS=aIAx?T-m^sSJ2AxWQ<0INCRfhpHPYWf{I#EqQ8_Pg=~8DAz#otJ;nQ0;oCpk zo^0PeU&Q?etZ|^>B$uDUIjXzPXNCFX*&;3@{z!)dJ~RXjoNm>`7HsVBNS-vwQkp36 z_{v`h4_RQAxAhs-_)3y)>?3ptNA5m;jB|_mE>}I*o%!N#?E(PlRR0`XhtC!|DHuT9 zd&nxu$|A)1$({Ozz_Q(q$Yfi#B4~c@ye4siRbTl1qpQ-BLw9yFypAoZ;)#g(>9a6vST59{VjJV#;*1dg4 z@oZE`CltL-a|XmcxEt*T*-W&x3aE8wQ&f^#mIJz0EU8B;`ZvGBmxBcmG~Fr zRgmJl@eNv^71)Cb!roLLLd8eHN;26ZbNfG>gY7t$V@=iQaTS(?)N?iBi3Nl`{|&)O zPB1o;udw4eRi1Lb)835efKp89XzVe7DlqTP_{HhU(7Ao@XmVFVe3NNcoHot-leY%8 zkpOlhtPjKNp`@tm2sih*6JBzqiMmNA_)aBBpG4{V-Oq0Tb8z}PAf^IX$woh`$n4JD zdU|gstIB7(u|g0!yO$Dx^z^}%)muYyS8{2nyGww2y+`N2pR%w03b(6k9bc-2yxkx0 z#u(1{x2M2!k>U7GawlNH%f|7Al+eHHYkqknE|m{Fpmv}|J5@tn92k3&xHZ)A!M`RF z(9+2s_#JgUA~VNj3@I21B-Azy;o2w*y2npHGO4&s)Ln!!P>QpVTZ8tqwxSmOCSzj%#Be())$NS0ImT1OC_bOAN<5LT|TSlYah& zSEkCGeb0(GX9)89#c6aPy@eTz-niQ8>q>mR+TI&h7CV(C_|v;CwXr~8$=V)PoE%yl zlb-8qhLLTIH?~Qr8ZsL+AvMN0_N=-0LQc$hOW0}s@p$_#`-@Px&9OHR+N{2hV`PB= z1nopTeh86kI&NOph)n1RI008Wd;$?z{cW#Hxz@HP1s12JMK>Pc_qUaqqNs`U50_ zCI-M#PUSj;mqf~Aw?E9@I*i_)w*B|vq33`+dm_uqV>tV2KsvcHqxx)Po(BNfa(J-#=3BAJO>4N&u(FT-gWGItNhI z6Wyzd`%w=kxvH^MGY7tVj^5Z_X58Jz1l7(K7WBMo#x-FohuZH+8OGi`%UzFa+At18 z<-FfKU-{;99DkwWU4aG_T%Vf8M@R(FL6^jXuoRv$dXd@T zl>451rmYQP3pY?`h!Urwc2^9g{b5BuccY@$kLl^euL;;k=~0EzWXjtbPW5vW#2fy0 z1X_|se8SJ@^v5dJRGD?CYiasRz_fptfW`H0)Q1fsZAkWE?Foy;_;rT6{dN5Wqduf1 z*>#nMm8Jcea?PSH<@URM-VNwxr2`P?dO&Vkq)6Ain$a&y{gHmzvOeSX%YE?`<4sBj z#Gy|3AHDl&Jqr&QOj&FoPyIOGQC{%^}^qs-S1ZsIZo2bzTx#PHZ) z@GcwcY1g8(qvghwla3$iAV#_M-n=2@l=FvHourB5*RCv+hKO5ZTLKO+9y;x%8vfw2`90cCzK=$Bqyjq4$9iSG{Do#BkXPudo{t*ycL zBlFD1mP_mS9UoEe+0!}y!$dp(wO8*haV<7rr3;!>1VQARjjfc{16$Is!H;d3oql7Z zo&WFIdfa4``NqXfT88Anv+aKFfxO9l<1u3YGkZ3Y7c1a_f?%QB<{SSv-I5l_^fG<+ zfaT-Be%36DwdaP{FG`a#eO+HJpL=qS1BKn>wE2c!^t#JZ+?n3iuOByke0ms>g1cw>O9QJq$*PM-ncZ7y-++%i(Ahg6jbZ6SKkQJlNycbw{|yD^ud66UGWRtTiYz8?4> zJ}wul_^umf>x`aP0wOa|@$SJW(_SZMr^oY)a%`|_Q0vr@gPo8gsiiqS)wtE$?bU$R zbt59I>f8K*QPKILsyY|#?2|JO02e7niFp+(?ci>x=pSO22iki7K3cubp^f(kgjZ3B zz3aQmJ5c}HuS?-ghte-Ch(v%N$U}>NryI7Q%36z)0QK2brdR(>u`@6=@OM~>&EDVN zbssML!8<_Q{$c+uoRf#*>5ui{#~w8AIj1(CL|1fcu~F*&DzuznhLTH&nfx(LH1xUm85DhG1epjs~k^) zdK9USo8?2kXn7%mF4hqL3D);_K0Srz{sBOklE0w zk20wT?$b?HK`>1{xZ6+uzfAh*xn?g)W;Xcf73T6S^1Jnv8y49XYhQis3MDR!%|`Q( z92Ns%nkOc1E3w*A9-JNDD>7anQ`$LWQ+=3SKJ-o&y;``=Vy)w&uWpwH=tzdJ0O$Ir z^QUH-QfyOfV!p&59YEPy!MAn#HF7|vRF;6iBca*k#EYX^#x-25+332pEnk)1>P`HE znj`hf_Kyw!)hqjfreGo(WmeX2x6cLD`EWRq`=)D~IEGC-ueA)+-kdks#DE`*D%>e{ zZsAWCYW^Z7)_lW}mOsF^LuoOCt;?0=at&iGX?S0q0O!;maQBlM@N1Oi4oT$VbFQ5@+D+ONEHq$gmd@+>$3 z3@Y|2`RgFE;xSvxZRV3nn>d{Mjpl1Cw+7ng#IhyDqqY`X&8Lz!aM`$C-xgxy_r&el zX;n}2$%IX8cI^i9DdLU*J5W@tRdR;sUi*=aNRaoloy*}`7aSLz)87jJ^6!*^pWeAl z39!%eLF?UYgl8kWFYrzx8k~4H0kZY~^5wXvyYcmbP5H+wZ!&QWq1SrM0pznet|4$J z_XOv59V&9=0=7Gy@DA6O0t%lO&IRuAZ&=-GGw==f(G+VXn{0-Q^&Cnti3ZL4w)_>2P)eEznS~iUGL(lQ!s037A^J zD7uPc+Tr?7+F2f8WTk-*W8G|7uHZaVSc0^|$H*Ji=(6x3Ka`*vB>=kd?-qozX69h? zwY&wS0{GAQet{$bi=lrJoUlbs9JE>3rY7^ym^}45G)N%GDhkQnPt}vh&V!Ks4g{yjx4a{F?q0=UjW3w^ z4|!vMP?Ed}Xdk)^gs0rZ%&w(iC)iaO1qgeB=zlv?z2In^C1Xf~ZL0XHq&-T_DMzYt z3KiljmNmJta`UON%H-sB;E+Iu2a0?D@8nSwJLp|-K#{Quatcxv5DOs(#COXnWKgA! zew7^Z3M3}3t2SsiB(XY;#Q(L9s?_Pkv6^+~5*z*}jcwGG{@pyL&}l>}0B(r_%Mo_3 z9q%ujG@D6eZyti(TTvzusF3VHNo+%0by7V{Y0_bGl5ODdhdxbRCqQ$>AxYtqe2eV> zn{-v@=>KaFJEm*yp{qXz9oQ7mA<5Y7H2|+3#`Lf>Vgnr#5nv6n9UpR4?c(W{#l@BJ z`(JVvI6niX%wfV?bgyj&$AFE%W=iaz?dfW`G3Rkm# z43t~t+sN~6fMdv;w&&Es!DRA^;Z!BAZe{%H1K*-*#yVH;^Y)w;;MJS$^pLZ97k8KI zU>|T226v$>H&Re#)Kx^DvI;T+QOT<^OJ@ckb1w!yzuJ)80=iyh!aV4$YbQ;Hr2Q~; zH$eN`_=H?ze+Q5~>bP4i=1G(7`jd`#$`HCYP(DH9Aa7es`~9WHygZa#BI*axx>R@C>vJoof&Rr;@8l}6 zwY$fXlVipJatIxSIKRmQIxrfAk+p2OB_FHaI2b-2BxDN5YO4mZ>O6QBg^|6J zxETP~ki9W!=0DCX7g3IX!TgLgLw`EG!pu1PC-6S9L9^Q^VZwCgI}CS5Jv_6Y$1=t^ zC8PzErG-BFVPVz)qxF>n!@DhL#SIK4b0`y|xQ?cPSi>16@+A`~Pg*igS^`0|hvLU3 zk!3LE|A1lqe8JG_RO&k2kdC<;9SiTo3MM+9|J-J1x)~;%bCK^;;^KI z@?^qOSA@+uRwv7BQQa|?(XhriGeX7C}BC8D#Jnp!D3%9faN3u@g?2Zpj1j6Krtzm zP%5c7C%3d1N>x6KsY*$TAk+O9THL*U2x%MKz0U&@`i{m~!q=0F`DsW0Kzs;02Y-M3 zfSz{pGf0zb-MjYK&^i4|x~C!C*YGvjB;y^a?0S-~;K9;uK$mUR&*hCyU1DZyXyzo} z__3@kRnH_txgLWzGIcRGtCng(@{JpzWmgOixhi!@nNoW3WIruiHzh|%E1VplXRm5= ziY7qzCqWcV4g!0Xw;s)A#GM*`lNk{h8a-AymS)fXFOL2N;;zA@a*dLzwDO~icBl#% zOy@ch4Ps|E+a4{o1=eFAc;=fu%1&@^@Fz-wjnqr%?Q6rUT}!u4Wm-6u-EG_GA7)eP z#rKM|sT`cT0HQWZRjH&uDjgCg#?%w=mH8wUpBpqMFZ}7CWxl~I*zw=Jems8}AQ*f( z@PU4Uerq`zjpC$7*dU);;lFxXGZv;u&H+z!mvm=tl^3;HQb27@>Z00tX zhm$Ce;>dxgnt1cI!1DEp=T!PT{ibu$t=T3iPcK zsZLVKpnal_ziEYkpFJb%cmfEEo$>$As+e6_0f;30kpZuPmr`y9}u3bgwjcZw6o&Yg~ZG`&LJDZ z(v9_$C9OWYDma-tu@2RW#O83u3Ni+`etFK%F?J#zaAssrwLRi)sk6d27xl_Bv{9nF z(fad@lIgxVjv9>R;Ts#_jD7Y<4zo?nYi3c|wINmzD|pji%!+{TimKr!F8>J$Ixzq0FDi_L@5ZVP zv4VDGZ)OXNqTuVJs`!aJ3^9U%Ag*Bb3C9JA>3XDD>%)zrnU-hxCZuW0qt#Mgir+Q1 z_Tb9-1$YA**(RN@sGQpX*P;NNQYaVL77oM$SJQD1o`-?-1 z6XUE!7;z7XU0=P1BvH+#Q&#yYhj0xc($eh-dugA9b>Grkyh-h;^z>J!PJma+w#jj~ zm}S$eR@Zj!yq@@t6QOYWL;BCWkSqHp3_peL1B98^V?BE5WujUn3&C5Iv>jtjA?_VB zS7u%=hN2yowIOO%A4U^Q7U;23#MZ$1bo_-NVa*|(_{6y0_;BpID?jYWGI`-yJF*;Y z%`&kiQ)uC@`N<8y3CEt?_6%Q#G;MvfQ8d&19M_06ZGNCl z*qAR@ies|u$(~gEsHEMMe~HoE=5>5|o6BXplYEy*mL&s~+*736KbMD^_CG|rh4^8N zfK{4~VUD#;cg>@Z&zD<1hJWn_Rfb;`o$2=c6&(D4i+?M$RN6{bJ?_ zed!Ijq1FB7cNf^_UBZ@viY5?N_%G7;HdW<*!*}q8 z6fQCkc!wE7lJIRc2epm|N;o+iajLo1pj#TP!ZI4533!#=rYKIFTOlj*B=A%*h9;SH zR`0LLW9Km#>v8J2=Og}U4-W=*6~kjiJ+xQGH{kf9(q1=kn`3|pspFVF@zpyMuJ}tH z?o*H*1U5%_#zs)AX{qfuMRLsjJr4K7EtY8eXK84BVNDY~F(-+d7#WyOgQp=04vj52 zfoZ;$uilHwCei+VClwE)F}4*jVjWZR!}?(}%hef^L z=nH?5<)jq&XxOo5?Fa;jg~u*AohyZk&jQ$44{ytD^&Tctvyoa5I-5=Gymo$-!jX#< zXc@aK1mD_YyNz-^W5gENr349%SPVDu%zA18w&+X45fnpfI@P?ZzoKjdDnmA*L~C7?6j7?4= zRVQhj=u9<=jP>w|f^JraP(g}GSex_g@YGbT!+d&sOVQGVNp)512uUylaExqLPq8g6 zHhptmt_XLz1xb5p3x)HY+R#O>T3N%|;fCk5uca0U*Dk{A(TFzDJilP5nOnFW zfou}ZpJFv8alQ33T$LEPYH|IgoJe)x2v)stX6O=+WnFSQXMO~u#i+%@W#Y}7x!0uo zS3EgXMA2x6`2TGy%;d(tHI2h@w81qLN;VhdPv^Y;{R5_=+BJz(0A|zu(qqZK3F?Rx zS+5Am!M6x{7gKXy@YDoYE!|#8rI%-zCpfjyYW^@SxN(PCGtQgv^D`p}s44vEjZkec zuC-_uIN^lrR%bcOF)E8KA4bPOA6PR;%Pm1n9-wX<#P`7qa4P9^+u2qZq;>x*_JYj7 z=-8m2;(!a+VdZ%mCEQ(`8fi zEyuO>sA=phH;*FdPi=MPAMIa2kXZo*qX5j>l1vq!_VXoolTO#zf>TiYkD1FcBu;=#1>Fz=?-) zl6ZD)?&TbK4vMo)QVoV?a}j*5aYh9#e>ZT%DFwzSY52z3W>zq#bm;Dmw!47KzScZ(PUBAs%@aWM z&RSI8sYGB6ZdH;qMWbr87$cRGDuXR8plL}33KlE_o>9We<8&#p6(A=K>azbn{3A`FopQEQEbj5dH|ev&{`$RJ{83H|<+kXh@yX&9-KWJBN1X2*L-sn>o zt@KF*J50yS%N(&)TWcFL>wW8^r+wh&rE&#|gBGgMa%jAy1>_ZQFp6zke+Vo)M7aJ9 z`O*@!-OozZ5)G7}(@(J|3pT3Sr)dP4QNDH2(>_mmZpxL2 zV&=IpiI+Bmw4~`6h{Ggt;^u*>>h)opV@P+`I?5Mr|5zVAQa8EZe_w24=EUU)g>!90 zRk_-p%37_gT^hAHg8imFi6}CG7yaz;BnpHCf9!+?N?IRk*fEqn)Wx?7b(HKlbg#=F z@V6IZxB1$L47|5hXlC306zX?TZYE=K4p6H8F-91;rGQ8gCd-;WA=b>Ub zM&|y516M<-{!tLJhi7aWlWmYS>hAR_EN+9F&jnrQ_*M_^ADzl3H}CVnFD&l9nTlCw z*oJD7XLVTGHCmgy_p7jy_3qw>fwz6c7AuHVoE2Zrc`b_uoy_3+eBmi17gM>Zt~RCK zw%vo>oNwm4Vm6G(WKRJ%s>2Dl>bIqxXRO9Ny#MOt4Y_&WA9c=Z_3(OmJ$}XA>l`p# z`5Q%H^c1znwg#t))p$(BFV<&0aY1QzQ8}Q^KonN?o7M$T(@=EzZygnyWi7gUowr|} zK%b{vx;z8f)&^r>|$59!HVI}&}H50!(85 zJ_x|y3BkyAbtI?8r=VpjXi5Szm%(G6Z#Ykk{mKK}lhs7|WP*I{;lNQhpZm!rm7d-g zOXw^&j1cPu{RBPx@Enq0t!c=PrN$-41_h>5^iz>|o5qG5p9GKZXObL0CZ@x`TP%8b z{!q6zi+W!W7uKTX26x4I_-#M%pHop+cYPw7+xD)687}jz7f!Nby>LxW@V09~ZzHM* zky&4qZv@DyE@@~SU0atKLiRXcnC;@1p7C2c0&COUkP{g1ajw3^<;l5>ZYL#1zN0fa zDLxe~S3;A?xlAS}7oeXbNys$`$hQ0+vFIBSJdN^uhVk>jXOFo1oDVDMaM&YZt5NK{ zJ#9hqci^I;ZX)s)i5ck$f#+Y&nE zXOXB0sbnpRmjc3+?*w9GOC3o`u_Ga?kQ3;39JDrSKn?Y!DAKZ@t0y zMaYN$iQZ9-Nqh+GX8miBFAVG`?Kb77(G!v@dDDqPJHFQHWAMSR)zUF290V1 zz#PHVVuY+SG0uF;U^aCRvItiP1R>nADoz=2=8%h8N7+O$(Y8^a^3G9&2r1n(8g8E3{{(5PFuV8bsH9_8E?i(afkIlQq?!3q`+GVq&UNLJEaw2rjnZ8j{$Cr<)|n=pUiZ9tz>w_rp{V=floiog z91$DiN~)9fpngO3+$h_(17k*ZxOj<`V=3dwO^egB1}HMU1t@s45@_>{*cWHaG5c!4 zzAx(;?cp(4a-PWk!|`O!Lu4t+=PU7V7Y+tZ9q0k*CEn@jbeo9N^!8w6=+SSS&Fv)V z{x-;HEfuc28 zm&iB}_lUbg4!|gRAHGl^i5-J#BHV|-O9}o$2TvS4FJttzyfUyX z4o_;;vKcKUu+_%&L?yb%Y^Ag^m;CB>uEObZeQpI(tsJN}Y@1hR@d8RUFT!zJgky~e zM{^MlAytzEiJxQM0%=pBRCz~Vj))GuVIK4FVfKwhKR+v>GroBB#}m`=3ewX~eXN^# zHuk2xm#2YB`4@L1YnJ^T@W3?Z2kn2i(f=hn&Lb81yG_wYHk?Bg^FIzMA4VMdFV!m7!`ycMunP+ zCK39@H@U+ExW~>=XZAOw*B2|XdX#$$Rp?d?Zk_KE*Ewd#_32xig!(FOZ8UE){r4}N zXzSeMIbn>rE8+riUjf~^yi2=$>T8p_JU{ce)+o!f9+!oIv+R2}#>cIk`$KIutk?6r z>CGs7qnHpqtx%7*XI7^s^HgVD=BXCi%+uKV%rpD_KA0!n{jmA^?!Y-WIGC>-_hA1v0lYEthc0WdAXn*4LtNFm2ue+PCx0tW{nt$IuqRo#EekaOF+*eG5vico#N*gdNmY_L2O8R-4O%cxI1Ds4WMV= zggWr5>Ld|#dP@DvQr#-Nm@U)FyILHkZlB*S8#Fmbi^K@jh=#4X4>E%9gS9~lsoJ!Mx$_Oom z8O0@`0mIM`hbGwu1j8UEhJp9mS3$;)ee}5t*Nmd_*ZBE1`}c?m8#W(8OuYSksAsjO zOD`xMkNBXrW6BaGx=6PXckBd73ndu=jQ)fMA;Bc7W|$-b84b*6YG>Ywx@Y$oJlSKu z4QxwID_mW1Tj9d)W32|pkCNS8`kos5xpMT<2L_0ibtcm4tG|{Q2a(>h3mzHIWzMIm z7WR2|N}>J+-@eFj*|*{h13vOJU>bc$JP}Q?4eW$#BqKCw^l+JB57!C194wL*`t%+LO@v)ImSIdh z2SMuxbQoSEU~5pHl|eB&B7-7dj%Zp<=q*IhZYWMym0zp;Q6|#{l9mzZ8Wt}`W{hVk z++k@ie$ZeZduy!4W?Azrww@n|gMJm*+uz?E2z)V44GS%W7LB*r85Ls3_b)gb2HeFE zO+Pw6aF*b=4)_Tj{J1z20X}=!EP)9BxLYtbZiAs?Tm`aA%?>FRN!25cCS z+}G>l)Nam;z5mw&P&a{$h>LV}fx)mn5NddtTbXRNNKEsMJtAOXF?5D6$3(O{9a{5{ zcJp^w89nEdb8)U68mF^II$(S;$$PWB_LQgQ!n*6USo~#~rV7J3Q82Du{M053vLjd7 z`+f6-rG`41PdsU}{y+%+$$y#X&$bvSU3cWj2)#eGpZ1@{Des1TMSo%>ix>)a?W3^G z)YfWBOuGM=S&UfP_I9MI8ZCx(p1!R1pvKz15`HrPiKbLB?_Cr*Ii~VjQ$eSp-)1H` z$Y>D`M8w2pvXCrZ(x~Az#}`bz^g(0Ir(kQ+yBI`J@`k}v#$cQ=V3|X>e-anmz8l0u z+V)yZAUgMk@udbRZ~x&ZgI#8ij0nAx$8f@$_q$<#VM%E*4NfrT{b;_Q2Bmys(90MM z5o{hPZ2Y*xJHzs)(7ZTyR>ySV?9Zbwc>Mss=e5@_!&f_aT2wL^rD|T=>ruhDX6(vs zArOD@=JsnPsrMl$a+hB8(0BrggEws@k6X+w6|gi0i2VVBtrV-Z(bPf z91q8PcS-HE%E=AtJmN!e%&CC)SI5P$KUixXVcK0~%3Edelx?%9F?!1;S`Ok16X)rH z;|3*K?|;l5tu2`PgV;`iZ3qpWv22Zuq10H3T}r7p`+_!9=`Z z!bQ`LO|lJuP8drk!Lm{b5~FJT+MTZQ^$2ZVip&52?U;WK&tjkb>d}n&pwlCQX@kmQ zUWtfpx7n%i!JUT!Glqi3IfI-jdVN+ui{93J^+{jEgZQxXw-LkE0sPJgc7}rpPR7|B za4|^w)TVdsNXu4lkeH)3;#s`ZL|l>%E;~H-v;UaA)y(mW=ixKk*T1?#4`Y4BJ+^1I z*lH1WTmu4?Hp^7Te5EpdC}YhxMz9z2DKP!xOxerl*Ndq651OusZ+ajKcFUw_!D+@g zs4LtSWbxO@c#d#A);#rM(J`jH?2*W$)|dJ1$Sk(`{?3@12}3yD?RF7B;@>|Fo?}#Q z*TUOk6#0H=Vfkcl=fKj?=0AubP-S@3wZnzThk6-T<{sXihuS8(-!a*LzSYugqRrU7 zlcVdx>k=TR*iQnt**Cm1VC!JN#<_q;xzz0K+DKGdcAnO@29qi_xZxi^F+jCr-{X_< zWasOTPm0M29dsuUlbA0i!LA|LVAjUJtG{_BFMY+U5m}gX$1V3^=|vA|6Uz5Ar#OHgLKTE`I6nx^4;ZFwLuz%_G1O;YS z89Y;&3RGFV8ipzkP4e)!VGyG^;Jq{|$oRt3O$8|oKc&FU1jD;U#(>NKBZhr=5%qpk zOm3Fw`wlD_#_vX3>iy8S7w9p3W5E%EfxBEx1nBd|fP`VrKC5~bZEuJ+{w%s(h#t>b zbny!6T_ndi+jQ|Ng8d~Z5;TXTV23_!ZI0~Y>IvDj6Lk+YNlEvoDW3|*Ag#-eh)BgF zb&fOJRo4^OiV|_}AnUu(g9D$M7!~#R^@`V{dAcruuT~f!VYBSNb{rcK!7C0K`w4l} zAMyHw42;cQuzMbbMTE8klH2^yk$;PMuVmjMQKu&ULhQAMf8Jq<{X4%9{-`Vb@wD*A zEsy)Ziht)0kNZ1D{W8I4UN+c=&x{+Es2Zq0Kq08Ncbm!{gLXB!xJu;`vWN%zr7OKbKveq-&VIl@9P1n?j^ia7YC6A1E z*sMmVE2BFIh|Z$TpMZN0t{0UIN@zYpbuT0Iln67*yJ7FrT8)*{(FWpJ+%~?Z#-nY2 zjzv{7N{V(pd(oCR2+yp)wr$>2@|M~okaYAZ|D6Y+Y3}YiJBE2ko`K8J!TrD;6FrQ2 z64K?2#{qpgaWcM}U~oSO=Oz%^Z_LzQH^OY9P_Q*bTbsk{xO#%AcA}DyNiw0% z(82o(MSI!lR`}$!_!d~cX$#+EJfHavDc_DHvSlDCr*h+@j%JOklz&QwgG+nPNB}B; zPy||l9H8hy6hhrZQ%IGmID2^Eo5ualIUV`4rX%wZG=o3LzPi=J=(qG^SB@;X_6)uU z3N{34YjbQHS5J6*JJExvN#?YZT~X3L=~On;oMRQc#CmbDWK8=TuckPz&7Jaie#&H@ zHd{CxrzKKa20cfCUkLmK(UI%8j-37~dR8Yh9P!7!;O|<+9|ZiNg+C0=0%6YUqCW%>#}=2d<*Bg*;pf$o-+xD*!uMvS2U(K_LH&oEsHi}qSPgHstg9m z6k8f_;|4I--J4qN{5TA#Q-U$eXxTK=bNgD%^=`4%ZKJtVB;CF|Kv&ELK4$VVo_>-K z4IODSvHhb@GfGPPc2eOocu+x~Uog*M-Nu%JBNk^rV#Lg)%-oK3kAT>N_kZ|amh->* zIua2qB%1wcjQr56PwH&*K8DaqY(BmnF&f2uy`9IXZiOtwUdySeVXfq?k+b%jc69}y4&11L^cgO@L>GM(Z#VIhUgE3i*^0f#T>1U^A1074+s_QuM zacPVbaU!lhPJUdwcRBy>=bYSf$SJ=DYG(JG`}Byxycl~P7n5+6MetKLpJ${QVHEu& zqVfNK!lc>BL$Aq-AMM>~_%_B{X?7ZDP6v#rGhLGz8v3;}Y@w&}SvJUqM13M>kc%nF zMcyDE1Wx+`-~11go$-YXiZC}Iig(UBOb+VZwao^%P23Axu{(P8>G!7rgNEESG5{b5 z41vPn2qX%P!Q$`)B8g0)(&!8(i_PKk_&M0aN=VyHyM_(|U3&Bx*u)TV;%KdXGfHww zt&<&A-`8=TXmcfj4gy_z^cmR15OJc-h3KP$K$jkU1~xII7ZQ)nU=;5i-oWa=MYDd= zO@a1woH;+ZzXW1?dhLBe2qWv8`OZ-iVi=1h`TxgGaU1cU>ffP%<=Y?~1xEGN%iT9J zDo&mC<+=}E`#BDPi1q(tq8%vlb=qcMMz%zA!`u+Qp`X@}GxkGy`2Is4u`LcFx1EUG zi`haVN2mKeyWY{B=IOr%IGxM%QXxlsr>U8t8`SxIie3Jf@c$=yN3o4t{tkdf-y8rO z(8F**^*;Y!A~1MwXuekevtM2UPomwE1=9Ai(jc0@TT>0X#0&9zUJD_wLr0v)3)@H6 zen0E`;CW$4)Qd~Lu|!CGlOJEPW5-~gZ?E}(3jn`C(lqrl#2I(@52Nri;E8{pS&x-r+0gpd#G*k=1 zH}-YNhdpzesj=CCIQ6QSv#Yq1ucT9=l>J9(=R%ULR?hjH$O5U6Ibb6oeHG4^2^H?K?_HIv6UA$z8b2B_Jyr|5R}7T>-S?qI36m7UWB}+d__R^HX)dp;L6vIIpves2|_S2K_(Ca(r6mUZv%N5 zRI?=PFG4_e10k3o|3Q9&`~bNizd?S1>>&hXI|u=@g$NOb{fqGHAiG8g$P_{_L4Fiu zj}n53iHV7ciHQmBKH2V2+z@K`NAf(_$o}0&@bvXxLE^>lfl6{D1IF})fi4u4nIiFr z4K#R?VO2(9lhNITv0>XYC?XJwFQ?`|ufrXqzLPyYGU*It-#Wx})ezRBNV`ep^c$Ot zl3i@Sop11D&h?R`X_cQnNRF0ho6wq87V0(~au-o+V?c66?(|0snl{aS0D~rr7w>rT zDbYK!{opRibP7|ItP1;2L56(H;DVlpC+UWBKW0J5=aQ?hiAh1^cb=(vMp2Dt5!6xEgSngIss^WNU4eyKX2TTwckeIzR3v!22 zvyERO9HJ1CUXoXOgoNr2%SE7lM2t`0pu5&EjWb-Z7Q@^Pi)d{KB{29m@$?2BblTsk zG3myxe~wlHz1AFzdl=f!MZcFg2IcG+J74v?+a{i!W;}Rl?9QlG*>-c0tzm_<=&ogJ zd4O+VVHp9zqVu zKgu5cH2A{qY@~>Q2-^z`w!Pc|ev44XZ7kc=@-7SugfBjXBM}8ZsPV6-I(?o98=UZb zeDwA~s+iSVTao<}!X13e56`b)gAXup&==_?Fw9rkK&tnM4V*hlQlC8@umS+*?z_Cd zzG~nxI5%rpUY|XFaWwiVW`geMaWb$$$1t7FR)Oxh@Fom?$^0)MUjO^vR;V`{;Udi! zb!AS)g%QQhZ^rG*{oV-DvS^oXmtU(6UYHugfnnut$|G$qHvhiVOsR`$GZoiN19!V; z^F8)EK)nAqD*m@kiu0?E{X-g91LD8dPxAgAwuQ6*0H9Bu?Y({Ak1c(G<9Y-J#unxO zzj^ewa-<=&%MJsD7y%n&?0l=m zvRG1a=%jRfCNAxsMA6Qb#c^_+)Yiay_qK0QLGZ$*`TnNtHQC*SRTa6r=Dmz$(A+aG zUBkX+!ydF2eCt-PEc)ht6h_bg;h5oCgq>C27J;0G+qObe$}5;-i=a3vy9}M?aU_>f z3%qy#-nQgQP^X8BOz!}>Pti*L?QF$f2LD2aUmosT zj$hjpgh8BJr|qR+=JpU_)8nUY`hOYl{j2n-Wn$IQ%og-T3_WKg@^Bw4?)$WY*`u#Oo-xRg){O{k`HrivY8=c|6tmnQkb;kbMtL-d& zE_~wwv)e!6!8(q)g=5FK7_IgBhy#^%<@LVyo*^$hV6MB|Z;S@M?h7}F5-1XYYX4u# zemwuR%e3%m|Nht>GQSUy_gycVFZ2!`$38bbR+yD9eGXiM@6Pg_&++=x>2D$ad^z;e z)gS+)bG^U!ML!OCo<3V)Hv9L#0=Cz$cYl6S@tqfA>;JDWm-CI|o$&Nu&0}S?RLpwZ z>?*Y9LavA6^>x4Oo$lO^zgO;Zcl_)GCHo%8-3=6gx&vB|J|A3sd~ZVW*}q&z(Wmu0 z)$#3$I6o6^QDRDB%5`7!-cpA#Va$3Uq*fMeVrsbk&Z&UIqSqkGU8&!w=a2<%LTA$CmRyB4m|G?o9!Tsf1l6&<6Mb0J@s$+-DkS8w(-sHK5P8 zWedv~(>zlIKd1yy3Snm!gJ7qwp*@hh7oF;_JE*z6gpom;TJ>1i$a=p;X45TV5XJcC zf$rXpp{s7xB|D)>-JXb|^dqV|)2-}SLW|)gSO>6ioocX*Nj3q)>2&u%JN9~c<%dj243TwLlz>pUWpU9X zAb8#Q?@`Bhl?0k!bT!gOp%BoFiK-oVd1K)4h3vBwy95x5uq+a{Mgc=4fV)=sVcjVC z=LM+LLn(P^fu!;fWMk*g$OpBt{IThlAit1wlfWfdqRxi@o?q8I_W zmvv}l5L*!)B3N&+J{svL3IXQ?_u>vE5nYJD(a91fbbmHmqMQgL_V{X4PkSS5`wgmL z@1^oFA3hZjS1>wBTv@&$5fF|;RSjDO=(mQ=5I-)kIxfZjsAr=k@g}R<+Uun=VJa3! z%vvg{k7Jd8*4Ik@W!kQA035J7E(L4=2T5HLyjfG;zXyLnpwvlo8vhxX?|spGdK=mA zB?#5^6|GG`CQ)Rax;?~JiHm@D!C|QLdzSeSAdDp39CvsX~!tQNJEu(B!%88 zmlXw80qQrPA_#1HGH#_mAzcAR!W^NC$f#UxL+QD3VF--~YZ%TMkxkv}+kks;FjnAG z)dSwNu+!S3-C5YRxuFIpsJEr4RG??Vi5IGOm#>RrmHohKoKja{;Yd9|6g?1}34Fwc zI?cQDUPKW~6Y9|Ld<-iCfSMK~Cw0Y2&ml{RWCiV_p=+8j722ndUjEYYWho|x31N2o2BtLxau-PH_Wq6h~QM3e{>Q=tBc z&Jd*#(NF;i%XX0Ow=|LnvrUr7LLMVnszo(O4Ntd%wj)N+h{a9_JfrT+NsZ3XYkcEl zDSut5eKB|qFG}1BbNw_Q zLWS2`)+{mi?vYm;i09V<%HF8wK!?pohOyZtqAL}UF!y;D+zhBA4gT08ea$mdrHI0i zXBZ2nk8)&|y-IAhRS1!-qGiy-xnt?tXR*Es;c>u(h8jJOqA^ujsmZx*JMoxqRPvs< z(P_<=fKY^GR1t}xK-tKjF;Q0$dbWe)Af!RnHVTC?Z3BR`=d4_s4bc(ZD&UiuRMBgm z#8yOYuA*$23v_0-gEe^(kP%(0yeJ$*@G8q#Qx*Xa!ZfJ|w%KJX?Yk5Wn6ey+F9D$l z%O=FCBdp0@Cfj%ng=``05u=wx2_2r-GU0$`8JwDy6!~?nCTmwtz$o8kf>IeG=|`Ol~NYwM!-Y16namIq%)cs4-G@&6cNyhMxZjE+O3-VqK;IcrytM~ zCJ#D8z{tk@<0cqK;7pG3yG3MHLV&3f-!B;j9V1Z!M=wyi(y?QPQjDOHB_~i%BACL; zB3flu&qO<^Ai_h#ka#7cC>^0PpW2O@TaQ&Bphmv>JQI=)r&m6P99KdQS0Er1p0XHv zM5~Uf5!=ZMU?ToS`usAi(Mbqfa{>c#63~nZhpEeqbLpxnd0)@D^?h6=dbESNl*#KM zAQYbBB~gY*gkC>-28Cg~9{15k5g-$(p+r=!lpH1aI2ClIX~$L}sLOdL5O`+vjCz)F z0ea@2o7WF`6(p?$hr)O?XlP)8C^~dsutGK@&}kNU zb^`{TnA>B3V{qWVxZ%v^1}?b&bP47rH23j0u7xGPcT!o33z~}lXNj`yI@m4*W;L>V@MEKkVnHN2_0s~Q?Y^!mwov% zg3+`IdJ9ll*>i$82`1+Hs`bj5cneXy9)gIXR9t|~+=oA+Gek+~p(8p=!ZHU*AHqmZ zCoWLxK#sB^q>`(lRlt8p26n9Ma@i(G;2CviPI!NYUgO5csfgHoPULBJ=ke84s~(XN zE3|DHslPXm)l_KoR+Ck>qO<#6wB!NBtAP~&u4PV#ey`JjADD`OuM%PA&YReKG?=Jr zO**s|`0)Ck+bBB1mN3rKGGQf0q+OSpDQ;!dPGn^!VzXg!l|Hxfumu|z91AFHTu3r- zEUsJFI+Zp=fPzUvPi1%Lt7t=nl&zMW>pF+r+vyc_VNa1uBVYM9d0Of#WT2&QE9#PM zUopQY7B{GJXxWA#vmG?+)=7@cQ6KN{=w;3QjIo3$UJpS;fr=@>$vQgX&k%_KLgxq-1-@QZuZcfOFCB3mbJS)your$YpdskJ?RhPD83;D1dM=@00AQa z5)it98}y3Fqk+!DZRN5&JluZdc#ZAZ6c2`Z*5Lr@VFENUW2q&MC_u(uRM| zWhRtFVb~OH-$o6`$N&$L$EO&JX)i@iteFN?O>eCdS8hNTZK_E7#TNuY zSG$Wc`i!Sc5KG&Zmns}VBWD6U7t|2QQrsC{bJH|vs7mQwt(jQSw*FG?&Fk1gW@=1| zX$~|jfFw0=BJHq1A0lznMkvqB0}0-O4WLVuPE`Xv zXZUagB{>UqAG}|GTaK0n7M>YsH%@8GEH_|2=C$j1%msl;RHbJ7LsUa|8B@A;3B**z zDa26(dsC6ir`qn?E$$XoSaDUzXSGZHQKlKGp>G(2!R0H6;f_o1jRkIChoL{FeS-3c z>iQFzCr@C72M1b11vr#jS6{gPi^J_tMuiT4Riyc}o%|12^Th5L)}+F;Vp$K^M+*pZ z_wb%Q)!-%Qqc5B>OeXcUKV57YF}ECh#3it-T+YsgMXE*&*}Y1IQ5A6n+gNkly9nX_9=>)3Z-O(6$WTjCM;KKiF9@BHk3&+O|%et2*80rqO*@Rh_qfYf48{+B`h>{V6Nh=}-J?TVrhd z_jL}`!!Rcm^Ugg`yPV(tF%~J;EaK}aU#Gidhk^zY3hVcp)~jQ3e(;D2`8E9PRIc@A zUU0}IXA`0(VD2jhkPEov#R;2B;Gd;ecJ)fTn6}@m8S|Kxy*?gh)#*`LX9Tol9#68_ z?jMyg=CYVE*?=6Z>lE})%JPB3TKoB+Sbb<(EmRNhjC6}uz#>_G_PgvvcE93m2UT_T z&bcszjqIA1MYdWrzbi8>TV#$r^7Y(1^7rKxQ#n6yVsGchRZ=?DtScINpSTRa@uud{ z`Hs^dRAQZ%hE7(1jb8j}DTKHZvNk}qUSz)LNsCfj19@H#kUQspjsDDqe@{9+iTTrdIojh<=D)(Y>Ke=p#f1bau^TV@Q8t$%3S`*Xhibo$K z^rM%;AVIU(sAJ67M;h7UduC@RH$FkiMVgBlbIH@4lIM3`ve4his?t0<;42qKpZ!Vn zB}b7Ht%8X2@H~m(5_mT&ZNx`loUg)MC2Y=3*!PTgiGlqZ8Ik&#U7jaXJptBm%=l;l z5zQrb4S!umUm|y7ZJaE&R!>08aj!-2D372P^=sdAQ!u2 zvzejc014)Y-3|r;b&~$HeDM2Ak&k>_|JDHCSsjUs-w2h?V%(2H`D|XHN6#NKyQ~iQ ztjSKCSic}>Z%*igsfR4e@TT~bNYi%8jv_YaDh`j!uo;T*$;x}%@-Kam(Q8NiyuU?m!Cv@(K;GOhtFTYsV`uEIh_>!`C+bChf3jbk(h)Gbk64K7uwY9> zzsoVyjn<`&?5gGx3r5`E%QbJja`@4FsVB_%(8Fg?@`B$h;OfsmYS)Y>xr?3RRaTJ4 zC*tq$3X4YciPB{Z@@(b9yTjC)KmEnoTGMQo-sZl_-Psd%_q}e^@W0~XmG*zdAZyGD zr`X!2C*;0Pb>#=3skeO8XNiy=f$P-{S{oLdb=Fpky%SrahGLI_ z)evG8r-sLH^>VD@@!1l(1ISyV3T9B-SxAS@X^svT|9fU-zsmlyL!k@@EJTy`4guYMtfGk4~VS@Hi3l@|?{eNRuf7A{I40|{su*g6&UEaOr9gERncIOHA z9rTDbN!X`>qP@%5U;3;OQF<5>m&|Xhl$=%_GLrOjx~A za4KkE@6MUQ*ujy%zc8|Sb!@Ax?E*~G;eLl3cIYqc^HX5 zMwOV+GMIV4pbTI>S98u-el0zsNxAa~0h2-S@t-`OSO5@P=a*S)|A|nMQfs+WJi1PnuQo@?7l}G;1m}(9W^U zJ{w5Wc7w*c()tGF_A2pR6%)@qf;-PVpU?j3qF5OF+t&UzHF#BVSNoGCeYJG%sPg}C zU~%U!0MBYX&hir>sJ9oZH)fl~ywhJ!SRX#;wyhgn=No)3w0E1G?CsX`Tke!x9^Kap zCzj$)+y_tU%HB?WYF~Z=Ewi6S+>hh^T^r`VYbVfr4eL?+Z1T|_g)wnWAXvX)ci<=R z#@%xrv)k|G@WcH%&cD9Vl*DHHPtcB=aiX4bL*sYw|EJA)UY;2?VpZ!^yDyM!qj?Ny?gn7I2!tQF;m3H@G7+1 zG1~_J-{s+XuaePb;uDz{zv10#KMwJSwJSIA>zX!jx{bxwS5(MEo0UGgJ5FZjCarXO8u{TT}1F}&3*;d{Y#*Za4tkf@(!~UwT-t9p2 z-Pu&UZA|)(&eU_3gR^`N9*@3sVk>v{FPqvPIzJ^%^bgZ{;^j8}Gw;J=ma$uc(>*n3 z#)C!$fBDHdSphK&OeW)DC+$n1*N8X0QDkwiMJY@j`Jw6-H z^G-MUimjI4I<2E?tU6a0CTFs^3sw8Zu^m z5efEnED8J=?4D>i zQ!m%Wu$UfbH(_VAzZ)NQ)jPYHyU#Ep>QlrAi03L7mVj~v;I+X@~?#Hm`b zuE|c2ADc@{y(jxS%1(VyEF#HKA|regvAxe~8^J7+jfaMMGvl& z<5~U{Qby$T66-myDR-_9cygzl_tycDosB;q?zcCEnp#KsJS_T&D~+p;wBL+#W-i$*?82SK_d-q3})B3~FDqY>cYe+u+d9On}w6TKtEb$7dn|QPDGHmxht36cV8L-gw-7GT*zn{(U(VCD5 zPBdKPyvaxdvanLfE64_>pv;I1MS;o285vM08!ea&5M_VvpDhd2Wj7-aaYe>b$2v;AMsT@& zAkQRA(q47m+O=E2{^*(A#sPl7;k(ARj}m<&ro!kFsf6WVZmv*lk|TS`Kp80Lus6l7nGw)woY;kJPC`@308!E~wK;LL^R0~SwzGSHePm2CrsNh~25sO6O*V=Dh#k<=P{U$V&xQW>nT z10n~rKfm%baZIMvr3^j1N1s9;ZD^t(CZ3Y^JHK2~6EzjW_2?%f`fw%bEb5!%&M3b{ zoIfSAl1L#kqLC`pEJCaKPim4O?NFW7gHi5rqzW~Q&}u4GK5@YYmB_duT;2z_nzIK7)ja<#DQU|EzZHc05^!u* zP&*4bNP6`2w2El#b$(XvNad&vDFbfG@8vb3>3m(N&(5A~*F5y`DIIU;tW`qtN)5U9 zc}A}H_2_n!<#Z<9-_9)3;nAf1%d3%p{Fi?&&DT1-vmkkCz^C;>hgUCHGKO_YEqoA> z$P(dYhlG#Kr3A@kjG34ss!|r}qBe~z%Gg1%f@Ho_h*j~NWHS2rLME4&f(hRjs48Am zazgEr+t|ta_~9k4T#K_9XR|J;po;F-nd8KIWx}STm;j2GP!8uL|Mn~&roe5#Etxyb zSFL1Ip8}eI?EDj)FT5ZBksu{ znyVbMYZSwW8fLJEJTll-D=}!ndXQ@5EF31mFDMq0b1CIzucIJ#n`X9zOh%H04&ksp zG3#2MmXhLwlSFIL#$`jbbvE7AO|n#&}ZsYPvkX*Bwjd>95+!& zb+*g9hDeg`>x`z|lrWBZdctQ3-87_$E#&V0jp<^Ae9v}wveTWS)g}#$lm?4k&Jl`O z#6LOA75;BH3VkVH5e6%@uY^SVGIfxX#^`Vz*l{LGwc9AE6sW5uF;Tjhm##u^g`cNR zVe8cLCD>#gK!JAir@$?jpnh%n{6e_IkX(yJVMmIGVCyHzu`RHm72ts*DXRJ49oCVJ z#yE=kSOBe%NrsrYfFzozdZ!QIy@gtcAA7mcWQ&x1LOe$3G|s!f0&{I$FX0n}>zq22 zt#zy*^9+qQOjVMN-A}NNZ;N0Z$*QTbh$^3=eA-e-9Q?i|Vo~OATQmOW(!Fw888AUB+uRZp(gewx85Fb%CW!m34AG%#23`D&dYnZFVgSn~@t znrooN+{*`kB8n1vt8b@-F7Qw=ze6l$mnQE!zc*mA9P1=ga+kxR&)>`e{U-p}i_M4c zbY}6_=w>Y48KxWGF2*G9Btg>*F|eVTLtm4^B_N&}WLodPEN4ht?JwLj=IJ)QmyuY&!#Air%6gV9*+`!IneAvHt z(eIyLkF|FPD^_sjC8#mxtXOes$la3p{wfSPm?fS|f!AfY-)AT&$w5sTgOk}_Ob#1) z7W+KQXW(k&pFPk?o6b%Hi1s<5X@t5ogB11JZW*%2LVYL2vXkm=IdZNgG;3_8y8F4_ znOQKS#s}kL$>&kg=+vL)_Sn#K$*VP{QwZj_*fXQv1REb2yNoZ5Lxx7ci+oc{j9E_;j@Oi zkM`~+mWn#xZDU}Knv9w&fblEbT0hddZhqoOO+vE7?5XiMw#s(^&$K?Vd%8+;SZ1wF z-&(sqhJ)BKr_J^Bj@}g8A{`TZ+m!}!H*m7Z+k;_lBAF$;j*t)*LkHT6ml=vMi#}QI zUGSd=@5sw}A7-BGMrFt(enw(^rRV{qW9PSf;w zp@0*P4u39q0Pj~;@I0p$Pd}a2w{*c+zq>GA@lVFn3tl0PF8(AjoZtD=`8u&7IxT`8 zDPo^-PCqGni`wPX3p!o3OWGyzLcAyWr1$83J6|VMhV<3AwkfJb81Kdu+zNypM7&Jz zy!g^L>-7=;PfGra{x|zdMq??In*c^Or%4LrraW=D`)>s5hCi`%s2#6tbA18?!< z*?1;P`d0$)Nq9*&umY`}IW1<&qd0ONn4TS|Z>F^RqlwC0)ZLC%Rx>N^jCc^wN1uJ>{x|h{%(H z&#B?UOEwd(3{0{(1bFOd8li(^R8bRp4Om(|L2;ShHHyp`$*Mq2AS`*d?4^P+N*VN2yMnWS^xJ93xZP11!CdPqRI z$<4-@n^2OiLJKj$>ky8iu^C%uH^p*!Oy1vj28csKBP@bCH0M^_smIm0ijft#H@RNp zla%Kd4oZY9I+v}qun{#|#(~*Gw6qJkpUaeX_?gW_3{^1jlPqTlD5!u@P%+OFk%BBr z7=sp?9A!JD67^p-vw7knBt{EXw%#|r98NZP?vaNo3nqTBy^vh)(ih3xSp*M6L!l%& zX>j5Q=S&UQDP#1q_5FMrPMrW3RM(HJ3XrM;G)f>HecM^vxK3ZM%X59Z;s&I-2^*5` zC!J4Po-}xX0Z6aYS4v}4RD!qs3O2Hz^b~Z{0#B|!ePLw~0%O0D01K(dsbEQLPWi6Z zBds!0a(#l{0!A-7h11&k7RL1qX|WM(P?nnJk~Tw77>~3O=_%Tpv=cDTzeX#uyhxNZ zrHXUrnl2(?A&oSmUO8ma-HYgDn1eTux8mdQ*TtdFU-^VCVGX@ScKc>u>7@IC|MH&9 z;3SIq70v#jbf}O7k<6)O3Su^rsZ|(Kh4C!oLY9L=6<;9i7;lQtdM zZVcw~=GVomzDE~w;y&%sqtMpDNI6bGI-;_`rnrKO+OcXNC@1$m?972Z>uyBlKN#X? z4^=v>bd$9pt7hyn;t+N&u3Ir1pock;SXfhn!e<1gHj&R!8^|ad7DO1@BtKPZnW#j6 zzWDo$gU?Xw*=j%++HBBOjFcurxQ|9&5ksmWHO>4zyWLieBF0VL`b|#KQ{`PGS-pEv=98FyuFzKOxX!bq-%CnpB|$7?G4As@pW0(V_Vf?m zLf*4R>{dxz)j*g#7=~T~0D6jo`c=1M3vCSWfF@~76TeT>qt`&oYbkgtbxpR*pe^&2 ztko}(li4Clb}$xF=x*VTXs6xRp=0`BP>&a89tbje-UP#0VVhF7z`^C$yQOoZD~q~8 z9`DkmwRSfTdsq8b`n^;(mOI;<*(F=Om`yHDeLsqJs^g{z1O@k^Zka5j5`5ophK9;5 zPg6um9+69Sr)l(vLJ6u*Y1F6NHv-qAE34W8v74U^tU6CQ(rGPxLi7nmpzEaGRyl4k z$f*LtT7U~dr(K)1w*%QB`(O(M zj^|9pezI2Aq(?z>q=eAPp%wG<0rtDz5)_t;^I%zr;0x5n0wf@J3{QHf#WxH472tju z1(J7qT1A@yF-x|Y*STF)4vdF2X!pRG-6X)p{SPXF&AJ7-yvI7WW7c!;aMk=)3op6P z#BL9MW;SWyd8jXBjd{<}5#;`-q4{0Lu~>nXN_!Ro8;V;t_QtZ2vhNrmHR-obmAFZ?*AInexAw4cvKt7jL8OPg z!Mp$OP)r9#9`M<(KWbi7J?x@nke`EpPue1;6D!rH@j74!M*rp}#+goOky$PLE%`+L{-IiUo9o5Txv*R^8s+G78R(uoYvyku?` z|1N*^f&lX`s#v(624R_zP&gQ>aQM`P$y$4f@d^`C)rJ}Dct6Zh;;XPgRxyVq3Q8rc z(7b%Z8iQ*pY`~y@!zRLYB-vJL9PEmc>Y!P+ZQw-SgtUQ+#W%NsTl)0876JZw8YTqh zYnY+k!onOqmK+vH-1M-7XKTX>uI=OcQf9&in(x!FiS*EiE#yQbY(vXj3fmD#YS@8j zYHyzt!7S3%S9R1z#}H-t?U!%<@^S!V?^SttPyV#~wBN#2`qwmg9R1E!e2d^qyZrxt zZb87qtlIU(0F|FB{lbbP^2F~*{9BjQx`{vJ#_ySLa;zQ+2Io0L&^_O3N|6l5Iej*q*u7zy)tHPIS|Ef14K;DflINV>Yi|NUu zO{U86^||JABeYRm!!)GGT+}?XnRE`dk|X9BgO#|AMU~?(9&F-d24IJsLIGg-Zso!R z8SdjRPW~{0C#|jkb>hQj{8-c&{7SzuHW*T;F|&mOtCvc1u%t}(!SH+$15<4 zB$;E0ks*BPF`yHcT?L4yaM$_1~?KHOSq`m2j@xSMsi!pv5_J_SR*E65FFxQ+1`Y&-y#G&+v3HIvx-`2x^9DZ2R4J=h|d?=vTNkfZ=;&=TQXCN9tj5z~(% zdBIX7nra&AOY@5hsyJnAJV7HS&dq$CLR6n*3t3u3%2aIXc{+NQ$2ysHD=Y16y$7Z` z4lu(uD%IN**1hg=*=+ZkHh${}+j^0Y^$!lbuCIuTsL1F@Xdn{($Sp0b%r7sliZ@i! zQqybDxyNC*fq23J4;3=b&{^ea^?HE}l^FaC{wZY8$k78dUaVLN=mJ?+S2S6}tw&%; zgchN`Fwf4`01!gP0uAXw8P?unjq+jE!pmkFdzUhUO_s>H?_|-g^Q02w`uqRnD(QN8 z@XRRnu<^fT?0m-?rhFGwN~8u&8rT`%Ggez)LI?eYmd+3<8JdRHrs(4qTM-~7iIlD2 zF~TU3*R}{)LSzcSi2e~lt}g**1i6Z~B!7ic`8>{d1qUWjem^9SLW6TL_oeuG)vQrVd+jbS z=j^4Q5%H_SB*Ui!m06ZrCx9n}c#(yGy0W_J5+JY}nMzJoR##F}akG1R80)K0{xsG{ zL<6FPVKkbUNu%0jJcd|Cl2&|9sj|9q$7of6Ev`GnJ4&<91{mVf?sxd_yj1C zrAV3AEjWaz{9EU8|2*Dx7j_*(*nv=a(mZgsST={)w3y5}rE-Nx2@5YkERUJqiTB?& z5&i#p{qPT#>~6lP6fIi0dIg~XzypZ?Dey5ZLS*sOYB*UvX8+C~`E2%MfL@+j8M{u_ zh7nsjy~bk4g`_U8Hu1Y9Z9jh-S^+2|2>j1s(Dx(d;qo_MrPmsHH1jK7KvSv<$qBm(cELE zXlYi_r1^-QgxOjr0-3OX8khfD8UJVN|LBty%O7p>pr*G51D8Q$u5rXm#36Tb9gWI3 zp!`=lBfTWBZRA;_m{m(xjrDRBfq|k_6K)n|<5Wi?ZYR#S;>DEwZtg!G%pN^uh!P&Ek*MbRFHHZHpONCT8kxoiLZ|0J0m4Sm zXdjyM_ylTrNxk_m_k0Z3)Zry%;NY|8Kd^HO`6Lt!W3DGv6m#D}pjF9%UA(^Sa^I3C zI345B4js7-Ez$rH8tvZA ziDYW?ty_(C8h5??kR==wEIgGpT<6^0nG|kobsQSo-nTt?49Uof3eC;-S4W0vsc5Jx zO8*kTM|X?M#3R`qL1U~RNu+S=W-$OXb zOnl+*I^Kw)cgQAg@+(h@&tHtc9hf(4*t);=UAuIWC6u{PWP;s*&T;sN+AdGUq}c>Oyzq{(H}DZ zAfeBm2*AJa@*w{=6*-0c!yYq#@!|673NIHAciWzVl#KM)@F>V0I@$+z)fRMYEHAf? z_Re-9c}{ckOO_bf|6<>{`PqxK--aJo9|-U<(cAyWXIdXbCHGmHV4$RR#jF_tTy$HC z4MUMk^;nK0l@U#LU*^wDtNT{G&fHZ@RR8jN4?r2(je1?TvL#neFr!u}dUxc>)cx&> zZ8AHMM61{dN*5A|X1cret73i;{dbN{j(3ximYtg`mtzaR0imJb7crBF&#B2^{~|6X zF(D;BIZ;zdtrzEB(2w62OqA60FIFm6{loFlNTYN*+kGEYUUwXPiTAf1q$svHz)0DK z`mm1w#UxTTHP$rLA^is8XMNKL{F(edn1p=nlwF9ADN~vrh>=Y89!<`d-PRXL!2UfXf> z!@0ICV(Jhkw73ZjMoz5Z-&{q^I9hH`LGf<;*JO|ob0s9C2uIvwva$2C@?xeLYU$}1 zXovh?P5RXkP93+r$oy04;p&S76B>tuxM`;D8gHBTD^!@|(6ty#@}!ybvq+6vm72}H zMBT!Li?{Eg*d zw2e(t^y-)TrdJ2&jZW9c<-4OxO#ZvhIVJVEyA^41=vzzy*5FKwzB7w2SL}LMx5rv0 zl6etsxJGJU(3fZ7f^%F|NFKaf*n|^!a|MKkI4?wW1;n6DdaI$a6npo4Tz%*=@eS)y zbhs`|G3ih$XX!@*1x{&pwf0|EQnqz#y2Rbwx8A;2jhA-%X3||YIY^g}AC!jd>iz2x zd<0&-;CfdBrvQGYcqb)y+pg6U6LlV0)!R%~wyxnw_1kh-yv9IEwO3+j0mjBR(8n!s z=k)mkg>v$rt!vAjO9yInH)>M1LIVq5ca)xTSdW|!VNTAq?xH%QI+i2w8n%y}1DaNU zAinkcjlyptCk64`Q4PZu(}>}Ffk(cKi7Y+JTnRL9>2(BiIp|Q?a=Alj!R8SJD1D;J z#qiTfnWnK!N=Yq}oh6sH)U$`Pk}Y2rB(>^!u-|(Xj1m9<0REMkmthlOZ*kIP)bnkf z-a1)Cd$(w3jgLp!pQxAhPb_=N;e$=;+2}&i3A|`QJFke$b)Z7^_C>tT3XMZl#Q5yk zXF+<^porQl5lzCs&nBWx{$wVC2CRZXS0f1V39R0N^Gek^O#vDthkTFY+GrKVDUaE zoy082~WUEbO1AJvTKjdm__kbI|$ zZC^(5TSy|5@FSrll~JjLGMczD8vB*sVNYn1hT#;}6_0l~t&0ru+z!ylN`@S?91Ph& z!_*n5C`Co%ZcCJ3e^IW4zXK1RW`K(XJIyB^M}*ZW$>)8}f_vK{^;H^3-n z@R7N>LSmGRZLyHKG-Su`h}Jhn5i9L)6)5Hj@f{vKdH4oe2wvRSuPXLCR1~R*6+Ek# z1j@Bc3F4ZW)vUyM`K8&9?QNP`D{{8buK)Up;nmO$6}6UhMn!zesY4ov^Z%CDrcz6 zjBJAo^-M;KokktUUr+XAkm7)L=dj}N$vQ_Ji*tT+Fn9ZA##zUk8dB6FqnqAd&1pr9 zB%YEhH-)LEQiv&aCv1O~Rz>qJ889vOMfH$yTFrN>p{KokWTe7G_uP8gdhYk~b z|HACDISH{MJs@Ki`9x`5rOG$gxeq(<-6h!NNx>B(vNR>Nc4{U{h)z6z9X6l-Xz^1d z+h^jm^3+$$QIvWXaxbMCBAWCJ9Tj=+Oi>h9E7=mztMyh}ZU~^8)~OzX5hZ8vdd{9c zT98|o@Q;`zAENiTn>uEn_88}rd?hF@tg!hV6N| zEOl_LIX#LqGAuop%N`0`$k@-+eA>NPMp3T>+I$2J2NfdUoa-weRsu^=mljtXJ;@K2 zQxIYlb#T>nm7A03Yv6T;eAEQIo~*IqhJn!M_l9om^UWgT!-RR`I%?-4sS5}{mU$FR zo(PETwxYgQvg(c(zGrXDUcxclFA+3A5DC;mF}b-mid3?O%&QGp`K?{^+6why04W-0 zuSBhBztPZN(zoj&#ji7bvku~eQ%Id;ONauHP{omQa%X27VkN)oA5;6Ycs+J3qD%Sn zaYG)7g?HV#>rB=+;UGXmj3yd{wV+6tEj5*x?e;`s4~K!W1ViO?D+NS{VN6>3j}P|~ zI;7!gXYxc;Hjlvjcj!RrBHP%@H#Xs`w0sWVcuC6ios!YKW^W?dbNb@w(*=ZDpDJj) zY0}nwbI(%>8ZkZ@$`-i7ol4}R-rWQ%GGur1xI%RBK06TFp`3L>+`=~8!}TYuI%oMZ ztV7A^l+27oEQbzgFT`0;fo1?`gv8zI=7qtKf$2zzU@CkD^9Q37!aT}92i33FHmgUP zi<@QNv6|xxIpt&KiV@iTLfn4i#Su@bqAT2#D%~htj|9qinF>+C4+n`rD^z6!L91mP zT#(S&6S5@R+4IJrf(HzKBE!~}Pw)U2k*bk?`I<7V`@7o47fl@aHH!bo4u?qaQ8+}5 zgvU4Mvo|ZGU3{c3_<{XfmH_2Ox{|#yP}N*FX%`jy$0=>15)AKE^9!c>=P8*gb1@ zASiJPnOGBvbt{^ZSOcoSfcb86>5lMsk~0e>GBnJ6a-V|UQDVBeAf4kEH|+fKMXrYZ z=1%-Uc8A@(WyoUuI3FmcVD*WrQ5t&5cA9$h@&c3FeF7B)tK`OfvAIXR7l|vh=bLb1g=k5VBvw;=%Jbr|8)x-lK)$t6;rV^eZ99%_Tuyfc9Z#?}NL6LC11SvF0HHf(nxd=k2M9r!2EXi3iY>xN< z2-%;jDzbudKr5>wE349sSnFe|$o#yc83ka`I=97@hrejkX^1oIqybL$Y7lQ8DxWB9 ziu~lK)42fzh8#tPR-HJPS|oY>dZTEVFWGG%sZtAw^u9F%F|?g$nL!ZD8(!yE`_V=SCGk~L7sCCcZ($)!GeRHdF?hhA=C z8$j-k+VqRV>2R}GT@aG^v^na+2NRaCj|6}WikgCwm5Bjk#w{4cmsjSp* zamzIDbH5`)Gu!+L$nBiezblXOIIeJy(&YP*ZW{f)vh{wYZJ=|xCb4{0S%KOyiGv0F zqxj?KK^5N%k|Z_xn`LMsnREhK3suQS{3&E`VdUWWrQu|orX}}*Dcw`^hpz`84_7g4 zL>Pv7wZnWjQ2zAd{1^^SK%UrG+}`10G&aGKFtIDm?{GpMhO#`m*E6)^%dPtLZ{~O4 zffa90jo25;Q^Qdru3v{RW(j3N9~*MFVU#>E^q+oi?oaGGa`&qr@1&CHpH#9tWV({9 z!HK9djJ<71f)q6ttMu9&PZ<{fbf;kIf|sKhem`+WXQq3#CgihpjZUU#xtrQ`+5_bY zex)hva*g>tes6B#8J-vkTxZG?!iJ5G!pZYytl{3B?=dIC2AqQu*A$p`wknhW_K0I8 z9wjXM_@Uu=&5;P*x(%mr*2AwDDP0nT04}1nOQw`lwFT`68>cUP2nTMqE#vsj1tUi7 zun>zUNRCwpbDgkKb0v?JlACW7gj@Zc+%||OIWgt1saV($3=uK1MX*J#8kC*t z`V8!)<_C^f=^wGP;E=qT#+nG8NmdB6Q`{Byq}A*UFVy#KE zv57Gd-TP`_iE+P+1@$?tQ;Pl6?502KDQ_%v~tNAInk7R z#%vgVp?5u_TwR#A>UD)~AA& zVtibfPsD_pkQIgfpU+;r94axQn+Ms2X?h#ynfvTN$;$iU+^EB5gmVwoc(&y+VPSG0 zW6r1sz><@m%x4fw_)J_|9|`C{_go1p333ez+E#_kDimc*Z6e{RnukR4H28uPam2(8 zVkx^->&zZk3&Aj>o~2>Gv8O{n5TSGNH3=2HobcAnDbqQ=&-}2g<|#HRcDpi|hn_^j zz?Ez?+U!Qn)4n7u0i1{L2FN4l>3?G#4U@CATgfX@nb zhX`SO0)S5uaiPNqU=jiVx*^a&{2>oBAYCBe+qXgF z$N`Yx089YD3-yjT;qt^7%5%o=QBCu9t7^7yc^~l zw7z3c{^Gl2u%4MEdNPv-mhg5N<&82XO;?(t2=AWnT4F|Z1T-iTKk~RjjM=Fj3=ks; z^Jkwg3RG!Yg%)m3Ul;OmF4x-*oDyFK8J+Fvwz-47c1g1vK9PieHa;1+u@j}PVJo~M z!qJTiG;Q+Hdw;latTe^96Z|YPJFrN83xAkkwFDX49RQAKL%_h9{CTy0F@vXBRiJL2 zwaRr+qH42&^?l>(@*ATP&sIezZVw*3v0*bYRPqX4JqkmIE_g0|>ha57pTK6TFxy!3 zac&V58D_uS9E!}uV#$k3=Zlkux&{lw+nFGR*l7pj3o7e`RM}eg+eWgP@i9if>=*69 z5)(I0*h0HmlI$}o5sWm;ywtUHhpe@U=XxAvjjF0mx2U4X--}LKUkZy(lc=&lF?CWd znpudg0LNBburR=9TYV)OSaOv5@AMTI~)CYh@(u`@s~)F-vPKkg;7TuVI)q zf6CKamj{0^$Y{8A+shy>=Es_4B`h?k9YIn;%~coGJ$kq{tuvN^akAk)!G!gAgnp7z zP0s`VOmh%|4ce1v$$QrO(9W%J-~ zvaL;HRHfowPNz;Y^KAR6Z8K=sqNp%cXL6^Zsxqk9Y5oX_qwDE9;&szAiD$6gGUcIb zpObR)HdPWB!8pjh+8W_|$&qGQ4BunmQ>rA1(D`k##gx_78cs_io5c!=6UVtuJd7n_ z^67je9r;Y9XcpNc7diK1Qm#XU^lO`SY}>q0`Y5)u5Kr>B786Ct~4 z`g7_n-?GoMq~Oc^A~PK(Yt&o~?T!!cN8<2wCZeUqsryi?@Ckm8uTXA1AXy|%#ycry z;zb`vx=ZNlU|kyZGyD|SwQTSr2?n3c$wxX9gg(h9;3b5P-p7NA}|0wM!;+-qFpN-zUyr5Wzt*Q|NaFQ0gV<*a$)+ph=gx z8GN74Mh8C`Ks|!SpE(Ltj!)6!T1M#fseJ7lB{$mjFv7%}rY6Cpu$R_QD?biR7Z1S) zBtUpzgT^s2VSoqm5rKdQ#qf_KMS@L(fFdKo0@4GvjKRT0)%{(FhJ>1xK*piQL5jh^ z0e~AO4>jWaAdXV}>FeJ9uCNWy64IMi21twFgT$XD3DfW;ycx_gFDTV!pPKf-+L5X| z%w2^ZS$DiqJ9CEliIUZ6_^pqd_hO_?k<`rKnzAekySJ21 zMZ~?@ma}@7>#ONHN<3U`IE(H1T<1D5$w*~5PR98q%K__fj&vsIB!TR&nzM)f72{zG z#~%WUEW`FdX|Jv*Q3{3XIQ?k8L08TZa)m9Q>!5xG%j420KO76~(P**cE^dq`=JN-v zV)+5=5s!?5ixUXG#j=R@faoG3q-|`<;Ar%zUQ%kJ2Z-y_JlHF`T^shX`9NlxSC)Wj zkms%A#_DN-c%|_~=s8h3t9C9WGgx&CIrUAK+8be)j$IVTb+EcmB&+^uZd_1D!`J*P z+=KC`r&@yFdifN=EWq1Emr`vPWT-^frf{lIcIFp$s6b_@j|tKo21%&fGI=e&S|UO_ zGhNEmdS%dpkmqjNM3dCi>e)78X=?$LbilCe^n>t%g=MOB{7yu?C2%pnYwnN}Qu}>@ zFUKT2+NzwzPkg0W^OK8xr0pWKL|VSUQ-q?-sS5)Z64q2Vwac7FD$;UYNIXM*$-ZM0 zdaQWcv(S6vJKUxAm{kw1-jUUAx9)V~+>9C0UqA2kk^D8}HNME;L~A&|-LlC)dRshz40BD?H2Nj2aLn>$+{?ZBTDDAL*V;iaBMp zZ>{oU5dug2?!B#nkD*-?s#J^7_6O7%LZFRfv+J3CPF{%@H~072g&m_XW+SRcW0)iZ zjZo`i*OJO=ZCfE({fB1X1z8JBpk{tENfrMhEVYU~PE;e`tS;n|wvQgdmN}4=v4lB1 zf|Z`Ib)}KvqA$gZJY%ykHZ#!1zd!1|tQAK10bW7vr)8un*UXs#6W=KuP)a!$g*DNz z+wt0GL=j~<*O9jF_MRMsO{LFAVur|CLAIzT?2LUM+MJzoE)4vca1-CN=%fFQ=?q}vQ z5IBa=b*Ei=9&|AqT!GlhpwGqrH zLjui6GO890K%1!kxEf>;>kt_daR(Mb>2rTe=~>IvvMf*?dyCux8v&)AmlTu=n_$L< z^XuLmS2p;$%qPXO-Cy{-71gd;N{2|YSZvND0H^UIs~D15GOkgIvoq1pIafmX?xa(p znDZS`OQJF#fd)`TgsPcoOPDAKfiWZH#=|n!{3xxc2P_E_))TK(+hjtD)g}9)`sVL6 zO`r|Y58(v*^{Q}EQ*@p{wi=KSyrtXJE>AO|yi-QK^9vO*rG#%a)gMO?f8WiB-laq| zns(D1G{>N5z&d;79ISNqmoOAR4_i&QJ*pR^In50>xRMgWH)@xix>$H;XU#R;b2qq? zkE{E!&Ms&t;aZVs4OW|Po?nww{MHvOTN5;Ijn=mo9srk{$pxt95h1J=KUq7IZ#jG)xhM_U8>Cb*L#psn*J$MWsfq7QM?jSm4^v8L zjRZ)M&|H$4vd|319K+qD`AE@AspsTmWtwW)dK;9;Ra~ecyFYeo2*q?jzZTA!wj`)R zkAqj*vs9_M)2|5j;$K9%NgQY{e2og6BdecxR!h0}$-twT(rcCHB&niRNeOahGE3|# zwZL;6Z>M7=VFoo6KkM&6d{yS$Sz|tOyJ&mLSIBe@Uad%D`7}|7o`l`zxgwN!@cbC*RtL4 zOFj=*7^!GD(TtSyW;j>AFNHlx=bjA3+PwQ-6otBO*Y5&yu(M8@>T;Bt$3y%P-~p=< z9&4eR&E4fG^ntbr_s}#-F;GAK#IL`-B|KwW_ywdJ8qYYln;Fo1kso{d;`9=kF`D!* zKaNcys2z+MrgYJLq5q&6PQkS|&u@8zY1QgT3oBcXTM^_;b{W|l^@l$c3ev;o5{O;d z2rPwNYx=|S+4EBjYlgfG5m@c1MX>*P9_hEU&Rg(-!UO-@wbQtB6EQQua~o1+KN?6t z@v}pop!iOjRD5jX4vbw<7&=Q7&Af#<`1URLG~cwc_`X~CehbuBxZU5CDiNFp2^b8)DdU;)pw;4_Krav8(MzYlC-vu#LQ~gDEX0jgUHAI8cC&H$Xw&WMoWzE zNvE2MxyWam*9;vPgdMvVEC_ub0~AQPan`K#_s0f@DWkyS?4ukYJukPLKt&Ru%8^A6 zJT`a>aMJBLEbgJgq{#~u-+Qn1imF?;jE8eeRUFZjrsku+qqetDCNzw4P@4+3r%{-j z9N6veY7f?$-S1+=2W`;&GQ5WwMz!b@oJs5q{ljs2GF+SbeSw99N`)v77DOQT#3RTqe%1yQrh+S^Da3Oo^x7YZO`&-P-!=hw-nZV5vze;Q;? zxwV*b$ZI>F0P+jt64K=cH0*aHTetbXI6=|0!OL-2JZ9P;6^{_q&ThF<0xxS_h;)>t zwV$OT^=5k`lCMXBN~kI^o#A3>Y2Na^7(AiCp>qivyXXjR>?V~*y6(5*_!#ds&dIL95vqyp2%;u3rR{IPtf$E<2v>+zZjR4h$tFyup1Fn@p} z8~=gI1nF$UDsil6{ay8dDRcD2xWQ+y#q4V>jpSpr^{5%t*U7WM5|2$*Q$}TKt^65& z$@%{81EUrN=PPdT&h~b;Dg;ABwOb(Z|tS znhHtOxj9P~MZ$55&m|U&H?khp^`7N^`aLk^xE+;>FBneZZDg#-BGU5ZLL;ds#WV*` zt1Y0et)GzZoK_5uM!z!9n_v^!|I}5Ot}1w*R3--Aja9BM<);+nhjpUIbDI#zm$kZ% zi^G}kj1rfoP^T6!=Gi`&v@{zJRyp_8ub19e@0VTZ**)R4fJ*#4N^cP#FX+h7m>{k2 zJQL+aQO-Ubcr8iR8T@{NqCAG$aUPYN`;Z>WFh)!B5%&*7aOyjGEeg~j0iHR}c;cc1 zQYwJcGvM_=ozokk7cvK2ZkqowU@q~8yU`9JHJxR}fcK9Zy4WS%Eccokh7A^_aHhOy zxU%{h1_SQDd})Tgi-7f@SnaZgbWAhpJ){I>Ra|cfB(4qvT4DTNdetn2$YII#CNDFR z9Y-RQ9i1yf49WJj!3Ewu^|-{6`eMa;Upv8DpQA#E=_w8Fo!XCZSY|vSMUEMNT+}%H z)TaG0sJ%@4EVVMBh~4f`!LdP^m&DbP38$BVCaX(uvW+aCQOuiKUV83u=2X2a7 z)ka3UQ$3QM{@SV;S_#iMGkDjVxJpco0-iPHrQVpRSWS7E#l&dS&G-+59OKSJ?AuQ=H>BGa9`ulxw~q1jV;}D$XGehT4SmgFH06aT+-tY=p615{F|< z0oji+mi*!M4cR5}o;c}oDZ4-v=}q!xoo&bQo~o-j4(23!X23zc8>!PwZLVQ7-6`t-Bs&Zq`Us zGG)lK|7Fqw0~{!W19BVOdFl03OERm!7q+>N@oF$XOlY$-_sTu!G(4k_Ttu$#)7pM3 z+ts&?cqd<9=xCg^5V1dn)8o3oG2s7ZY4m`HRlnt(Y-dG2zG!aIhDkeOVX+m^F_b_| zQU%L|8h@#^-aVAkEt=rTV?u!@lSX$}IzF=9uTT=K*-v)1p4~*;N>d-Ff0P#ZjUPAl zj)i<|V~ezQ=s>u&eVYODkwD#a+?qvBq-~EiYL>(P%-n8UTN6J%J?`GAymi+aKq9BZ zDzsLugPs-5Yv#jE3hQSX#WcwqJ{mvzRX?PB;tawPDBmxehc&V!@Q-)r}VZiLKr zWXw4cx0r3*9z<^#GBeofkqkijLvhI*ivy=Efn+v1*OW-=SPu86cCX?gxAGXzly(H+ zUbv0zN$W5zzv9UyKrr8DGO-&5VsGeQ#oZ zUchslA9ij4x>DQ)XcqYWPG%>tXH$dhHMY@7r{%XgBB{KgI=VL5z2CneCK2{} zgBLPwk^}BJ4Os^13(cz9WBuxJ z_``0{JC6}=XE5L|{sO*Au+2oz@^@hTMP@CMso}34^AP{xHvWH<8~1ca9Yiecry^&* zBFzti7ae^Mg*8vhP>Q}BtQKgAo=`z39mI12CN8=?p@FiRhJx#Z(T#=Eq$)XY_0nIH z4^!THe(=+5SK-j!1yW{Anln+L_V^ZL^=Xi3R`Zwv1oVIRr%WP8jCN}{fAxhnX4g-f)VQcM4Uw=z{8f`cqf7Irk0F>%!8_r!Qb%7b#g^ zLe>sDIbAkIdLeTxRa?StQ;}rtiqCS!(IrmJRR-sU2`wa3|32_MCe`usRwXXR zw;kb+yK1Wk`+qP#R>AT|UQZZ5^8XlP_z$1f+N)?yFe4>xsiFzaT3_Q`_|Aa8=@R$! z=H#!EGoO4#8M?M}|F+y8i#$K_51pmj6``>^YhQ9R?9P4P4hSK!aG@|WZ#>j@BU3Hj z_qZ7=qZ{=ArVy_rnR`!C7bKsnx9^K+L3Dc*EvpHK=0wvY@ST}`#3V@3m~N%)sZec| z=p~MY^>$RBr^o|xYbN7;q))JbXLyXelVZ%?SNA^sX_68VP2h|1qPFJEXN$Z%Z!@CM zB6&_3M*4dtAgx~$oQY~Xp&tIDm+8$;MkvW>%IXwVI6KyW*`rk!$9pmoFcofY)e?B> z)YU=Sp(~lMmDadFaCR4zWUu=v?4Ql}Ood|DT-0Q2` zHu_m^%Ch|jY{_7MuW1Stp~)p-AkjRfuI2A{=-B{!UfznDb(nZ!zY&DvC-FhH8>Z;Rh0 a@^42|4N?9!{>qy_P}_gK{)YN+&H7&wkfFH% literal 0 HcmV?d00001 diff --git a/hydrogen/assets/Inter-Italic.7b187d57.woff b/hydrogen/assets/Inter-Italic.7b187d57.woff new file mode 100644 index 0000000000000000000000000000000000000000..e7da6663fe5e471d7e102099deb33ac6328f3e6f GIT binary patch literal 143476 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%0A|!KM#T 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