@streamlayer/react 1.23.0 → 1.23.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/lib/app/pause-ad.d.ts +2 -4
  2. package/lib/app/polymarket.d.ts +7 -0
  3. package/lib/cjs/Question.js +1 -1
  4. package/lib/cjs/advertisement.js +1 -1
  5. package/lib/cjs/auth.js +1 -1
  6. package/lib/cjs/bet-pack.js +1 -1
  7. package/lib/cjs/feature.js +1 -0
  8. package/lib/cjs/hooks-WfHlJH12.js +1 -0
  9. package/lib/cjs/index.js +1 -1
  10. package/lib/cjs/index10.js +1 -4
  11. package/lib/cjs/index11.js +4 -1
  12. package/lib/cjs/index12.js +1 -1
  13. package/lib/cjs/index13.js +1 -1
  14. package/lib/cjs/index14.js +1 -1
  15. package/lib/cjs/index15.js +1 -5
  16. package/lib/cjs/index16.js +5 -0
  17. package/lib/cjs/index2.js +1 -1
  18. package/lib/cjs/index3.js +1 -1
  19. package/lib/cjs/index4.js +1 -1
  20. package/lib/cjs/index7.js +1 -1
  21. package/lib/cjs/index8.js +1 -1
  22. package/lib/cjs/index9.js +1 -1
  23. package/lib/cjs/insight.js +1 -1
  24. package/lib/cjs/masters.js +1 -1
  25. package/lib/cjs/masters2.js +4 -4
  26. package/lib/cjs/notification.js +1 -1
  27. package/lib/cjs/pause-ad.js +1 -1
  28. package/lib/cjs/points.js +1 -1
  29. package/lib/cjs/polymarket.js +19 -0
  30. package/lib/cjs/storage.js +1 -1
  31. package/lib/cjs/useStreamLayerApp2.js +5 -5
  32. package/lib/classic/app/pause-ad.d.ts +2 -4
  33. package/lib/classic/app/polymarket.d.ts +7 -0
  34. package/lib/classic/cjs/Question.js +1 -1
  35. package/lib/classic/cjs/advertisement.js +1 -1
  36. package/lib/classic/cjs/analytics.js +1 -1
  37. package/lib/classic/cjs/auth.js +1 -1
  38. package/lib/classic/cjs/bet-pack.js +3 -3
  39. package/lib/classic/cjs/feature.js +1 -0
  40. package/lib/classic/cjs/hooks-WfHlJH12.js +1 -0
  41. package/lib/classic/cjs/index.js +1 -1
  42. package/lib/classic/cjs/index10.js +1 -1
  43. package/lib/classic/cjs/index11.js +1 -1
  44. package/lib/classic/cjs/index12.js +1 -4
  45. package/lib/classic/cjs/index13.js +4 -0
  46. package/lib/classic/cjs/index2.js +2 -2
  47. package/lib/classic/cjs/index5.js +1 -1
  48. package/lib/classic/cjs/index6.js +1 -1
  49. package/lib/classic/cjs/index7.js +1 -1
  50. package/lib/classic/cjs/index8.js +1 -1
  51. package/lib/classic/cjs/index9.js +1 -1
  52. package/lib/classic/cjs/insight.js +1 -1
  53. package/lib/classic/cjs/notification.js +1 -1
  54. package/lib/classic/cjs/notification2.js +1 -1
  55. package/lib/classic/cjs/pause-ad.js +1 -1
  56. package/lib/classic/cjs/points.js +1 -1
  57. package/lib/classic/cjs/polymarket.js +19 -0
  58. package/lib/classic/cjs/useStreamLayerApp2.js +5 -5
  59. package/lib/classic/es/Question.js +4 -4
  60. package/lib/classic/es/advertisement.js +6 -6
  61. package/lib/classic/es/analytics.js +1 -1
  62. package/lib/classic/es/auth.js +1 -1
  63. package/lib/classic/es/bet-pack.js +18 -17
  64. package/lib/classic/es/feature.js +63 -0
  65. package/lib/classic/es/hooks-WfHlJH12.js +98 -0
  66. package/lib/classic/es/index.js +2 -2
  67. package/lib/classic/es/index10.js +82 -2295
  68. package/lib/classic/es/index11.js +2351 -179
  69. package/lib/classic/es/index12.js +170 -822
  70. package/lib/classic/es/index13.js +835 -0
  71. package/lib/classic/es/index2.js +127 -126
  72. package/lib/classic/es/index5.js +4 -5
  73. package/lib/classic/es/index6.js +5 -11
  74. package/lib/classic/es/index7.js +5 -62
  75. package/lib/classic/es/index8.js +7 -315
  76. package/lib/classic/es/index9.js +313 -81
  77. package/lib/classic/es/insight.js +2 -2
  78. package/lib/classic/es/notification.js +2 -2
  79. package/lib/classic/es/notification2.js +14 -13
  80. package/lib/classic/es/pause-ad.js +20 -20
  81. package/lib/classic/es/points.js +15 -14
  82. package/lib/classic/es/polymarket.js +6670 -0
  83. package/lib/classic/es/useStreamLayerApp2.js +143 -119
  84. package/lib/dist/cjs/masters.js +23 -23
  85. package/lib/dist/es/masters.js +189 -165
  86. package/lib/dist/index.d.ts +17 -6
  87. package/lib/dist/style.css +1 -1
  88. package/lib/es/Question.js +2 -2
  89. package/lib/es/advertisement.js +5 -5
  90. package/lib/es/auth.js +1 -1
  91. package/lib/es/bet-pack.js +1 -1
  92. package/lib/es/feature.js +63 -0
  93. package/lib/es/hooks-WfHlJH12.js +98 -0
  94. package/lib/es/index.js +2 -2
  95. package/lib/es/index10.js +236 -804
  96. package/lib/es/index11.js +822 -170
  97. package/lib/es/index12.js +166 -302
  98. package/lib/es/index13.js +313 -81
  99. package/lib/es/index14.js +82 -2350
  100. package/lib/es/index15.js +2330 -1229
  101. package/lib/es/index16.js +1254 -0
  102. package/lib/es/index2.js +118 -117
  103. package/lib/es/index3.js +3 -61
  104. package/lib/es/index4.js +3 -3
  105. package/lib/es/index7.js +5 -7
  106. package/lib/es/index8.js +5 -9
  107. package/lib/es/index9.js +7 -263
  108. package/lib/es/insight.js +2 -2
  109. package/lib/es/masters.js +1 -1
  110. package/lib/es/masters2.js +25 -24
  111. package/lib/es/notification.js +8 -7
  112. package/lib/es/pause-ad.js +20 -20
  113. package/lib/es/points.js +6 -5
  114. package/lib/es/polymarket.js +6670 -0
  115. package/lib/es/storage.js +2 -2
  116. package/lib/es/useStreamLayerApp2.js +143 -119
  117. package/lib/style.css +1 -1
  118. package/package.json +24 -14
  119. package/lib/cjs/hooks-B0Qttldg.js +0 -1
  120. package/lib/classic/cjs/hooks-B0Qttldg.js +0 -1
  121. package/lib/classic/es/hooks-B0Qttldg.js +0 -98
  122. package/lib/es/hooks-B0Qttldg.js +0 -98
package/lib/es/index13.js CHANGED
@@ -1,87 +1,319 @@
1
- import { jsx as n } from "react/jsx-runtime";
2
- import { d as x } from "./index14.js";
3
- import { useEffect as h, useState as d, useCallback as p } from "react";
4
- import { s as f, N as O, I as k, O as y, S as E } from "./sl-types.js";
5
- import { CountdownCircleTimer as g } from "react-countdown-circle-timer";
6
- import { B as P } from "./index6.js";
7
- const v = (i) => {
8
- const { Component: o, options: t, customOptions: s, autoFocus: r, ...l } = i, e = x.useFocusable({
9
- ...t,
10
- ...s,
11
- onEnterPress: () => {
12
- var a;
13
- return (a = i.onClick) == null ? void 0 : a.call(i, { currentTarget: e.ref.current, stopPropagation: () => {
14
- } });
15
- }
16
- });
17
- return h(() => {
18
- r && e.focusSelf();
19
- }, []), /* @__PURE__ */ n(o, { ...l, ...e, "data-is-with-focus": "true" });
20
- };
21
- function B(i, o) {
22
- return ({ webos: t, options: s, ...r }) => t ? /* @__PURE__ */ n(v, { Component: i, options: o, customOptions: s, ...r }) : /* @__PURE__ */ n(i, { ...r });
23
- }
24
- const w = [10, 10, 1, 0], I = /* @__PURE__ */ f("div")({
25
- name: "RemainingTimeCircle",
26
- class: "r165427",
1
+ import { jsxs as S, jsx as e, Fragment as re } from "react/jsx-runtime";
2
+ import { s as o, c as X } from "./sl-types.js";
3
+ import { useState as I, useEffect as b, useCallback as w, forwardRef as ce, useRef as L } from "react";
4
+ import { B as f } from "./index6.js";
5
+ import { G as ie, d as ue, O as de } from "./index14.js";
6
+ import { C as pe } from "./useStreamLayerApp2.js";
7
+ const me = /* @__PURE__ */ o("div")({
8
+ name: "CloseIconWrap",
9
+ class: "c3v6bv6",
27
10
  propsAsIs: !1
28
- }), S = /* @__PURE__ */ f("div")({
29
- name: "RemainingTime",
30
- class: "r17garf3",
11
+ }), ye = /* @__PURE__ */ o("div")({
12
+ name: "TimerWrap",
13
+ class: "teuhmro",
31
14
  propsAsIs: !1
32
- }), b = y, c = O, u = E, F = ({
33
- className: i,
34
- duration: o = 30,
35
- onTimerExpired: t,
36
- isPlaying: s = !0
37
- }) => /* @__PURE__ */ n(g, {
38
- isPlaying: s,
39
- strokeWidth: 0,
40
- duration: o,
41
- colors: c,
42
- size: 24,
43
- onComplete: t,
44
- children: ({
45
- remainingTime: r
46
- }) => /* @__PURE__ */ n(S, {
47
- className: i,
48
- children: o === 0 ? 0 : r
49
- })
50
- }), j = ({
51
- isPlaying: i = !0,
52
- duration: o = 30,
53
- onTimerExpired: t
15
+ }), he = () => f, fe = /* @__PURE__ */ o(he())({
16
+ name: "Icon",
17
+ class: "i17rfxv5",
18
+ propsAsIs: !0
19
+ }), Ye = ({
20
+ close: n,
21
+ className: a,
22
+ timerClassName: s,
23
+ skipIcon: l,
24
+ isPlaying: u = !0,
25
+ duration: i = 0,
26
+ autoClose: d
54
27
  }) => {
55
- const [s, r] = d(o > 10 ? b : c), [l, e] = d(2);
56
- h(() => {
57
- o === 0 && (e(0), r(u));
58
- }, [o]);
59
- const a = ({
60
- remainingTime: m
61
- }) => /* @__PURE__ */ n(I, {
62
- children: o === 0 ? 0 : m
63
- }), C = p(() => {
64
- t == null || t(), r(u);
65
- }, [t, r]), T = p((m) => {
66
- m === 10 && r(c);
67
- }, [r]);
68
- return /* @__PURE__ */ n(g, {
69
- isPlaying: i,
70
- duration: o,
71
- colors: k,
72
- colorsTime: w,
73
- size: 32,
74
- strokeWidth: l,
75
- trailStrokeWidth: 2,
76
- trailColor: s,
77
- onComplete: C,
78
- onUpdate: T,
79
- children: a
28
+ const [p, m] = I(i === 0);
29
+ b(() => {
30
+ m(!i);
31
+ }, [i]);
32
+ const P = w(() => {
33
+ d === pe.ENABLED ? n == null || n() : m(!0);
34
+ }, [d, n]);
35
+ return p ? /* @__PURE__ */ S(me, {
36
+ "data-a": "intr",
37
+ onClick: n,
38
+ className: a,
39
+ style: l ? {
40
+ width: "auto"
41
+ } : {},
42
+ children: [l && /* @__PURE__ */ e("span", {
43
+ "data-a": "intr",
44
+ children: "Skip"
45
+ }), /* @__PURE__ */ e(fe, {
46
+ "data-a": "intr",
47
+ name: l ? "iconSkip" : "icon-cross"
48
+ })]
49
+ }) : /* @__PURE__ */ e(ye, {
50
+ children: /* @__PURE__ */ e(ie, {
51
+ className: s,
52
+ isPlaying: u,
53
+ duration: i,
54
+ onTimerExpired: P
55
+ })
80
56
  });
81
- }, G = ({ height: i = "37px", width: o = "37px" }) => /* @__PURE__ */ n("div", { style: { height: i, width: o }, children: /* @__PURE__ */ n(P, { name: "loader" }) });
57
+ }, ge = /* @__PURE__ */ o("div")({
58
+ name: "Container",
59
+ class: "c1bgb86j",
60
+ propsAsIs: !1
61
+ }), Ie = /* @__PURE__ */ o("video")({
62
+ name: "Player",
63
+ class: "p6703cq",
64
+ propsAsIs: !1
65
+ }), be = /* @__PURE__ */ o("img")({
66
+ name: "Poster",
67
+ class: "p12ow7zo",
68
+ propsAsIs: !1
69
+ }), R = /* @__PURE__ */ o("div")({
70
+ name: "Control",
71
+ class: "cdpal9o",
72
+ propsAsIs: !1
73
+ }), Pe = "t1xke4ml", ve = "h1yzxv57", Ae = /* @__PURE__ */ o("div")({
74
+ name: "VideoControls",
75
+ class: "vxo8xch",
76
+ propsAsIs: !1
77
+ }), $ = /* @__PURE__ */ o("button")({
78
+ name: "ControlBtn",
79
+ class: "coyuzu0",
80
+ propsAsIs: !1
81
+ }), Ce = () => $, we = /* @__PURE__ */ o(Ce())({
82
+ name: "MuteIcon",
83
+ class: "musmi9a",
84
+ propsAsIs: !0
85
+ }), Me = () => $, ke = /* @__PURE__ */ o(Me())({
86
+ name: "PauseIcon",
87
+ class: "p1qe7rum",
88
+ propsAsIs: !0
89
+ }), Ee = () => $, xe = /* @__PURE__ */ o(Ee())({
90
+ name: "PlayIcon",
91
+ class: "psevery",
92
+ propsAsIs: !0
93
+ }), Y = /* @__PURE__ */ o("button")({
94
+ name: "WebOSIconButton",
95
+ class: "w1q3u7py",
96
+ propsAsIs: !1
97
+ }), Be = () => Y, T = /* @__PURE__ */ o(Be())({
98
+ name: "WebOSIconButtonAnimation",
99
+ class: "wdlqvum",
100
+ propsAsIs: !0
101
+ }), Oe = () => T, We = /* @__PURE__ */ o(Oe())({
102
+ name: "WebOSIconButtonPlay",
103
+ class: "w1ylz9ea",
104
+ propsAsIs: !0
105
+ }), Ne = () => T, Ve = /* @__PURE__ */ o(Ne())({
106
+ name: "WebOSIconButtonPause",
107
+ class: "w1iylt55",
108
+ propsAsIs: !0
109
+ }), Le = () => T, Re = /* @__PURE__ */ o(Le())({
110
+ name: "WebOSIconButtonMute",
111
+ class: "w8h4h7",
112
+ propsAsIs: !0
113
+ }), Se = () => T, Te = /* @__PURE__ */ o(Se())({
114
+ name: "WebOSIconButtonUnmute",
115
+ class: "w12l12kt",
116
+ propsAsIs: !0
117
+ }), Ue = (n) => {
118
+ for (const a of n)
119
+ a.isIntersecting ? a.target instanceof HTMLVideoElement && a.target.autoplay && a.target.play() : a.target instanceof HTMLVideoElement && !a.target.paused && a.target.pause();
120
+ }, Z = new IntersectionObserver(Ue, { threshold: 0.5 }), D = /* @__PURE__ */ new Set(), je = (n) => {
121
+ Z.observe(n), D.add(n);
122
+ }, qe = (n) => {
123
+ Z.unobserve(n), D.delete(n);
124
+ }, ze = () => {
125
+ for (const n of D)
126
+ n instanceof HTMLVideoElement && !n.paused && n.pause();
127
+ };
128
+ function He(...n) {
129
+ return w(
130
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
131
+ (a) => {
132
+ for (const s of n)
133
+ s !== null && (typeof s == "function" ? s(a) : s && (s.current = a));
134
+ },
135
+ // Re-run the callback if the array of refs changes
136
+ // eslint-disable-next-line react-hooks/exhaustive-deps
137
+ [...n]
138
+ );
139
+ }
140
+ const $e = de(ge), De = ({ loading: n, autoPlay: a, played: s, playing: l, isMuted: u, unmute: i, mute: d, togglePlaying: p }) => !n && !a && !s ? /* @__PURE__ */ e(R, { children: l ? /* @__PURE__ */ e(f, { name: "icon-pause" }) : /* @__PURE__ */ e(f, { name: "icon-play" }) }) : s ? /* @__PURE__ */ S(Ae, { children: [
141
+ l ? /* @__PURE__ */ e(ke, { onClick: p }) : /* @__PURE__ */ e(xe, { onClick: p }),
142
+ /* @__PURE__ */ e(we, { className: X(!u && "muted"), onClick: u ? i : d })
143
+ ] }) : null, Fe = ({
144
+ loading: n,
145
+ autoPlay: a,
146
+ playMuted: s,
147
+ playing: l,
148
+ played: u,
149
+ unmute: i,
150
+ mute: d,
151
+ isMuted: p,
152
+ hasNotPausedVideo: m,
153
+ hasInteractedWithAudio: P
154
+ }) => /* @__PURE__ */ S(re, { children: [
155
+ !n && !(a && s) && /* @__PURE__ */ e(R, { "data-control-btn": "true", children: l ? m ? null : /* @__PURE__ */ e(We, { children: /* @__PURE__ */ e(f, { name: "icon-play" }) }) : u ? /* @__PURE__ */ e(Ve, { children: /* @__PURE__ */ e(f, { name: "icon-pause" }) }) : /* @__PURE__ */ e(Y, { "data-control-icon": "true", children: /* @__PURE__ */ e(f, { name: "icon-play" }) }) }),
156
+ !n && a && s && P && /* @__PURE__ */ e(R, { children: p ? /* @__PURE__ */ e(Re, { onClick: i, children: /* @__PURE__ */ e(f, { name: "iconMute" }) }) : /* @__PURE__ */ e(Te, { onClick: d, children: /* @__PURE__ */ e(f, { name: "iconUnMute" }) }) })
157
+ ] }), Ze = ce(
158
+ ({
159
+ poster: n,
160
+ source: a,
161
+ aspectRatio: s,
162
+ controlVideo: l,
163
+ onReplay: u,
164
+ onPlay: i,
165
+ onPause: d,
166
+ onEnd: p,
167
+ onRender: m,
168
+ onMute: P,
169
+ onQuartile: v,
170
+ autoPlay: M,
171
+ playMuted: k,
172
+ className: ee,
173
+ muted: E,
174
+ webos: B,
175
+ hasNotPausedVideo: ne
176
+ }, te) => {
177
+ const c = L(null), ae = He(c, te), U = L(!1), j = L(!1), y = L(/* @__PURE__ */ new Set()), [F, G] = I(!1), [O, W] = I(!1), [q, Q] = I(!1), [_, N] = I(!0), [z, V] = I(k), [H, oe] = I(!1);
178
+ b(() => {
179
+ a && (V(k), G(!1));
180
+ }, [a]);
181
+ const A = w(() => {
182
+ l == null || l({ muted: !1 });
183
+ }, [l]), J = w(() => {
184
+ l == null || l({ muted: !0 });
185
+ }, [l]), C = w((t) => {
186
+ t == null || t.stopPropagation(), c.current && (c.current.muted = !0), V(!0);
187
+ }, []), x = w(
188
+ (t) => {
189
+ t == null || t.stopPropagation(), c.current && (c.current.muted = !1), V(!1), H || oe(!0);
190
+ },
191
+ [H]
192
+ );
193
+ b(() => {
194
+ E !== void 0 && (E ? C() : x());
195
+ }, [C, E, x]);
196
+ const K = (t) => {
197
+ var r;
198
+ (r = t.stopPropagation) == null || r.call(t);
199
+ const g = c == null ? void 0 : c.current;
200
+ if (g)
201
+ if (O)
202
+ g.pause();
203
+ else {
204
+ const h = c == null ? void 0 : c.current;
205
+ if (!h)
206
+ return;
207
+ ze(), h.play().catch((le) => console.log(le)), N(!1);
208
+ }
209
+ }, se = () => {
210
+ var t;
211
+ (t = c == null ? void 0 : c.current) == null || t.load(), N(!0);
212
+ };
213
+ return b(() => () => {
214
+ A();
215
+ }, [A]), b(() => {
216
+ const t = c.current;
217
+ return t ? (j.current = t.muted, V(t.muted), je(t), () => {
218
+ qe(t);
219
+ }) : () => {
220
+ };
221
+ }, []), b(() => {
222
+ m == null || m();
223
+ }, [m]), b(() => {
224
+ y.current.clear(), U.current = !1;
225
+ }, [a]), /* @__PURE__ */ S(
226
+ $e,
227
+ {
228
+ webos: B,
229
+ onClick: M && k ? z ? x : C : K,
230
+ "data-a": "intr",
231
+ autoFocus: !0,
232
+ options: { focusKey: "video-play-btn" },
233
+ className: X(O && !B && Pe, M && ve, ee),
234
+ style: s ? { aspectRatio: s } : {},
235
+ children: [
236
+ /* @__PURE__ */ e(
237
+ Ie,
238
+ {
239
+ ref: ae,
240
+ src: a,
241
+ autoPlay: M,
242
+ onPlay: () => {
243
+ G(!0), U.current && (u == null || u(), y.current.clear()), W(!0), N(!1), i == null || i(), k ? C() : J();
244
+ },
245
+ onTimeUpdate: (t) => {
246
+ const r = t.target.duration, g = t.target.currentTime;
247
+ if (r && g) {
248
+ const h = Math.floor(g / r * 100);
249
+ h >= 25 && h < 50 && !y.current.has(25) ? (v == null || v(25), y.current.add(25)) : h >= 50 && h < 75 && !y.current.has(50) ? (v == null || v(50), y.current.add(50)) : h >= 75 && !y.current.has(75) && (v == null || v(75), y.current.add(75));
250
+ }
251
+ },
252
+ onVolumeChange: (t) => {
253
+ const r = t.target.muted;
254
+ j.current !== r && (P == null || P(r), j.current = r, (r !== E || E === void 0) && (r ? A() : J()));
255
+ },
256
+ onError: async (t) => {
257
+ try {
258
+ if (t.target instanceof HTMLVideoElement) {
259
+ Q(!0);
260
+ const r = await (await fetch(t.target.src)).blob(), g = URL.createObjectURL(r);
261
+ t.target.src = g;
262
+ }
263
+ } catch (r) {
264
+ console.error("video fallback fetch failed", r), W(!0), N(!0);
265
+ } finally {
266
+ Q(!1), A();
267
+ }
268
+ },
269
+ onPause: () => {
270
+ W(!1), d == null || d(), A();
271
+ },
272
+ onEnded: () => {
273
+ W(!1), U.current = !0, se(), p == null || p(), A();
274
+ },
275
+ style: { visibility: _ ? "hidden" : "visible" },
276
+ controls: !1,
277
+ playsInline: !0
278
+ }
279
+ ),
280
+ /* @__PURE__ */ e(be, { src: n, style: { visibility: _ ? "visible" : "hidden" } }),
281
+ !B && /* @__PURE__ */ e(
282
+ De,
283
+ {
284
+ loading: q,
285
+ autoPlay: M,
286
+ played: F,
287
+ playing: O,
288
+ isMuted: z,
289
+ unmute: x,
290
+ mute: C,
291
+ togglePlaying: K
292
+ }
293
+ ),
294
+ B && /* @__PURE__ */ e(
295
+ Fe,
296
+ {
297
+ loading: q,
298
+ autoPlay: M,
299
+ playMuted: k,
300
+ playing: O,
301
+ played: F,
302
+ unmute: x,
303
+ mute: C,
304
+ isMuted: z,
305
+ hasNotPausedVideo: ne,
306
+ hasInteractedWithAudio: H
307
+ }
308
+ ),
309
+ q && /* @__PURE__ */ e(R, { children: /* @__PURE__ */ e(ue, {}) })
310
+ ]
311
+ }
312
+ );
313
+ }
314
+ );
82
315
  export {
83
- F as G,
84
- j as L,
85
- B as O,
86
- G as d
316
+ Ze as E,
317
+ ze as w,
318
+ Ye as y
87
319
  };