multi_embed_player 3.0.1 → 3.1.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.
@@ -1,181 +1,325 @@
1
- import { PlayerState } from '../types';
1
+ "use strict";
2
+ // Notice! This file JSDOC is generated by gitHub copilot.
3
+ // So some of this JSDOC is not correct.
4
+ // Please refer to documents https://multi-embed-player.pages.dev/docs/reference/iframe_class/#mep_niconico-class
5
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
6
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
7
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
8
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
9
+ };
10
+ var _mep_niconico_instances, _mep_niconico_postMessage, _mep_niconico_messageListener;
2
11
  /**
3
12
  * Class representing a Niconico player.
4
13
  */
5
- export class mep_niconico {
14
+ class mep_niconico {
15
+ /**
16
+ * Create a Niconico player.
17
+ * @param {string|HTMLElement} replacing_element - The element to replace with the player.
18
+ * @param {Object} content - The content of the player.
19
+ * @param {Function} player_set_event_function - The function to set player events.
20
+ */
6
21
  constructor(replacing_element, content, player_set_event_function) {
7
- this.autoplay = 0;
22
+ _mep_niconico_instances.add(this);
23
+ /**
24
+ * The state of the player.
25
+ * @type {Object}
26
+ * @property {boolean} isRepeat - Whether the player is on repeat.
27
+ * @property {number} playerStatus - The status of the player.
28
+ */
29
+ let element;
30
+ if (typeof replacing_element === "string") {
31
+ const found_element = document.getElementById(replacing_element);
32
+ if (!found_element) {
33
+ throw new Error(`Element with id "${replacing_element}" not found`);
34
+ }
35
+ element = found_element;
36
+ }
37
+ else {
38
+ element = replacing_element;
39
+ }
40
+ this.state = {
41
+ isRepeat: false,
42
+ playerStatus: 0
43
+ };
44
+ __classPrivateFieldGet(this, _mep_niconico_instances, "m", _mep_niconico_messageListener).call(this);
45
+ /**
46
+ * The start time of the player.
47
+ * @type {number}
48
+ */
8
49
  this.startSeconds = 0;
9
- this.endSeconds = -1;
10
- this.playerState = PlayerState.UNSTARTED;
11
- this.currentTime = 0;
12
- this.duration = 0;
13
- this.volume = 100;
14
- this.muted = false;
15
- this.load(replacing_element, content, player_set_event_function);
16
- }
17
- async load(replacing_element, content, player_set_event_function) {
18
- this.player = document.createElement("iframe");
50
+ if (content?.playerVars?.startSeconds != undefined) {
51
+ this.startSeconds = content?.playerVars?.startSeconds;
52
+ }
53
+ let niconico_doc = document.createElement("iframe");
54
+ niconico_doc.src = "https://embed.nicovideo.jp/watch/" + content["videoId"] + "?jsapi=1&playerId=" + String(mep_niconico.playerId) + "&from=" + String(this.startSeconds);
55
+ this.playerId = String(mep_niconico.playerId);
56
+ mep_niconico.playerId++;
57
+ niconico_doc.width = String(content["width"]);
58
+ niconico_doc.height = String(content["height"]);
59
+ niconico_doc.allow = "autoplay"; //fix bug not autoplay on chrome
60
+ niconico_doc.allowFullscreen = true; //fix bug can't watch on full screen(all browser)
61
+ niconico_doc.style.border = "none"; //fix bug display border on outer frame
62
+ element.replaceWith(niconico_doc);
63
+ /**
64
+ * The player element.
65
+ * @type {HTMLIFrameElement}
66
+ */
67
+ this.player = niconico_doc;
19
68
  if (typeof player_set_event_function === "function") {
20
- player_set_event_function();
69
+ player_set_event_function(this.player);
21
70
  }
22
- let iframe_replace_node;
23
- if (typeof replacing_element === "string") {
24
- const element = document.getElementById(replacing_element);
25
- if (!element) {
26
- throw new Error(`Element with id "${replacing_element}" not found`);
71
+ /**
72
+ * Whether the player is on autoplay.
73
+ * @type {boolean}
74
+ */
75
+ this.autoplay_flag = false;
76
+ if (content?.playerVars?.autoplay == 1) { //終わり次第再生
77
+ this.autoplay_flag = true;
78
+ }
79
+ /**
80
+ * The end time of the player.
81
+ * @type {number}
82
+ */
83
+ this.endSeconds = -1;
84
+ if (content?.playerVars?.endSeconds !== undefined) {
85
+ this.endSeconds = content?.playerVars?.endSeconds;
86
+ }
87
+ if (content?.playerVars?.displayComment !== undefined) {
88
+ if (content?.playerVars?.displayComment == 0) {
89
+ this.displayCommentMode = false;
27
90
  }
28
- iframe_replace_node = element;
91
+ else if (content?.playerVars?.displayComment == 1) {
92
+ this.displayCommentMode = true;
93
+ }
94
+ }
95
+ }
96
+ /**
97
+ * Cue a video by ID.
98
+ * @param {mep_niconico_load_object} content - The content of the video.
99
+ */
100
+ cueVideoById(content) {
101
+ this.startSeconds = 0;
102
+ if (content["startSeconds"] != undefined) {
103
+ this.startSeconds = content["startSeconds"];
104
+ }
105
+ this.endSeconds = -1;
106
+ if (content["endSeconds"] != undefined) {
107
+ this.endSeconds = content["endSeconds"];
108
+ }
109
+ this.player.src = "https://embed.nicovideo.jp/watch/" + content["videoId"] + "?jsapi=1&playerId=" + String(this.playerId) + "&from=" + String(this.startSeconds);
110
+ this.autoplay_flag = false;
111
+ }
112
+ /**
113
+ * Load a video by ID.
114
+ * @param {mep_niconico_load_object} content - The content of the video.
115
+ */
116
+ loadVideoById(content) {
117
+ this.startSeconds = 0;
118
+ if (content["startSeconds"] != undefined) {
119
+ this.startSeconds = content["startSeconds"];
120
+ }
121
+ this.endSeconds = -1;
122
+ if (content["endSeconds"] != undefined) {
123
+ this.endSeconds = content["endSeconds"];
124
+ }
125
+ this.player.src = "https://embed.nicovideo.jp/watch/" + content["videoId"] + "?jsapi=1&playerId=" + String(this.playerId) + "&from=" + String(this.startSeconds);
126
+ this.autoplay_flag = true;
127
+ }
128
+ /**
129
+ * Get the real duration of the video.
130
+ * @returns {number} The duration of the video.
131
+ */
132
+ getRealDulation() {
133
+ if (this.endSeconds == -1) {
134
+ return this.getDuration() - this.startSeconds;
29
135
  }
30
136
  else {
31
- iframe_replace_node = replacing_element;
32
- }
33
- this.videoid = content.videoId;
34
- const playerVars = content.playerVars || {};
35
- // Set player variables
36
- this.autoplay = playerVars.autoplay || 0;
37
- this.startSeconds = playerVars.startSeconds || 0;
38
- this.endSeconds = playerVars.endSeconds || -1;
39
- // Set iframe attributes
40
- this.player.width = String(content.width || 560);
41
- this.player.height = String(content.height || 315);
42
- this.player.allow = "autoplay; fullscreen";
43
- this.player.allowFullscreen = true;
44
- this.player.style.border = "none";
45
- // Build URL with parameters
46
- const params = new URLSearchParams();
47
- params.set('v', this.videoid);
48
- if (this.autoplay)
49
- params.set('autoplay', '1');
50
- if (this.startSeconds)
51
- params.set('from', String(this.startSeconds));
52
- if (this.endSeconds !== -1)
53
- params.set('to', String(this.endSeconds));
54
- if (playerVars.mute)
55
- params.set('mute', '1');
56
- if (playerVars.noRelatedVideo)
57
- params.set('noRelatedVideo', '1');
58
- if (playerVars.noLogo)
59
- params.set('noLogo', '1');
60
- if (playerVars.noController)
61
- params.set('noController', '1');
62
- if (playerVars.noHeader)
63
- params.set('noHeader', '1');
64
- if (playerVars.noTags)
65
- params.set('noTags', '1');
66
- if (playerVars.noShare)
67
- params.set('noShare', '1');
68
- this.player.src = `https://embed.nicovideo.jp/watch/${this.videoid}?${params.toString()}`;
69
- // Replace element
70
- iframe_replace_node.replaceWith(this.player);
71
- // Dispatch ready event
72
- setTimeout(() => {
73
- this.player.dispatchEvent(new Event("onReady"));
74
- }, 1000);
75
- }
76
- // IPlayer interface implementation
137
+ return this.endSeconds - this.startSeconds;
138
+ }
139
+ }
140
+ /**
141
+ * Play the video.
142
+ */
77
143
  playVideo() {
78
- // Niconico doesn't provide direct control through iframe
79
- // This would require postMessage communication
80
- console.log("Play video - Niconico iframe doesn't support direct control");
144
+ __classPrivateFieldGet(this, _mep_niconico_instances, "m", _mep_niconico_postMessage).call(this, {
145
+ eventName: 'play'
146
+ });
81
147
  }
148
+ /**
149
+ * Pause the video.
150
+ */
82
151
  pauseVideo() {
83
- // Niconico doesn't provide direct control through iframe
84
- console.log("Pause video - Niconico iframe doesn't support direct control");
152
+ __classPrivateFieldGet(this, _mep_niconico_instances, "m", _mep_niconico_postMessage).call(this, {
153
+ eventName: 'pause'
154
+ });
85
155
  }
156
+ /**
157
+ * Get the current time of the video.
158
+ * @returns {number} The current time of the video.
159
+ */
86
160
  getCurrentTime() {
87
- // Return estimated time based on when playback started
88
- return Promise.resolve(this.currentTime);
161
+ return (this.state.currentTime ?? 0) / 1000; //msec->sec
89
162
  }
163
+ /**
164
+ * Get the duration of the video.
165
+ * @returns {number} The duration of the video.
166
+ */
90
167
  getDuration() {
91
- // Would need to be fetched from Niconico API
92
- return Promise.resolve(this.duration);
168
+ return (this.state.duration ?? 0) / 1000; //msec->sec
93
169
  }
94
- async seekTo(time) {
95
- const num_time = Number(time);
96
- if (isNaN(num_time) || num_time < 0) {
97
- console.error("Invalid time value");
98
- return;
99
- }
100
- // Update internal time tracking
101
- this.currentTime = this.startSeconds + num_time;
102
- console.log("Seek to - Niconico iframe doesn't support direct control");
170
+ /**
171
+ * Get the title of the video.
172
+ * @returns {string} The title of the video.
173
+ */
174
+ getTitle() {
175
+ return this.state.videoInfo?.title ?? '';
103
176
  }
104
- setVolume(volume) {
105
- const num_volume = Number(volume);
106
- if (isNaN(num_volume) || num_volume < 0 || num_volume > 100) {
107
- console.error("Invalid volume value");
108
- return;
109
- }
110
- this.volume = num_volume;
111
- console.log("Set volume - Niconico iframe doesn't support direct control");
177
+ /**
178
+ * Check if the video is muted.
179
+ * @returns {boolean} Whether the video is muted.
180
+ */
181
+ isMuted() {
182
+ return this.state.muted ?? false;
112
183
  }
184
+ /**
185
+ * Get the volume of the video.
186
+ * @returns {number} The volume of the video.
187
+ */
113
188
  getVolume() {
114
- return Promise.resolve(this.volume);
189
+ return Number(this.state.volume) * 100;
190
+ }
191
+ /**
192
+ * Seek to a specific time in the video.
193
+ * @param {number} seconds - The time to seek to.
194
+ */
195
+ seekTo(seconds) {
196
+ __classPrivateFieldGet(this, _mep_niconico_instances, "m", _mep_niconico_postMessage).call(this, {
197
+ eventName: 'seek',
198
+ data: {
199
+ time: seconds * 1000 //secounds->msec
200
+ }
201
+ });
202
+ }
203
+ /**
204
+ * Change the display comment mode of the video.
205
+ * @param {boolean} mode - The display comment mode to set.
206
+ */
207
+ displayComment(mode) {
208
+ __classPrivateFieldGet(this, _mep_niconico_instances, "m", _mep_niconico_postMessage).call(this, {
209
+ eventName: "commentVisibilityChange",
210
+ data: {
211
+ commentVisibility: mode
212
+ }
213
+ });
115
214
  }
215
+ /**
216
+ * Mute the video.
217
+ */
116
218
  mute() {
117
- this.muted = true;
118
- console.log("Mute - Niconico iframe doesn't support direct control");
219
+ __classPrivateFieldGet(this, _mep_niconico_instances, "m", _mep_niconico_postMessage).call(this, {
220
+ eventName: "mute",
221
+ data: {
222
+ mute: true
223
+ }
224
+ });
119
225
  }
226
+ /**
227
+ * Unmute the video.
228
+ */
120
229
  unMute() {
121
- this.muted = false;
122
- console.log("Unmute - Niconico iframe doesn't support direct control");
123
- }
124
- isMuted() {
125
- return Promise.resolve(this.muted);
230
+ __classPrivateFieldGet(this, _mep_niconico_instances, "m", _mep_niconico_postMessage).call(this, {
231
+ eventName: "mute",
232
+ data: {
233
+ mute: false
234
+ }
235
+ });
126
236
  }
127
- getPlayerState() {
128
- return Promise.resolve(this.playerState);
237
+ /**
238
+ * Set the volume of the video.
239
+ * @param {number} volume - The volume to set.
240
+ */
241
+ setVolume(volume) {
242
+ __classPrivateFieldGet(this, _mep_niconico_instances, "m", _mep_niconico_postMessage).call(this, {
243
+ eventName: "volumeChange",
244
+ data: {
245
+ volume: volume / 100
246
+ }
247
+ });
129
248
  }
130
249
  /**
131
- * Get real duration between start and end times.
250
+ * Get the state of the player.
251
+ * @returns {number} The state of the player.
132
252
  */
133
- async getRealDulation() {
134
- const duration = await this.getDuration();
135
- if (this.endSeconds === -1) {
136
- return duration - this.startSeconds;
253
+ getPlayerState() {
254
+ if (this.getCurrentTime() >= this.getDuration() - 0.5 || (this.endSeconds != -1 && this.getCurrentTime() >= (this.endSeconds - 0.5))) { //最後まで行った
255
+ return 4;
137
256
  }
138
257
  else {
139
- return this.endSeconds - this.startSeconds;
258
+ return this.state.playerStatus;
140
259
  }
141
260
  }
142
- /**
143
- * Load video by ID.
144
- */
145
- loadVideoById(content) {
146
- this.videoid = content.videoId;
147
- const playerVars = content.playerVars || {};
148
- this.autoplay = playerVars.autoplay || 0;
149
- this.startSeconds = playerVars.startSeconds || 0;
150
- this.endSeconds = playerVars.endSeconds || -1;
151
- // Reload iframe with new video
152
- const params = new URLSearchParams();
153
- params.set('v', this.videoid);
154
- if (this.autoplay)
155
- params.set('autoplay', '1');
156
- if (this.startSeconds)
157
- params.set('from', String(this.startSeconds));
158
- if (this.endSeconds !== -1)
159
- params.set('to', String(this.endSeconds));
160
- this.player.src = `https://embed.nicovideo.jp/watch/${this.videoid}?${params.toString()}`;
161
- }
162
- /**
163
- * Cue video by ID.
164
- */
165
- cueVideoById(content) {
166
- this.videoid = content.videoId;
167
- const playerVars = content.playerVars || {};
168
- this.autoplay = 0; // Don't autoplay when cueing
169
- this.startSeconds = playerVars.startSeconds || 0;
170
- this.endSeconds = playerVars.endSeconds || -1;
171
- // Load without autoplay
172
- const params = new URLSearchParams();
173
- params.set('v', this.videoid);
174
- if (this.startSeconds)
175
- params.set('from', String(this.startSeconds));
176
- if (this.endSeconds !== -1)
177
- params.set('to', String(this.endSeconds));
178
- this.player.src = `https://embed.nicovideo.jp/watch/${this.videoid}?${params.toString()}`;
179
- }
180
261
  }
262
+ _mep_niconico_instances = new WeakSet(), _mep_niconico_postMessage = function _mep_niconico_postMessage(request) {
263
+ const message = Object.assign({
264
+ sourceConnectorType: 1,
265
+ playerId: this.playerId
266
+ }, request);
267
+ if (this.player.contentWindow) {
268
+ this.player.contentWindow.postMessage(message, window.mep_niconico.origin);
269
+ }
270
+ }, _mep_niconico_messageListener = function _mep_niconico_messageListener() {
271
+ window.addEventListener('message', (e) => {
272
+ if (e.origin === window.mep_niconico.origin && e.data.playerId === this.playerId) {
273
+ const { data } = e.data;
274
+ switch (e.data.eventName) {
275
+ case 'statusChange': {
276
+ break;
277
+ }
278
+ case 'error': {
279
+ this.player.dispatchEvent(new CustomEvent("onError", { detail: { code: 500 } }));
280
+ break;
281
+ }
282
+ case 'playerMetadataChange': {
283
+ break;
284
+ }
285
+ case 'loadComplete': {
286
+ if (this.autoplay_flag) {
287
+ this.playVideo();
288
+ }
289
+ this.player.dispatchEvent(new Event("onReady"));
290
+ break;
291
+ }
292
+ case 'playerStatusChange': {
293
+ this.player.dispatchEvent(new CustomEvent("onStateChange", { detail: this.getPlayerState() }));
294
+ if (this.getCurrentTime() >= this.getDuration() - 0.5 || (this.endSeconds != -1 && this.getCurrentTime() >= (this.endSeconds - 0.5))) { //最後まで行った
295
+ this.player.dispatchEvent(new Event("onEndVideo"));
296
+ }
297
+ break;
298
+ }
299
+ default:
300
+ console.log(e.data);
301
+ }
302
+ this.state = Object.assign({}, this.state, data);
303
+ if (this.endSeconds != -1 && (this.state.currentTime ?? 0) >= this.endSeconds * 1000) { //終了時間の時自動で停止
304
+ this.pauseVideo();
305
+ }
306
+ }
307
+ });
308
+ };
309
+ /**
310
+ * The ID of the player.
311
+ * @type {number}
312
+ */
313
+ mep_niconico.playerId = 0;
314
+ /**
315
+ * The origin of the Niconico player.
316
+ * @type {string}
317
+ */
318
+ mep_niconico.origin = 'https://embed.nicovideo.jp';
319
+ /**
320
+ * The result of checking local storage.
321
+ * @type {boolean}
322
+ */
323
+ mep_niconico.localStorageCheck = null;
324
+ window.mep_niconico = mep_niconico;
181
325
  //# sourceMappingURL=niconico.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"niconico.js","sourceRoot":"","sources":["../../iframe_api/niconico.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgD,WAAW,EAAgB,MAAM,UAAU,CAAC;AAEnG;;GAEG;AACH,MAAM,OAAO,YAAY;IAYvB,YACE,iBAAuC,EACvC,OAAwB,EACxB,yBAAwC;QAZlC,aAAQ,GAAW,CAAC,CAAC;QACrB,iBAAY,GAAW,CAAC,CAAC;QACzB,eAAU,GAAW,CAAC,CAAC,CAAC;QACxB,gBAAW,GAAgB,WAAW,CAAC,SAAS,CAAC;QACjD,gBAAW,GAAW,CAAC,CAAC;QACxB,aAAQ,GAAW,CAAC,CAAC;QACrB,WAAM,GAAW,GAAG,CAAC;QACrB,UAAK,GAAY,KAAK,CAAC;QAO7B,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,OAAO,EAAE,yBAAyB,CAAC,CAAC;IACnE,CAAC;IAEO,KAAK,CAAC,IAAI,CAChB,iBAAuC,EACvC,OAAwB,EACxB,yBAAwC;QAExC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAsB,CAAC;QAEpE,IAAI,OAAO,yBAAyB,KAAK,UAAU,EAAE,CAAC;YACpD,yBAAyB,EAAE,CAAC;QAC9B,CAAC;QAED,IAAI,mBAAgC,CAAC;QACrC,IAAI,OAAO,iBAAiB,KAAK,QAAQ,EAAE,CAAC;YAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;YAC3D,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAC,oBAAoB,iBAAiB,aAAa,CAAC,CAAC;YACtE,CAAC;YACD,mBAAmB,GAAG,OAAO,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,mBAAmB,GAAG,iBAAiB,CAAC;QAC1C,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC;QAE5C,uBAAuB;QACvB,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,YAAY,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;QAE9C,wBAAwB;QACxB,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,sBAAsB,CAAC;QAC3C,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC;QACnC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QAElC,4BAA4B;QAC5B,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9B,IAAI,IAAI,CAAC,QAAQ;YAAE,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAC/C,IAAI,IAAI,CAAC,YAAY;YAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QACrE,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QACtE,IAAI,UAAU,CAAC,IAAI;YAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC7C,IAAI,UAAU,CAAC,cAAc;YAAE,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;QACjE,IAAI,UAAU,CAAC,MAAM;YAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACjD,IAAI,UAAU,CAAC,YAAY;YAAE,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;QAC7D,IAAI,UAAU,CAAC,QAAQ;YAAE,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QACrD,IAAI,UAAU,CAAC,MAAM;YAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACjD,IAAI,UAAU,CAAC,OAAO;YAAE,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QAEnD,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,oCAAoC,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;QAE1F,kBAAkB;QAClB,mBAAmB,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE7C,uBAAuB;QACvB,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;QAClD,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC;IAED,mCAAmC;IACnC,SAAS;QACP,yDAAyD;QACzD,+CAA+C;QAC/C,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;IAC7E,CAAC;IAED,UAAU;QACR,yDAAyD;QACzD,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;IAC9E,CAAC;IAED,cAAc;QACZ,uDAAuD;QACvD,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC3C,CAAC;IAED,WAAW;QACT,6CAA6C;QAC7C,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY;QACvB,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACpC,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;YACpC,OAAO;QACT,CAAC;QAED,gCAAgC;QAChC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;IAC1E,CAAC;IAED,SAAS,CAAC,MAAc;QACtB,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,IAAI,UAAU,GAAG,GAAG,EAAE,CAAC;YAC5D,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;YACtC,OAAO;QACT,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;IAC7E,CAAC;IAED,SAAS;QACP,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,IAAI;QACF,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;IACvE,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;IACzE,CAAC;IAED,OAAO;QACL,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,cAAc;QACZ,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe;QACnB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAC1C,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;YAC3B,OAAO,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC;QAC7C,CAAC;IACH,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,OAAwB;QACpC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC;QAE5C,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,YAAY,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;QAE9C,+BAA+B;QAC/B,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9B,IAAI,IAAI,CAAC,QAAQ;YAAE,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAC/C,IAAI,IAAI,CAAC,YAAY;YAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QACrE,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAEtE,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,oCAAoC,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;IAC5F,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,OAAwB;QACnC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC;QAE5C,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,6BAA6B;QAChD,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,YAAY,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;QAE9C,wBAAwB;QACxB,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9B,IAAI,IAAI,CAAC,YAAY;YAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QACrE,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAEtE,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,oCAAoC,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;IAC5F,CAAC;CACF"}
1
+ {"version":3,"file":"niconico.js","sourceRoot":"","sources":["../../iframe_api/niconico.ts"],"names":[],"mappings":";AAAA,0DAA0D;AAC1D,wCAAwC;AACxC,iHAAiH;;;;;;;AAkGjH;;GAEG;AACH,MAAM,YAAY;IAwBd;;;;;OAKG;IACH,YAAY,iBAAuC,EAAE,OAA6B,EAAE,yBAA+D;;QAC/I;;;;;WAKG;QACH,IAAI,OAAoB,CAAC;QACzB,IAAG,OAAO,iBAAiB,KAAK,QAAQ,EAAC,CAAC;YACtC,MAAM,aAAa,GAAG,QAAQ,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;YACjE,IAAI,CAAC,aAAa,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,oBAAoB,iBAAiB,aAAa,CAAC,CAAC;YACxE,CAAC;YACD,OAAO,GAAG,aAAa,CAAC;QAC5B,CAAC;aAAM,CAAC;YACJ,OAAO,GAAG,iBAAiB,CAAC;QAChC,CAAC;QACD,IAAI,CAAC,KAAK,GAAG;YACT,QAAQ,EAAE,KAAK;YACf,YAAY,EAAE,CAAC;SAClB,CAAC;QACF,uBAAA,IAAI,8DAAiB,MAArB,IAAI,CAAmB,CAAC;QACxB;;;WAGG;QACH,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,IAAG,OAAO,EAAE,UAAU,EAAE,YAAY,IAAE,SAAS,EAAC,CAAC;YAC7C,IAAI,CAAC,YAAY,GAAG,OAAO,EAAE,UAAU,EAAE,YAAY,CAAC;QAC1D,CAAC;QACD,IAAI,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACpD,YAAY,CAAC,GAAG,GAAG,mCAAmC,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,oBAAoB,GAAG,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC1K,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC9C,YAAY,CAAC,QAAQ,EAAE,CAAC;QACxB,YAAY,CAAC,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9C,YAAY,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QAChD,YAAY,CAAC,KAAK,GAAG,UAAU,CAAC,CAAA,gCAAgC;QAChE,YAAY,CAAC,eAAe,GAAG,IAAI,CAAC,CAAA,iDAAiD;QACrF,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAA,uCAAuC;QAC1E,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAClC;;;WAGG;QACH,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC;QAC3B,IAAG,OAAO,yBAAyB,KAAK,UAAU,EAAC,CAAC;YAChD,yBAAyB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3C,CAAC;QACD;;;WAGG;QACH,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAG,OAAO,EAAE,UAAU,EAAE,QAAQ,IAAE,CAAC,EAAC,CAAC,CAAA,SAAS;YAC1C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC9B,CAAC;QACD;;;WAGG;QACH,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QACrB,IAAG,OAAO,EAAE,UAAU,EAAE,UAAU,KAAG,SAAS,EAAC,CAAC;YAC5C,IAAI,CAAC,UAAU,GAAG,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC;QACtD,CAAC;QACD,IAAG,OAAO,EAAE,UAAU,EAAE,cAAc,KAAG,SAAS,EAAC,CAAC;YAChD,IAAG,OAAO,EAAE,UAAU,EAAE,cAAc,IAAE,CAAC,EAAC,CAAC;gBACvC,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;YACpC,CAAC;iBACI,IAAG,OAAO,EAAE,UAAU,EAAE,cAAc,IAAE,CAAC,EAAC,CAAC;gBAC5C,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;YACnC,CAAC;QACL,CAAC;IACL,CAAC;IACD;;;OAGG;IACH,YAAY,CAAC,OAAiC;QAC1C,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,IAAG,OAAO,CAAC,cAAc,CAAC,IAAE,SAAS,EAAC,CAAC;YACnC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;QAChD,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QACrB,IAAG,OAAO,CAAC,YAAY,CAAC,IAAE,SAAS,EAAC,CAAC;YACjC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,mCAAmC,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,oBAAoB,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACjK,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;IAC/B,CAAC;IACD;;;OAGG;IACH,aAAa,CAAC,OAAiC;QAC3C,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,IAAG,OAAO,CAAC,cAAc,CAAC,IAAE,SAAS,EAAC,CAAC;YACnC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;QAChD,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QACrB,IAAG,OAAO,CAAC,YAAY,CAAC,IAAE,SAAS,EAAC,CAAC;YACjC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,mCAAmC,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,oBAAoB,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACjK,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC9B,CAAC;IACD;;;OAGG;IACH,eAAe;QACX,IAAG,IAAI,CAAC,UAAU,IAAE,CAAC,CAAC,EAAC,CAAC;YACpB,OAAO,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;QAClD,CAAC;aACG,CAAC;YACD,OAAO,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC;QAC/C,CAAC;IACL,CAAC;IACD;;OAEG;IACH,SAAS;QACL,uBAAA,IAAI,0DAAa,MAAjB,IAAI,EAAc;YACd,SAAS,EAAE,MAAM;SACpB,CAAC,CAAA;IACN,CAAC;IACD;;OAEG;IACH,UAAU;QACN,uBAAA,IAAI,0DAAa,MAAjB,IAAI,EAAc;YACd,SAAS,EAAE,OAAO;SACrB,CAAC,CAAA;IACN,CAAC;IACD;;;OAGG;IACH,cAAc;QACV,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC,GAAC,IAAI,CAAC,CAAA,WAAW;IACzD,CAAC;IACD;;;OAGG;IACH,WAAW;QACP,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAC,IAAI,CAAC,CAAA,WAAW;IACtD,CAAC;IACD;;;OAGG;IACH,QAAQ;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE,CAAC;IAC7C,CAAC;IACD;;;OAGG;IACH,OAAO;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC;IACrC,CAAC;IACD;;;OAGG;IACH,SAAS;QACL,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAC,GAAG,CAAC;IACzC,CAAC;IACD;;;OAGG;IACH,MAAM,CAAC,OAAe;QAClB,uBAAA,IAAI,0DAAa,MAAjB,IAAI,EAAc;YACd,SAAS,EAAE,MAAM;YACjB,IAAI,EAAE;gBACJ,IAAI,EAAE,OAAO,GAAC,IAAI,CAAA,gBAAgB;aACnC;SACF,CAAC,CAAA;IACR,CAAC;IACD;;;OAGG;IACH,cAAc,CAAC,IAAa;QACxB,uBAAA,IAAI,0DAAa,MAAjB,IAAI,EAAc;YACd,SAAS,EAAE,yBAAyB;YACpC,IAAI,EAAC;gBACD,iBAAiB,EAAE,IAAI;aAC1B;SACJ,CAAC,CAAA;IACN,CAAC;IACD;;OAEG;IACH,IAAI;QACA,uBAAA,IAAI,0DAAa,MAAjB,IAAI,EAAc;YACd,SAAS,EAAE,MAAM;YACjB,IAAI,EAAC;gBACD,IAAI,EAAC,IAAI;aACZ;SACJ,CAAC,CAAA;IACN,CAAC;IACD;;OAEG;IACH,MAAM;QACF,uBAAA,IAAI,0DAAa,MAAjB,IAAI,EAAc;YACd,SAAS,EAAE,MAAM;YACjB,IAAI,EAAC;gBACD,IAAI,EAAC,KAAK;aACb;SACJ,CAAC,CAAA;IACN,CAAC;IACD;;;OAGG;IACH,SAAS,CAAC,MAAc;QACpB,uBAAA,IAAI,0DAAa,MAAjB,IAAI,EAAc;YACd,SAAS,EAAE,cAAc;YACzB,IAAI,EAAC;gBACD,MAAM,EAAE,MAAM,GAAC,GAAG;aACrB;SACJ,CAAC,CAAA;IACN,CAAC;IACD;;;OAGG;IACH,cAAc;QACV,IAAG,IAAI,CAAC,cAAc,EAAE,IAAE,IAAI,CAAC,WAAW,EAAE,GAAC,GAAG,IAAE,CAAC,IAAI,CAAC,UAAU,IAAE,CAAC,CAAC,IAAE,IAAI,CAAC,cAAc,EAAE,IAAE,CAAC,IAAI,CAAC,UAAU,GAAC,GAAG,CAAC,CAAC,EAAC,CAAC,CAAA,SAAS;YAC5H,OAAO,CAAC,CAAA;QACZ,CAAC;aACG,CAAC;YACD,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;QACnC,CAAC;IACL,CAAC;;wGAKY,OAA4B;IACrC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;QAC1B,mBAAmB,EAAE,CAAC;QACtB,QAAQ,EAAE,IAAI,CAAC,QAAQ;KAC1B,EAAE,OAAO,CAAC,CAAC;IACZ,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,OAAO,EAAG,MAAc,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACxF,CAAC;AACL,CAAC;IAKG,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;QACvC,IAAI,CAAC,CAAC,MAAM,KAAM,MAAc,CAAC,YAAY,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC1F,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC;YACxB,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACvB,KAAK,cAAc,CAAC,CAAC,CAAC;oBAClB,MAAM;gBACV,CAAC;gBACD,KAAK,OAAO,CAAC,CAAA,CAAC;oBACV,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,SAAS,EAAE,EAAC,MAAM,EAAC,EAAC,IAAI,EAAC,GAAG,EAAC,EAAC,CAAC,CAAC,CAAC;oBAC3E,MAAM;gBACV,CAAC;gBACD,KAAK,sBAAsB,CAAC,CAAA,CAAC;oBACzB,MAAM;gBACV,CAAC;gBACD,KAAK,cAAc,CAAC,CAAA,CAAC;oBACjB,IAAG,IAAI,CAAC,aAAa,EAAC,CAAC;wBACnB,IAAI,CAAC,SAAS,EAAE,CAAC;oBACrB,CAAC;oBACD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;oBAChD,MAAM;gBACV,CAAC;gBACD,KAAK,oBAAoB,CAAC,CAAA,CAAC;oBACvB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,eAAe,EAAE,EAAC,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,EAAC,CAAC,CAAC,CAAC;oBAC7F,IAAG,IAAI,CAAC,cAAc,EAAE,IAAE,IAAI,CAAC,WAAW,EAAE,GAAC,GAAG,IAAE,CAAC,IAAI,CAAC,UAAU,IAAE,CAAC,CAAC,IAAE,IAAI,CAAC,cAAc,EAAE,IAAE,CAAC,IAAI,CAAC,UAAU,GAAC,GAAG,CAAC,CAAC,EAAC,CAAC,CAAA,SAAS;wBAC5H,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;oBACvD,CAAC;oBACD,MAAM;gBACV,CAAC;gBACD;oBACI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;YAED,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACjD,IAAG,IAAI,CAAC,UAAU,IAAE,CAAC,CAAC,IAAE,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC,IAAE,IAAI,CAAC,UAAU,GAAC,IAAI,EAAC,CAAC,CAAA,aAAa;gBACtF,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AA1TH;;;GAGG;AACI,qBAAQ,GAAG,CAAC,AAAJ,CAAK;AACpB;;;GAGG;AACI,mBAAM,GAAG,4BAA4B,AAA/B,CAAgC;AAC7C;;;GAGG;AACI,8BAAiB,GAAmB,IAAI,AAAvB,CAAwB;AA8SnD,MAAc,CAAC,YAAY,GAAG,YAAY,CAAC"}