@rivmux/runtime-worker 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -10,352 +10,6 @@ var __exportAll = (all, no_symbols) => {
10
10
  return target;
11
11
  };
12
12
  //#endregion
13
- //#region src/fixtures/m1-static-fmp4.ts
14
- const M1_VIDEO_MIME = "video/mp4; codecs=\"avc1.42C01E\"";
15
- const INIT_SEGMENT_BASE64 = [
16
- "AAAAHGZ0eXBpc281AAACAGlzbzVpc282bXA0MQAAAuVtb292AAAAbG12aGQAAAAAAAAAAAAAAAAAAAPoAAAAAAABAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAA",
17
- "AAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAB6HRyYWsAAABcdGtoZAAAAAMAAAAAAAAAAAAAAAEAAAAA",
18
- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAABQAAAAPAAAAAAAYRtZGlhAAAAIG1kaGQAAAAAAAAAAAAA",
19
- "AAAAADwAAAAAAFXEAAAAAAAtaGRscgAAAAAAAAAAdmlkZQAAAAAAAAAAAAAAAFZpZGVvSGFuZGxlcgAAAAEvbWluZgAAABR2bWhkAAAAAQAAAAAAAAAAAAAA",
20
- "JGRpbmYAAAAcZHJlZgAAAAAAAAABAAAADHVybCAAAAABAAAA73N0YmwAAACjc3RzZAAAAAAAAAABAAAAk2F2YzEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAB",
21
- "QADwAEgAAABIAAAAAAAAAAEVTGF2YzYxLjE5LjEwMSBsaWJ4MjY0AAAAAAAAAAAAAAAY//8AAAAtYXZjQwFCwB7/4QAWZ0LAHtoFB+wEQAAAAwBAAAAPI8WL",
22
- "qAEABGjOD8gAAAAQcGFzcAAAAAEAAAABAAAAEHN0dHMAAAAAAAAAAAAAABBzdHNjAAAAAAAAAAAAAAAUc3RzegAAAAAAAAAAAAAAAAAAABBzdGNvAAAAAAAA",
23
- "AAAAAAAobXZleAAAACB0cmV4AAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAYXVkdGEAAABZbWV0YQAAAAAAAAAhaGRscgAAAAAAAAAAbWRpcmFwcGwAAAAA",
24
- "AAAAAAAAAAAsaWxzdAAAACSpdG9vAAAAHGRhdGEAAAABAAAAAExhdmY2MS43LjEwMg=="
25
- ].join("");
26
- const MEDIA_SEGMENT_BASE64 = [
27
- "AAAAmG1vb2YAAAAQbWZoZAAAAAAAAAABAAAAgHRyYWYAAAAcdGZoZAACADgAAAABAAACAAAAGjwBAQAAAAAAFHRmZHQBAAAAAAAAAAAAAAAAAABIdHJ1bgAA",
28
- "AgUAAAAMAAAAoAIAAAAAABo8AAAGqAAAB4QAAAdsAAAHkAAAB+kAAAkfAAAHHwAAB6IAAAdPAAAHrQAABx4AAG1PbWRhdAAAAmYGBf//YtxF6b3m2Ui3lizY",
29
- "INkj7u94MjY0IC0gY29yZSAxNjQgcjMxMDggMzFlMTlmOSAtIEguMjY0L01QRUctNCBBVkMgY29kZWMgLSBDb3B5bGVmdCAyMDAzLTIwMjMgLSBodHRwOi8v",
30
- "d3d3LnZpZGVvbGFuLm9yZy94MjY0Lmh0bWwgLSBvcHRpb25zOiBjYWJhYz0wIHJlZj0xIGRlYmxvY2s9MTowOjAgYW5hbHlzZT0weDE6MHgxMTEgbWU9aGV4",
31
- "IHN1Ym1lPTIgcHN5PTEgcHN5X3JkPTEuMDA6MC4wMCBtaXhlZF9yZWY9MCBtZV9yYW5nZT0xNiBjaHJvbWFfbWU9MSB0cmVsbGlzPTAgOHg4ZGN0PTAgY3Ft",
32
- "PTAgZGVhZHpvbmU9MjEsMTEgZmFzdF9wc2tpcD0xIGNocm9tYV9xcF9vZmZzZXQ9MCB0aHJlYWRzPTMgbG9va2FoZWFkX3RocmVhZHM9MyBzbGljZWRfdGhy",
33
- "ZWFkcz0xIHNsaWNlcz0zIG5yPTAgZGVjaW1hdGU9MSBpbnRlcmxhY2VkPTAgYmx1cmF5X2NvbXBhdD0wIGNvbnN0cmFpbmVkX2ludHJhPTAgYmZyYW1lcz0w",
34
- "IHdlaWdodHA9MCBrZXlpbnQ9MTIga2V5aW50X21pbj03IHNjZW5lY3V0PTAgaW50cmFfcmVmcmVzaD0wIHJjPWNyZiBtYnRyZWU9MCBjcmY9MjMuMCBxY29t",
35
- "cD0wLjYwIHFwbWluPTAgcXBtYXg9NjkgcXBzdGVwPTQgaXBfcmF0aW89MS40MCBhcT0xOjEuMDAAgAAACw9liIQj8QiKuDAhfgIUxMAC1qDDAAeLwzoQ0Kgd",
36
- "JX/4mfOoxIpuVfDf/cReGVGNCoH9n/4n2SyzILWepD/7BY0+K1gTTP77uGoYRC/PQer10nDCoR53nq9IANIRkhQOl/f+0BwpHSlA3J/vgQABQAQYqEACVQAB",
37
- "AEAB3MxIhcEdeLPDg1zo1P5A5v/9pgK5iSjamAHXlFRCo8AQ0qc71gIwj/78UFZjo0VRFREeDRan/NUNkU3LeuIHwAHi8M6ENCoHSV/+uGoYRCfP49XgatYl",
38
- "YrHCHq9YNZiJIPZM/3zhGZSOVkHUDdPCQhsZT1e2iyzQKpj4I3/OCM6EcyIOqg0ufQS2R/bCGR0Mo2h3g9P9sdgPUVpqQUX/9+UdNvQcT/9+CQyjOjYJDYM6",
39
- "dgZhn46n/78vdKxWL/+5EVURUSahAwr/NUNmU3Lf83EXhnQhoVA6Sv/3xqhsym5V+b/4O4agwyFpE4PV7SxZZkFzEqQ/+oHWZkjg/x/fLBoqWLPQQ////lw1",
40
- "BhkLSJwerwNWsJSHIch6vWDWYzSBdNn++cIZlIU7oOoOJ2GDJSew2SMraQ6DzAerGyjanpWmhzGkdX/1qcmmbjAojNobUwZ+K1bZt/ojYRUHghD+ANFDYV1a",
41
- "oExMMuY2dB0s7/BwI1GRGF3/yf/cReMqMSPh/d/+BPZiRo5ZXmxFlmQ+RyEv+cEM+IUzIOqQBS4rQayn99dxqGNyfNQer11OGPyPM09XpAGszJHAvv7/2gcd",
42
- "nSuBOT/fBACFhAAEgKcHxeePoLNvgNRtTs6beg5W//cYD4xJRtTAWOJimOwrlY5nB/cCjanZPUWwnm//3GABbnHuBtTiKgI/2NF/uoyIwu965A+AA8XjKjEj",
43
- "4f3f/rjUMbk+bx6vfIA1mZI4F9/f+g2nDViOVj1e2inkHQpsEb3AdpNon5VSAKfOkGtz++sSkIAuhx5I8PHbTRwecrnDiNrO/Ot46j6TsMR4xtgenA8Q24Pc",
44
- "Y50pq4uxfK4h3JDRxNm+XEViKybIdf7qMiMLveuTiLxlzEj4f3f/v3UZEYXe9cnEXjLmJHw/u//XGoY3J83j1exJHJA9nMS/6QBrMyRwL7+/9oHHZ0rgTk/3",
45
- "y41DG5Pm8er11OGPyPM89XpAGszJHAvv7/2gcdnSuBOT/fBAlQgABEybfmNqcPzG1NgPViI42piA9WIjjamzzTIbUyuaZDamwALGOP6htTEACxjj+obU41D/",
46
- "+NwA4syAQz3Btq91GRGF3vXIGCigACAZ7jUMbk+ag9XvkAazMkcC+/v/fDIAAgBAB4QAtgDhjTSGVUXvhEExStdIC+//3haCYBnLHEcqjuvhACAKxZmjTzYA",
47
- "6An/+0WAQBWP//wRApFPjQACaECKicn4f/4IooAApI+OAAOJUcAAR2f//4LgTRQABAy4QABEIQSEJEfBwBAIxwdBMf8P8FUIAAgAByQKCIBqEwcAgFY4PBsf",
48
- "//wV4HCDiEHBwACgB4gAAgQgACBlA8bXMPG1zA4AIILuYcAEEF3MRBPHBjQACSJ/8P+CwFEUAAQDOIATxAABAoAAEA3B0ExB0ExBwAC4AAgEMQcAAuAAIBDH",
49
- "//4IgUinxwACscAAQA5OTwAOAhD7DQJF/P+aQOAIAJBwIFiEDgWAGxHIHAsAJCwwLBsTwwLBLmMMOOCBgc/6MZScSEjw1DhigfT8eE41hp+PBMnWPx9Q9DfJ",
50
- "/8lwGR8CIf0VsjQEyAwlEA/isueAx7r4fmeYoy54SPUM8PhMxcIxD4aHYCN2Q3MkAkQcz/iASO+J0EAEUobGAb+L/5qPG/Z/ZKcPFa1lmkUwe7y55w/UB4Cg",
51
- "7CLV2+m/EJEDOghBIKGGTRbDDAItM4XS45Y//2oggI/4ADxeGdGNCoF8r/9r5RZZoOhjyHv9QQNPipYEsif74JhKEWDbzN3qGzYI1P5DSk//2eMI8SbB52gh",
52
- "GySMCdcP/93X5f2Gyf7kyIxV/4n/wdx0YExVD8er3yANZk0cH1/f++FSQQmY4zriA75XXSEj//f87ObTDB77M0aeYGLM//7Xpgrrrp7XD8PwBAsBRigACBVi",
53
- "AACAAAWIAT4OAgMZg4EBzMHQRmDwZkz2pgprp6euvDDAP+CsE2AmROxK1akEDgBgFCIAAgGnAAEAwBgd7TAImUsPAAktD+YyGHcQAjFyw86nJFSF1AKt3d13",
54
- "/EgTP/p1hI2zfwkbZesQwCGPYaIBNuRW/wExIZzVq3VkHIDGZBICMBQgABADEAzYCfWdDsVNhmk8ImVzwAMBNsgSOLi1V0o4JSPu0QAASAcOufwDAFjCAr8u",
55
- "ZcOQQA48/3NdX94OhEQkowgILqvhIvTmc7HGtYSlgAZ15N7YjeJFSYCqHKAcA4/XlxzZrjcvcBPSfWr98VQxIOY1saYaWUVLZ1GqAhM+0Q3+8wRFlHt8eMIM",
56
- "PxDgAiRERjtbqDiARHAw5BACnDgVsvRowmC0EwGBErc+ffZbIeVjBYEArAKASRkOFYi7tf8cMcOlAFraCMdDc/9cHEAIjEJoDAAE+EwjrXSwD/e8MQssaOm7",
57
- "WAsSyEqfr0AE2nMiDwi2J3aTBPXT10vDAfwcJIKICaRmVavPIECZkhua/AQpkR1q9+BO2kN1+FDMDhAECkA0AEP3CFuIYAVGVmLMQUAqN2g9ahu++5jK4AB2",
58
- "bJobQqMI/8BDSNAmcoZBRyQIaRpidREb885smDdqhQ5+f/hjh0vwE0Tu1avwIEbshufgazCCJ7fgVeSdMM2AKTTXrTA/PRiURCa5Z4zHKZDTFJ3M5Cpglp6e",
59
- "uubjgAFY0a65mCpNk8FcaAATQGEASRDHD/QLA4B0CrJv4BIQLO2nBgP+BMEogCqOo/wf/+DARh33A4QKKZcISE4QABAOS6vuARCzRAu1OVCEFwAd2JzGEW8J",
60
- "3a/DGAY1r1XAdpMGcwFG5//Bwg5GEBODg4IAAqAIcCT2ewMVIetvVldPScIeUt0g/AXH4pQb6rMIX1LQ2Nxwzmt2qjhAf9BqAC6nyNt4/v9dQcQBEQwACgAu",
61
- "MIAAuACGhAAGApBokzCkxIqAj9TAHQ3SFvfeABXbMwTv1KGO+QvAZswoI23SD/j8AxwjyYE8TOhuf+uDoER1CgGUwHAtwGwp5HIeVAwGAF1gZ+xwB0N0gITR",
62
- "pGTMSooYYAWuAiZTAGS3S/+YewW8AFszCRSxpEH/21hBZ3CAkKXAj0mlbgwlh4EXSNK2gYJoagprimCjTeQ1jbAIZ2IPiG3/hr8CGZGhuf/AnHkhv7wcTYQg",
63
- "YWQKTPkLMUhvf2x+Up/8po0DdjBkFHnc9MmxOcOnPPDDTBTT09dddddPT1xTBMZdf/u50CeOGOAAV1DwH/QaBMAGczJSj6//ByAZEIAAmAQsICAAKADmB4AG",
64
- "cWxL73EdsnwZJigMtukH4AFJIkGzZCBTekVAR+pgBVN0g/4/hjhBhwIEbshufg8BkeBwJqHDdgQmjSMmYlQoDDACxcAjYogI63SAjpk2J8hUdgwwAusBn7HA",
65
- "HU3S+A+Qexvoo04geBwCAeWWPADpIaApR4B4bat8CAFQAECQgAXAAEAIGg4AwlxkQ/tAQvZN6TCDwDgyADAKOGjF3aAWL2TepggfAfhxD4cdAVJEYDHdIbav",
66
- "eHiH4HCD2y4xD8IHooQD0cGCu/gF+/mwU0+877A6pNfwAl7+bBJk+877/6h4DDpQAX+VmkRY/srLbx8QDwYA9kDgCZA4ACIvgBmf9Exqoej4AM6v/IjPTEXs",
67
- "Dmb/67v2wU109PXXgAAABbhlAyiIQEr///wRRQABEt8cAAR9Y4AAsIScn8P/4KwVQOQDDIOIABA8QAAQPAABBhgeZXMPMrmBwACQDh1zDgAEgHDrn//+CIFY",
68
- "p9HBk/+H/BYCaKAAICXEACLEAAEAsANg6BMQdAmIOAEAdiDgBAHYEQTxwY4AAgBScn4f/4aBEKAAIQ/wOAAgAgOZbCtAACM4FaAAEC2AGcssSum7X4AT5GKk",
69
- "c7btf4cQ8A4aIAoJmgEM1QbahT/nDzng4IMRwoeKEQaHz67qwHO/n2dp98//j/adWAOd/Rs5o7tf//AA4DlOB5wPzgecD8ARTQZCmrVqQf8SBIhAjXAQCDXw",
70
- "O4Aw6mcbrQMuAxWADBdVGcepx2P/hj+NnDyweBwEDBDIsAA5f3fCjlhFiQIAAiGCRBwBIvmB5DlfIrAC1wCNlMAM1ulZ76jhjgPBgTADR0239rSigdBRlw0g",
71
- "HDAhwdnT2hyeB+ELc4zpGlbQME0MBgBgFHDRi7tf9YBjh04F2SaG6+fingdCjLCQsKEAEB2jsJ2xxHlSbmB1ImvaABP38MVxMn9r//8FgiKAAIBnEAIsQAAQ",
72
- "KAABANwdBMYOgmIOAAXAAEAhjwcAAuAAIBDH//4IgUinxgABNDgACAHJyddddMFTaYK66enrr4Yf/Yeij67XHjh/kDQKMDhBTEHHIAyPCUBA4QARQ8MAeYrg",
73
- "JoK2AeYrngcAQxtwAvYb3FA6G6QcAQx9znqHhwHgwKZTACObZJJD+0yDwMjhKmEABVxAJdzEX+//Ala54AsXsm+TAgLADDADOWWJXTdr8MYBjhAuL4ECN2Q3",
74
- "P/4PDIwLYIOGJ5mB4Q3l3eOez2B/s06TABzv4yqzR3fPEfj/w0Ydzi/BwQYiKWEBDjSigSuphdr5DgoAEZDMcKSISXFt2j33x+AY4R5MCeEQqG5/3wOIAqy9",
75
- "xAugoM+6dVAjoxLyFzHYpAwwAspgDHtDwL83S/+oewWlwADqPiGvXr+2JAChAAGQKIYwrM/AUjLyjLXuI8cM1BqCeuuunp66enrrp666YKFPBTHBiHbXD//x",
76
- "wKA09V+BwgpjLOEohhAAGQEBxuAi+l3ktBMH0AiMgzBNNJMdu1LAALgACAQxx+AY4QYcB9JhlMhufg4Qcjx2EgI3qb6L/gLEYishzK4iVLDDACwVwIRiyAFI",
77
- "t0o8B9Q9AvuDggQjfABf5WySKH9yB4IChAACAAADACAC8HSCUZXzgxl5DAB+YzHCaYWeRu0ApnTEFCtUrmzaOxAACgAAgFmeHEPhx0AUW0CEaBRuf98DgIGl",
78
- "l3wgARkDQgABAMHCQkAwHvgE7/eMRcRk/tH/ICmdcUdS8xHJAL1RGI5wmnlHkbtB+oKa66enrp6euunrrp6euZgoMzKeCmMFBnA/wH/0CwEkHAgORwCQgBMc",
79
- "2AVptTz4YAPhEFYbwtZxXdr8cMfw4aMALpMGcyG5//BwgUjCAqUQIAAQBRBgqGdusD3eDKrNGL7X+AqCTsIlG7+8ArNGRhEHwp5j92g/UFdddPT109PXXT11",
80
- "8Ph5CVhwFGAS7HSJ/w6QACGrdpD68H9Z1THHutr3c+256+QHorQgEgYsIAAuDAgvAM8MkqcDfXn/zMAZYXkHMv63B6FciyfP65wX0Ig+G+E3TpeCVF7A0w5y",
81
- "3lsTXuCn9Mw/fhVDpUAVr2Dc0az//VhBU8CAAhT0ANroZEaf8fGokd2/gR7KCrxMOVIerdZopAiV+//XxSLDhcAOUm4GZF9oYzN+hD5BsDZpEQfxtoEdvRdQ",
82
- "3d44Hy1ENbp4DPyhH//BACYENCAANgYHH4A4eDNd5GJ2np+7yAGKBe4FET3agbObxsWxW7+4B8R+w2TbOepoH73SsfFbMgZL+d8H3nb0uO/V+f1dH/7mfx3Y",
83
- "H9w4IAIhZoQABoDAs6a4ZF63pxYynhswVkHKb639HS1bDnvl6YKa6XAAAAb/ZQGSIhASv///BFFAAES3xwABH1jgACwhJyfw//grBVA5AMMg4gAEDxAABA8A",
84
- "AEGGB5lcw8yuYHAAJAOHXMOAASAcOuYyJAAfSbaSTbS//4QXdggCc5OAKCZEAgpJtq4AoJiYENNNtX/xD4Le8IECcJCAEAignHSRGAwpBtq/HSQnBTTDbV/+",
85
- "H/BYSKAAICXEACPEAAEAsANg6BMQdAmIOAEAdiDgBAHYEQTxgoYAAIACJyfh//giigACkj44AA4lRwABHZk/+vkhJDgJsADaHzZLFHkr6ApmFP9R7d9ATHIk",
86
- "TLxAmff/WPr4V+aoRv/YDSlLQkR8XUt79py7SGoSql/ggACYYIIhAAiGGwA1DLKcaAegwWbqPVQB+xkmyGu7eXFrm4rYA43A4QcQgBS0Avvx8jf2oepQpnf1",
87
- "7gBtcu/4AK/WSJ/RaX3+rbfyn37uvMRd3erC0JSMLcdRvu1BzNJuvB3f7fGd2Xc/dFa1jzPmCQxM/9hAAGgA6NCAAEAwAKA8CkINzw42AZjJwhRv54FPJ7Bb",
88
- "mqIMCiOUgYS1sPHAOYqQYWj+egvrFi1DpB7i/HyUcdjztuD5/uejUs2n63dSrvX66r9NMj3/IAAAvtPszhdxj+uR/mB3WWfxPv6qRaeq977gHlulnISf0itf",
89
- "KQ4/3wQABsDZoQAAgNgAGY0yj+I5f74reYpbXg/K+mV/f21kw1kXhBPf/U2FrxSK3a8DxI2/2jmn396+PAeN5kefB/2AJeVrCkAOa4jAEHYanQs9EYj7mmWd",
90
- "BSaneop9enwfJWOPprI69Lu990tJ8S8f/32fenTZv/OCAANAVOBAACA0AApZET6GS21XQGSSCyp5tdovbDquC8w5V7ta9bAPaJsAstZWZZcNrng+K8PS2O0d",
91
- "+pPetrj3I87P/fSpz+5Ju0/2SMD/GAABigACAhM2mOV/61wY2RKJ7/01MRmStiUfD+NKBAAFwxR4QAAgEgEAGAjLa6wiv7/aFmI2TwEc9qy/37YY0lWZZAQ3",
92
- "7/pzSGCo9ABW7XghmF+QsTwAT078KRX4bE4IXlvCIymq9I/hTWcBYfvAKPCAI5pgH2POGJY/fb/IX5+M7////BEHxR9HBk6666YKmxTOAAk2km3yT4IFkUIB",
93
- "IQv4ArTMDGYbavwBUkZgGGKNtQpwAE2mm06adBBZXCAkKf44tkBDNNtX/HBMyAIMWbavFPX73TBLXXT1/s0fHwWAmAnJIiOkQCKn/9wA6NVXsZH0lvQEo4xl",
94
- "vW+gk/f+WhkPVa1f+wQXCkBWBiQP28dllGf9//gGd31hF/9v/IK4hDJEL6RhJU1v+In/rQMssu/lWz/v6cTYfmgvxb/1ODO8Eq1y3fnwynpw0//8gtvVyq9/",
95
- "15KAytDvg920PyAfW7MDSQg3/RGXXX3cIAAiBhREIAFAAb5lkeAhaWw/jJYyI2uDO+lT+5Zot4zQRpNxMAbApg2pkAAggu4CGzbjCrJv7uAMhCIkoBxvad8d",
96
- "i0beg0NqYFJzt1RrtaXZWpR++7jWyfLx1gmYLVHJB//K/n96Wfv+aJUY7eH4dfOhOTTEd3sIAhS2BAAFgDg14BqZhmneOwG2Ms20FNLe3H6YYQhAklcFEU19",
97
- "vWgB2WBGw/+0Jo7MsizvH/B/zDwkMdk1dy3r9XqqLzj/fcE0S2Bpaz3f9/rvmUlmPJ/1Dn7UB67QX9v558pRVk4yb/obh2OAa/fT4kX/PvPwgEYQmEAAVAMB",
98
- "xetrm4I/u3jIH0Ga/a8Ysm3L//6xNsPO+DCYeuBzSBL2BRFd2vA1eZSE5S6//XABISFEMP+2QYCET0b+8LUi0Kof+jdFOG+Qa/+rqBHy9amZ/f3P3mu/f/3S",
99
- "L1WiEOblGZ0xhvfkXafwoMFcEIwOoghmljA3oGT+YNTuqbf3wIgmBIBsDnTs3AHWpB200CH/rIwXdMlSPu/CAAFwABAOYtHDD/DQtNCmEZoXKaHtRfhUr0lU",
100
- "nBD1//L/7b6h2uuuunm40xo2tPT1109dL+VS8ewWAoDxTUqA/nvzzqSTt/7ebXxMB/KThJ3rNtYIAnDmBAAGAKDzkhf3GIvO/Ssj3MEF7OVB4ILa/lkAAi9z",
101
- "BT/w8FZaVUdyb79dE6kcj9a/kUzT59YT5Ys7v54tmosdnqC7/fh7DbCaTefbBe/34f7RHw8FkKKkKfKKfpDK7qb/6AjvpULH3v56aqhyNf4KYGIEATgKMtwv",
102
- "EKf43+CPWOV+EHx/vv1Jn//YKyPrpefnRaUo78e7f4Kga/En0g9UEAJwxgQABkCgoxOBMWiFbt/kgOlyaIkM8CIph+7f6MgACTXKM0FMFauuuuunp66enrrp",
103
- "666f+H/sEUUfGjWtMFDpgprrrrrp6eunp666euunp66enrrwAAACFUGaIGP8M6ScIAE5yhBREABJRpGHiirI/zpF4aOiwARz6LITDgw/i8V4hyfA8IUzy8qs",
104
- "IIkQ0JvNG+AB1olNx+VtgvSmRr5z3XUNhgl2SQXvCmtf6BpMrT2Cw2fvrapp46E8//dM2VYNfihWKXDx2i6u6KLp+NVW7wikIFVgBrtfbeclHo5gj2v5/QMA",
105
- "TRvRqtfQ1ULeXpZ4bgfU0ww8URb/8732ANKxDg/31xdbf/FxEvz/l4cwYJoJQTQIVtfwOASrcwjiOKLqsmdcEIIROT+zDEIgP+g0QHu+0I8GkbLxACRGyGlo",
106
- "mha9eMSzUPYfNGHgGMAj8GCkAEC2kNz/1xCR3DAnGhQYw2lpg8OEXPCcGsMChy/j+H4cJAEJoaoyG1NBCR/MSC+zdkA///wHZPGmED+H9hs3wAYv1/VeCHHH",
107
- "I0aNqbwIoCxGSbnOGPjD78/ZuF+I+I/iXNgDnaTz0bO23r0Ca9Z7AqWemh+EPsFfBxAEpiJ9GVWyR1XvnV7NnVe+lzbrubYkygPD8NBorJg/gxTIAkDM7e2C",
108
- "jSeXwKHAowhDxMJ5EZ1q51UmF+h0JB2lPgAcKbI5DR0GdDCl60D+BBCIb4Dqa7RGX4E2v3/D78VBLd/8uRHTYRwQqn8EM8IznX8BF6r698U8Igh8EP/rXgh8",
109
- "EOdglkXhkExvxewHQPXc/ECvWs/4311rwQl3vwQ+CGIgAAAAs0EDKaIDrxeCH+l+/////8b4X8L+PyhcFHGmoTiilkPe+UBScRXl/cjvlebzoCIFXwH7y64I",
110
- "9Lz6A8n+Gq/z2FyYW60AC0AyPU8aegBnwijgl+B/FE5wdrKc+IBmSfo/H7KF+cdHg5ANzhyOjm2BDWhwmQVICISiOnCXvFIRKLpwDrKfE/+8vwtyH4DKg0YG",
111
- "dB7fpa80UuOhFJwbcMQ3D/JHIDo1L1Xm85RKXhuw/bUvX/kgAAAD1EEBkmiA68sEHgQc5fxj2QLgmwFY4xvTAYzb6EOsAPOyVSotuPvvuj9lXyDm/fgNtONx",
112
- "Uc3f7kd3WY38ywBxXPO/nwwapr//5R0XUgeO3TL42KTG0HeC3l6u/e0x43KhnvxOXQG8BXuxr09d9A81iD1H+7pHy6SEPjyoqYppdHX/0kvhVE2+2AFFLxFJ",
113
- "eCmFv/Wk3t6opAd5zH0UJfTi4vmx4/Z2CO0QwOKj9QLgRL7601+DXngDgr3G6zSCJnxATwgF/9qub/fDPn3L583/QFw1CAAIhqsIAAQBwAyPCMfI0LtrpXs8",
114
- "RL8djeCl7D9sGX7v2VoxeeeCKOmOW2v/k3HHdULxvAIfHpHKXcXBAJn8JDelh6LVwnKA/2N4NqNdmbxNoHkhb2gfcY+p7wMAAgD6wgABAGABVyRMpYGDxHJq",
115
- "rQ2H5wNhxJUwdoDk+MLS3zis+QjaeHVxgehxt9kd0i374PTzcy4DXwn3K7Q5nyf2BOP1P5y8RtVnYePAcQhMzrWUb/GwgWl1mK56v/YPwB9e2f0v//KX//L/",
116
- "/Obyx/0CyAJ2//e/5LLDTsPfhvua1+82YFKX+X7wRLqh32CAlIUILs9FCWhY8XLE78voKBq7Hh7pT9mw7lnfyvzwLcd447b2Y/f1q+PfCR/79vwMNyQAH/rN",
117
- "zBCzpSN2A3f7AnuFX1n5I7DF9sGxZZ9fBeARf7Pe6UUyo+YNfw1z8Am0jM4797pfDsRHiFDvRw0IS+0Kalge8rOCy+bMNLGF5Lx/wpGOvQf/FmyMoD9Uon/1",
118
- "pQYHhBZjakeXiVrO8ofFeZ/9jpu2lokv/mDmVx6D5MRx1p1QH//ir16u3fcqjAqb/ev7f9r22BvfMy76DseDmXGYQ+Hngf61AO1S87WStd9391BIQyQgEECF",
119
- "TCPaGv/ciYpfgxuj4dsomPycg89+Ng04y9b8Aeg5Jb9Ev79TfI6GZB43zWQGCIZ4DSwR131L/dcvp/QH+2XqE67GigO6v2+HKM3XB9dT9a8D/0eBhBkBYAsP",
120
- "MUsAxu/0yftFax2OAsLAGhlgpDp4Gz2ZzDeKA1/qTRzss/f/4IAAgARjzi1vJeT/+eHc/HGh2EfHsFgKEW5/edb8b4YnbQH8dduAiYMwQAEcStMftGj5voxD",
121
- "i5kwhUfNyzvusMlqUHiGB0dv+vRFh8bbwVwHYJ13a/n/+wVFqtirq5vf+gmMw1gNEBsrO3CXQGIgNsCDO/5S//wASETI4CcX6sdvwStgde3kyl+XxY+vDJKL",
122
- "a+nPAUSY4Q19earabnnf/KX9Gtog/xcFMWWfz8FMAAACsUGaQGP8N1rA68PUJK98JnlbFAMD/gj7QruScb4AKJn6WUZ7v3Bd440qV3YBdpa/SvI9gCDIQJxx",
123
- "EYl+pXCI5S6VcCNb4l3//AYFOeTFaYF7fwpYa06AwGtzUAmbqNcgSPL+fK8s/wGTiW3/z6UXPJt1XeFuDG1L/n/nfdrhpbtztvk7mQE3BW+6echVvosWL+Zc",
124
- "pO83l4cwOgLIIdAWQAIhW1wOAklzgcBETcwQ4jguKq1Vf+ggggEQWiwHtPgfGOW/h7zGgIHCpu6UG2glbQRCU18Doi3PNGH8NQQ/YMEkF4Hhxl69AwChEMEF",
125
- "mhGHrUDkcMsjAktNJwvJMcGYpQbAxOCGjQoTMg3sVBmuK0dkB3qyWGnwy6CIQByEAuCT8ACzsT5NVc6CP/vwBEZ8K8ZxPoWN/kqmzAbW6j8s8ytT+1glOWon",
126
- "k91NBftf7DZvgVBSZb+t/vB89/l4vq+zrlHoT+33oDbvH85lv5dweeRRGWbhfg0mgKJoCpNAUTQeaIAJsfBC1QIWA2JyhdMMRuQLpmgI+EB9hvyDQog+B4Po",
127
- "BAAEeILgMIvRAS1XvGYrRga1XvI1em5C/TYh4KghoGAQFwRFe7pFNj8QEdQUmvuDgghHA8GdBhE/81pYQgCQFCAAQAhAN4AlXbDRNU4Wf4AFzh28iHL1DPAZ",
128
- "6dXwxpdNH//jdoue6S+EwQ4ihDkZJYeMkv1Rk00CzN8cePQ/isGzZbxrOLjTCYgH67gLOVYJCFL5T6K4RBN+XJbe752CuZ4RhYFFI9Kk0FEPdAgr+AxLFrS8",
129
- "eYmdMTxcCBCp5MyYL6RezFvsEIRCFWOEOwhCARRD2whCAR4EEGMJF8IQj/L/hD7CEIghDWA1SdLg4MACYAHOZGVrcbvwAO2jT5y078vggCIQCP7CEIBEvVZ2",
130
- "CeIgAAABQUEDKaQDrxT4RDQJAEymjrUH8BYBMAB/Mfkir5kkOABJEvySbfDsEEI2RV5f8If7PAgEzNDL9BEI+X/BAEAjxsEcQjSES+EP+X4bwj8v46EPwgEQ",
131
- "yCCA60u6+AMuu5//e/++EdYRCMJcM4D1vuvgBifuv/+3/6wj2EIQCKMS2EIQCOwhCARhJ4R7CEI9hCEaJKOxYX40yHbCNs11EOtWBAejhgtw0WBNwrlwlVeh",
132
- "uaAKbsxO3wezspN189ZRGFi4bxVEywzN9z1UI+7gLeEJ+R+6M3v6kAq/yWY7ZP8HmEq2XLffb8v4lYUYX4DFXa9ReA6/4DzZh3Z/1Qgh/Mx550WwOETPqwlw",
133
- "72wDijtNV/TS/edYW5tx96Irw0UyPAaNN1dARPRVylc2VyF/YAoVNmD+riuFgV/Z3lHymEsRLb7jyQAAA4ZBAZJpAOvLBB4EHOX8YsNDQuCbACSW91lhmL5T",
134
- "HFVgFKpLZelirvqH8VdAn5/8N3mTFJNN/66ObkzZBD3giiY8AdbVTt8JmvfjYd4DnMm3kwvv//UzISyxf//2AIb/8B3jgy7UB27OtjR9RubdUKaby4tv/6gv",
135
- "W9YX7UB6aFRfuz/70PFrV//7URTBJ9e2tZlSD3iTXZ588gqAOTMUubSeA83lzL3BzYrqvshFHSyABQGbdLqfNf+nbptge4QBxKZmBvd0FuRvUY3gb9oFtqqQ",
136
- "fDGEaudvP0/sCm8CAARu8IAAQAwAjlt/IZ0pkTFL8hVG5xA72SCCv5pwg2yCkSLvBr9KFZt1L9jCMlh35iEBv6wNTaGoaFRcmqyg1cBc1TePXX5lnWBvvF20",
137
- "Ba+Q7xn5oFMil0ZTtXNPfHY18OfL5HrcvY0tr3/iQZ5zm7/v4OX3FvsPUp8GzAlrdcZW9u644P+/kDdhBnwE+19tmdr9HrFfjP3/4ED+M+7D5e/ylv/B+AMI",
138
- "Se277/6jcNixpJg4derQ3r///lL//l//nN7Lf/QLBHJ0qDtr33WF4qpLrKd7WnRx3hc//57BMppPzggCcxwguzwcr+YRb+p+IkjxZ+XxEcxM5AYEoHM9s/qq",
139
- "992D7li2+eo5qa1fao71Qq+/dAkzH3GEbtwHd0EjnrH6Q9zxYvQTtmmhNfAlax+Ot4ntpSv/ZSl4A7qajIr//+83lEX0L/Albh7/WpuwNKYSquAX7R9jKVIu",
140
- "fW8VH/wJ8TPbOohIZjllkEWv7+ERioCAIUJaBRKxtTaGfPXRzu7wKmwxBtTkn6NMId/vXMlHJde2Dl9kXKPD2u7xZ1uR3T8yeeH1YkYYHdVm7DsoYsxb9Yj7",
141
- "Ox6wcNDWBG3n/Y829Otu693AjwB5dd9LfZ/71L76E4d4y2pUINQ9PqeAYWMT3vH8/zuCAn6L6G+GVEBLD/0sO6MHUtx3lBq7pyeD0QMjTvKEA6gOs/ef9+P/",
142
- "/nh3PxyrDQKDp6wI5yfH7+qQ8aGBgopM/8QKz+NHr+Y1ccPiHBWcD+rr/3/95i+/H4NN5lG/1P8d9WDZBEWwKMJV7H+3KxzQZs78/94WFBqEbN52N2uR3XWv",
143
- "5/b1Vn///Gvg0S7kNo+COUuql6/vy+f1hkxLAmks4/NwAMfSA1vRQALbpeb7p/6D31xF0t6/8ewU0n3vn8/BTAAAAs5BmmBT/BhVdt2RYDpTKbxwmn3pP4KO",
144
- "O5U8uWsv4nhkIhzABfnWzIE5t2ABzo4jMW1edCyMhobUwCIB/4EdrfOl8RF0wiOG8ADGKegaGqRf/wzmAFmH2q7xuthz/WB/vqccAjUgImaMIABEyVFF9SWm",
145
- "NpgJO/7Ll3RpMz391edlsBg6D1a+4N8Sdj5/WH5EhQdXp7/Sxpi8dqVRP7BMsI45gSp+d88D/JFSP0I5LQWx3zwHg6q9eXzuxULcGT+6rf+d+l/8Iw0ef373",
146
- "yA7bThdObfPIQl1mWlXee/Bc1sNffjzzMIwjDeDBNBKCaBCEyLFS4HACdbmIL+O5gciS5PleX8ChhlQSnHXhYA/uXIxl8ChCHBhDGDAErLhqSHSKk0F3QM5e",
147
- "hoYcRgMSmjTXXqwIIIcOIP///TT00xFofbbPr9Fs+woyyRl+FwSf8bdUAJLrHISSuVN+401AkEiUrJf/5ICP7F4AxtV7d/r8AksAbU/+lr6YQX4f2GzfAEQU",
148
- "mWfy3++WYybWQ+O7fo+LRsjX/v98AIS/q1zGAfMzuzA7y+HhzQjC5cDoI6Cw6COgviCU2ALKM92ehwdmcSSvYEn2ab3DfRpvfC3gwBMglAEyDjWIAnxlpC5v",
149
- "bKmhc3hVsLFOQ1V75Xg8UxTVXvEQJURaHs+WxW01gQI0juDY2Q88xDj4AhewSGStX3Y5FvFAANw+gIALnGbgm8v54fvm7llgJ92d7+HBMiAIc021TRGo4R+v",
150
- "XvwcECEd8HACKgkAJgPgNVOJd47Ay8HbBlBWZCT7Q9gKUUBQgRYIb1abNjjiEcQQdiBI641nEBnQSAsP9NP4TgOsBZhy/4IHzvCNbb8NlwE0hu1akFpUgBQq",
151
- "bwAV5khxJ2/8//AFpIaOw2p+JwQ+CFXeH/D/gh8EOdgnlYQ4ZBQwMg9L74VJBieCay75//zfoQPxnvBCteCHwQxMAAAA7kEDKaYD7xWCHRvz//+G+pqFTgBF",
152
- "86cn37Qz////8Z5jvn8/H+ug0MYqhXwgX/w0NC47CRp6BbhuQf5yL34HYkCWAe2g4+fJR4Scb6rUAD/ovLrv/uX7xomgtxL+AqUX87qENp2B+1EDUHfSH6A+",
153
- "2AwiQORFkIm1PaHXn3beAWuMhtT+CSexfue2+X98wVC/CUSDEkSGuEbUf94xakMz2wy2B9g4bSVge+4RLMETeySIkYA5ZGnPIc/Lg0fv2Xwi66C3BG+BtAbc",
154
- "Zm0pguFGD3+BUpqUHDfbfbwLhachLS4x4vh8pSwpDeS1I3fHv4AAAAOkQQGSaYD7ywQcQs5f58UEQuCbADWWzMifqQs8OXWC7qNTLdd6cABldE0Ay8BgVB7e",
155
- "tX//dQiQJavK/V9CteAGL2uY/op17yn+ZHCicy/QwxXYd4B82KIXKn54XW9Tg/ZrGwAYC72hxtZZqx2WErD9tTGK/3TISKRj/smiqCV9vX3r0PB9Sqodv0Iz",
156
- "GIH2nFFhlA4ufSB3rRxgLNo/I/ZQB//xDg/A5fFsFU9IPZ7YHeIa/7A9DexgotZIOXA0g3QAcZT6T3QS/zA8xIt+grkna8C/unE46gpHxQH6f/ty4uO/zGfb",
157
- "tHbA4SWSx/apWBBQUKHeAxefS7a3BWAA3bfRj98yq1nfb7UrdZQgZsfwOLgs3b1DvkF7LZEysc5mAJ0tVQFX5DjyKjbkN9T4Fad2LtSzofvmxH/qBnTyV5CJ",
158
- "/wfIHpolmflpnOuzfrGz/P+YXvU7qDjK1fCJPHDZIkft/+1SUwKdvzLlGqttaS4/A1+o/P+FocaZP97ndfU6//8Fs/36V//vdziV1N6PsN28P/X8rBx8Qs9w",
159
- "0IBEfWmsBOf//fg5sROetDkm8guQm2SSi/8f/DS4gdY3qf0DAny+LGKowcHuYmNvb8R//5WU0SL88/6/kp/4KiCE24UzxTLm/7vjrV9VKo5PxMaHxYzvpTH/",
160
- "WwnVed40HtPAhLZgOLpc8Xn/K1Lo+DdcfXE9J3tAOzTSjvf+C8FEu/tT2TYrdRYptDG8JHuA+/wAzevT//EBCz9J72kdV97++Z28mp/PErFHuldqdLdbu7I9",
161
- "eBA/IWXVueqCIYcoIAg4LNDJidtYFypt+/rN8IDTjHetx7eAgr+E9NxvSM3v9g9w9Udl4/YRMv2Bf4CR7Z1vun8AdUuzu+wtsDWg7+24v9PJrsD3qDpAeBjd",
162
- "81+LHkHKd5KRyPAIqpNxpRLZZM66DHjotn+3ikwKMhXLUvxuXh3lDz4ulEft9c40bjntyqdo6oz3Jgf6DhdxDKo/XcnmBFB4O4bcIsqNQq+INobU0y5bzmuv",
163
- "ZC/7oOxKzi1ktmef/54dz8cX8NE8NAoKsvgNM7ZfZ+3xJ6kWE6koRGezT5fgTW/J3Kb781xf/EOCstZfcq//dcy0rSp/+3NQ287FuMv/Bx82nv98gZw+P/0Z",
164
- "7N/AgLv/3//Yah+t6QFzrgdF9S/3wdwGiFxtW/WPO4Nq8QAVleU3+fyIMkR3wDZsEVsEV+4DQ29oT+J/+bsX6Cnv8ddff/X/gsgAAAKTQZqAU/zyqcN2QHfc",
165
- "Zoifz8uYcMe/kL4i55I3gB7GiH2SnvwAXrUyMto17E+7A9vfgAXfsiQL3gp/v9BBM7W4enynappiX4vCNe+83Qosf/RRbaRsiDiBapdX/kv+b2+fCKQgVSA0",
166
- "BgBC+n69xK6jmNC6RJdQAXjd6G03yhPRaOt/nhuB6RpwMHqire33udh0VCDg/31xdbf/4sSRe/PMwjCMMYHEAg6CHEAg6AOQDDoMOQDDoMQBIhCawOIhbgeE",
167
- "JcwPMVwOmO5gghuBwQYQgw4IMIQYRJmKXhxDFueVXcz8F5S8UenJ1CSd/Cd8V17/0Bg4MDvHWWBjPigLsvFCO41RDFufJoE6/z3C8m1gwCII/c/rWDHhBB+I",
168
- "tDznMnMppg/0f7QZxIcBJAAdESIxvCvBaCEMBEK3fwBie00/eoP4AL50nHkf/9TCA/C32GzfAGlhlIlav6p/q6ffB5U/F/HyP/O8UIJfhNuTbxuECr+/djPO",
169
- "MEOZ3hGFvBgmgygmg+iV+AozSNkme8O9JEiTPefgiOov9wKEPRWKz4Aupg1NK1CsVskbIrDZInmFsvBOCdNbL4dl2Sty9HeWXwYhCEAMEChBQYsAYoA4Ongo",
170
- "NzxyxtCCSmgIYAHHodECRq+XtXwz8GCcTTTTAIG6t+55WgNAgGIRDFQNf7KR7mv+BM3Lcm9qz/g9qIwR9o/eIdBGfF/x991D7l8I8IQjDZQGpMqXhl4V3AFP",
171
- "L9az+AFoKT9iS0vfeYXBPRrQQWREQxLUS/GJaiX+CEI6CIR0CTtBfhc4cUglWXvfox/BZ7H7NghRoPBDj2CWkveMXNRczPCMMgmlAXQRdfIRRL+DeUYRb93r",
172
- "/i19da8EK14IVMnghzwTxMAAAAEVQQMpqAPvE4If/Hgmd9333rHfiyu7vd3/////+M5Lveh3Nd+1wT9VVVV2sQEITL//U0sMSOfv/oR1HYK4R9dAmLR5f7xw",
173
- "VC/ZgxhJAEn/EH+3I596t5ruKzEfpM6qkw8AX7jxKOmiAKpXbTEdf2xjC3FWgUY65sX6rqwU+ulaP/7jy6fgfWxD6taEBlxBOCFrzkiSHqWAS8lnpJ99EX2x",
174
- "0RC/+d+eF+ASt1pp1EVTpzI4cTO/HD1Afrkj95kezwTQsS8BJ+rfGsOMmIAFzL6nvUoPd5H+bt+4IgtzbhVQWxwGv5C1c4ViOvMyb7+nv9jKVPp/fbGbptF0",
175
- "iQG6mrVK87fHqdulwXfcCmVf/ufCLBPX3viFqAAAA9xBAZJqAPvI8EHELRf8EPmL+JeVBcE2AMIq5z9/QDi3qh9n8QRGZNAKofuv4cgT/Ui4qP//cAyxy7/4",
176
- "uTfutoh+c62XsPTOBC9WWs/M/5ZCFtniJ7OyyXxClQjDvEIeJbAP8/qsNZAHu070ad5fChoHSRfYGohKg2bXj8PiKRh+3ao1/+UHk7lRSE/20qTijzE7+K4G",
177
- "n8YETX79G1LNmv7aAqT0aEqe/RNk416DsLkDEPTZtFtmxjsD/2QGo/Yaf73ScHMX+R2oesfvDFtUCn2k3wFNWB9ba2rAygL041QiaGHWVoBPwTqlj1QuNJBm",
178
- "34SFeHgGMGzZSt+7oO+UrH3aAm99h+x1AD/HQCYMZ/cxzvTf9Hfwnb++nzCbrQHHylX12n/ThGr/69ofz1d5+gJwBD7fQU76buIORj77Qwr5NG4/dJMSTqkK",
179
- "6WpLaLQpRZcHsoev81N/Jgvj7Mc4r9O0Bnf8CB/oKXit5n7+G3h3nuWHPr+lKNqsa7Ly5GaXmTtG8jJXOvTa+nu+8ajo1HZ8tQ2JMgecMB16pDRCw///I8EG",
180
- "2CHzUQNCAekY8yxIIrUFxmS0HyeFDtiUgfiqAZlTOR9QASQYfbT7X4S/h/h/+d+X7ppCw91SxIyXrYXddlJGiWQ/9PSLb3jfj4/M9upxt3fk2/O+/t4SRGqv",
181
- "0LXK6g4ceJW5O0za+A38tF6EbuJ901NeAHu/97jqRUnyEg3HPtMr+AQalWKtff38psZRFTmEv0SDIANfTzatAS/u3/2n9qMD/7zbko5MTkyDb12x/vNlzzq8",
182
- "fYus4Xc9bqA9H99/CIMKQEAEDhZQDZidsFMqP/If+35DS/tBhKBkFIOyvhDNkPfeI+PdbUXOJU/7h1nh62x8jcXL5eOz6vgb1D34ljuBYQPMWAKNaRRhdViN",
183
- "THu4PunI6Qrs4BDTLQkmmsANn7/dvQVc9kj79qLL0vgEaHXWdVft6pCCA70S/yZ6migo2BN18h8ssce+w/kCaj/tYP/N/b+sX4zOyhyEJ0CH0qc5o/dT704/",
184
- "/HvATV6MjdbME3h/2CblIda2+g+wyLDkHVhY22qGz/XNTv/+eHc/HKKw0CiQ2BubFqY+ZxckKE3vkQGvpBXYRMjjRrFO+v8JqQelG5f/1/sWLJDJWOqcdXqD",
185
- "SdWH+4PE9Qo9vk/mTjB0y/H/gkymLOrX/m8HEf9AsikcvbD/j4Hap2Bv/+mnRdfqbougP1cEBKQ4QABQFMPjC1IOf0/BWTdIgQPT3fsglwyRvuch8IX8fE0y",
186
- "O9HfEgHQLdNBnW/5C3xWFqd/4RYKaJV73vn8/BTAAAADGEGaoFP9fSl8THehvAEAqyTVY9+AFFahkr20GjO+h/3ngcQAQIghOIRCGrUUhGpTvqqhMP+QlP/H",
187
- "+bs+3XXzxck8MBcBSwlqjougHFcsK06uUxAStZ3lAANarCe77fOTbJm+dnhbgTf2pf9/d+trFYVvdv+3ydpkATcHb7p5yFX+ixYv84o1msvDmDAEiCUASIAh",
188
- "IjAR4HIYlzgxVzCMEe92aCHDeB4DGQQ8BjIAIcITJYHtXPA4IhNzPw6V3W9xRqqrYwEFbe8/Dx1HoC9ghOcKkgO+0q0EHX/Mk+fsfCEaHwaWgLWRFYdulBpa",
189
- "AtZEVh26VsZb6xluOGOMAaj9OIaj9OIUjIuZupEjIuZuoCehNyI9CbkCWaOBMXZo4E2Yf/w0HASf8AIQgSUrh8MN2ocWBQRtLDbXwHpgofXzB4dgKmBILYQm",
190
- "verX0F/NU7I/68C77dZI2oKpNPxfO/9TQ/X+w2b4GPluvk+/794KTLP5b/fI8WjRk/92+QgXQxXA1jI9NNzj7/id+eaEIX4MASIMoAkQfEuwBa0q89HSkt5p",
191
- "6HLW0C1t4RjfBpNAHIAYKg8GhZAVJoA5ADBUH5ULIOIBkcACiRkTNm9M6b9EnZMmb2rbfofiZ52vBsGu7ds8vB7tnFa9MgxnbPnl4/BKUnnVYD9lxQERkdAE",
192
- "MvggBACGDAIggh/2XD4WDxQGKAwEMbO1amBNkNoyKtGDMI2lnHZpgDG8otr+kvhOBAghCIfCIdJBibLpB4f85zcVltzAIoP/7kU9tlX80BHAADXk8GAqyAb5",
193
- "Ab2tX1fvASNVPn/8GLYXJgBiPaHKbnhNHgso6gJptCLn/fg+Mno7AGDOVIbn/+wMEChDHFMK2W6NAb/2hgNy0IK6Vf/ppiHYRhbAe2ulAEiCDqa7hp4eAx0f",
194
- "RAgUZG74F7+HQfQRhCGywE6klWr5RA3bwEvt1W/wAL0Zk4SpusfeYXBPRoAcQvBCEfBCgVJ1wQoT2oIRE9/h/BD/BCiXeCHFwTxikYfz+foILHGIIJeKLFF/",
195
- "kDzv+jV9a8EKJl4Ic7BTFQAAAR1BAymqA+8Q+CH/wRAoWutY6sY+Lu+7/+v////4v/J3ejCMwm9+0ZvflzvnYJ8/n47/QJGy+EF46juGdh/Pwg8+ugUdrCFc",
196
- "vr0cuQL8wGAdXEiAHGdGB9sQI8qIfj9dQ8OwsADJTah6L8YCV9UiEp6Sb6f/xYTLhYuAt7+gP2lRYNM3qryXnuMS3th9m1xDPA4Lqcw+aZEWU4Br7/affIV6",
197
- "OyswvvVr9++X/7C/CMFAyIJGPI2UAw3XV/dKnklTn39QYu22n72Po/xnVCE4gEuCiKtwDzdd7+b+AHeKUokI2oICT7XOlt//3y+LBBrhYnhFoN8ebEB6GuUd",
198
- "/P+O4t/e7cg9Q7UIAvss2+UXXMUt7r7m+EUCmOkcbbbbfuAAAAOoQQGSaoD7yPBx/iFy/4IfMX8dynC4JsAVGRPjjfALn1pO3d//gbWFU6TSM26lxBLmyu//",
199
- "+IMgR5IhI+6vsSYWdyolEPf/3/wAvb333fnAEj/ed+S+PTaPh3guzuyHs/cjA+nW7gAjOpUWe65eCodmJrFr5X15nvYAGBJmYjQ/b1beKtbP6f5rPZ45saU/",
200
- "/vaIu9UOv+9MaDGlgRu/nF9hWTqHmDCRoIwQjh/qvtn+3jacQ8wOX5BR8qD0Io/ctn6s3fcti+GjTYv7/MzjfpIDC2zocXOdI3BxruQb332kC/kOVP8pdVi6",
201
- "jG7F+Bi2qNHT/I16nuv33haEktl5/xYKYIkHeA6u1Q7oPwBM3ph9/znvrkIKyhv0TWMzCHf0n9a+eAOP2BPiWv5Z3jdxSvAKDXDgYycOn+GADsoHIjXf7mBZ",
202
- "RbYnWxf/+w5fHoYXig9rx9O779FsinzlDOPT5uf/EScBXVfh2Kn4XXOtBw799xGey+llKXmjBzdnS2kbR///k2m8f/P8G8l6Wv//75UFhONnC0bNNAsaNqxw",
203
- "b/nfZD/zP8QuIXYIfM3YWDQgHjidLKWiP6+oiSfhu2d/1ANkl/7BUz93Wcm96BQ3//wIsmBmcF1cOSNP9/P9oBoo4+v8vqHLigmHrgIs79Qud7ZNWzyxv8ko",
204
- "qbUh/3bP3S9iH9b+MUxri88SPR/8ONqAuXMn/g/K9cyzveChy/nrP3sqtHPwFv9/KjuvHRRCPjRVgEcP/9L/81glYNId4HuvA3tdRiftX6gv9e8OP/jhm72b",
205
- "LAtvvODvV4gsd+v2a32BPDQm3/dO//MiPqTsoMLV6t//sMxaCMYWnM/qshd2if1tv7hy/I7jBQeqsb16cXPkF7IS3gXZWuwzryHs2SSw/oI1/gb+wDr13B+P",
206
- "ybNrAf/mRqT1Y/+MHEFi4OUMPb18PdvHUq0iy7ojdpeNB5F73l+6COw72jwbgzg43dH/uPIqDQ45ockA2Gsaterc5zf1z9q4/92//5gHskJ87IMneyfzktiv",
207
- "pnzyDUbOmj7g8TDItJWPvlbHKo/31g0//hB6QaGCL6aGX6asmBt6LkO0q6ncVqkfD5/hZWNfbT19/sSTDJQzqn9f/znH58gP/pUDN/8H+fQnXBzRwAcThhT/",
208
- "7miHrUP9H/l/N8NRC7tjvJPhqgP9htvH6q/UDdU9H79X8zD8iv8/94iGSMPT2NfR9NMgO2Lh/czX/z/69eETeTX/lZxi9EVX/BZAAAAC9EGawFP89eGJ8fIX",
209
- "8Idwv4AWWiM1nd/wPV2iCo8W/8w6JGAYM8LQZzrxeAZ3Ic/bA4AIQPaiazf/8vhGLpBcMDeCaNMFz71Ht9+AF42WyNN1sGEfq5/f39ljpXcWLRpd/hlAVXZL",
210
- "W3/tuLTA1cvP3OoZl6yn791LoxKvBSNXpXjDRXZrq0OojpooVb9U9Qb6v3EmDN84JSMImyxKujv74i5KhtRVuK2l+fQ8FOr31GmxULcCernuq/7vwn/CMNHn",
211
- "83e+QFNtFC6c2+eQhPWZaq7z34X0xr7rz3mfAk5f8EIEj/////+DAuP5W0K1wsHUmusa3obruOsCBDZ3u4hKIuAasmeHQbxg/JXu8FcVndMeTmH+H9ArD5s4",
212
- "gmhAomEwsHS0HS0VZa2hbwuCb/gAuTf11n7+dCbZY0dEXajdYIxhK1GEA//ADn91Hrq/4AoKibZwdXsnw8s2kmbU3neEQJAW8HIfg5D+JogUgZ2xUIazYoEA",
213
- "HaH2Z3SvdIOLJidnSvfOwV5/O+d8/n8v4S4IAiDAEywXosgcSyKPTrHPRMal6dAQYRhIkHXm78yxDAQ8NDrKpswYDWQeGrKy/EREQQimBZTeCG3cWwIhiaxU",
214
- "LzNgGALGEBJ9gTFjZBL6oABflZkoiX82ARLkEv/4rB4ZEPggDwCUau44TQEw+vLlVewAaC3kRBrlYyNvRp0OSFj6SEUXtAOIcsCBieF6QcelSaCY3S6Exr/g",
215
- "DEsWvcMxM0mDL4R4Q4b4G9dC+dLuBX9z/wc0Thkrz1z52CvO+d8/n8XxBCjlvCEgIokc7CMIQSiHfd92wQwQhENwBFNAzHNWr/8dfwCDX6PT//wBJqvR638v",
216
- "gzhAIj+CITqrbCOCFY5j2RDL2tb3nYJ53hGGQTSpGghRnSQpIhFr6/P+EekwluOHQvzsE+d875/P5/P28JepgQQx7y/9wyj9l/CIIfy+EQQwyEA0ERKHQa8N",
217
- "+BCKJoJBOoAXABCrN6Ih9fgAZHclM2SDFwAAAhtBAymsA+8RCIIQyCaAmkZirV84kEASK+ov9wfwAOcyatbm4P8v4MsPYIeqiYXBnDta134CamZVqAEgNqAB",
218
- "kW0RTNkg8ADHS29EjYcvggCAQu+X/CP4LwiUXjR345/////xS85lDCXXz4fl9Qh8hlWsvhOuEJqr44IbHwigSVqqZWCAIBGYuW87BLnfO+fz8bCEgYh495fw",
219
- "gLCMIhH4cFcBsm6T/4AYzX2v+9p4RCOb/1HCwWkwA0dH7fa9CAAIhSCNvgAOheuYpfmUEBNg54J8/CHIHuH3r4RQgtwjC3u98BNEV2rUODBrfhwAKyMzQmzl",
220
- "dmD8Mk4CZIbFrUOwtLwAHyow2S1MvUMP4bwEKNmLWr5UA3AS/o+erYhwAHjWYlbdOscMcX9coSC/DsNCaBkSAAg9LC6hJ6em5UsunAJO6T5nwwkbAIyRJ45m",
221
- "+79h94WLgEX/l/Ov6IIzj5eSTl4He2L3RRIH7dX7v/+EeIJwYqXj9wfBwfGVj5AOlWy2Pe9+wQxQQC/COiRgf2jL9ADG/WMRQGrslKNvlGH/ZvCvgguqQIfc",
222
- "8h1nN1X6gCRsmmB0DZjYqWPVaGsLsIQtwFZrN1gP7s3CkGaYLsMd+I8FGqrYjfzuZedAb4RLiNHCXEh2nqzUCN0kxpiV2vXDJOAhjZ2rUdAO+AA8byCVZF6Z",
223
- "gw/hvATRO7Vq+CmBv/DTPVYcAB8nENH8XJWDgAAABARBAZJrAPvJw2CriHiyA3AHHSbz34A1dEz573w5wdfipAH4A6ybWe4AxXI2VV4xfwRdEC5cAEH1+r//",
224
- "6MItV4+O/wuQSTMXhzvbbGiFmNanqD7MchnAf/iSn5oH6J7qZpwBV6pn32+CfZ95y+CMShDNh3gqp6k80fvAP4kF7KWZ+9wAq3uzs9yj82W0nx4DUON+OfAY",
225
- "+0VLn//dTZVIoXP/NEr4ZpL1J/JUiUmleQxYajYSsGw1cyshG5ab75tANxJZbn33Ta1vsHL52QmoehPT7vn+nT/LHGr148Bf9l9oBdIc05UbMr8wD3dpgf7I",
226
- "b9aX+FT3ATmedj+QgASpoao4+w8KceEfvT59lVoyii//7o1cvu+bwU3msyP3rw7zP3ego0zvCCJQ5pGP2uE34cq9YTXbwwxiDVYff975fXb+GDej+dL3ICbJ",
227
- "IIJL2WAW6765wrk6Ou9DV3WNfoHD5LVj2/HUMxInhUs+/Ycvnm8aHp8RXoYl05CO7nRHBor99QFH2hxm93v/Ue0b5YqncPNgb3z5wOC3qG4602rMnEpR0xWb",
228
- "TL//o2mpZvPB9XT3ulXhYTmQJkRvc3AJgRoKDdTk/dhff///k4WFQe/B78Hv4EEgICxAiLcwG3Rp895AghbmAzKyNHVe98Lwdfg6/B1/gUJAUC0giNcgNciR",
229
- "c9IIIS5AZVIiRVXjPZQ1BYr33m2rq/ZAOf+eNr/78HRx/IlyPutqs/Flfz//6HTEvujrv9Oh1/l+QKeID1xQvCyAUV2CbJJScHe9/j6VFefT9x++t2ftIcg3",
230
- "hBugPv8dF/LzQ5uXn4bIN8f5vwNRhMo7C7/IwMT3Sar0366XgITcnI++l9yKSw7wIXsPugwnZ+f8N7U68Cd0fA/Ab5Af7qwKG8ZWFfaPi8z/1QFFfJtyZM7M",
231
- "MyAHX7z5WeRfroYJc1GVORNPZP3r6B52HsLzdR/87768CWscVpZJj4lG4Dd37DzQl072YW3Qf5VTmh/kT4AgmxwEFgg9i8hJODIN69tg0Nbori7UM8v2eDyu",
232
- "ch1///67hAO8E3juySoFXQHG6+27841vc/u6Y/5kJZ0h7za2dX/mR9+HQO6duYjNWcd5H6QrTn+WnITHEey5un/whDI04BTMRecoPej3U3+d//zw7n455IaB",
233
- "RIMz/EIZQPBAjH1PpDz1SKALe7hfN+DwbPvvNVr/CAZK2LSgN9izOzTIOHNGC7Ez+Hp03llNBLNhAJSlbhH2l/5//A/ij7ETBFQP/Q3hqBi7wgL/WBXpNqh8",
234
- "3znqQykufDxBdYQXZ4DNc7P/8/B3ZIPIVzr//X7UIwyRk/2A64jcsD/buYeX+AH1RIkB1ObD7tclEnx/4uCmCRizP5+CmAAAAgJBmuBTzF9dyRvASDdgafaB",
235
- "Hoqbj9X23fYDu0FeFJ/lqHu/ftbSIC94KaV/oIJnJLB4bf7ymoyeHQT333TJ0Vgarjh2JLQ0ORdRHTSdH4bqq94QUhAqkBmD4AxZlvb60aJ6e5hqXfiF0AJo",
236
- "3kPTXfTyoLLL0tw3AypGnAweqKv997lsOnIQ4P99eVWNf22JLL1nlhH/QQhHOuCELFxnLoo4gxjNglYu9Sn0KJs3gYJziABEiAvHgzMdBGZ4TM4EzIhUIghD",
237
- "Rv+AFO5fQ+PwvoVyf9Ji+98v/BNhY3zYCUpC6WJVcBu7f+v++zTvCs7wjW3CObh8tFHspQgeLAA/gwBIyyoEjIsAAxAQEJKNPbA1qnxVgS3JZzy+Bj4oIqCk",
238
- "jiXMUGD3kHXmCbyf70wTY/wiEEP4CFGxC1q55F8HCDkXi4GLIDB5ACf08XMzl9YG1oKlwAGJ7p4/Mxy+QE5U0BdDlNCGAACh7G+AmpjatX1fWAAX5WYtEy/o",
239
- "AISogkGAASgCwgAWARYqqph5ilmRjTCN+f4AGC3kUzRkZGS0WPIXVBUTyngPGLSoUvD8sZ/AgFtoJf8B6S74oiUwLdNZqDQR349gAjvy/Ie8BgakqKS763t7",
240
- "NtnwQopxVz3//hpFbPghDMNyRfXwJ3ofsQ4v8EIKDjqR+543eEveCHwQ+CHPBDFwAAABIUEDKa4D7zvgh/9AmH3wSb3r5b3/iYJ4R5AUXnxqCE0EInd4x4If",
241
- "BDCPrgkJyY31bwQgkKq6QJ3zsEMI+jYY4/0ODTfd/WGgQeBwA8MovDoRiuOfO7wQod3ghBJ3eLwQxxf1xQwL+GkkQBV3wv+anG/8TdeBMmYl/6O+xMY6aK0f",
242
- "GEV2NAeKvf952CdYW5XhrNe9YT/u9BinXB/2sPDpiU1eA3VIeIrodqvAUa5fd8vxqNcQ7rP194UDwXLgj8n9NGD+EZ8O9Ac/p8j/cAL3/5x8L3peXFlw9HAf",
243
- "/6ncgIv6O3PCgBt9uyl/7BDwsTMWDdS4T0XoH5A41LgPtIvWBp+114++Z56RxfVON7cmVr6Ps6T0V9/6vXUzfDmtVw0tz/AAAAPwQQGSa4D7ycNgowPDIgDo",
244
- "IiAJ6CJGeBa3enwDnAxFBdO1hGHMDoEMglFoDQiZlwBCPJLlQd3gYAE7tYYv4e4kJhfgEh4mYcKtA3dIUv7zP/d4G+TH7meER77qHGNG2lj+u8DG1TPOwCnf",
245
- "aZ1oX3uhfuWHYrKAXrjOZvH1igDAzc28fYfQd4Vq2xol3yD7uSwM/4AH0087rR31WB6+76DTYDbsj1lufVN/vpN9p2Pvv5uWRD8XZH/2Eth2u76V//uzoNXM",
246
- "vXYuRag/8Wgb2O3z43HAKhZEl2f9/DAD1/f98B+HrLpHAQT2YsoQ87kerJal5fA3ycBk4w76cWQnV4H3tZopZSQhM18MTHz7hoGfEv/nzyw0vEZ3D/6sACvv",
247
- "vtd/Yq8alT8A6GtriyP1vl+UYRqw79wwQSPSA6AUAy67Y4/27sO72AAtfnAbp9oRVNfDd1UWmOQxORC8vW+BTPk/vh29TKR8kZDu41/9R34tvv+7sPGoPZM/",
248
- "01unH4EB34QPvN9b+L7+6PbXaND4ea6yHeiKhqQ/4BZ+tNe/ecr2/ptml4RAtJXnS/dixanGqMAkaTVef/rhoRA4Qc9lwCQgWdoAb2WJXT7X4AORBkHotxj9",
249
- "2vkQIOG4HgxEAdAjIPAuggs78B1srT8Ae5AEM0dadwjC5JRaCUWglFoIdAhkAHmQgAmyAJfcgOBqy9EHdhwCd7kHQEL7WGeZBooCi0PJ/JCyf/WJoNHefnxv",
250
- "66bF6OSu8jJi1hwslmVf0e+r//SnQeJhNY7dRMu3v+43m2zQvK//3lil/3UfxUd2EzI+7l/D4HzytIKPxneKulikRnwPm8NdV0/twvBHBRb+MFteA+4Ugjrs",
251
- "yvLfF4CobqtmfOmyh3rCwoYXgB9TwPeIL8tLn/GxO1PxmcQ/29c+6HF0kiLo8ZcwNXxHvVh348oBqeB5A9NCI8R5pbneypaR4pFfCWcrf8wLcgaKHpp7mnGf",
252
- "FyxxptI7j3wiG8ylJALe/da/6g/dXnzXD2dVgdd1+2BdmwEw3Iuoy5d7qwQ0grl392+BtPknd/5/4X+juN0+XwmUUpLDvTIYJSJ5vwv7j+gNG31FA6jQ14Hk",
253
- "J42B+yKrguxkUNb+zD3DB3nvmX6OtpiuqPfdDN5bO77Q/DI0hCikieiC+ZZ/uX//whjg0MMEoqTS2JUkyrlFSQE8IjRYDYbKc/PwdgaWVTYpP0ThkqTMEyg7",
254
- "f8jr3fhxna8NbxcbWwcpf+//TSMUa6Rf/9/+X3GPw1GNZVt8/PR/fV6toESYZhv7OISmpGai34ZhNckt5/mDJBuxXGv+jj73ge4uT1zFJ1w3I5z/nIT+q77f",
255
- "/BZAAAACVEGbAFPNxvgAUWx/7VpFv3hfY40rV24BRK+v0sUgEEMQQFVsKGIStK4RinLpU6Cd7413//AYYgBakogmzf2AhYTqYGPpwEwKr1oPUrq5wdS74/s3",
256
- "dAEvCWzozpROemzqu8LcCb+1X/f3fjeKwre7d7b5O0yAJuDt9085C3+S8s19ecU1ms5f8IwQw3g0JUEqEqADtBALsTA6Q7ngcBCG3M64fRZuAgIYE3u94gAC",
257
- "MhALrB4GwDoExiQsCAWCJwgYLiPwAd5G13vv+IXwNi8GOQb7iAyGM1sRDqwUyn/gBlG5df/7z/gApouzu//9zwsb4I6u+Vn/9t9kOWss3uvvvxyPAa4N/7zz",
258
- "wlpUPcH35gsjLZuF/BoEiCVAkQcQnLgBztrKMvQ1GTKc8vQjzfs17ft4RjS/A4IIUg7A8MqDDgghSD2HhlQccAUQQFEExpdM8LZZt+sCQ0nmeF9ZN+jemm+e",
259
- "DUAUYxcfvLw0ZtPnpoD3MXm7y9ghzKHggEQpJ7PPgo18N+B1q6+8doGMfBgTB7wQ5A5AYVl6QOE35wJRrnlBqC6G/FYAimgZjtWpziVqGfl+MR+ud//nzQEM",
260
- "Ah+xvgJqY2rV9X14SBIBQgACeAJ4KqqYeYpZRrmABkFvIpmjIiMksgCFMuYsvhDhCofKDeyy3AZNHSYOcJNaXwIwgUgJz+Qc9oaUHnWAEdfE2xB4C+x+Tf/I",
261
- "mXH11tbyvYR7CIa5PX72WbPwiCX5VVVV/4IfBCsfwQnFv8WELCKCoEJfzHh3P4ha6BI5oR0dKr4IfBD4IYyAAAABU0EDKbAD7zB2FAAIrd3dd8STP/oC/gIn",
262
- "l95++CH/wkENVVf/l7vGwS0YqJ4Q9cYCa73e7v3vWO5f4LxA4QzHvfghzsEMIxI/eIsEDz48vhbiYqC2psWW1rxHGoIdk1XQIYS+9/o7eCFG7wQ+CFEKLOwU",
263
- "xzxA4LgowEuPJ1CdnlRPdgPhoyYxzCd+u/3P8B7qwrsICXeArjJetxKekLZAB2PFNThI31QsFO1+mqvUGA0JBQFi5DaAwREWjdYas5tZoCAq6dl3iitcfv4o",
264
- "AySFnTkQTJRUvGrKlav8eRklGCMnjTmRibZ9Q84X46WIibgNQkAbPNdCP5qvDFLv9z4llUfYqwbQ/6tEvKjggfGp4ARWXPlr6BKcq+9+S+wQcihYnW4YoPZK",
265
- "PG+w/74a+zvAh949GbN62FUaNGg3B3h1ZqBHJHpLZ0r+f66+HhzWp5H46DP6wAAAA+9BAZJsAPvcEHghhsFGB0IyDMgqfhC2N4AT3k2JH9XvawjDmB0CGQdC",
266
- "7XBLtrvACoZeyqirr1YRyl/GPEBIL8AzugP9xCBZI70gC5hrcX+Ce+7LScX/QKRDy3+tD9/01f2CPEnZ+/+xo4Jp+/zg1zZL42SFKQd4W5fVo66hRppr1/9o",
267
- "CRqIDedieYP3qFOwYLit4H/5LOLI4PyX/vptpjhcOdyCh33iQH6sP+3xkae+BZsIACI95Q+DvMswYD7QnzueGpdkJT/a+dfwF4mNNQyHuDl92Vpw9GXP6H/2",
268
- "EdVH95rbsD7zHssVSCG5ANly4DYS2w/6DnidegGNItksF7R3lXM9e4ngj2+15itszzv49y7/ATC8elN51uiB3hunP2Ay5fwi+tBAMR+qIbUP/bGQoy5tGB/v",
269
- "EfOH8hkbe3j/jBmqcnPIAkM5rCVyKE/lHf4AWucnDW2wL+abIyFuuDsaQYJD2Ikp/gRVqgNN6veCtAl8E20/3DPKFmBCN/h355/jUJY+Kb8glOhNm311Mmu1",
270
- "4t8wbtuEtCwyL3HWQi8gxKXmLhjX//nD4DqDU5f/2EbL//oFUEMNgmBoBMg+YAqb4Ga9/ACiozMNyrr3sIKAAhO7MxXd2ZiuwCIQVdvAhWS7V+AKLSAhWm2q",
271
- "vleG0GoJhLEb6PY86ATEpMPUI6gF/3dy3/OWHOLvgCQCYLmgi+r0wT6+X5h08SID2hbQdi9BP/9zQ22u1T+t6AY2bhxH/JFuLVqd9v+pIJnKkANbwuOzqYDr",
272
- "V6AbcYHQrQzz4b6CBtK93tpH/rELryJsqgLmEW/5Hf+kbUO6vAnCko3NapzCg7wjq8D//3qOPXoiDAc0uA29DR1ZzsruO7m77wPnUE1Vz7+/rs8Nz6mqwP2D",
273
- "AhzVw/rIWl8I+JG9YQ4prZ6/88smi1VfWBy+VAoKVqHrcHp2uIHWGPyKmwbwPf+47S9uDBRvQMBAU15+eN9VAff6pi87pSjTx9kpji6OlGAcvgNd3I7rBx8x",
274
- "x9kJ3Alur2yreC6MV3SKy6/S/UQc1h3gt6P3wm3LS42WYufpGIVusDwNwSP0C43FPKwPP6Z/fh/9+Kc4DWofYxbfB9x8MbXdnGBOmo/f1uA7/XVZnhy+Exle",
275
- "cWt4Jcf/88O5+O4aBQGpql9Vm4Nqe7cegakb6K0KSCz0PoR4PUs3RCv+6fyMMlEPfwG88BvtZaf7ombtRn1L/zi9AOIvTpz8IDLPCoX1f+y7DUBTf0Rr/FaX",
276
- "M6hR7XBVYJDPgQQrTjC363r+f4ExOZb3hdW/ZOGSJryv5X3x1zj11pWUNCF7AdPyKi/APs6Rn/sv/FwUxXFmfz8FMAAAAflBmyBTy8OYADzcZCk/Lt+2WgtC",
277
- "Su4v7peHkrx4CV6i/jcbwh473GjBe3AlA147BwWwGJnmli0Ku9YyhZKLG3h6ekrbYKad/bdQHyrRo5zBsnUou7//JjyBkMuCuX/bwaYe1oQRpwahEfnebZAV",
278
- "TzlCDINvgeOBgakisQ5Y+eTW2F0e/UCBD57oFvUzOP95WP1c4B1n/3ULcDern9W//234X/CMNHn83e+QFNtFC6c2+eQhPXMtKu89/wvpjX2XnvNCPYQhGtf/",
279
- "KuEe5xoVNi54BKCryECjxPMagYSv7BFlUhBB+MVT6fSAACzBpYcAAswaWU0U0QAneWHATvLfDgJIALmkdhOZXboNZmQisUHPN2jQEf+AIXRN961/wAXE5saV",
280
- "JB7oLG+AJf3ad8+iaqf86rfVWmcUn/X78hf/6LbS787+fh2P5XtPBjsioRWWFbKSuMNMCPHTQnzY/whAUP7cgJkjJ1qLbP4uByAHGQMkB8ja1mpwjrZxbMVs",
281
- "H0yWmZAleU/ccVRhUuVYMAjFvz8x9mQcJSiwhP0XgVRCbxDAVaYe84NmbBCCU6SchQKh/5MU6OqQIfsIgmJVarV/BCCPe7+CEEZd3rMAf/8IglDABgkMAEQN",
282
- "jz/zwCWBEd08/ABEbXa+ProFT6CC0JmNQQivghRK8EOdgnjIAAABakEDKbIBC82CEEQcFb3Z9CBVfBZWvm65UEm+iV8XXXlzynz/EwRwhzgiWEf2b+uCo1VW",
283
- "97z4QGXxwQhHFSd34IRPd3f4ISiS5d4TYgPqY9/vf4R/yd3l800tQUCXfzw14IUZvBDt4MYREIE9cQCStdVl8VXGQRnVeGL4IfBD4IY/DwXFYAjuvgP5Vit0",
284
- "//Dxf6ZXhr9Y/+JM2BMcHOnrBRMY0aJCdt6gCu/6/Sgb0KrpF6l+cNBbnabpmVBAQXtcnB/w6Qo3M+hwu0r10nX/k5Xbc9XZwAdEPptvgfh2Y8CqeTkbJH4r",
285
- "IU3trz7fW4X4CR4yM9qIxkB/sQY/q7f9nOpX2g5EpXx9JlyxSWAmwrE8B+YqeB1/UdcAbBlgrvvnCgNVfUTS1lDmFuOff06XogiFbyj0Yxn1f3Qenz6AnX0c",
286
- "32j/8nQFuYtBHuIT5NaMhtT9w84Vp97H+CXe7u7jUHwV3u7v7v3zEmysAAAD4EEBkmyAQvcEFAkNSdE7WCGeuP4/KjxI0L8AOgtZb9VeBbYvJPXZ/76gLWCV",
287
- "aglfSq3YVkHFsS0Z+6Br+iToL/+SCK2bREEbrBKIYFXBD6VOGr55/GpdePTEEDuFFMAp6yiyZ6o4FKbceoEY6bA/68d8r4DY+p9M0YDubiTHy3qcYzDT8D7G",
288
- "OPUh1n4sfEf/9WBizsNyMhlfXrq7RMSyqIzwl152d86tyaREf/4jSIwcvjYSbuHs6bWq//1cySmYFTt5qeDQQ6xQTTy18JPUsdwZPvINnsyXJp/zg/NyLDp4",
289
- "78n9be5+A43lZ//SpeZmm4lv/XK+dn68EIPfymjVf/xL4M2CghGkHeRmwP6lHBgQAdbuAztiX9w7ZkrQmU3QH+sgauUg+nDV7mBcPTW6kBT1tb9PvDxr2WC2",
290
- "9gQztsy9Pd53pGnwMy8SXtsDsQ895ZS7B0jzB7KZivwdfmiP/laBwZRmvjewcR7gP9keFH3csX7/yhtWP/rfFAFlR85Zzf4URFgF7SJ19zJ3CwnwC97Io7u/",
291
- "0Gxc4YC8BrgKe6tG9///fBD9Dut4IMnMfi8v/5eLyvFMNQfTY0iDQOW/lFYN11+Z724NdjsLR/xbpG62eKQxf8sBkAFbVst9/wGgvfT+f8viSz4gYHtgWSMZ",
292
- "on9N+cVLMH4mPNjmUTFapRcVn+U/Bw/NfwH/8+2daZ81yPjxU8qw+/HEq9w7yizA+JQMMv4xS6l3+gb9A0ml6ecFFXutuvPMhV1P+Xzlc0kO9EgMAYffof8N",
293
- "gT3WiVb/8TO+uEfvdf7A/7jrJXrFSC6vpQcenjjToPlSENwFbSMtfCQcfXgMPDCX4FnB2AhX/I/qPMW9LuWnmbv////3BRbH3/s3+g5fefECA9ess0Bvhsf4",
294
- "0oD6B/7sDbH6acOP8gfO3rEvs3HQGsuzveN534gznY8+I8iTHG7kDviNU8fXH+GdztFtNLu//XsQNPgGfoXnSe/JfEiZRaEMO+D6A3uPMAIbTagPvC/cehpr",
295
- "dz/vnXWG/5WGW0csr4A4UaliVfnnkvxGea92p5TH77PQGhrbop+Dl8TrwyJDDBhYS99qxr3nWZ//88P51jthoFAlF8VzmRp8idpvZn1H3Xwc59Zjw/Y+C5ev",
296
- "fGv7v+Xwc/wyVlNXHy8y3WlLf39r0W36tFL+ut/+zkw/pPn5f+hI+ZlRf74/8v4ovhqF2VTMz/9bpzspD2sggRnHdSP96ASFachdi9PBa/yyma+3f6DJoL0f",
297
- "4sLb6rD/6RYAyb366edgD8N/R/5KQ1k90+7/xcFcYoEjn8/Hi+DAns/nfO+fz8KwAAACPkGbQFPM80b4ADTma7fx7UnZrUyNfGvaqw2ftbRIEt4c0r/IDA0q",
298
- "ztLh4baf5hlTI8OwN7/9bJ0Vg1VCh2KWhoL0bUu6LLrPw3Vb/CKQgVSA4AUVWn7e9SQee5hHi/n0DAF8j/IelT74aqFvL0s8NwPSNOAweqKt7fe5bDpyEOD/",
299
- "fXKrGv22JLL1nneEYcwYCVBKAlQBXwQErk4HJ9zgcAAoFTcwj/NA4TjwraAR4HERZfBiUsiE5xo78AF6X8FClY/N/himiMyLV74PTQ3RGFIXOg+bE6I45C5x",
300
- "gTCKTABymQfItm2+B82JkRxiFztDipZ5xpiin+EmgYEixIvBGKXqEi7P+YYWr/ZdNxPT4P1BLrsUu/XldBuTAQJJNJ0+U6gKMU4/v/f7VMPok/+f/5n/jdx/",
301
- "f5uF/BgCZBKAJkHEuJeASmzQuvRhuZGVV6E+xpk2N4W+b5vnn2qL7NViQeWe+ENrPfhDMX7BBIhgRDMKq5R2ZWfkULx000LNLBBDHFBlzDI9hAxUBlMPjTv9",
302
- "6ZztfCCuICdCSQh0Q6nGJ6J7jC/4Q4bsCAYObIXJGY9cxK/Ds9eBi5PMAKYnzNG0mCDNGBFl4DVpGpfBvcLBEwRBHcV9ZfDARCAR8EJNxW2oIcN4AdpIDFa0",
303
- "NtX8mWAML33++/AAKXbXy7vwQBGKfzC4KYxjHELsIfL/hEVhsFEAbjiDcVWr5RfgEzW67z/gBajGjdLX/XPl8LzQh0JbL4IAjDfYIum6QLBBhHOwQxsAAAGv",
304
- "QQMptAPvK8IBH4ZD3DHl8CPWf9j/+jQjRB0tioRoh7QQ/BiEeCT/EwTx5fCH/QQ6BQdN5QgusvjAgUIbubIuvhssBBG7vWr64Zl3+GZd/YQwyUXieQkXwl/y",
305
- "/uEP8EZuBrLny/BCEAj+whCAR8CTCIUQR/He//2PCIR5f8IX46GR0DKXPsfCDF0/3wjwiCHOw/HvDqC4KMNwYCCRnp/wBI9evyRlu+l9waKl3/aRNodcSxCe",
306
- "DFS4PqKGgBN6qzC33uDQV+u1m/dWhShYuL9w2oQz+kWS+Xf34FPHeeL/9CWnJMgW9XGH41enqpfKTl8G+KX001HAcjbu/5fyBAEcKFD2H3u+DgRNp3VB9gf/",
307
- "/GEaJwp3n1Ae+NtGlm+sbKpn+9oE3Hhhwa27cQC7fH6/wK2MaJapUaXwqEBEZcLeeeG+0P4NTcrmBXgIruu2RRD63dsDtVnBwuDwBGbX5ldfnmJr4/v9/TaO",
308
- "ORkHMI//fQIAQBEIqJ04RBCGjcBCjZi1qHYClMO4D8ACXSTG9Rs6w8IghDF7vwEyJ29ahLQB+zAG3+kfPDwAHyUY2S9MtWAAAAO0QQGSbQD73BBlWCHKg/cL",
309
- "gmwAiBf0xkK/6wxoEBiI+quoi+Pf/VpXxiT18vf/AocdezZfG/6BZzg6qL7iWEv5AfSdtG8h3jwTWyoxL4II6F00HcD5pgA8Un8aRn0b2B24Ex+QvyIFVPHD",
310
- "yxmYnlcd4jG3odl89f+das+8po99tfQWyexHN2q7Lwi8jr/CQhMlR+Bboweyvmye+284q/PDgDaskHAbqncMnr7/wcvhFij1IHsV7AfnDPv0ovg4764NaJMB",
311
- "Ah2iECL6NCYAmY5V+Uc2rR76iHdaAv+wfkD341Q0GQKFtuBGP4zPdgAMRUlK/jX2rueHQ/2uqu/7xZg76RYNeiI2BtIgBbLuJN6cqNvA3VoPLGyFN52iO8bL",
312
- "wvY4+ohmnsb7ZiBujD/tuAsJmnaAhv//7//ldNIN8tev39YnbPN+///9lA2aE0Rf9YOw6QOED2R8DqsPX17A+ldiDBZGjuyDgx1Y/6jCg7B8PgOD1lgTe3nE",
313
- "4k8ZNNYT8XeuZrFJr4mXufwCva9o7tS/LbF0cXVaaMP8+5f4j//4EChwqsv/wiHt7utQECN2atXPwRQFfgDO/VO/2rAAeFqjI369OrL+u8pf/5XgwKGjgq0K",
314
- "+6QlN/mMioVNdZCt/4DumlRMb76tIAlu+klEX9si2ZRvzfxX/mzl9Ly+QoShNFCQeJonGynNnr/92JfL9Znz/2ZmzfsnH/qmb5IwPccf6BBnHQDV9gb9UVvO",
315
- "kFEgZB++qob40KaRP/8Pz/sYBymk5U8XleAdd0ulfqX5WhJ0g71oSFokxD21gO0R9jezQ11znY/esye+D/1ejn/yoqSTQP+A/1cod1jPDvt7Q+HMuM4/30C0",
316
- "Z6L/9/aDl/8gQD0df7l+GLg8AuvOJDUBcCXcb+jqoYu7A7XMDbqEHmPxgOPe6De/tFIsB1duB/AwyxTSu3uful2/AKqhz6y/799Q74QsD/ZbMN4eU7n04T1+",
317
- "cNzDOCq1N/cMjv8f75bg7gMcdgfyUVeAaaXI3z5BakHCloI2PxvLXwVzEnTf9Ds3DI0VNAmqm72Ozn/+dB3OscX9/DQKAI25Qce/EMocZtoU3cknUNfYbd+D",
318
- "x2Of2Lf/9/l//DJTNtcj+a/bWgL52Kf6WjnF++vi1Ot+ek/ICeS6r+9fT/3uGo2+VAD/APa9b47gS9TAwacb6Y5d+gLgLN30+u/DwCioqyPrv+GSN03D/DGN",
319
- "18bhctG/4NjX7nF6AcRcID300wj8N9/4uCmMxZn8/BTAAAAB4UGbYFPNxvgAcWx37Vot+/sET4ONOSubwDbSfT9KSBACBEEBusIhiVqWgJinLpU6E73xrv/+",
320
- "PApANJyS0QTaClhLUwNAYCO1V60IVdXKCRy/nIbS4Ah7Etn/npROeTN1XeFuBt/ar+f/7b+bsVhY3u3/BydpkATcHb7p5yFv5LyzX+cU1ms0I9hCEQS8Igk/",
321
- "NzgrCAAJhiCwgJSkwAUqiUil//9yAADgA4FS8AM69//7/cgBDDZfnpl/brbL+J+FwUfADQTEmSqOD3+AC2zrQ2EH93aBoWPdlMFzTdsmOqHcaZBEkHaflrgO",
322
- "7FY4Aan9oGaWP/poH8P7DZPgBC/L6z/eHD5smRkbU3kIDeF723a6L5JsRCGZYIAiHy4NI8qeAnkmdahWe+4CZJkHWrXCQV/WEzj+TgICeEAJDkCJkfgCExtM",
323
- "eIcp/wGBlsSAfwgTC6QDwZlaaEvJ++eTR6y1hCHtwVUCBBeWeFlhYvnqCX5+u0DAgycfqc7z+vD8dZbe2wQDJo6XiAapqlwY0CgwIhfznfFGnPDL74fACEmf",
324
- "r53gW6aNaHkUAZFpkcxK6YQyoOso9FOLlBCr+CHwQ8DROCV/hO/PiuCIEz2qRGGwTxjGN8EYKE34PBCiuKg58WyZR0AAAAEyQQMptgELy4If/QIh/+jQf+Gw",
325
- "U8MvLhx9/+J4//QKMK4I9ax1F//zwUwj7UEJJAQbvwQ+CHCLBDPTwnh9HeP5A47f7FaqsEPghzsE8IYJguCrNEAc/8j2wCBlKPfunHBcKQqlfRFUByywyulg",
326
- "a/afdYA1K3M7N9MoO7I93WyicLFxl19r/5kjrp4V1H/6wfS3UBsF38aZ3E+vUbMwcmusXE+jx3jHUel9r6anojxk6vl/h7QwLy5AKq/NdUP8d40T4rHbEMvy",
327
- "SJrkAvLco3/OFs/0HD9MCuEwiyiDAIWd776QIuWd5EEScxFTdf+aXxIIg1HhMQCELc41wGz4R6gP/93S1Eu9OnlO9t1swdkuHELikAtoVxWFNTOPyi/zynne",
328
- "8+z9mGufNH8/ghUdvBCjReCHAAAD/0EBkm2AQvawQZXghoFCZf+y/rsoX4BD0gZg//fQPOZGdFj4r6CnaSCmJT7vrCR7Cu0+pr7AbQRNq1kbfu2xSLdzadv9",
329
- "8MZcCEtOeSZvR63gQ+55txI5fbMhQpQ7wNuwi26Xf7+D2K/jsWQIVMDemH+KqP8uLe8hu/uc3VYDsrCbBNzdPugJ/lEFX9VYANsrIR3xXgRRJT3/7gZzAgA7",
330
- "i5RcSK2O2SD60UaOU/B7UAHHEzi53+vAEXToyMC77By+VRL0Hryfzjbpz9586fNjWd/KYedMDXFBxfermCX/L36BuJ4ErTeZ+by4ED+jDg4jplqD/59ichBW",
331
- "YLyVq0P4KcvwkP0dlqwuhGS2k3+5JmIvb8A9IhT/ZG7UvjTDNuHfSYXZaGoAMGWz9+90caKz/9VkQcFgdIDUNC27BYUV65zjwMjTzhHZ9Mhn5njEIEAKaikf",
332
- "dBQvXceDtXEg4UyaYTEe8BxYLuqeRWBy+PYwnOHqXcH2GZs35oYPf/78XW1Px3s3ucI6Sz6e8bCvcBv897oyC5eP/f0WAnfpY97CJtx2/4sloTngKiZt3Hvz",
333
- "1BHhXlym+L6EgJPX+5K3///hjefK18ayZ7L//LBDVs7BTI85w0CYFiVHz6WI/6+VmbKzsKMfuAxk45Jf/80jvMzjQ+IC3Mx53o/8fm3L//y+5ZZB4eJQPvr5",
334
- "LIuv9HpdwpH9/eUVvbaU7ryxJrcnNm+u/Ucd2G2JfYEDpQydG9AeBUzDdJ/Padhv1+2xLp4BmrHTWWrbcq7th/dtPAH0VpNJm7/3YcMHS4BFueHeHUFb1Xzy",
335
- "/9Czx9aPfC+FZtUWt0ds36f0KDbujd3t49NnfqtsNR9yrVNWBf8TIjM2tDXnZqJ/D9B4CC1Xpf3exMUqzf1f/KQWFVzWR6ug5fKhCBG2w9nuf23/xAXb+j/7",
336
- "bP+sC7w1+0B/svkXQG9/BbOA1/gEAnaw4bavZuKmgHs+vpt07Mv4Pzie2/Q/73b0/gODv5n7XtWcmn1//7RlNM6ba8DYPu6VP3Rf/8vvMJGqHeAl9fB2PiEq",
337
- "vjdYPFXcz/6z6BQM268BoevDG9cH/+KFGT3hXTx50vzYI8GFz+i3+Fvwtnrvcd18xeZfycE/DeQ/BbYerrGfRf//7h8wZFh7uxI/Hnv0DUO0uKnF3n//zoO4",
338
- "hY54ogaBQG45XOH9/63WsC7xUNu2hg/bLAc1Tzvwz8PIokz878M/YIWGoZtO7LvX+f4D0WL7e70oqysimvziqkE/x7/8waKU0RRmi+Kd8SN9oPXyuNqyOXRw",
339
- "ff1BbCtOcZ+b8R4LUOPFsq+6v4pBkx5gKzBmBbbIEFr4tJFCAig/IJXnuba3/i4K4xQsz+fgpg=="
340
- ].join("");
341
- function createM1StaticFmp4Fixture() {
342
- return {
343
- mimeType: M1_VIDEO_MIME,
344
- codec: "avc1.42C01E",
345
- width: 320,
346
- height: 240,
347
- duration: .4,
348
- initSegment: decodeBase64(INIT_SEGMENT_BASE64),
349
- mediaSegment: decodeBase64(MEDIA_SEGMENT_BASE64)
350
- };
351
- }
352
- function decodeBase64(value) {
353
- const binary = atob(value);
354
- const bytes = new Uint8Array(binary.length);
355
- for (let index = 0; index < binary.length; index += 1) bytes[index] = binary.charCodeAt(index);
356
- return bytes.buffer;
357
- }
358
- //#endregion
359
13
  //#region src/latency/buffer-ranges.ts
360
14
  function normalizeBufferedRanges(input) {
361
15
  if (isBufferedRangeArray(input)) return input.filter(isValidRange).map((range) => ({
@@ -397,9 +51,12 @@ function isBufferedRangeArray(input) {
397
51
  //#endregion
398
52
  //#region src/latency/latency-controller.ts
399
53
  var LatencyController = class {
54
+ latency;
55
+ playback;
56
+ startupPlayRequested = false;
57
+ pendingPlaybackControl;
58
+ lastSeekRequestAtMs = Number.NEGATIVE_INFINITY;
400
59
  constructor(config) {
401
- this.startupPlayRequested = false;
402
- this.lastSeekRequestAtMs = Number.NEGATIVE_INFINITY;
403
60
  this.latency = config.latency;
404
61
  this.playback = config.playback;
405
62
  }
@@ -514,6 +171,8 @@ function clampInteger(value, minimum) {
514
171
  //#endregion
515
172
  //#region src/loader/http-flv-loader.ts
516
173
  var HttpFlvLoaderError = class extends Error {
174
+ code;
175
+ status;
517
176
  constructor(code, message, status) {
518
177
  super(message);
519
178
  this.name = "HttpFlvLoaderError";
@@ -522,15 +181,23 @@ var HttpFlvLoaderError = class extends Error {
522
181
  }
523
182
  };
524
183
  var HttpFlvLoader = class {
184
+ url;
185
+ headers;
186
+ credentials;
187
+ retry = createRetryPolicy(void 0);
188
+ fetchImpl;
189
+ now;
190
+ sleep;
191
+ abortController;
192
+ reader;
193
+ state = "idle";
194
+ pausedState = false;
195
+ resumeWaiters = [];
196
+ mutableStats = {
197
+ bytesReceived: 0,
198
+ currentNetworkSpeed: 0
199
+ };
525
200
  constructor(config) {
526
- this.retry = createRetryPolicy(void 0);
527
- this.state = "idle";
528
- this.pausedState = false;
529
- this.resumeWaiters = [];
530
- this.mutableStats = {
531
- bytesReceived: 0,
532
- currentNetworkSpeed: 0
533
- };
534
201
  this.url = config.url;
535
202
  this.headers = config.network.headers;
536
203
  this.credentials = config.network.credentials;
@@ -688,13 +355,21 @@ function createAbortError() {
688
355
  }
689
356
  //#endregion
690
357
  //#region src/mse/mime.ts
691
- const M1_VIDEO_MIME$1 = "video/mp4; codecs=\"avc1.42C01E\"";
692
358
  function createMp4VideoMime(codec) {
693
359
  return `video/mp4; codecs="${codec}"`;
694
360
  }
695
361
  function createMp4AudioMime(codec) {
696
362
  return `audio/mp4; codecs="${codec}"`;
697
363
  }
364
+ const REQUIRED_MSE_MIME_TYPES = [{
365
+ mediaType: "video",
366
+ mimeType: createMp4VideoMime("avc1.42C01E"),
367
+ unsupportedCode: "RIVMUX_UNSUPPORTED_MSE_VIDEO_MIME"
368
+ }, {
369
+ mediaType: "audio",
370
+ mimeType: createMp4AudioMime("mp4a.40.2"),
371
+ unsupportedCode: "RIVMUX_UNSUPPORTED_MSE_AUDIO_MIME"
372
+ }];
698
373
  function isMseSupported(mimeType) {
699
374
  return typeof MediaSource !== "undefined" && typeof MediaSource.isTypeSupported === "function" && MediaSource.isTypeSupported(mimeType);
700
375
  }
@@ -703,13 +378,18 @@ function assertMseSupport(mimeType) {
703
378
  if (MediaSource.canConstructInDedicatedWorker !== true) throw new Error("MediaSource cannot be constructed in this dedicated worker.");
704
379
  if (!isMseSupported(mimeType)) throw new Error(`MSE does not support ${mimeType}.`);
705
380
  }
381
+ function assertRequiredMseSupport() {
382
+ for (const requirement of REQUIRED_MSE_MIME_TYPES) assertMseSupport(requirement.mimeType);
383
+ }
706
384
  //#endregion
707
385
  //#region src/mse/source-buffer-queue.ts
708
386
  var SourceBufferQueue = class {
387
+ sourceBuffer;
388
+ queue = [];
389
+ pendingDrain;
390
+ activeAppendBytes = 0;
391
+ destroyed = false;
709
392
  constructor(sourceBuffer) {
710
- this.queue = [];
711
- this.activeAppendBytes = 0;
712
- this.destroyed = false;
713
393
  this.sourceBuffer = sourceBuffer;
714
394
  }
715
395
  get length() {
@@ -818,11 +498,10 @@ var SourceBufferQueue = class {
818
498
  //#endregion
819
499
  //#region src/mse/mse-controller.ts
820
500
  var MseController = class {
821
- constructor() {
822
- this.sourceBuffers = /* @__PURE__ */ new Map();
823
- this.queues = /* @__PURE__ */ new Map();
824
- this.lastCleanupBefore = 0;
825
- }
501
+ mediaSource;
502
+ sourceBuffers = /* @__PURE__ */ new Map();
503
+ queues = /* @__PURE__ */ new Map();
504
+ lastCleanupBefore = 0;
826
505
  get appendQueueLength() {
827
506
  return Array.from(this.queues.values()).reduce((total, queue) => total + queue.length, 0);
828
507
  }
@@ -851,22 +530,13 @@ var MseController = class {
851
530
  return Array.from(this.queues.values()).reduce((total, queue) => total + queue.bufferedRanges.length, 0);
852
531
  }
853
532
  async createMediaSourceHandle() {
854
- assertMseSupport(M1_VIDEO_MIME$1);
533
+ assertRequiredMseSupport();
855
534
  const mediaSource = new MediaSource();
856
535
  this.mediaSource = mediaSource;
857
536
  const handle = mediaSource.handle;
858
537
  if (handle === void 0) throw new Error("MediaSourceHandle is not available.");
859
538
  return handle;
860
539
  }
861
- async appendFixture(fixture) {
862
- const mediaSource = this.mediaSource;
863
- if (mediaSource === void 0) throw new Error("MediaSource has not been created.");
864
- await waitForSourceOpen(mediaSource);
865
- const queue = this.ensureQueue("video", fixture.mimeType);
866
- await queue.append(fixture.initSegment);
867
- await queue.append(fixture.mediaSegment);
868
- mediaSource.duration = fixture.duration;
869
- }
870
540
  async appendInitSegment(segment) {
871
541
  const mediaSource = this.requireMediaSource();
872
542
  const mimeType = createMp4Mime(segment.track, segment.codec);
@@ -882,8 +552,8 @@ var MseController = class {
882
552
  const duration = segment.dtsEndMs / 1e3;
883
553
  if (Number.isFinite(duration) && duration > 0 && mediaSource.readyState === "open") mediaSource.duration = Math.max(mediaSource.duration, duration);
884
554
  }
885
- async cleanupBefore(cutoff) {
886
- if (!Number.isFinite(cutoff) || cutoff <= 0 || cutoff <= this.lastCleanupBefore + CLEANUP_STEP_SECONDS) return;
555
+ async cleanupBefore(cutoff, options = {}) {
556
+ if (!Number.isFinite(cutoff) || cutoff <= 0 || !options.force && cutoff <= this.lastCleanupBefore + CLEANUP_STEP_SECONDS) return;
887
557
  this.lastCleanupBefore = cutoff;
888
558
  await Promise.all(Array.from(this.queues.values(), (queue) => queue.cleanupBefore(cutoff)));
889
559
  }
@@ -954,6 +624,7 @@ const CLEANUP_STEP_SECONDS = .25;
954
624
  //#endregion
955
625
  //#region src/wasm/rivmux-transmux-wasm.ts
956
626
  var WasmTransmuxCoreHost = class {
627
+ core;
957
628
  constructor(Core) {
958
629
  this.core = new Core();
959
630
  }
@@ -1058,7 +729,7 @@ function normalizeMediaSegment(value) {
1058
729
  };
1059
730
  }
1060
731
  function normalizeProbeResult(value) {
1061
- if (!isRecord$1(value) || value.container !== "flv" && value.container !== "mpegTs") throw new TypeError("Transmux core probe result has an unsupported container.");
732
+ if (!isRecord$1(value) || value.container !== "flv" && value.container !== "mpegts") throw new TypeError("Transmux core probe result has an unsupported container.");
1062
733
  const result = { container: value.container };
1063
734
  const video = normalizeOptionalString(value.video, [
1064
735
  "avc",
@@ -1436,16 +1107,17 @@ __wbg_set_wasm(rivmux_transmux_core_bg_exports);
1436
1107
  //#endregion
1437
1108
  //#region src/wasm/wasm-loader.ts
1438
1109
  function createWasmTransmuxCoreHost(Core) {
1439
- return Core === void 0 ? void 0 : new WasmTransmuxCoreHost(Core);
1110
+ if (Core === void 0) throw new TypeError("WASM transmux core constructor is not available.");
1111
+ return new WasmTransmuxCoreHost(Core);
1440
1112
  }
1441
1113
  function createBundledWasmTransmuxCoreHost() {
1442
- return new WasmTransmuxCoreHost(TransmuxCore);
1114
+ return createWasmTransmuxCoreHost(TransmuxCore);
1443
1115
  }
1444
1116
  async function loadWasmTransmuxCoreHost(wasmUrl) {
1445
1117
  if (wasmUrl === void 0) return createBundledWasmTransmuxCoreHost();
1446
1118
  const wasmModule = normalizeWasmBindgenModule(await nativeDynamicImport(toWasmBindgenGlueUrl(wasmUrl)));
1447
1119
  await wasmModule.default(wasmUrl);
1448
- return new WasmTransmuxCoreHost(wasmModule.TransmuxCore);
1120
+ return createWasmTransmuxCoreHost(wasmModule.TransmuxCore);
1449
1121
  }
1450
1122
  function toWasmBindgenGlueUrl(wasmUrl) {
1451
1123
  const url = new URL(wasmUrl, globalThis.location?.href ?? "http://localhost/");
@@ -1466,25 +1138,48 @@ function isRecord(value) {
1466
1138
  //#endregion
1467
1139
  //#region src/runtime.ts
1468
1140
  var RuntimeWorker = class {
1141
+ port;
1142
+ createMseController;
1143
+ createLoader;
1144
+ createTransmuxCore;
1145
+ detectRuntime;
1146
+ now;
1147
+ state = "idle";
1148
+ url;
1149
+ options;
1150
+ mse;
1151
+ loader;
1152
+ transmuxCore;
1153
+ latencyController;
1154
+ videoState;
1155
+ lastLatencyMetrics = {};
1156
+ statsTimer;
1157
+ statsTickInFlight = false;
1158
+ loaderRunId = 0;
1159
+ outputBytes = 0;
1160
+ appendQueueMaxLength = 0;
1161
+ appendQueueMaxBytes = 0;
1469
1162
  constructor(port, dependencies = {}) {
1470
- this.state = "idle";
1471
- this.lastLatencyMetrics = {};
1472
- this.statsTickInFlight = false;
1473
- this.loaderRunId = 0;
1474
- this.outputBytes = 0;
1475
- this.appendQueueMaxLength = 0;
1476
- this.appendQueueMaxBytes = 0;
1477
1163
  this.port = port;
1478
1164
  this.createMseController = dependencies.createMseController ?? (() => new MseController());
1479
1165
  this.createLoader = dependencies.createLoader ?? ((config) => new HttpFlvLoader(config));
1480
1166
  this.createTransmuxCore = dependencies.createTransmuxCore ?? ((options) => loadWasmTransmuxCoreHost(options.runtime.wasmUrl));
1167
+ this.detectRuntime = dependencies.detectRuntime ?? detectWorkerRuntime;
1481
1168
  this.now = dependencies.now ?? (() => performance.now());
1482
1169
  }
1483
1170
  async handleCommand(command) {
1484
1171
  if (this.state === "destroyed") return;
1172
+ if (this.state === "fatal-error" && command.type !== "destroy") return;
1485
1173
  try {
1486
1174
  switch (command.type) {
1487
1175
  case "init":
1176
+ {
1177
+ const runtimeError = this.detectRuntime();
1178
+ if (runtimeError !== void 0) {
1179
+ this.failWithError(runtimeError);
1180
+ return;
1181
+ }
1182
+ }
1488
1183
  this.url = command.url;
1489
1184
  this.options = command.options;
1490
1185
  this.latencyController = createLatencyController(command.options);
@@ -1544,31 +1239,24 @@ var RuntimeWorker = class {
1544
1239
  return;
1545
1240
  }
1546
1241
  if (this.state === "started") return;
1547
- const fixture = createM1StaticFmp4Fixture();
1548
- const transmuxCore = await this.createTransmuxCore(options);
1549
- const hasTransmuxCore = transmuxCore !== void 0;
1550
- if (transmuxCore !== void 0) {
1551
- this.transmuxCore?.destroy();
1552
- this.transmuxCore = transmuxCore;
1553
- } else try {
1554
- await this.mse.appendFixture(fixture);
1242
+ let transmuxCore;
1243
+ try {
1244
+ const createdCore = await this.createTransmuxCore(options);
1245
+ if (createdCore === void 0) {
1246
+ this.fail("runtime", "RIVMUX_TRANSMUX_CORE_UNAVAILABLE", "Transmux core is not available.", true);
1247
+ return;
1248
+ }
1249
+ transmuxCore = createdCore;
1555
1250
  } catch (cause) {
1556
- this.fail("mse", "RIVMUX_MSE_APPEND_FAILED", "MSE append failed.", true, cause);
1251
+ this.fail("runtime", "RIVMUX_TRANSMUX_CORE_UNAVAILABLE", "Transmux core is not available.", true, cause);
1557
1252
  return;
1558
1253
  }
1254
+ this.transmuxCore?.destroy();
1255
+ this.transmuxCore = transmuxCore;
1559
1256
  this.state = "started";
1560
- this.outputBytes = hasTransmuxCore ? 0 : fixture.initSegment.byteLength + fixture.mediaSegment.byteLength;
1257
+ this.outputBytes = 0;
1561
1258
  this.appendQueueMaxLength = 0;
1562
1259
  this.appendQueueMaxBytes = 0;
1563
- if (!hasTransmuxCore) this.post({
1564
- type: "media-info",
1565
- mediaInfo: {
1566
- container: "fmp4",
1567
- videoCodec: fixture.codec,
1568
- width: fixture.width,
1569
- height: fixture.height
1570
- }
1571
- });
1572
1260
  this.startStatsTimer();
1573
1261
  await this.applyLatencyPolicy();
1574
1262
  this.postStats();
@@ -1702,11 +1390,7 @@ var RuntimeWorker = class {
1702
1390
  });
1703
1391
  break;
1704
1392
  case "fatalError":
1705
- this.post({
1706
- type: "error",
1707
- error: coreErrorToPlayerError(event.data)
1708
- });
1709
- this.state = "fatal-error";
1393
+ this.failWithError(coreErrorToPlayerError(event.data));
1710
1394
  return false;
1711
1395
  case "initSegment":
1712
1396
  if (!await this.appendToMse(() => this.mse?.appendInitSegment(event.data))) return false;
@@ -1746,10 +1430,37 @@ var RuntimeWorker = class {
1746
1430
  await append();
1747
1431
  return true;
1748
1432
  } catch (cause) {
1433
+ if (isQuotaExceededError(cause) && await this.retryAppendAfterQuotaCleanup(append)) return true;
1749
1434
  this.fail("mse", "RIVMUX_MSE_APPEND_FAILED", "MSE append failed.", true, cause);
1750
1435
  return false;
1751
1436
  }
1752
1437
  }
1438
+ async retryAppendAfterQuotaCleanup(append) {
1439
+ const mse = this.mse;
1440
+ const cutoff = this.quotaCleanupCutoff();
1441
+ if (mse === void 0 || cutoff === void 0 || cutoff <= 0) return false;
1442
+ try {
1443
+ await mse.cleanupBefore(cutoff, { force: true });
1444
+ await append();
1445
+ this.post({
1446
+ type: "warning",
1447
+ warning: {
1448
+ code: "RIVMUX_MSE_QUOTA_RETRY",
1449
+ message: "MSE quota was exceeded; old buffered ranges were cleaned before retrying append."
1450
+ }
1451
+ });
1452
+ return true;
1453
+ } catch {
1454
+ return false;
1455
+ }
1456
+ }
1457
+ quotaCleanupCutoff() {
1458
+ const backwardBuffer = this.options?.latency.backwardBuffer ?? 0;
1459
+ const currentTime = this.videoState?.currentTime;
1460
+ if (currentTime !== void 0 && Number.isFinite(currentTime)) return Math.max(0, currentTime - backwardBuffer);
1461
+ const bufferedEnd = this.mse?.bufferedEnd;
1462
+ return bufferedEnd === void 0 ? void 0 : Math.max(0, bufferedEnd - backwardBuffer);
1463
+ }
1753
1464
  async applyLatencyPolicy() {
1754
1465
  const latencyController = this.latencyController;
1755
1466
  const mse = this.mse;
@@ -1809,12 +1520,25 @@ var RuntimeWorker = class {
1809
1520
  terminal,
1810
1521
  cause: serializeCause(cause)
1811
1522
  };
1812
- if (terminal) this.state = "fatal-error";
1523
+ this.failWithError(error);
1524
+ }
1525
+ failWithError(error) {
1526
+ if (error.terminal) this.enterFatalErrorState();
1813
1527
  this.post({
1814
1528
  type: "error",
1815
1529
  error
1816
1530
  });
1817
1531
  }
1532
+ enterFatalErrorState() {
1533
+ if (this.state === "fatal-error") return;
1534
+ this.state = "fatal-error";
1535
+ this.closeLoader();
1536
+ this.mse?.destroy();
1537
+ this.mse = void 0;
1538
+ this.latencyController?.reset();
1539
+ this.videoState = void 0;
1540
+ this.lastLatencyMetrics = {};
1541
+ }
1818
1542
  post(message, transfer) {
1819
1543
  this.port.postMessage(message, transfer);
1820
1544
  }
@@ -1834,6 +1558,29 @@ function serializeCause(cause) {
1834
1558
  };
1835
1559
  return cause;
1836
1560
  }
1561
+ function isQuotaExceededError(cause) {
1562
+ return isNamedError(cause, "QuotaExceededError");
1563
+ }
1564
+ function isNamedError(value, name) {
1565
+ return typeof value === "object" && value !== null && "name" in value && value.name === name;
1566
+ }
1567
+ function detectWorkerRuntime() {
1568
+ if (typeof fetch !== "function") return createUnsupportedRuntimeError("RIVMUX_UNSUPPORTED_FETCH", "Fetch is not available in this worker runtime.");
1569
+ if (typeof ReadableStream === "undefined") return createUnsupportedRuntimeError("RIVMUX_UNSUPPORTED_READABLE_STREAM", "ReadableStream is not available in this worker runtime.");
1570
+ if (typeof WebAssembly === "undefined") return createUnsupportedRuntimeError("RIVMUX_UNSUPPORTED_WASM", "WebAssembly is not available in this worker runtime.");
1571
+ if (typeof MediaSource === "undefined") return createUnsupportedRuntimeError("RIVMUX_UNSUPPORTED_MSE", "MediaSource is not available in this worker runtime.");
1572
+ if (MediaSource.canConstructInDedicatedWorker !== true) return createUnsupportedRuntimeError("RIVMUX_UNSUPPORTED_WORKER_MSE", "MediaSource cannot be constructed in this worker runtime.");
1573
+ if (typeof MediaSource.isTypeSupported !== "function") return createUnsupportedRuntimeError("RIVMUX_UNSUPPORTED_MSE_TYPE_CHECK", "MediaSource.isTypeSupported is not available in this worker runtime.");
1574
+ for (const requirement of REQUIRED_MSE_MIME_TYPES) if (!MediaSource.isTypeSupported(requirement.mimeType)) return createUnsupportedRuntimeError(requirement.unsupportedCode, `MSE does not support ${requirement.mimeType}.`);
1575
+ }
1576
+ function createUnsupportedRuntimeError(code, message) {
1577
+ return {
1578
+ kind: "unsupported",
1579
+ code,
1580
+ message,
1581
+ terminal: true
1582
+ };
1583
+ }
1837
1584
  function createLatencyController(options) {
1838
1585
  return new LatencyController({
1839
1586
  latency: options.latency,
@@ -1889,6 +1636,6 @@ const globalScope = globalThis;
1889
1636
  const workerGlobalScope = globalThis.WorkerGlobalScope;
1890
1637
  if (workerGlobalScope !== void 0 && globalScope instanceof workerGlobalScope && typeof globalScope.postMessage === "function") startRuntimeWorker(globalScope);
1891
1638
  //#endregion
1892
- export { HttpFlvLoader, HttpFlvLoaderError, M1_VIDEO_MIME, MseController, RuntimeWorker, SourceBufferQueue, WasmTransmuxCoreHost, createM1StaticFmp4Fixture, createWasmTransmuxCoreHost, isMseSupported, normalizeCoreEvents, startRuntimeWorker };
1639
+ export { HttpFlvLoader, HttpFlvLoaderError, MseController, RuntimeWorker, SourceBufferQueue, WasmTransmuxCoreHost, createWasmTransmuxCoreHost, isMseSupported, normalizeCoreEvents, startRuntimeWorker };
1893
1640
 
1894
1641
  //# sourceMappingURL=rivmux-runtime-worker.js.map