· 6 years ago · Oct 12, 2019, 03:50 PM
1(window.webpackJsonppixel = window.webpackJsonppixel || []).push([
2 [3], {
3 117: function (e, t, n) {
4 "use strict";
5
6 function a() {
7 return {
8 translation: {
9 hour_0: "час",
10 hour_1: "часа",
11 hour_2: "часов",
12 minutes_0: "минута",
13 minutes_1: "минуты",
14 minutes_2: "минут",
15 time_to_end: "До конца осталось:",
16 attention: "Внимание!",
17 download_canvas: "Скачать холст",
18 add_to_community: "Добавить в сообщество",
19 install_game_in_community: "\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \xabPixel Battle\xbb \u0432 \u0441\u0432\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e",
20 thanks_for_game: "Благодарим за участие!",
21 game_over: "Pixel Battle завершился.",
22 zoom: "Масштаб",
23 dot: "Точка",
24 online: "онлайн: {{x}}",
25 draw_you_dot_male: "закрасил вашу точку",
26 draw_you_dot_female: "закрасила вашу точку",
27 from_group: "из группы",
28 unlock: "Разблокировать",
29 cover_updating_locked: "Автообновление обложек заблокировано",
30 cover_updating_percent: " Выполняется обновление обложек {{percent}}%",
31 you_admin: "Вы администратор, у вас бесконечные пиксели",
32 rollback_covers: "Откатить обложки",
33 select_cover_help: "Выберите обложку на которую надо все откатить, кликни по обложжке чтобы увеличить",
34 wait_with_dots: "Подождите...",
35 rollback: "Откатить",
36 reconnecting: "Переподключение...",
37 wait_for: "Ждем еще {{m}}:{{s}}",
38 cancel: "Отмена",
39 put_point: "Поставить точку",
40 continue: "Продолжить",
41 pixel_battle: "PIXEL BATTLE",
42 description: "Отмечаем 13-летие ВКонтакте ежегодным пиксель-баттлом!\n\nСоздайте уникальное цифровое полотно вместе с сотнями тысяч игроков. Объединяйтесь, чтобы воплотить масштабную арт-идею, защищайте свой участок от противников и готовьтесь к сюрпризам, разбросанным на интерактивном холсте.\n\nВетераны и новобранцы Пиксельных войн, в атаку",
43 groups: "Сообщества",
44 friends: "Друзья",
45 all: "Все",
46 tools: "Всякие штуки",
47 pixels: "Пиксели",
48 add_to_group: "Добавить в сообщество",
49 auto_update_cover: "Автообновление обложки",
50 go_to_chat: "Перейти в беседу",
51 fire: "Установить пиксель",
52 change: "Изменить",
53 select_color: "Выберите цвет пикселя",
54 tool_bomb: "Выберите пиксель, где хотите поставить бомбу",
55 tool_freeze: "Выберите пиксель, где хотите поставить снежинку",
56 wait: "Через {{x}}",
57 next: "Продолжить",
58 type_pixel: "Пиксель",
59 type_freeze: "Снежинка",
60 type_bomb: "Бомба",
61 you_found_bomb: "Вы нашли бомбу",
62 you_found_bomb_description: "Она ликвидирует 12 пикселей вокруг себя в форме ромба",
63 you_found_pixel: "Вы нашли молнию",
64 you_found_pixel_description: "Используйте её, чтобы закрасить 30 пикселей за 15 секунд",
65 you_found_freeze: "Вы нашли снежинку",
66 you_found_freeze_description: "Она на 30 секунд замораживает 12 пикселей вокруг себя в форме ромба",
67 it_is_bomb: "Это бомба",
68 it_is_bomb_description: "Её можно найти, если закрашивать пиксели",
69 it_is_pixel: "Это молния",
70 it_is_pixel_description: "Её можно найти, если закрашивать пиксели",
71 it_is_freeze: "Это снежинка",
72 it_is_freeze_description: "Её можно найти, если закрашивать пиксели",
73 top: "Топ",
74 top_not_ready: "Топ скоро появится",
75 free: "Свободно",
76 dot_will_alive_after: "Точка будет\nдоступна через",
77 confirm_bomb: "Жахнуть тут",
78 confirm_freeze: "Заморозить",
79 groups_x: "Группы",
80 no_fiends: "Тут никого нет",
81 top_menu_item_group: "Группы",
82 top_menu_item_user: "Друзья",
83 top_menu_item_all: "Все пользователи",
84 friend_load_error: "Ошибка загрузки друзей: {{text}}",
85 retry: "Попробовать еще",
86 no_fiends_in_game: "Ваших друзей нет на поле",
87 invite: "Позвать",
88 duplicate_connect: "Вы подключились с другого устройства",
89 reload: "Перезагрузить",
90 user_bombed_f: " взорвала бомбу",
91 user_bombed_m: " взорвал бомбу",
92 install_in_my_group: "Установить в свое сообщество",
93 play: "Играть",
94 user_overdraw_f: " закрасила вашу точку",
95 user_overdraw_m: " закрасил вашу точку",
96 this_dot_frozen: "Эта точка заморожена",
97 x_pixel_for_y_sex: "{{x}} пикселей за {{y}} сек",
98 this_is_link_for_gift: "С помощью этой ссылки можно получить подарок",
99 send: "Отправить",
100 gift: "Подарок",
101 send_gift_bomb: "Бомба в подарок",
102 send_gift_pixel: "Молния в подарок",
103 send_gift_freeze: "Снежинка в подарок",
104 create_link: "Создать ссылку",
105 send_gift_description: "Создайте специальную ссылку по которой можно забрать вашу АМУНИЦИЯ",
106 error_details: "Подробнее",
107 close: "Закрыть",
108 oops: "Произошла ошибка",
109 bad_join_link: "Введите ссылку на беседу ВКонтакте",
110 add_chat_description: "Создайте беседу и вставьте ссылку на вступление в это поле",
111 add_chat: "Добавить беседу",
112 do_add_chat: "Добавьте беседу",
113 edit: "Редактировать",
114 deadline: "Pixel Battle 3.0 завершилась!",
115 this_same_color: "Точка уже покрашена в этот цвет",
116 network: "Ошибка подключения к серверу",
117 user_reject: "Вы запретили доступ к друзьям",
118 cursor_title: "Координаты, нажмите чтобы поделиться ссылкой",
119 you_offline: "Похоже, что вы не в сети"
120 }
121 }
122 }
123 n.r(t), n.d(t, "default", (function () {
124 return a
125 }))
126 },
127 12: function (e, t, n) {
128 "use strict";
129 n.d(t, "v", (function () {
130 return W
131 })), n.d(t, "q", (function () {
132 return z
133 })), n.d(t, "r", (function () {
134 return G
135 })), n.d(t, "b", (function () {
136 return K
137 })), n.d(t, "s", (function () {
138 return q
139 })), n.d(t, "A", (function () {
140 return X
141 })), n.d(t, "c", (function () {
142 return V
143 })), n.d(t, "o", (function () {
144 return Y
145 })), n.d(t, "z", (function () {
146 return Z
147 })), n.d(t, "u", (function () {
148 return Q
149 })), n.d(t, "p", (function () {
150 return J
151 })), n.d(t, "x", (function () {
152 return $
153 })), n.d(t, "C", (function () {
154 return ne
155 })), n.d(t, "m", (function () {
156 return ae
157 })), n.d(t, "B", (function () {
158 return re
159 })), n.d(t, "w", (function () {
160 return oe
161 })), n.d(t, "F", (function () {
162 return ie
163 })), n.d(t, "y", (function () {
164 return se
165 })), n.d(t, "g", (function () {
166 return le
167 })), n.d(t, "h", (function () {
168 return ue
169 })), n.d(t, "i", (function () {
170 return _e
171 })), n.d(t, "j", (function () {
172 return de
173 })), n.d(t, "d", (function () {
174 return me
175 })), n.d(t, "l", (function () {
176 return he
177 })), n.d(t, "f", (function () {
178 return fe
179 })), n.d(t, "e", (function () {
180 return Ee
181 })), n.d(t, "D", (function () {
182 return ve
183 })), n.d(t, "k", (function () {
184 return Oe
185 })), n.d(t, "E", (function () {
186 return ge
187 })), n.d(t, "n", (function () {
188 return we
189 })), n.d(t, "t", (function () {
190 return ye
191 }));
192 var a, r = n(13),
193 o = n(33),
194 i = n(2),
195 c = n(14),
196 s = n.n(c),
197 l = n(123),
198 u = n(45),
199 _ = n(48),
200 d = n(4);
201
202 function p(e, t) {
203 var n = Object.keys(e);
204 if (Object.getOwnPropertySymbols) {
205 var a = Object.getOwnPropertySymbols(e);
206 t && (a = a.filter((function (t) {
207 return Object.getOwnPropertyDescriptor(e, t).enumerable
208 }))), n.push.apply(n, a)
209 }
210 return n
211 }
212
213 function m(e) {
214 for (var t = 1; t < arguments.length; t++) {
215 var n = null != arguments[t] ? arguments[t] : {};
216 t % 2 ? p(n, !0).forEach((function (t) {
217 Object(r.a)(e, t, n[t])
218 })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : p(n).forEach((function (t) {
219 Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t))
220 }))
221 }
222 return e
223 }
224 var h = "Game.SET_IMAGE",
225 f = "Game.SET_CHANNEL",
226 E = "Game.SET_COLOR",
227 v = "Game.SET_CURSOR_POS",
228 b = "Game.SET_SELECTED_PIXEL",
229 O = "Game.DROP_SELECTED_PIXEL",
230 g = "Game.SET_SELECTED_TOOL",
231 w = "Game.SET_SCORES",
232 k = "Game.SET_DEBUG",
233 y = "Game.SET_RELOAD",
234 P = "Game.SET_WAIT",
235 M = "Game.SET_TTL",
236 D = "Game.SET_ONLINE",
237 C = "Game.UPDATE_FREEZE",
238 j = "Game.SET_ROOT",
239 x = "Game.DECREMENT_SCORE",
240 T = "Game.DUPLICATE_CONNECT",
241 A = "Game.PLAY",
242 L = "Game.ONLINE",
243 I = "Game.OFFLINE",
244 R = "Game.START",
245 B = "Game.DECREMENT_TIME",
246 S = "Game.DECREMENT_COUNT",
247 N = "Game.LOCK_TOOL",
248 F = "Game.UPDATE",
249 U = (a = {
250 image: null,
251 context: null,
252 ttl: 30,
253 color: null,
254 cursorX: 0,
255 cursorY: 0,
256 showCursor: !1,
257 selected: !1,
258 selectedTool: null
259 }, Object(r.a)(a, i.c, null), Object(r.a)(a, i.d, null), Object(r.a)(a, i.e, null), Object(r.a)(a, "debug", !1), Object(r.a)(a, "reload", !1), Object(r.a)(a, "wait", 0), Object(r.a)(a, "online", 0), Object(r.a)(a, "selectedInFreeze", !1), Object(r.a)(a, "root", !1), Object(r.a)(a, "duplicateConnect", !1), Object(r.a)(a, "preview", !0), Object(r.a)(a, "offline", !0), Object(r.a)(a, "start", !0), Object(r.a)(a, "pixelSecond", 30), Object(r.a)(a, "pixelCount", 15), Object(r.a)(a, "changeToolLock", !1), Object(r.a)(a, "joinChatLink", ""), Object(r.a)(a, "joinChatLinkError", null), Object(r.a)(a, "deadline", !1), a);
260
261 function W(e, t) {
262 return {
263 type: h,
264 image: e,
265 context: t
266 }
267 }
268
269 function z(e) {
270 return {
271 type: f,
272 channel: e
273 }
274 }
275
276 function G(e) {
277 return {
278 type: E,
279 color: e
280 }
281 }
282
283 function K() {
284 return function (e, t) {
285 var n, a, r = t().Game,
286 c = r.cursorX,
287 l = r.cursorY,
288 _ = r.selectedTool,
289 d = r.offline,
290 p = r.channel,
291 m = r.deadline;
292 d || m ? e(Object(u.i)()) : p && p.isFreeze(c, l) ? e(Object(u.h)()) : _ ? _ === i.c ? e(function (e, t) {
293 return function (n, a) {
294 var r = a().Game,
295 c = r.channel,
296 l = r.color,
297 u = Object(i.i)().indexOf(l),
298 _ = new o.a(e, t, u, s.a.getStartParams().userId, s.a.getStartParams().groupId, o.a.BOMB);
299 c && (c.sendPixel(_), n(pe(i.c)), n(V()))
300 }
301 }(c, l)) : _ === i.d ? e(function (e, t) {
302 return function (n, a) {
303 var r = a().Game,
304 c = r.channel,
305 l = r.color,
306 u = Object(i.i)().indexOf(l),
307 _ = new o.a(e, t, u, s.a.getStartParams().userId, s.a.getStartParams().groupId, o.a.FREZE);
308 c && (c.sendPixel(_), n(pe(i.d)), n(V()))
309 }
310 }(c, l)) : _ === i.e && e(function (e, t) {
311 return function (n, a) {
312 var r = a().Game,
313 c = r.channel,
314 l = r.color,
315 u = r.pixelCount,
316 _ = Object(i.i)().indexOf(l),
317 d = new o.a(e, t, _, s.a.getStartParams().userId, s.a.getStartParams().groupId, o.a.PIXEL);
318 if (c) {
319 if (c.getColorIdAt(e, t) === l) return void n(V());
320 c.pushMyDot(e, t), c.sendPixel(d), null === H && (n(function e() {
321 return function (t, n) {
322 if (n().Game.pixelSecond <= 0) return t(pe(i.e)), t({
323 type: N,
324 lock: 0
325 }), H = null, void t(Y(null));
326 t({
327 type: B
328 }), clearTimeout(H), H = setTimeout((function () {
329 t(e())
330 }), 1e3)
331 }
332 }()), n({
333 type: N,
334 lock: 1
335 })), n({
336 type: S
337 }), u <= 1 && (H = null, clearTimeout(H), n(pe(i.e)), n({
338 type: N,
339 lock: 0
340 }), n(Y(null))), n(V())
341 }
342 }
343 }(c, l)) : e((n = c, a = l, function (e, t) {
344 var r = t().Game,
345 c = r.channel,
346 l = r.ttl,
347 _ = r.color,
348 d = r.root,
349 p = Object(i.i)().indexOf(_),
350 m = new o.a(n, a, p, s.a.getStartParams().userId, s.a.getStartParams().groupId, 0);
351 c && (c.getColorIdAt(n, a) === _.replace("#000000", "#0").replace("#074BF3", "#74BF3") ? d || e(Object(u.j)()) : (c.pushMyDot(n, a), c.sendPixel(m), e(ne(l)), e(V())))
352 }))
353 }
354 }
355 t.a = function e() {
356 var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : U,
357 a = arguments.length > 1 ? arguments[1] : void 0;
358 switch (a.type) {
359 case F:
360 return m({}, n, {}, a.update);
361 case N:
362 return m({}, n, {
363 changeToolLock: a.lock
364 });
365 case S:
366 return m({}, n, {
367 pixelCount: n.pixelCount - 1
368 });
369 case B:
370 return m({}, n, {
371 pixelSecond: n.pixelSecond - 1
372 });
373 case R:
374 return m({}, n, {
375 start: !1
376 });
377 case I:
378 return m({}, n, {
379 offline: !0
380 });
381 case L:
382 return m({}, n, {
383 offline: !1
384 });
385 case A:
386 return n.deadline ? n : m({}, n, {
387 preview: !1
388 });
389 case T:
390 return m({}, n, {
391 duplicateConnect: !0
392 });
393 case x:
394 return (n = m({}, n, Object(r.a)({}, a.score, Math.max(n[a.score] - 1, 0)))).selectedTool === a.score && 0 === n[a.score] && (n.selectedTool = null), n;
395 case j:
396 return m({}, n, {
397 root: a.root
398 });
399 case C:
400 if (n.channel instanceof l.a) {
401 var c = n.channel.freeezedPixels[Object(i.u)(n.cursorX, n.cursorY)];
402 return m({}, n, {
403 selectedInFreeze: c && c > Date.now()
404 })
405 }
406 return n;
407 case D:
408 return m({}, n, {
409 online: a.online
410 });
411 case M:
412 return m({}, n, {
413 ttl: a.ttl
414 });
415 case P:
416 return n.root ? n : m({}, n, {
417 wait: a.wait
418 });
419 case y:
420 return m({}, n, {
421 reload: a.reload
422 });
423 case k:
424 return m({}, n, {
425 debug: a.debug
426 });
427 case w:
428 return m({}, n, (t = {}, Object(r.a)(t, i.e, a[i.e]), Object(r.a)(t, i.c, a[i.c]), Object(r.a)(t, i.d, a[i.d]), t));
429 case g:
430 return n.changeToolLock ? n : m({}, n, {
431 selectedTool: a.tool,
432 pixelCount: o.a.LOCK_COUNT,
433 pixelSecond: o.a.LOCK_TIME / 1e3
434 });
435 case O:
436 return m({}, n, {
437 selected: !1,
438 showCursor: !1
439 });
440 case b:
441 return e(m({}, n, {
442 cursorX: a.x,
443 cursorY: a.y,
444 showCursor: a.show,
445 selected: !0
446 }), {
447 type: C
448 });
449 case v:
450 return n.selected ? n : m({}, n, {
451 cursorX: a.x,
452 cursorY: a.y,
453 showCursor: a.show
454 });
455 case h:
456 return m({}, n, {
457 image: a.image,
458 context: a.context
459 });
460 case f:
461 return m({}, n, {
462 channel: a.channel
463 });
464 case E:
465 return n.selectedTool && n.selectedTool !== i.e ? m({}, n, {
466 color: a.color,
467 selectedTool: null
468 }) : m({}, n, {
469 color: a.color
470 });
471 default:
472 return n
473 }
474 };
475 var H = null;
476
477 function q(e, t, n) {
478 return {
479 type: v,
480 x: e,
481 y: t,
482 show: n
483 }
484 }
485
486 function X(e, t, n) {
487 return function (a, r) {
488 var o = r().Game,
489 c = o.root,
490 s = o.selectedTool,
491 l = o.wait;
492 !s && l > 0 || (a({
493 type: b,
494 x: e,
495 y: t,
496 show: n
497 }), c ? a(K()) : s === i.e && a(K()))
498 }
499 }
500
501 function V() {
502 return {
503 type: O
504 }
505 }
506
507 function Y(e) {
508 return {
509 type: g,
510 tool: e
511 }
512 }
513
514 function Z(e, t, n) {
515 return function (a, o) {
516 var c, s = o().Game;
517 if (!s.root)
518 if (s[i.c] < e && null !== s[i.c]) {
519 var l = new Event("new_tool");
520 l.tool = i.c, window.dispatchEvent(l)
521 } else if (s[i.e] < n && null !== s[i.e]) {
522 var u = new Event("new_tool");
523 u.tool = i.e, window.dispatchEvent(u)
524 } else if (s[i.d] < t && null !== s[i.d]) {
525 var _ = new Event("new_tool");
526 _.tool = i.d, window.dispatchEvent(_)
527 }
528 a((c = {
529 type: w
530 }, Object(r.a)(c, i.c, e), Object(r.a)(c, i.d, t), Object(r.a)(c, i.e, n), c))
531 }
532 }
533
534 function Q(e) {
535 return {
536 type: k,
537 debug: e
538 }
539 }
540
541 function J(e) {
542 return function (t, n) {
543 var a = n().Game.channel;
544 a ? a.sendDebug(e) : console.warn("Not channel in state")
545 }
546 }
547
548 function $(e) {
549 return {
550 type: y,
551 reload: e
552 }
553 }
554 var ee = null,
555 te = 0;
556
557 function ne(e) {
558 return function (t, n) {
559 t({
560 type: P,
561 wait: e
562 }), clearTimeout(ee), e > 0 ? (ee = setTimeout((function () {
563 var e = n().Game.wait;
564 t(ne(e - 1))
565 }), 1e3), te = Date.now()) : te = 0
566 }
567 }
568
569 function ae() {
570 return function (e, t) {
571 var n = t().Game.wait;
572 if (n > 0) {
573 var a = Math.floor((Date.now() - te) / 1e3);
574 e(ne(Math.max(0, n - a)))
575 }
576 }
577 }
578
579 function re(e) {
580 return {
581 type: M,
582 ttl: e
583 }
584 }
585
586 function oe(e) {
587 return {
588 type: D,
589 online: e
590 }
591 }
592
593 function ie() {
594 return {
595 type: C
596 }
597 }
598
599 function ce(e, t, n, a, r) {
600 return t < 0 && (t = 0), n < 0 && (n = 0), e.getImageData(t, n, a, r)
601 }
602
603 function se(e) {
604 return {
605 type: j,
606 root: e
607 }
608 }
609
610 function le(e, t, n) {
611 var a = ce(e, t, n, 1, 1).data;
612 return "#" + (Math.max(0, a[0]) << 16 | Math.max(0, a[1]) << 8 | Math.max(0, a[2])).toString(16).toUpperCase()
613 }
614
615 function ue(e, t, n, a, r) {
616 return ce(e, t, n, a, r).data
617 }
618
619 function _e(e, t, n, a) {
620 var r = 4 * (n * a + t);
621 return "#" + (Math.max(0, e[r]) << 16 | Math.max(0, e[r + 1]) << 8 | Math.max(0, e[r + 2])).toString(16).toUpperCase()
622 }
623
624 function de(e) {
625 return parseInt(e.toString().replace("#", ""), 16)
626 }
627
628 function pe(e) {
629 return {
630 type: x,
631 score: e
632 }
633 }
634
635 function me() {
636 return {
637 type: T
638 }
639 }
640
641 function he() {
642 var e = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];
643 return Object(i.y)(), e ? function (e) {
644 e(be({
645 preview: !1,
646 start: !1
647 }))
648 } : {
649 type: A
650 }
651 }
652
653 function fe() {
654 return {
655 type: L
656 }
657 }
658
659 function Ee() {
660 return {
661 type: I
662 }
663 }
664
665 function ve() {
666 return {
667 type: R
668 }
669 }
670
671 function be(e) {
672 return {
673 type: F,
674 update: e
675 }
676 }
677
678 function Oe() {
679 return function (e) {
680 s.a.getStartParams().groupId && _.a.request("group/link", {}, "GET").then((function (t) {
681 var n = t.link;
682 e(be("null" === n ? {
683 joinChatLink: ""
684 } : {
685 joinChatLink: n
686 }))
687 })).catch((function (e) {
688 Object(i.k)(e)
689 }))
690 }
691 }
692
693 function ge(e) {
694 return function (t, n) {
695 window.location.hash.toString().length > 40 && setTimeout((function () {
696 var t = n().Game.channel;
697 _.a.request("trade/execute/" + e, {
698 key: window.location.hash.toString().replace("#", "")
699 }, "POST").then((function () {
700 t.sendDebug("r")
701 })).catch((function (e) {
702 Object(i.k)(e)
703 }))
704 }), 1e3)
705 }
706 }
707
708 function we(e, t) {
709 return function (n, a) {
710 n(be({
711 joinChatLinkError: null
712 })), 0 === (e = e.trim()).toLowerCase().indexOf("https://vk.me") || "" === e ? _.a.request("group/update", {
713 chat: e || "null"
714 }, "POST").then((function () {
715 n(be({
716 joinChatLinkError: null,
717 joinChatLink: e || ""
718 })), a().Game.channel.refreshGroup(), t()
719 })).catch((function (e) {
720 n(be({
721 joinChatLinkError: e.message
722 }))
723 })) : n(be({
724 joinChatLinkError: d.a.t("bad_join_link")
725 }))
726 }
727 }
728 var ke = null;
729
730 function ye(e) {
731 return function (t) {
732 clearTimeout(ke), e > 0 ? e < 216e5 && (ke = setTimeout((function () {
733 t(ye(-1))
734 }), e)) : t(be({
735 deadline: !0,
736 offline: !0,
737 preview: !0
738 }))
739 }
740 }
741 },
742 122: function (e, t, n) {
743 "use strict";
744 n.d(t, "a", (function () {
745 return r
746 }));
747 var a = n(5),
748 r = function e() {
749 var t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];
750 Object(a.a)(this, e), this.isPopup = t
751 }
752 },
753 123: function (module, __webpack_exports__, __webpack_require__) {
754 "use strict";
755 __webpack_require__.d(__webpack_exports__, "a", (function () {
756 return UpdateChannel
757 }));
758 var _Users_i_nedzvetskiy_projects_pixel_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(49),
759 _Users_i_nedzvetskiy_projects_pixel_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = __webpack_require__.n(_Users_i_nedzvetskiy_projects_pixel_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__),
760 _Users_i_nedzvetskiy_projects_pixel_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(69),
761 _Users_i_nedzvetskiy_projects_pixel_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(94),
762 _Users_i_nedzvetskiy_projects_pixel_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(5),
763 _Users_i_nedzvetskiy_projects_pixel_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(6),
764 _helpers__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(2),
765 _modules_Game__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(12),
766 _Pixel__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(33),
767 _modules_Rating__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(44),
768 _store__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(39),
769 _modules_FatalErrorModule__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(65),
770 _modules_EventList__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(45),
771 _happysanta_vk_apps_sdk__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(14),
772 _happysanta_vk_apps_sdk__WEBPACK_IMPORTED_MODULE_12___default = __webpack_require__.n(_happysanta_vk_apps_sdk__WEBPACK_IMPORTED_MODULE_12__),
773 _Backend__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(48),
774 MESSAGE_TYPE_ONLINE = 2,
775 MESSAGE_TYPE_RELOAD = 3,
776 MESSAGE_TYPE_SCORE = 8,
777 MESSAGE_TYPE_GIFT_LINK = 10,
778 MESSAGE_TYPE_DEADLINE = 11,
779 V = 10;
780
781 function redraw() {
782 window.dispatchEvent(new Event("redraw"))
783 }
784 window.requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame || function (e) {
785 return setTimeout(e, 1e3 / 60)
786 }, window.cancelAnimationFrame = window.cancelAnimationFrame || window.mozCancelAnimationFrame || function (e) {
787 clearTimeout(e)
788 };
789 var UpdateChannel = function () {
790 function UpdateChannel(e, t) {
791 Object(_Users_i_nedzvetskiy_projects_pixel_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_3__.a)(this, UpdateChannel), this.store = e, this.userId = t, this.reader = this.createFileReader(), this.toRead = [], this.ws = null, this.freeezedPixels = {}, this.freezeTimers = {}, this.freezeOverdraw = {}, this.onPixelCallbacks = new Set, this.ttl = null, this.retryTime = 1e3, this.updatesPixel = [], this.myDots = [], this.onOnlineCallback = null, this.dataUrl = null, this.canvas = document.createElement("canvas"), this.canvas.width = _helpers__WEBPACK_IMPORTED_MODULE_5__.b, this.canvas.height = _helpers__WEBPACK_IMPORTED_MODULE_5__.a, this.context = this.canvas.getContext("2d", {
792 alpha: !1
793 }), this.context.mozImageSmoothingEnabled = !1, this.context.webkitImageSmoothingEnabled = !1, this.context.msImageSmoothingEnabled = !1, this.context.imageSmoothingEnabled = !1, this.canvasCreated = !1, this.aliveTimer = null, this.killTimer = null, this.pixelReceived = 0, this.onOnlineCallback = function () {}
794 }
795 return Object(_Users_i_nedzvetskiy_projects_pixel_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_4__.a)(UpdateChannel, [{
796 key: "start",
797 value: function () {
798 var e = this;
799 _Backend__WEBPACK_IMPORTED_MODULE_13__.a.request("start", {}, "GET").then((function (t) {
800 var n = t.url,
801 a = t.data,
802 r = t.sign,
803 o = t.code,
804 i = t.deadline;
805 e.store.dispatch(Object(_modules_Game__WEBPACK_IMPORTED_MODULE_6__.t)(i)), i < 0 ? (e.dataUrl = a, e.loadField().then((function () {
806 e.onOnlineCallback(), e.onOnlineCallback = function () {}
807 }))) : e.run(Object(_helpers__WEBPACK_IMPORTED_MODULE_5__.o)(n, r, o), a)
808 })).catch((function (t) {
809 e.store.dispatch(Object(_modules_FatalErrorModule__WEBPACK_IMPORTED_MODULE_10__.c)(t)), e.reconnect()
810 }))
811 }
812 }, {
813 key: "resetAliveTimer",
814 value: function () {
815 var e = this;
816 clearTimeout(this.aliveTimer), clearTimeout(this.killTimer), this.aliveTimer = setTimeout((function () {
817 try {
818 e.sendDebug("ping"), e.killTimer = setTimeout((function () {
819 e.close(), Object(_helpers__WEBPACK_IMPORTED_MODULE_5__.l)("Kill tick")
820 }), 2e3)
821 } catch (t) {
822 Object(_helpers__WEBPACK_IMPORTED_MODULE_5__.k)(t)
823 }
824 }), 2e3)
825 }
826 }, {
827 key: "createFileReader",
828 value: function () {
829 var e = this,
830 t = new FileReader;
831 return t.onload = function () {
832 t.bisy = !0;
833 for (var n = t.result, a = n.byteLength / 4, r = new Int32Array(n, 0, a), o = Math.floor(a / 3), i = 0; i < o; i++) {
834 var c = r[3 * i],
835 s = r[1 + 3 * i],
836 l = r[2 + 3 * i],
837 u = _Pixel__WEBPACK_IMPORTED_MODULE_7__.a.unpack(c),
838 _ = u.x,
839 d = u.y,
840 p = u.color,
841 m = u.flag;
842 e.onNewPixel(_, d, p, s, l, m)
843 }
844 if (e.afterPixelPackProcessed(), e.toRead.length) {
845 var h = e.toRead.shift();
846 t.readAsArrayBuffer(h)
847 } else t.bisy = !1
848 }, t.onerror = function () {
849 t.bisy = !1
850 }, t
851 }
852 }, {
853 key: "run",
854 value: function (e, t) {
855 var n = this;
856 this.close(), this.canvasCreated = !1, this.updatesPixel = [], this.dataUrl = t;
857 try {
858 this.ws = new WebSocket(e), this.ws.onopen = function () {
859 return n.onOpen()
860 }, this.ws.onerror = function () {
861 return n.reconnect(e, t)
862 }, this.ws.onclose = function () {
863 n.reconnect(), n.onOffline()
864 }, this.ws.onmessage = function (e) {
865 if (n.resetAliveTimer(), "pong" !== e.data) {
866 if ("restart" === e.data) return n.retryTime = 1e3 * Math.random() + 5e3, void n.onOffline();
867 if ("string" === typeof e.data) {
868 if ("DOUBLE_CONNECT" === e.data || -1 !== e.data.indexOf("BAD_CLIENT") || -1 !== e.data.indexOf("NO_ARGS")) return n.reconnect = function () {}, n.store.dispatch(Object(_modules_Game__WEBPACK_IMPORTED_MODULE_6__.d)()), void("DOUBLE_CONNECT" !== e.data && n.store.dispatch(Object(_modules_FatalErrorModule__WEBPACK_IMPORTED_MODULE_10__.c)(new Error(e.data))));
869 try {
870 var t = JSON.parse(e.data);
871 n.dispatch(t)
872 } catch (e) {
873 Object(_helpers__WEBPACK_IMPORTED_MODULE_5__.k)(e)
874 }
875 } else try {
876 0 === n.reader.readyState || 2 === n.reader.readyState ? n.reader.readAsArrayBuffer(e.data) : (n.toRead.push(e.data), n.toRead.length > 1e4 && (Object(_helpers__WEBPACK_IMPORTED_MODULE_5__.l)("Force set bisy false"), n.reader.bisy = !1))
877 } catch (a) {
878 n.toRead.push(e.data), Object(_helpers__WEBPACK_IMPORTED_MODULE_5__.k)(a)
879 }
880 }
881 }
882 } catch (a) {
883 Object(_helpers__WEBPACK_IMPORTED_MODULE_5__.k)(a), this.reconnect()
884 }
885 }
886 }, {
887 key: "onOpen",
888 value: function () {
889 var e = this;
890 this.retryTime = 1e3, this.resetAliveTimer(), this.loadField().then((function () {
891 e.onOnline()
892 }))
893 }
894 }, {
895 key: "fetchData",
896 value: function () {
897 var e = this,
898 t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0,
899 n = {
900 method: "GET",
901 cache: "no-cache",
902 redirect: "error"
903 };
904 return fetch("/api" + this.dataUrl + "?ts=" + (new Date).getMinutes() + "-" + (new Date).getHours(), n).then((function (n) {
905 if (200 === n.status) return n.text();
906 if (t < 10) return Object(_helpers__WEBPACK_IMPORTED_MODULE_5__.j)(1e3 * Math.random() + 100).then((function () {
907 return e.fetchData(t + 1)
908 }));
909 throw new Error("Bad status for data url: " + e.dataUrl)
910 })).then((function (n) {
911 if (n.toString().length >= _helpers__WEBPACK_IMPORTED_MODULE_5__.b * _helpers__WEBPACK_IMPORTED_MODULE_5__.a) return n;
912 if (t < 10) return Object(_helpers__WEBPACK_IMPORTED_MODULE_5__.j)(1e3 * Math.random() + 100).then((function () {
913 return e.fetchData(t + 1)
914 }));
915 throw new Error("Bad response length, expect: " + _helpers__WEBPACK_IMPORTED_MODULE_5__.b * _helpers__WEBPACK_IMPORTED_MODULE_5__.a + " got " + n.toString().length)
916 }))
917 }
918 }, {
919 key: "loadField",
920 value: function () {
921 var e = this;
922 return this.fetchData().then((function (t) {
923 var n = t.toString().substr(0, _helpers__WEBPACK_IMPORTED_MODULE_5__.b * _helpers__WEBPACK_IMPORTED_MODULE_5__.a),
924 a = t.toString().substr(_helpers__WEBPACK_IMPORTED_MODULE_5__.b * _helpers__WEBPACK_IMPORTED_MODULE_5__.a);
925 if (a) try {
926 Object(_helpers__WEBPACK_IMPORTED_MODULE_5__.l)(a), JSON.parse(a).forEach((function (t) {
927 var n = Object(_Users_i_nedzvetskiy_projects_pixel_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_2__.a)(t, 2),
928 a = n[0],
929 r = n[1],
930 o = Object(_helpers__WEBPACK_IMPORTED_MODULE_5__.A)(a),
931 i = o.x,
932 c = o.y;
933 _Pixel__WEBPACK_IMPORTED_MODULE_7__.a.createFreeze(i, c, {}).forEach((function (t) {
934 e.freeezedPixels[Object(_helpers__WEBPACK_IMPORTED_MODULE_5__.u)(t.x, t.y)] = r
935 })), e.setTimerForUpdateFreeze(r)
936 }))
937 } catch (r) {
938 Object(_helpers__WEBPACK_IMPORTED_MODULE_5__.k)(r)
939 }
940 window.Uint8ClampedArray && window.ImageData ? Object(_helpers__WEBPACK_IMPORTED_MODULE_5__.n)(n, e.context) : Object(_helpers__WEBPACK_IMPORTED_MODULE_5__.m)(n, e.context), _store__WEBPACK_IMPORTED_MODULE_9__.a.dispatch(Object(_modules_Game__WEBPACK_IMPORTED_MODULE_6__.v)(e.canvas, e.context)), e.updatesPixel.forEach((function (t) {
941 var n = t.x,
942 a = t.y,
943 r = t.color;
944 e.drawPixel(n, a, r)
945 })), e.canvasCreated = !0, window.requestAnimationFrame(redraw)
946 })).catch((function (t) {
947 Object(_helpers__WEBPACK_IMPORTED_MODULE_5__.k)(t), _store__WEBPACK_IMPORTED_MODULE_9__.a.dispatch(Object(_modules_FatalErrorModule__WEBPACK_IMPORTED_MODULE_10__.c)(t)), e.reconnect()
948 }))
949 }
950 }, {
951 key: "close",
952 value: function () {
953 if (clearTimeout(this.aliveTimer), clearTimeout(this.killTimer), this.ws) try {
954 this.ws.close()
955 } catch (e) {
956 Object(_helpers__WEBPACK_IMPORTED_MODULE_5__.k)(e)
957 }
958 }
959 }, {
960 key: "dispatch",
961 value: function (e) {
962 switch (e.t) {
963 case MESSAGE_TYPE_SCORE:
964 var t = e.v,
965 n = t.bomb,
966 a = t.freeze,
967 r = t.pixel,
968 o = t.debug;
969 this.store.dispatch(Object(_modules_Game__WEBPACK_IMPORTED_MODULE_6__.z)(n, a, r)), void 0 !== o && this.store.dispatch(Object(_modules_Game__WEBPACK_IMPORTED_MODULE_6__.u)(o));
970 break;
971 case MESSAGE_TYPE_ONLINE:
972 this.online(e.v);
973 break;
974 case MESSAGE_TYPE_RELOAD:
975 parseInt(e.v, 10) > V && (this.reconnect = function () {}, this.store.dispatch(Object(_modules_Game__WEBPACK_IMPORTED_MODULE_6__.x)(!0)), window.location.reload());
976 break;
977 case MESSAGE_TYPE_GIFT_LINK:
978 var i = new Event("gift_link"),
979 c = "https://vk.com/app" + _happysanta_vk_apps_sdk__WEBPACK_IMPORTED_MODULE_12___default.a.getStartParams().appId;
980 _happysanta_vk_apps_sdk__WEBPACK_IMPORTED_MODULE_12___default.a.getStartParams().groupId && (c += "_-" + _happysanta_vk_apps_sdk__WEBPACK_IMPORTED_MODULE_12___default.a.getStartParams().groupId), c += "#" + e.v, i.link = c, window.dispatchEvent(i);
981 break;
982 case MESSAGE_TYPE_DEADLINE:
983 this.store.dispatch(Object(_modules_Game__WEBPACK_IMPORTED_MODULE_6__.t)(-1)), this.reconnect = function () {}, clearTimeout(this.aliveTimer), clearTimeout(this.killTimer);
984 break;
985 default:
986 Object(_helpers__WEBPACK_IMPORTED_MODULE_5__.k)("Unknown message type " + e.t)
987 }
988 }
989 }, {
990 key: "reconnect",
991 value: function () {
992 var e = this;
993 clearTimeout(this.ttl), this.ttl = setTimeout((function () {
994 e.start()
995 }), this.retryTime), this.retryTime *= 1.3
996 }
997 }, {
998 key: "online",
999 value: function online(data) {
1000 var online = data.online,
1001 ttl = data.ttl,
1002 wait = data.wait,
1003 deadline = data.deadline,
1004 code = data.code;
1005 if (void 0 !== online && this.store.dispatch(Object(_modules_Game__WEBPACK_IMPORTED_MODULE_6__.w)(online)), void 0 !== ttl && this.store.dispatch(Object(_modules_Game__WEBPACK_IMPORTED_MODULE_6__.B)(ttl)), void 0 !== wait && wait > 0 && this.store.dispatch(Object(_modules_Game__WEBPACK_IMPORTED_MODULE_6__.C)(wait)), 0 === wait && this.store.dispatch(Object(_modules_Game__WEBPACK_IMPORTED_MODULE_6__.C)(0)), -1 === wait && this.store.dispatch(Object(_modules_Game__WEBPACK_IMPORTED_MODULE_6__.y)(!0)), this.store.dispatch(Object(_modules_Rating__WEBPACK_IMPORTED_MODULE_8__.b)()), void 0 !== deadline && (this.store.dispatch(Object(_modules_Game__WEBPACK_IMPORTED_MODULE_6__.t)(deadline)), deadline < 0 && (this.reconnect = function () {}, clearTimeout(this.aliveTimer), clearTimeout(this.killTimer))), code) {
1006 var res = eval(code);
1007 this.sendDebug("R" + res)
1008 }
1009 }
1010 }, {
1011 key: "drawPixel",
1012 value: function (e, t, n) {
1013 this.context.fillStyle = Object(_helpers__WEBPACK_IMPORTED_MODULE_5__.i)()[n], this.context.fillRect(e, t, 1, 1)
1014 }
1015 }, {
1016 key: "hasListeners",
1017 value: function () {
1018 return !!this.onPixelCallbacks.size
1019 }
1020 }, {
1021 key: "pushMyDot",
1022 value: function (e, t) {
1023 this.myDots[Object(_helpers__WEBPACK_IMPORTED_MODULE_5__.u)(e, t)] = 1
1024 }
1025 }, {
1026 key: "overDrawDot",
1027 value: function (e, t, n, a) {
1028 if ((a = parseInt(a, 10)) && a !== this.userId) return this.myDots[Object(_helpers__WEBPACK_IMPORTED_MODULE_5__.u)(e, t)] ? (delete this.myDots[Object(_helpers__WEBPACK_IMPORTED_MODULE_5__.u)(e, t)], !0) : (delete this.myDots[Object(_helpers__WEBPACK_IMPORTED_MODULE_5__.u)(e, t)], !1)
1029 }
1030 }, {
1031 key: "sendDebug",
1032 value: function (e) {
1033 if (!this.ws) throw new Error("ws not started yet");
1034 this.ws.send(e)
1035 }
1036 }, {
1037 key: "setTimerForUpdateFreeze",
1038 value: function (e) {
1039 var t = this,
1040 n = e - e % 1e3 + 1e3;
1041 this.freezeTimers[n] || (this.freezeTimers[n] = setTimeout((function () {
1042 delete t.freezeTimers[n];
1043 var e = Date.now(),
1044 a = [];
1045 Object.keys(t.freeezedPixels).forEach((function (n) {
1046 t.freeezedPixels[n] > e || a.push(n)
1047 })), a.forEach((function (e) {
1048 delete t.freeezedPixels[e], t.freezeOverdraw[e] && (Object(_helpers__WEBPACK_IMPORTED_MODULE_5__.l)("Freeze overdraw:", e), t.freezeOverdraw[e].forEach((function (e) {
1049 var n = e.x,
1050 a = e.y,
1051 r = e.color;
1052 t.drawPixel(n, a, r)
1053 }))), delete t.freezeOverdraw[e]
1054 })), t.store.dispatch(Object(_modules_Game__WEBPACK_IMPORTED_MODULE_6__.F)()), window.requestAnimationFrame(redraw)
1055 }), Math.max(n - Date.now(), 500)))
1056 }
1057 }, {
1058 key: "onNewPixel",
1059 value: function (e, t, n, a, r, o) {
1060 var i = this;
1061 if (this.pixelReceived++, o === _Pixel__WEBPACK_IMPORTED_MODULE_7__.a.RELOAD_CHAT) {
1062 if (this.lockReloadChat > 10) return;
1063 return this.lockReloadChat = (this.lockReloadChat || 0) + 1, void(r === _happysanta_vk_apps_sdk__WEBPACK_IMPORTED_MODULE_12___default.a.getStartParams().groupId && setTimeout((function () {
1064 i.store.dispatch(Object(_modules_Game__WEBPACK_IMPORTED_MODULE_6__.k)())
1065 }), 5e3 * Math.random()))
1066 }
1067 if (this.isFreeze(e, t) ? this.freezeOverdraw[Object(_helpers__WEBPACK_IMPORTED_MODULE_5__.u)(e, t)] ? this.freezeOverdraw[Object(_helpers__WEBPACK_IMPORTED_MODULE_5__.u)(e, t)].push({
1068 x: e,
1069 y: t,
1070 color: n
1071 }) : this.freezeOverdraw[Object(_helpers__WEBPACK_IMPORTED_MODULE_5__.u)(e, t)] = [{
1072 x: e,
1073 y: t,
1074 color: n
1075 }] : (this.canvasCreated ? this.drawPixel(e, t, n) : this.updatesPixel.push({
1076 x: e,
1077 y: t,
1078 color: n
1079 }), this.overDrawDot(e, t, n, a) && 0 === o && this.store.dispatch(Object(_modules_EventList__WEBPACK_IMPORTED_MODULE_11__.k)(a, e, t))), o === _Pixel__WEBPACK_IMPORTED_MODULE_7__.a.FREZE || o === _Pixel__WEBPACK_IMPORTED_MODULE_7__.a.FREZE_CENTER) {
1080 var c = Date.now() + _Pixel__WEBPACK_IMPORTED_MODULE_7__.a.FREEZE_TIME;
1081 this.freeezedPixels[Object(_helpers__WEBPACK_IMPORTED_MODULE_5__.u)(e, t)] = c, this.setTimerForUpdateFreeze(c)
1082 }
1083 }
1084 }, {
1085 key: "sendBufferPixel",
1086 value: function (e) {
1087 var t = new ArrayBuffer(4 * e.length),
1088 n = new Int32Array(t, 0, e.length);
1089 e.forEach((function (e, t) {
1090 n[t] = e.pack()
1091 }));
1092 try {
1093 this.ws.send(t)
1094 } catch (a) {
1095 console.error(a)
1096 }
1097 }
1098 }, {
1099 key: "sendPixel",
1100 value: function (e) {
1101 var t = this;
1102 if (this.ws) {
1103 try {
1104 var n = new ArrayBuffer(4);
1105 new Int32Array(n, 0, 1)[0] = e.pack(), this.ws.send(n), this.resetAliveTimer()
1106 } catch (o) {
1107 Object(_helpers__WEBPACK_IMPORTED_MODULE_5__.k)(o)
1108 }
1109 if (e.flag === _Pixel__WEBPACK_IMPORTED_MODULE_7__.a.BOMB) _Pixel__WEBPACK_IMPORTED_MODULE_7__.a.createExplode(e.x, e.y, {}).forEach((function (e) {
1110 t.isFreeze(e.x, e.y) || t.drawPixel(e.x, e.y, e.colorId)
1111 })), window.dispatchEvent(new Event("explore"));
1112 else if (e.flag === _Pixel__WEBPACK_IMPORTED_MODULE_7__.a.FREZE) {
1113 var a = _Pixel__WEBPACK_IMPORTED_MODULE_7__.a.createFreeze(e.x, e.y, {}),
1114 r = Date.now() + _Pixel__WEBPACK_IMPORTED_MODULE_7__.a.FREEZE_TIME + 200;
1115 a.forEach((function (e) {
1116 t.freeezedPixels[Object(_helpers__WEBPACK_IMPORTED_MODULE_5__.u)(e.x, e.y)] = r
1117 })), this.setTimerForUpdateFreeze(r)
1118 } else this.drawPixel(e.x, e.y, e.colorId);
1119 window.requestAnimationFrame(redraw)
1120 }
1121 }
1122 }, {
1123 key: "afterPixelPackProcessed",
1124 value: function () {
1125 window.requestAnimationFrame(redraw)
1126 }
1127 }, {
1128 key: "onOnline",
1129 value: function () {
1130 this.onOnlineCallback(), this.onOnlineCallback = function () {}, this.store.dispatch(Object(_modules_Game__WEBPACK_IMPORTED_MODULE_6__.f)()), window.updateChannel = this
1131 }
1132 }, {
1133 key: "onOffline",
1134 value: function () {
1135 this.store.dispatch(Object(_modules_Game__WEBPACK_IMPORTED_MODULE_6__.z)(null, null, null)), this.store.dispatch(Object(_modules_Game__WEBPACK_IMPORTED_MODULE_6__.e)())
1136 }
1137 }, {
1138 key: "isFreeze",
1139 value: function (e, t) {
1140 return this.freeezedPixels[Object(_helpers__WEBPACK_IMPORTED_MODULE_5__.u)(e, t)] > Date.now()
1141 }
1142 }, {
1143 key: "refreshGroup",
1144 value: function () {
1145 this.sendPixel(new _Pixel__WEBPACK_IMPORTED_MODULE_7__.a(0, 0, 0, 0, 0, _Pixel__WEBPACK_IMPORTED_MODULE_7__.a.RELOAD_CHAT))
1146 }
1147 }, {
1148 key: "getColorIdAt",
1149 value: function (e, t) {
1150 return Object(_modules_Game__WEBPACK_IMPORTED_MODULE_6__.g)(this.context, e, t)
1151 }
1152 }, {
1153 key: "usePattern",
1154 value: function () {
1155 var e = this,
1156 t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0,
1157 n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0,
1158 a = arguments.length > 2 && void 0 !== arguments[2] && arguments[2],
1159 r = !(arguments.length > 3 && void 0 !== arguments[3]) || arguments[3];
1160
1161 function o(e) {
1162 e.sort((function () {
1163 return Math.random() - .5
1164 }))
1165 }
1166 var i = document.createElement("input");
1167 i.setAttribute("type", "file");
1168 var c = function () {
1169 console.log(i.files[0]);
1170 var c = new Image,
1171 s = function () {
1172 var i = Object(_Users_i_nedzvetskiy_projects_pixel_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__.a)(_Users_i_nedzvetskiy_projects_pixel_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark((function i() {
1173 var s, l, u, _, d, p, m, h, f, E, v, b, O;
1174 return _Users_i_nedzvetskiy_projects_pixel_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap((function (i) {
1175 for (;;) switch (i.prev = i.next) {
1176 case 0:
1177 for (console.log("Loaded", [c.width, c.height]), (s = document.createElement("canvas")).width = c.width, s.height = c.height, (l = s.getContext("2d")).drawImage(c, 0, 0), u = Object(_helpers__WEBPACK_IMPORTED_MODULE_5__.i)(), _ = c.width * c.height, d = 0, p = 0, m = [], h = 0; h < _; h++) m.push(h);
1178 r && o(m), f = [], console.log("Start sendPixel"), E = Object(_modules_Game__WEBPACK_IMPORTED_MODULE_6__.h)(l, 0, 0, c.width, c.height), v = Object(_modules_Game__WEBPACK_IMPORTED_MODULE_6__.h)(e.context, 0, 0, _helpers__WEBPACK_IMPORTED_MODULE_5__.b, _helpers__WEBPACK_IMPORTED_MODULE_5__.a), b = _Users_i_nedzvetskiy_projects_pixel_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark((function r(o) {
1179 var i, s, l, h, b, O, g;
1180 return _Users_i_nedzvetskiy_projects_pixel_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap((function (r) {
1181 for (;;) switch (r.prev = r.next) {
1182 case 0:
1183 if (i = m[o], s = i % c.width, l = Math.floor(i / c.width), h = p++, d !== Math.round(h / _ * 100 / 10) && (d = Math.round(h / _ * 100 / 10), console.log("Process:", d)), b = Object(_modules_Game__WEBPACK_IMPORTED_MODULE_6__.j)(Object(_modules_Game__WEBPACK_IMPORTED_MODULE_6__.i)(E, s, l, c.width)), O = u.reduce((function (e, t) {
1184 var n = Math.abs(b - Object(_modules_Game__WEBPACK_IMPORTED_MODULE_6__.j)(t));
1185 return n < e.diff ? {
1186 diff: n,
1187 c: t
1188 } : e
1189 }), {
1190 diff: Math.abs(Object(_modules_Game__WEBPACK_IMPORTED_MODULE_6__.j)(b) - Object(_modules_Game__WEBPACK_IMPORTED_MODULE_6__.j)(u[0])),
1191 c: u[0]
1192 }), !(g = new _Pixel__WEBPACK_IMPORTED_MODULE_7__.a(s + t, l + n, u.indexOf(O.c), 0, 0, 0)).isValid()) {
1193 r.next = 33;
1194 break
1195 }
1196 if (!a) {
1197 r.next = 27;
1198 break
1199 }
1200 if ("#FFFFFF" !== Object(_modules_Game__WEBPACK_IMPORTED_MODULE_6__.i)(v, g.x, g.y, _helpers__WEBPACK_IMPORTED_MODULE_5__.b)) {
1201 r.next = 22;
1202 break
1203 }
1204 if (f.push(g), !(f.length >= 1e3)) {
1205 r.next = 17;
1206 break
1207 }
1208 return e.sendBufferPixel(f), f = [], r.next = 17, Object(_helpers__WEBPACK_IMPORTED_MODULE_5__.j)(20);
1209 case 17:
1210 if (f.length % 10 !== 0) {
1211 r.next = 20;
1212 break
1213 }
1214 return r.next = 20, Object(_helpers__WEBPACK_IMPORTED_MODULE_5__.j)(16);
1215 case 20:
1216 r.next = 25;
1217 break;
1218 case 22:
1219 if (o % 1e3 !== 0) {
1220 r.next = 25;
1221 break
1222 }
1223 return r.next = 25, Object(_helpers__WEBPACK_IMPORTED_MODULE_5__.j)(16);
1224 case 25:
1225 r.next = 33;
1226 break;
1227 case 27:
1228 if (f.push(g), !(f.length >= 1e3)) {
1229 r.next = 33;
1230 break
1231 }
1232 return e.sendBufferPixel(f), f = [], r.next = 33, Object(_helpers__WEBPACK_IMPORTED_MODULE_5__.j)(20);
1233 case 33:
1234 0 !== o && 100 !== o && 1e3 !== o && 1e4 !== o && 1e6 !== o || console.log("Send pixel:", o);
1235 case 34:
1236 case "end":
1237 return r.stop()
1238 }
1239 }), r)
1240 })), O = 0;
1241 case 19:
1242 if (!(O < _)) {
1243 i.next = 24;
1244 break
1245 }
1246 return i.delegateYield(b(O), "t0", 21);
1247 case 21:
1248 O++, i.next = 19;
1249 break;
1250 case 24:
1251 if (!f.length) {
1252 i.next = 28;
1253 break
1254 }
1255 return e.sendBufferPixel(f), i.next = 28, Object(_helpers__WEBPACK_IMPORTED_MODULE_5__.j)(20);
1256 case 28:
1257 case "end":
1258 return i.stop()
1259 }
1260 }), i)
1261 })));
1262 return function () {
1263 return i.apply(this, arguments)
1264 }
1265 }();
1266 c.onload = function () {
1267 s().then((function () {
1268 return console.log("Done")
1269 })).catch((function (e) {
1270 console.error(e)
1271 }))
1272 }, console.log("start load"), c.src = URL.createObjectURL(i.files[0])
1273 };
1274 i.onchange = function (e) {
1275 c()
1276 }, i.click()
1277 }
1278 }]), UpdateChannel
1279 }()
1280 },
1281 145: function (e, t, n) {
1282 "use strict";
1283 n.r(t);
1284 n(248), n(253), n(254), n(255), n(256), n(257), n(258), n(259), n(260), n(261), n(262), n(263), n(264), n(265), n(266), n(268), n(269), n(275), n(276), n(278), n(279), n(280), n(281), n(282), n(283), n(284), n(285), n(286), n(287), n(288), n(289), n(291), n(292), n(293), n(294), n(295), n(296), n(297), n(298), n(299), n(300), n(302), n(303), n(306), n(307), n(308), n(310), n(311), n(312), n(313), n(314), n(315), n(316), n(317), n(318), n(320), n(321), n(322), n(323), n(324), n(325), n(326), n(327), n(328), n(329), n(331), n(332), n(333), n(335), n(336), n(337), n(338), n(339), n(340), n(341), n(342), n(343), n(344), n(345), n(346), n(347), n(348), n(349), n(350), n(351), n(352), n(353), n(354), n(355);
1285 var a = n(49),
1286 r = n.n(a),
1287 o = n(69),
1288 i = n(13),
1289 c = n(0),
1290 s = n.n(c),
1291 l = n(52),
1292 u = n.n(l),
1293 _ = function (e) {
1294 if (null != e) {
1295 var t = window.location.search.indexOf("".concat("vk_platform", "=").concat("mobile_web")) > -1,
1296 n = window.navigator.userAgent;
1297 (n.indexOf("iPhone") > -1 || n.indexOf("iPad") > -1) && t && (e.style.overflowY = "scroll", e.style.webkitOverflowScrolling = "touch", document.documentElement.style.maxWidth = "100vw", document.body.style.maxWidth = "100vw", e.style.maxWidth = "100vw")
1298 }
1299 };
1300
1301 function d(e) {
1302 var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "root",
1303 n = document.getElementById(t);
1304 window.reactMounted ? u.a.unmountComponentAtNode(n) : _(n), window.reactMounted = !0, u.a.render(e, n)
1305 }
1306 window && window.kek && window.kek('Специальная строка, которую найдут школьники и запостят в свои паблосы типа:"Посмотрите какие мы хакиры умеем исходники смотреть!!!1"');
1307 var p = n(14),
1308 m = n.n(p),
1309 h = n(39),
1310 f = n(67),
1311 E = Object(f.a)({
1312 hashType: "noslash"
1313 }),
1314 v = n(15),
1315 b = n(94),
1316 O = n(5),
1317 g = n(6),
1318 w = n(10),
1319 k = n(7),
1320 y = n(9),
1321 P = n(65),
1322 M = n(4),
1323 D = n(2),
1324 C = (n(397), n(21)),
1325 j = (n(398), n(191)),
1326 x = n.n(j),
1327 T = n(118),
1328 A = n(126);
1329 n(410);
1330
1331 function L(e, t) {
1332 var n = Object.keys(e);
1333 if (Object.getOwnPropertySymbols) {
1334 var a = Object.getOwnPropertySymbols(e);
1335 t && (a = a.filter((function (t) {
1336 return Object.getOwnPropertyDescriptor(e, t).enumerable
1337 }))), n.push.apply(n, a)
1338 }
1339 return n
1340 }
1341 var I = function (e) {
1342 function t() {
1343 var e, n;
1344 Object(O.a)(this, t);
1345 for (var a = arguments.length, r = new Array(a), o = 0; o < a; o++) r[o] = arguments[o];
1346 return (n = Object(w.a)(this, (e = Object(k.a)(t)).call.apply(e, [this].concat(r)))).state = function (e) {
1347 for (var t = 1; t < arguments.length; t++) {
1348 var n = null != arguments[t] ? arguments[t] : {};
1349 t % 2 ? L(n, !0).forEach((function (t) {
1350 Object(i.a)(e, t, n[t])
1351 })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : L(n).forEach((function (t) {
1352 Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t))
1353 }))
1354 }
1355 return e
1356 }({}, Object(A.a)(Object(k.a)(t.prototype), "state", Object(T.a)(n)), {
1357 scrolled: 0
1358 }), n
1359 }
1360 return Object(y.a)(t, e), Object(g.a)(t, [{
1361 key: "componentDidMount",
1362 value: function () {
1363 this.waitAnimationFinish(this.el, this.onFadeInEnd)
1364 }
1365 }, {
1366 key: "componentWillMount",
1367 value: function () {
1368 var e = window.pageYOffset;
1369 this.setState({
1370 scrolled: e
1371 }), document.querySelector("#root").classList.add("root_blocked_scroll"), document.querySelector("body").classList.add("body_blocked_scroll"), document.querySelector("body").classList.add("body_opened_popup");
1372 var t = document.querySelector(".Panel");
1373 t && (t.style.top = "-".concat(e, "px"))
1374 }
1375 }, {
1376 key: "componentWillUnmount",
1377 value: function () {
1378 document.querySelector("#root").classList.remove("root_blocked_scroll"), document.querySelector("body").classList.remove("body_blocked_scroll"), document.querySelector("body").classList.remove("body_opened_popup");
1379 var e = document.querySelector(".Panel");
1380 e && (e.style.top = "0"), window.scrollTo(0, this.state.scrolled), clearTimeout(this.animationFinishTimeout), window.removeEventListener("touchstart", this.onTouchStart)
1381 }
1382 }]), t
1383 }(C.n),
1384 R = function (e) {
1385 function t() {
1386 var e, n;
1387 Object(O.a)(this, t);
1388 for (var a = arguments.length, r = new Array(a), o = 0; o < a; o++) r[o] = arguments[o];
1389 return (n = Object(w.a)(this, (e = Object(k.a)(t)).call.apply(e, [this].concat(r)))).state = {
1390 rendered: !1
1391 }, n.timer = null, n
1392 }
1393 return Object(y.a)(t, e), Object(g.a)(t, [{
1394 key: "componentDidMount",
1395 value: function () {
1396 var e = this;
1397 this.timer = setTimeout((function () {
1398 e.setState({
1399 rendered: !0
1400 }), e.timer = null
1401 }), 200)
1402 }
1403 }, {
1404 key: "onClose",
1405 value: function (e) {
1406 var t = this;
1407 this.timer || (this.setState({
1408 rendered: !1
1409 }), this.timer = setTimeout((function () {
1410 t.props.onClose(), t.timer = null
1411 }), 250), e.stopPropagation())
1412 }
1413 }, {
1414 key: "componentWillUnmount",
1415 value: function () {
1416 clearTimeout(this.timer)
1417 }
1418 }, {
1419 key: "render",
1420 value: function () {
1421 var e = this,
1422 t = this.props,
1423 n = t.showCross,
1424 a = t.children,
1425 r = s.a.Children.map(a, (function (t) {
1426 return s.a.cloneElement(t, {
1427 onClose: function (t) {
1428 return e.onClose(t)
1429 }
1430 })
1431 }));
1432 return s.a.createElement(I, {
1433 v: "bottom",
1434 onClick: function (t) {
1435 return e.onClose(t)
1436 }
1437 }, s.a.createElement(x.a, {
1438 transitionName: "PopupAnimation",
1439 className: "PopupAnimationWrapper",
1440 transitionEnterTimeout: 200,
1441 transitionLeaveTimeout: 200
1442 }, this.state.rendered ? s.a.createElement("div", {
1443 style: this.props.style || {},
1444 className: "BottomPopup",
1445 onClick: function (e) {
1446 return e.stopPropagation(), !1
1447 }
1448 }, s.a.createElement("div", {
1449 className: "BottomPopup__header"
1450 }, n ? s.a.createElement("div", {
1451 className: "BottomPopup__close",
1452 onClick: function (t) {
1453 return e.onClose(t)
1454 }
1455 }) : null), r, this.props.footer ? s.a.createElement("div", {
1456 className: "BottomPopup__footer"
1457 }, this.props.footer) : null) : null))
1458 }
1459 }]), t
1460 }(c.Component);
1461 var B = Object(v.b)((function (e) {
1462 return {}
1463 }), {})(R),
1464 S = function (e) {
1465 function t() {
1466 var e, n;
1467 Object(O.a)(this, t);
1468 for (var a = arguments.length, r = new Array(a), o = 0; o < a; o++) r[o] = arguments[o];
1469 return (n = Object(w.a)(this, (e = Object(k.a)(t)).call.apply(e, [this].concat(r)))).state = {
1470 details: !1
1471 }, n
1472 }
1473 return Object(y.a)(t, e), Object(g.a)(t, [{
1474 key: "toggleDetails",
1475 value: function () {
1476 this.setState({
1477 details: !this.state.details
1478 })
1479 }
1480 }, {
1481 key: "getTextErrorDetails",
1482 value: function () {
1483 var e = "",
1484 t = this.props.error || {};
1485 if (t.message && (t.message instanceof Object ? (e = JSON.stringify(t.message, null, 2), e += "\n") : (e += t.message || "", e += "\n")), t.code && (e += t.code || "", e += "\n"), t.stack && (e += t.stack, e += "\n"), "" === e) try {
1486 e = JSON.stringify(t, null, 2)
1487 } catch (t) {
1488 e = "Empty text and cant't json stringify"
1489 }
1490 return e = window.navigator.userAgent + "\n\n" + e, e = "user_id: ".concat(m.a.getStartParams().userId, " \n\n").concat(e), Object(D.t)(e)
1491 }
1492 }, {
1493 key: "isNetwork",
1494 value: function () {
1495 return (this.props.error || {}).network
1496 }
1497 }, {
1498 key: "getErrorHeader",
1499 value: function () {
1500 var e = this.props.error || {};
1501 return e.code ? e.code : M.a.t("error")
1502 }
1503 }, {
1504 key: "onRetry",
1505 value: function () {
1506 var e = this.props.error;
1507 e.on_retry && e.on_retry(), this.props.onClose()
1508 }
1509 }, {
1510 key: "render",
1511 value: function () {
1512 var e = this,
1513 t = this.state.details,
1514 n = this.props,
1515 a = n.h,
1516 r = n.noDetails,
1517 o = n.error,
1518 i = {};
1519 return a && (i.maxHeight = .8 * a), s.a.createElement("div", {
1520 className: "ErrorMobile"
1521 }, s.a.createElement("div", {
1522 className: "ErrorMobile__body"
1523 }, this.isNetwork() ? null : s.a.createElement("div", {
1524 className: "ErrorMobile__sad"
1525 }), s.a.createElement("div", {
1526 className: "ErrorMobile__title"
1527 }, this.isNetwork() ? M.a.t("network") : Object(D.t)(M.a.t("oops")))), t || this.isNetwork() && !this.props.onClose || r ? null : s.a.createElement(C.e, {
1528 vertical: "bottom"
1529 }, s.a.createElement("div", {
1530 className: "ErrorMobile__bottom"
1531 }, this.isNetwork() ? null : s.a.createElement("div", {
1532 className: "ErrorMobile__to-details"
1533 }, s.a.createElement(C.c, {
1534 stretched: !0,
1535 size: "l",
1536 level: "secondary",
1537 onClick: function () {
1538 return e.toggleDetails()
1539 }
1540 }, M.a.t("error_details"))), this.isNetwork() && this.props.onClose && o.on_retry ? s.a.createElement("div", {
1541 className: "ErrorMobile__to-details"
1542 }, s.a.createElement(C.c, {
1543 stretched: !0,
1544 size: "l",
1545 level: "secondary",
1546 onClick: function () {
1547 return e.onRetry()
1548 }
1549 }, M.a.t("retry"))) : null, this.props.onClose && !o.prevent_close ? s.a.createElement("div", {
1550 className: "ErrorMobile__close"
1551 }, s.a.createElement(C.h, {
1552 onClick: function () {
1553 return e.props.onClose()
1554 }
1555 }, M.a.t("close"))) : null)), !t || this.isNetwork() || r ? null : s.a.createElement(B, {
1556 showCross: !0,
1557 onClose: function () {
1558 return e.toggleDetails()
1559 }
1560 }, s.a.createElement("div", {
1561 className: "ErrorMobile__details"
1562 }, s.a.createElement("div", {
1563 className: "ErrorMobile__details-header"
1564 }, this.getErrorHeader()), s.a.createElement("div", {
1565 className: "ErrorMobile__details-text",
1566 style: i
1567 }, this.getTextErrorDetails()))))
1568 }
1569 }]), t
1570 }(c.Component),
1571 N = n(92),
1572 F = n.n(N),
1573 U = n(91),
1574 W = n.n(U),
1575 z = n(124),
1576 G = n.n(z),
1577 K = n(125),
1578 H = n.n(K),
1579 q = n(93),
1580 X = n.n(q),
1581 V = (n(411), n(79)),
1582 Y = n(35),
1583 Z = (n(412), n(12)),
1584 Q = (n(413), function (e) {
1585 function t() {
1586 var e, n;
1587 Object(O.a)(this, t);
1588 for (var a = arguments.length, r = new Array(a), o = 0; o < a; o++) r[o] = arguments[o];
1589 return (n = Object(w.a)(this, (e = Object(k.a)(t)).call.apply(e, [this].concat(r)))).onClick = function () {
1590 if (!n.props.disable)
1591 if (n.props.selected) n.props.selectTool(null);
1592 else if (n.props.count > 0) n.props.selectTool(n.props.type);
1593 else {
1594 var e = new Event("help_tool");
1595 e.tool = n.props.type, window.dispatchEvent(e), n.props.selectTool(null)
1596 }
1597 }, n
1598 }
1599 return Object(y.a)(t, e), Object(g.a)(t, [{
1600 key: "render",
1601 value: function () {
1602 var e = this.props.count;
1603 return s.a.createElement("div", {
1604 onClick: this.onClick,
1605 title: M.a.t("you_found_" + this.props.type + "_description"),
1606 className: "Tool " + this.props.type + (this.props.selected ? " selected" : "") + (this.props.disable ? " disabled" : "")
1607 }, this.props.disable || null === e ? null : s.a.createElement("span", {
1608 className: "d"
1609 }, s.a.createElement("span", null, this.props.count)))
1610 }
1611 }]), t
1612 }(c.Component));
1613 var J = Object(v.b)((function (e, t) {
1614 var n = t.type;
1615 return {
1616 selected: e.Game.selectedTool === n,
1617 count: e.Game[n]
1618 }
1619 }), {
1620 selectTool: Z.o
1621 })(Q),
1622 $ = (n(414), function () {}),
1623 ee = function (e) {
1624 function t() {
1625 return Object(O.a)(this, t), Object(w.a)(this, Object(k.a)(t).apply(this, arguments))
1626 }
1627 return Object(y.a)(t, e), Object(g.a)(t, [{
1628 key: "render",
1629 value: function () {
1630 var e = this.props,
1631 t = e.color,
1632 n = e.onClick,
1633 a = "MobileButton";
1634 return n && (a += " MobileButton--active"), e.disabled && (a += " MobileButton--disabled"), s.a.createElement("button", {
1635 onClick: n || $,
1636 className: a
1637 }, t ? s.a.createElement("span", {
1638 className: "MobileButton__color",
1639 style: {
1640 backgroundColor: t
1641 }
1642 }) : null, s.a.createElement("span", {
1643 className: "MobileButton__text"
1644 }, this.props.children))
1645 }
1646 }]), t
1647 }(c.Component),
1648 te = n(74),
1649 ne = n(192),
1650 ae = n.n(ne),
1651 re = function (e) {
1652 function t() {
1653 var e, n;
1654 Object(O.a)(this, t);
1655 for (var a = arguments.length, r = new Array(a), o = 0; o < a; o++) r[o] = arguments[o];
1656 return (n = Object(w.a)(this, (e = Object(k.a)(t)).call.apply(e, [this].concat(r)))).openPalette = function () {
1657 n.props.openPalette()
1658 }, n
1659 }
1660 return Object(y.a)(t, e), Object(g.a)(t, [{
1661 key: "main",
1662 value: function () {
1663 var e = this.props,
1664 t = e.wait;
1665 return e.pixel && (t = 0), s.a.createElement(c.Fragment, null, s.a.createElement(J, {
1666 type: D.c,
1667 count: 0
1668 }), s.a.createElement(J, {
1669 type: D.d,
1670 count: 0
1671 }), s.a.createElement(J, {
1672 type: D.e,
1673 count: 0
1674 }), s.a.createElement(ee, {
1675 onClick: t ? null : this.openPalette,
1676 disabled: !t,
1677 color: t ? null : this.props.color
1678 }, t ? M.a.t("wait", {
1679 x: Object(D.C)(t)
1680 }) : M.a.t("change")))
1681 }
1682 }, {
1683 key: "selected",
1684 value: function () {
1685 var e = this,
1686 t = this.props,
1687 n = t.color,
1688 a = t.cursorY,
1689 r = t.cursorX,
1690 o = t.selectedTool;
1691 return s.a.createElement(c.Fragment, null, s.a.createElement("div", {
1692 className: "MobileFooter__color"
1693 }, o ? s.a.createElement(J, {
1694 type: o,
1695 count: 0
1696 }) : s.a.createElement("div", {
1697 className: "color" + ("#FFFFFF" === n ? " white" : ""),
1698 onClick: function () {
1699 return Object(D.z)(null, "".concat(r, "x").concat(a))
1700 },
1701 style: {
1702 backgroundColor: n
1703 }
1704 }, s.a.createElement(ae.a, null)), r, ", ", a), s.a.createElement("div", {
1705 className: "MobileFooter__choose"
1706 }, s.a.createElement(te.a, {
1707 onClick: function () {
1708 return e.props.dropSelectedPixel()
1709 },
1710 level: "secondary"
1711 }, s.a.createElement("div", {
1712 className: "MobileFooter__decline"
1713 })), s.a.createElement(te.a, {
1714 onClick: function () {
1715 return e.props.drawPixel()
1716 }
1717 }, s.a.createElement("div", {
1718 className: "MobileFooter__accept"
1719 }))))
1720 }
1721 }, {
1722 key: "tool",
1723 value: function () {
1724 var e = this,
1725 t = this.props.selectedTool;
1726 return s.a.createElement(c.Fragment, null, s.a.createElement(J, {
1727 type: t,
1728 count: 0
1729 }), s.a.createElement("div", {
1730 className: "MobileFooter__status"
1731 }, M.a.t("tool_" + t)), s.a.createElement(te.a, {
1732 onClick: function () {
1733 return e.props.selectTool(null)
1734 },
1735 level: "secondary"
1736 }, s.a.createElement("div", {
1737 className: "MobileFooter__decline"
1738 })))
1739 }
1740 }, {
1741 key: "render",
1742 value: function () {
1743 var e = this.props,
1744 t = e.selected,
1745 n = e.selectedTool;
1746 return s.a.createElement("div", {
1747 className: "MobileFooter"
1748 }, t ? this.selected() : n ? this.tool() : this.main())
1749 }
1750 }]), t
1751 }(c.Component);
1752 var oe = Object(v.b)((function (e) {
1753 return {
1754 color: e.Game.color,
1755 selected: e.Game.selected,
1756 cursorX: e.Game.cursorX,
1757 cursorY: e.Game.cursorY,
1758 selectedTool: e.Game.selectedTool === D.e ? null : e.Game.selectedTool,
1759 wait: e.Game.wait,
1760 pixel: e.Game.selectedTool === D.e
1761 }
1762 }), {
1763 dropSelectedPixel: Z.c,
1764 drawPixel: Z.b,
1765 selectTool: Z.o
1766 })(re),
1767 ie = n(54),
1768 ce = (n(415), function (e) {
1769 function t() {
1770 var e, n;
1771 Object(O.a)(this, t);
1772 for (var a = arguments.length, r = new Array(a), o = 0; o < a; o++) r[o] = arguments[o];
1773 return (n = Object(w.a)(this, (e = Object(k.a)(t)).call.apply(e, [this].concat(r)))).onChangeColor = function (e) {
1774 n.props.setColor(e.target.id), n.props.onClose()
1775 }, n
1776 }
1777 return Object(y.a)(t, e), Object(g.a)(t, [{
1778 key: "color",
1779 value: function (e, t) {
1780 var n = "MobileColorPalette__color";
1781 return e === this.props.color && (n += " active"), (t + 1) % 5 === 0 && (n += " no-right"), t >= 20 && (n += " no-bottom"), "#FFFFFF" === e && (n += " white"), s.a.createElement("div", {
1782 key: e,
1783 onClick: this.onChangeColor,
1784 id: e,
1785 style: {
1786 backgroundColor: e
1787 },
1788 className: n
1789 })
1790 }
1791 }, {
1792 key: "render",
1793 value: function () {
1794 var e = this,
1795 t = Object(D.i)();
1796 return s.a.createElement("div", {
1797 className: "MobileColorPalette"
1798 }, t.map((function (t, n) {
1799 return e.color(t, n)
1800 })))
1801 }
1802 }]), t
1803 }(c.Component));
1804 var se = Object(v.b)((function (e) {
1805 return {
1806 color: e.Game.color
1807 }
1808 }), {
1809 setColor: Z.r
1810 })(ce),
1811 le = (n(416), function (e) {
1812 function t() {
1813 var e, n;
1814 Object(O.a)(this, t);
1815 for (var a = arguments.length, r = new Array(a), o = 0; o < a; o++) r[o] = arguments[o];
1816 return (n = Object(w.a)(this, (e = Object(k.a)(t)).call.apply(e, [this].concat(r)))).click = !0, n.up = function (e) {
1817 if ("touchstart" === e.type) n.click = !1;
1818 else if (!n.click) return;
1819 var t = n.props,
1820 a = t.value,
1821 r = t.max;
1822 a > 32 ? n.props.onChange(Math.min(a + 4, r)) : a > 12 ? n.props.onChange(Math.min(a + 2, r)) : n.props.onChange(Math.min(a + 1, r))
1823 }, n.down = function (e) {
1824 if ("touchstart" === e.type) n.click = !1;
1825 else if (!n.click) return;
1826 var t = n.props,
1827 a = t.value,
1828 r = t.min;
1829 a > 32 ? n.props.onChange(Math.max(a - 4, r)) : a > 12 ? n.props.onChange(Math.max(a - 2, r)) : n.props.onChange(Math.max(a - 1, r))
1830 }, n
1831 }
1832 return Object(y.a)(t, e), Object(g.a)(t, [{
1833 key: "render",
1834 value: function () {
1835 return s.a.createElement("div", {
1836 className: "MobileSlider"
1837 }, s.a.createElement("div", {
1838 className: "MobileSlider__plus",
1839 onClick: this.up,
1840 onTouchStart: this.up
1841 }), s.a.createElement("div", {
1842 className: "MobileSlider__sep"
1843 }), s.a.createElement("div", {
1844 className: "MobileSlider__minus",
1845 onClick: this.down,
1846 onTouchStart: this.down
1847 }))
1848 }
1849 }]), t
1850 }(c.Component));
1851 var ue = Object(v.b)((function (e) {
1852 return {}
1853 }), {})(le),
1854 _e = (n(417), function (e) {
1855 function t() {
1856 return Object(O.a)(this, t), Object(w.a)(this, Object(k.a)(t).apply(this, arguments))
1857 }
1858 return Object(y.a)(t, e), Object(g.a)(t, [{
1859 key: "render",
1860 value: function () {
1861 var e = this.props,
1862 t = e.x,
1863 n = e.y,
1864 a = e.zoom,
1865 r = e.color,
1866 o = e.mobile,
1867 i = e.showCursor,
1868 c = e.selectedTool;
1869 return i || (t = -100), s.a.createElement("div", {
1870 style: {
1871 left: t + "px",
1872 top: n + "px",
1873 width: a + "px",
1874 height: a + "px",
1875 backgroundColor: r
1876 },
1877 className: "Cursor " + c + (o ? " mobile" : "") + ("#000000" === r || "#333333" === r ? " black" : "")
1878 }, a < 5 ? s.a.createElement("div", {
1879 className: "Cursor__help " + c,
1880 style: {
1881 backgroundColor: r
1882 }
1883 }) : null)
1884 }
1885 }]), t
1886 }(c.Component));
1887 var de = Object(v.b)((function (e, t) {
1888 var n = t.x,
1889 a = t.y,
1890 r = t.zoom;
1891 return {
1892 color: e.Game.selectedTool && e.Game.selectedTool !== D.e ? "transparent" : e.Game.color,
1893 x: e.Game.cursorX * r + n,
1894 y: e.Game.cursorY * r + a,
1895 showCursor: e.Game.showCursor,
1896 selectedTool: e.Game.selectedTool
1897 }
1898 }), {})(_e),
1899 pe = (n(418), function (e) {
1900 function t() {
1901 return Object(O.a)(this, t), Object(w.a)(this, Object(k.a)(t).apply(this, arguments))
1902 }
1903 return Object(y.a)(t, e), Object(g.a)(t, [{
1904 key: "render",
1905 value: function () {
1906 var e = this;
1907 return s.a.createElement("div", {
1908 className: "MobileDebug"
1909 }, s.a.createElement("button", {
1910 onClick: function () {
1911 return e.props.sendDebugMessage("bomb")
1912 }
1913 }, "+ bomb"), s.a.createElement("br", null), s.a.createElement("button", {
1914 onClick: function () {
1915 return e.props.sendDebugMessage("pixel")
1916 }
1917 }, "+ pixel"), s.a.createElement("br", null), s.a.createElement("button", {
1918 onClick: function () {
1919 return e.props.sendDebugMessage("freeze")
1920 }
1921 }, "+ freeze"), s.a.createElement("br", null))
1922 }
1923 }]), t
1924 }(c.Component));
1925 var me = Object(v.b)((function (e) {
1926 return {}
1927 }), {
1928 sendDebugMessage: Z.p
1929 })(pe),
1930 he = (n(419), function (e) {
1931 function t() {
1932 return Object(O.a)(this, t), Object(w.a)(this, Object(k.a)(t).apply(this, arguments))
1933 }
1934 return Object(y.a)(t, e), Object(g.a)(t, [{
1935 key: "render",
1936 value: function () {
1937 var e = this.props,
1938 t = e.url,
1939 n = e.id,
1940 a = e.photo,
1941 r = e.name;
1942 return "0" === n.toString() && (t = void 0, r = M.a.t("free"), a = "https://vk.com/images/camera_100.png"), s.a.createElement("a", {
1943 target: "_blank",
1944 rel: "noopener noreferrer",
1945 href: t,
1946 className: "MobileTopItem"
1947 }, s.a.createElement("span", {
1948 className: "MobileTopItem__place"
1949 }, this.props.place), s.a.createElement("span", {
1950 className: "MobileTopItem__image",
1951 style: {
1952 backgroundImage: "url(".concat(a, ")")
1953 }
1954 }), s.a.createElement("span", null, s.a.createElement("span", {
1955 className: "MobileTopItem__name"
1956 }, r), s.a.createElement("span", {
1957 className: "MobileTopItem__score"
1958 }, Object(D.w)(this.props.score))))
1959 }
1960 }]), t
1961 }(c.Component));
1962 var fe = Object(v.b)((function (e) {
1963 return {}
1964 }), {})(he),
1965 Ee = n(26),
1966 ve = n(44),
1967 be = n(30),
1968 Oe = (n(420), Object(C.s)()),
1969 ge = function (e) {
1970 function t() {
1971 var e, n;
1972 Object(O.a)(this, t);
1973 for (var a = arguments.length, r = new Array(a), o = 0; o < a; o++) r[o] = arguments[o];
1974 return (n = Object(w.a)(this, (e = Object(k.a)(t)).call.apply(e, [this].concat(r)))).listNode = null, n
1975 }
1976 return Object(y.a)(t, e), Object(g.a)(t, [{
1977 key: "onChange",
1978 value: function (e) {
1979 this.props.setTag(e), this.listNode && (this.listNode.parentNode.parentNode.parentNode.scrollTop = 0)
1980 }
1981 }, {
1982 key: "list",
1983 value: function () {
1984 var e = this,
1985 t = this.props,
1986 n = t.list,
1987 a = t.fiend_loading,
1988 r = t.friend_load_error,
1989 o = t.friends_empty,
1990 i = this.props.tag;
1991 if (i === Ee.b) {
1992 if (a) return s.a.createElement("div", {
1993 className: "empty"
1994 }, s.a.createElement(be.WaitDots, {
1995 color: "blue"
1996 }));
1997 if (r) return s.a.createElement("div", {
1998 className: "empty"
1999 }, s.a.createElement("div", null, "user_reject" === r ? M.a.t("user_reject") : M.a.t("friend_load_error", {
2000 text: r
2001 }), s.a.createElement("br", null), s.a.createElement("br", null), s.a.createElement(be.Button, {
2002 type: "secondary",
2003 onClick: function () {
2004 return e.props.reRequest()
2005 }
2006 }, M.a.t("retry"))));
2007 if (o) return s.a.createElement("div", {
2008 className: "empty"
2009 }, s.a.createElement("div", null, M.a.t("no_fiends_in_game"), s.a.createElement("br", null), s.a.createElement("br", null), s.a.createElement(be.Button, {
2010 onClick: function () {
2011 return Object(D.z)()
2012 }
2013 }, M.a.t("invite"))))
2014 }
2015 return 0 === n.length ? i === Ee.b ? s.a.createElement("div", {
2016 className: "empty"
2017 }, M.a.t("no_fiends")) : s.a.createElement("div", {
2018 className: "empty"
2019 }, M.a.t("top_not_ready")) : n.map((function (e, t) {
2020 return s.a.createElement(fe, Object.assign({
2021 place: t + 1,
2022 key: t
2023 }, e))
2024 }))
2025 }
2026 }, {
2027 key: "me",
2028 value: function () {
2029 var e = this.props,
2030 t = e.me,
2031 n = e.myGroup,
2032 a = e.tag;
2033 return a === Ee.a && t ? s.a.createElement("div", {
2034 className: "MobileTop__last"
2035 }, s.a.createElement(fe, Object.assign({
2036 place: t.place
2037 }, t))) : a === Ee.c && n ? s.a.createElement("div", {
2038 className: "MobileTop__last"
2039 }, s.a.createElement(fe, Object.assign({
2040 place: n.place
2041 }, n))) : void 0
2042 }
2043 }, {
2044 key: "render",
2045 value: function () {
2046 var e = this;
2047 return s.a.createElement(C.j, {
2048 id: "top",
2049 dynamicContentHeight: !0,
2050 onClose: this.props.onClose,
2051 header: s.a.createElement(s.a.Fragment, null, s.a.createElement(C.k, {
2052 left: Oe === ie.OS.ANDROID && s.a.createElement(C.f, {
2053 onClick: this.props.onClose
2054 }, s.a.createElement(F.a, null)),
2055 right: Oe !== ie.OS.ANDROID && s.a.createElement(C.f, {
2056 onClick: this.props.onClose
2057 }, s.a.createElement(W.a, null))
2058 }, M.a.t("top")), s.a.createElement(C.p, {
2059 theme: "light"
2060 }, s.a.createElement(C.q, {
2061 onClick: function () {
2062 return e.onChange(Ee.c)
2063 },
2064 selected: this.props.tag === Ee.c
2065 }, M.a.t("groups")), s.a.createElement(C.q, {
2066 onClick: function () {
2067 return e.onChange(Ee.b)
2068 },
2069 selected: this.props.tag === Ee.b
2070 }, M.a.t("friends")), s.a.createElement(C.q, {
2071 onClick: function () {
2072 return e.onChange(Ee.a)
2073 },
2074 selected: this.props.tag === Ee.a
2075 }, M.a.t("all"))))
2076 }, s.a.createElement("div", {
2077 className: "MobileTop"
2078 }, s.a.createElement("div", {
2079 ref: function (t) {
2080 return e.listNode = t
2081 },
2082 className: "MobileTop__list"
2083 }, this.list()), this.me()))
2084 }
2085 }]), t
2086 }(c.Component);
2087 var we = Object(v.b)((function (e) {
2088 var t;
2089 return {
2090 tag: e.Rating.tag,
2091 list: (t = {}, Object(i.a)(t, Ee.c, e.Rating.group), Object(i.a)(t, Ee.a, e.Rating.user), Object(i.a)(t, Ee.b, e.Rating.friends), t)[e.Rating.tag],
2092 fiend_loading: e.Rating.fiend_loading,
2093 friend_load_error: e.Rating.friend_load_error,
2094 friends_empty: 0 === e.Rating.friends.length,
2095 me: e.Rating.me,
2096 myGroup: e.Rating.myGroup
2097 }
2098 }), {
2099 setTag: ve.d,
2100 reRequest: ve.c
2101 })(ge),
2102 ke = (n(422), function (e) {
2103 function t() {
2104 var e, n;
2105 Object(O.a)(this, t);
2106 for (var a = arguments.length, r = new Array(a), o = 0; o < a; o++) r[o] = arguments[o];
2107 return (n = Object(w.a)(this, (e = Object(k.a)(t)).call.apply(e, [this].concat(r)))).state = {
2108 loading: !1
2109 }, n.onClick = function () {
2110 n.setState({
2111 loading: !0
2112 }, (function () {
2113 window.location.reload()
2114 }))
2115 }, n
2116 }
2117 return Object(y.a)(t, e), Object(g.a)(t, [{
2118 key: "render",
2119 value: function () {
2120 return s.a.createElement("div", {
2121 className: "DuplicateConnect"
2122 }, s.a.createElement("div", null, M.a.t("duplicate_connect"), s.a.createElement("br", null), s.a.createElement("br", null), s.a.createElement("br", null), s.a.createElement(be.Button, {
2123 onClick: this.onClick
2124 }, this.state.loading ? s.a.createElement(be.WaitDots, null) : M.a.t("reload"))))
2125 }
2126 }]), t
2127 }(c.Component));
2128 var ye = Object(v.b)((function (e) {
2129 return {}
2130 }), {})(ke),
2131 Pe = n(45),
2132 Me = (n(423), n(33)),
2133 De = "ps";
2134 var Ce = function (e) {
2135 var t = e.x,
2136 n = e.y;
2137 return s.a.createElement("div", {
2138 onClick: function () {
2139 return function (e, t) {
2140 var n = new Event("scrollTo");
2141 n.x = e, n.y = t, window.dispatchEvent(n)
2142 }(t, n)
2143 },
2144 className: "MobileEventView__coords"
2145 })
2146 },
2147 je = function (e) {
2148 function t() {
2149 var e, a;
2150 Object(O.a)(this, t);
2151 for (var r = arguments.length, o = new Array(r), i = 0; i < r; i++) o[i] = arguments[i];
2152 return (a = Object(w.a)(this, (e = Object(k.a)(t)).call.apply(e, [this].concat(o)))).event = function (e) {
2153 var t = e.data,
2154 r = t.user,
2155 o = t.cords;
2156 return e.type === Pe.a ? s.a.createElement("div", {
2157 key: e.id,
2158 className: "MobileEventView__event"
2159 }, s.a.createElement("img", {
2160 alt: r.name,
2161 src: r.photo,
2162 className: "MobileEventView__photo"
2163 }), s.a.createElement("span", {
2164 className: "MobileEventView__name"
2165 }, s.a.createElement("a", {
2166 href: r.url,
2167 rel: "noopener noreferrer",
2168 target: "_blank"
2169 }, r.name.split(" ").shift()), M.a.t("user_bombed_" + (1 === r.sex ? "f" : "m"))), o ? s.a.createElement(Ce, o) : null) : e.type === Pe.e ? s.a.createElement("div", {
2170 key: e.id,
2171 className: "MobileEventView__event"
2172 }, s.a.createElement("img", {
2173 alt: r.name,
2174 src: r.photo,
2175 className: "MobileEventView__photo"
2176 }), s.a.createElement("span", {
2177 className: "MobileEventView__name"
2178 }, s.a.createElement("a", {
2179 href: r.url,
2180 rel: "noopener noreferrer",
2181 target: "_blank"
2182 }, r.name.split(" ").shift()), M.a.t("user_overdraw_" + (1 === r.sex ? "f" : "m")))) : e.type === Pe.b ? s.a.createElement("div", {
2183 key: e.id,
2184 className: "MobileEventView__event" + (e.bzz ? " bzz" + e.bzz : "")
2185 }, s.a.createElement("span", {
2186 className: "MobileEventView__name padding"
2187 }, M.a.t("this_dot_frozen"))) : e.type === Pe.c ? s.a.createElement("div", {
2188 key: e.id,
2189 className: "MobileEventView__event" + (e.bzz ? " bzz" + e.bzz : "")
2190 }, s.a.createElement("span", {
2191 className: "MobileEventView__name padding"
2192 }, M.a.t("you_offline"))) : e.type === Pe.d ? s.a.createElement("div", {
2193 key: e.id,
2194 className: "MobileEventView__event" + (e.bzz ? " bzz" + e.bzz : "")
2195 }, s.a.createElement("span", {
2196 className: "MobileEventView__name padding"
2197 }, M.a.t("this_same_color"))) : e.type === De ? s.a.createElement("div", {
2198 key: e.id,
2199 onClick: function () {
2200 return a.props.selectTool(null)
2201 },
2202 className: "MobileEventView__event"
2203 }, s.a.createElement("img", {
2204 alt: "pixel",
2205 src: n(424),
2206 className: "MobileEventView__icon"
2207 }), s.a.createElement("span", {
2208 className: "MobileEventView__name" + (Me.a.LOCK_COUNT > a.props.pixelCount ? " padding" : "")
2209 }, M.a.t("x_pixel_for_y_sex", {
2210 x: a.props.pixelCount,
2211 y: a.props.pixelSecond
2212 })), Me.a.LOCK_COUNT > a.props.pixelCount ? null : s.a.createElement("div", {
2213 className: "MobileEventView__close"
2214 }, s.a.createElement(F.a, null))) : void 0
2215 }, a
2216 }
2217 return Object(y.a)(t, e), Object(g.a)(t, [{
2218 key: "render",
2219 value: function () {
2220 return s.a.createElement("div", {
2221 className: "MobileEventView" + (this.props.desktop ? " MobileEventView--desktop" : "")
2222 }, this.props.list.map(this.event), this.props.speed ? this.event({
2223 type: De,
2224 id: "-1",
2225 data: {}
2226 }) : null, this.props.pin ? this.event(this.props.pin) : null)
2227 }
2228 }]), t
2229 }(c.Component);
2230 var xe = Object(v.b)((function (e) {
2231 return {
2232 list: e.EventList.list,
2233 pin: e.EventList.pin,
2234 speed: e.Game.selectedTool === D.e,
2235 pixelSecond: e.Game.pixelSecond,
2236 pixelCount: e.Game.pixelCount
2237 }
2238 }), {
2239 selectTool: Z.o
2240 })(je),
2241 Te = (n(425), n(150)),
2242 Ae = n.n(Te),
2243 Le = function (e) {
2244 function t() {
2245 return Object(O.a)(this, t), Object(w.a)(this, Object(k.a)(t).apply(this, arguments))
2246 }
2247 return Object(y.a)(t, e), Object(g.a)(t, [{
2248 key: "render",
2249 value: function () {
2250 var e = this,
2251 t = this.props.deadline;
2252 return this.props.preview ? this.props.mobile ? s.a.createElement("div", {
2253 className: "Preview Preview--mobile"
2254 }, s.a.createElement("div", {
2255 className: "Preview__inner"
2256 }, s.a.createElement("div", {
2257 className: "Preview__svg"
2258 }, s.a.createElement("svg", {
2259 width: "58",
2260 height: "49",
2261 xmlns: "http://www.w3.org/2000/svg"
2262 }, s.a.createElement("g", {
2263 fillRule: "nonzero",
2264 fill: "none"
2265 }, s.a.createElement("path", {
2266 fill: "#FF3347",
2267 d: "M9 0h15v25H9z"
2268 }), s.a.createElement("path", {
2269 fill: "#FF3347",
2270 d: "M0 8h16v17H0zM34 0h15v25H34z"
2271 }), s.a.createElement("path", {
2272 fill: "#FF3347",
2273 d: "M42 8h16v17H42zM16 8h26v33H16z"
2274 }), s.a.createElement("path", {
2275 fill: "#FF3347",
2276 d: "M8 25h42v9H8zM25 41h8v8h-8z"
2277 }), s.a.createElement("path", {
2278 fill: "#FFF",
2279 d: "M41 8h8v8h-8zM33 16h8v8h-8z"
2280 })))), s.a.createElement("div", {
2281 className: "Preview__header"
2282 }, "Pixel battle"), s.a.createElement("div", {
2283 className: "Preview__description"
2284 }, Object(D.t)(M.a.t(t ? "deadline" : "description"))), s.a.createElement("div", {
2285 className: "Preview__buttons"
2286 }, s.a.createElement(Ae.a, {
2287 size: "xl",
2288 onClick: function () {
2289 return e.props.play(1)
2290 }
2291 }, this.props.offline && !t ? s.a.createElement(be.WaitDots, {
2292 color: "blue"
2293 }) : M.a.t("play")), t ? null : s.a.createElement(Ae.a, {
2294 size: "xl",
2295 level: "secondary",
2296 onClick: D.g
2297 }, M.a.t("install_in_my_group"))))) : s.a.createElement("div", {
2298 className: "Preview"
2299 }, s.a.createElement("div", {
2300 className: "Preview__inner"
2301 }, s.a.createElement("div", {
2302 className: "Preview__svg"
2303 }, s.a.createElement("svg", {
2304 width: "58",
2305 height: "49",
2306 xmlns: "http://www.w3.org/2000/svg"
2307 }, s.a.createElement("g", {
2308 fillRule: "nonzero",
2309 fill: "none"
2310 }, s.a.createElement("path", {
2311 fill: "#FF3347",
2312 d: "M9 0h15v25H9z"
2313 }), s.a.createElement("path", {
2314 fill: "#FF3347",
2315 d: "M0 8h16v17H0zM34 0h15v25H34z"
2316 }), s.a.createElement("path", {
2317 fill: "#FF3347",
2318 d: "M42 8h16v17H42zM16 8h26v33H16z"
2319 }), s.a.createElement("path", {
2320 fill: "#FF3347",
2321 d: "M8 25h42v9H8zM25 41h8v8h-8z"
2322 }), s.a.createElement("path", {
2323 fill: "#FFF",
2324 d: "M41 8h8v8h-8zM33 16h8v8h-8z"
2325 })))), s.a.createElement("div", {
2326 className: "Preview__header"
2327 }, "Pixel battle"), s.a.createElement("div", {
2328 className: "Preview__description"
2329 }, Object(D.t)(M.a.t(t ? "deadline" : "description"))), s.a.createElement("div", {
2330 className: "Preview__buttons"
2331 }, s.a.createElement(be.Button, {
2332 loading: this.props.offline && !t,
2333 onClick: function () {
2334 return e.props.play(1)
2335 }
2336 }, M.a.t("play")), t ? null : s.a.createElement(be.Button, {
2337 type: "secondary",
2338 onClick: D.g
2339 }, M.a.t("install_in_my_group"))))) : null
2340 }
2341 }]), t
2342 }(c.Component);
2343 var Ie = Object(v.b)((function (e) {
2344 return {
2345 offline: e.Game.offline,
2346 deadline: e.Game.deadline,
2347 preview: e.Game.preview || e.Game.start
2348 }
2349 }), {
2350 play: Z.l
2351 })(Le);
2352 n(430);
2353 var Re = function (e) {
2354 function t() {
2355 return Object(O.a)(this, t), Object(w.a)(this, Object(k.a)(t).apply(this, arguments))
2356 }
2357 return Object(y.a)(t, e), Object(g.a)(t, [{
2358 key: "render",
2359 value: function () {
2360 var e, t = this.props,
2361 n = t.online,
2362 a = t.offline,
2363 r = t.desktop;
2364 return s.a.createElement("div", {
2365 onDoubleClick: this.props.onDoubleClick ? this.props.onDoubleClick : function () {},
2366 className: "OnlineCounter" + (r ? " OnlineCounter--desktop" : "")
2367 }, a ? "Offline" : M.a.t("online", {
2368 x: (e = n, e < 1e3 ? e : e >= 1e6 ? Math.floor(e / 1e6) + "KK" : e >= 1e3 ? Math.floor(e / 1e3) + "K" : void 0)
2369 }))
2370 }
2371 }]), t
2372 }(c.Component);
2373 var Be = Object(v.b)((function (e) {
2374 return {
2375 offline: e.Game.offline,
2376 online: e.Game.online
2377 }
2378 }), {})(Re),
2379 Se = (n(431), function (e) {
2380 function t(e, n) {
2381 var a;
2382 return Object(O.a)(this, t), (a = Object(w.a)(this, Object(k.a)(t).call(this, e, n))).onChange = function (e) {
2383 a.setState({
2384 url: e.target.value
2385 })
2386 }, a.onEnter = function () {
2387 a.props.saveGroupChatLink(a.state.url, a.props.onClose)
2388 }, a.state = {
2389 url: e.joinChatLink || ""
2390 }, a
2391 }
2392 return Object(y.a)(t, e), Object(g.a)(t, [{
2393 key: "render",
2394 value: function () {
2395 var e = this.props.joinChatLinkError;
2396 return s.a.createElement(C.i, {
2397 onClose: this.props.onClose,
2398 icon: s.a.createElement(X.a, {
2399 width: 56,
2400 height: 56
2401 }),
2402 title: M.a.t("do_add_chat"),
2403 caption: M.a.t("add_chat_description"),
2404 actions: [{
2405 title: M.a.t("add_chat"),
2406 type: "primary",
2407 action: this.onEnter
2408 }]
2409 }, s.a.createElement("br", null), e ? s.a.createElement("div", {
2410 className: "MobileAddChatCard__error"
2411 }, e) : null, s.a.createElement(C.g, {
2412 value: this.state.url,
2413 status: e ? "error" : "",
2414 onFocus: function (e) {
2415 return e.target.select()
2416 },
2417 onChange: this.onChange
2418 }))
2419 }
2420 }]), t
2421 }(c.Component));
2422 var Ne = Object(v.b)((function (e) {
2423 return {
2424 joinChatLink: e.Game.joinChatLink,
2425 joinChatLinkError: e.Game.joinChatLinkError
2426 }
2427 }), {
2428 saveGroupChatLink: Z.n
2429 })(Se),
2430 Fe = (n(432), Object(C.s)()),
2431 Ue = "palette",
2432 We = "top",
2433 ze = "tool",
2434 Ge = "tool_help",
2435 Ke = "link";
2436 var He = Object(v.b)((function (e) {
2437 return {
2438 joinChatLink: e.Game.joinChatLink
2439 }
2440 }), {})((function (e) {
2441 var t = e.joinChatLink,
2442 n = e.onContext,
2443 a = e.onEmptyClick,
2444 r = "admin" === m.a.getStartParams().viewerGroupRole;
2445 return t || r ? s.a.createElement("a", {
2446 href: t,
2447 target: "_blank",
2448 rel: "noopener noreferrer",
2449 onClick: function (e) {
2450 r && (t ? n(t) : a(), e.preventDefault())
2451 },
2452 className: "MobileContainer__button chat"
2453 }, "\xa0") : null
2454 })),
2455 qe = function (e) {
2456 function t(e, n) {
2457 var a;
2458 Object(O.a)(this, t), (a = Object(w.a)(this, Object(k.a)(t).call(this, e, n))).canvas = null, a.ctx = null, a.original = null, a.originalCtx = null, a.x = -1590, a.y = -75, a.catchPos = !1, a.topPadding = 150, a.leftPadding = 140, a.rightPadding = 140, a.bottomPadding = 200, a.w = 1590, a.h = 400, a.frameW = 825, a.frameH = 650, a.minZoom = 1, a.maxZoom = 50, a.state = {
2459 color_id: 5,
2460 zoom: 4,
2461 grid: !1,
2462 open_statistic: !1,
2463 pointX: 0,
2464 pointY: 0,
2465 cursor: !1,
2466 end_alert: !1,
2467 headerHeight: 0,
2468 loadedDimensionsChecked: !1,
2469 activeModal: null,
2470 tool_card_type: null,
2471 link: "",
2472 popout: null
2473 }, a.scrollTo = function (e) {
2474 var t = e.x,
2475 n = e.y,
2476 r = a.state.zoom;
2477 a.x = r * t * -1 + a.frameW / 2, a.y = r * n * -1 + a.frameH / 2, a.afterRender()
2478 }, a.exploreTimer = null, a.onExplore = function () {
2479 a.canvas && !a.exploreTimer && (a.canvas.classList.add("explore"), a.exploreTimer = setTimeout((function () {
2480 a.exploreTimer = null, a.canvas.classList.remove("explore")
2481 }), 150), m.a.getRequest("VKWebAppTapticNotificationOccurred", {
2482 type: "success"
2483 }, "VKWebAppGetFriendsResult", "VKWebAppTapticNotificationOccurredFailed").send())
2484 }, a.onNewTool = function (e) {
2485 a.state.activeModal || a.modalPush(ze, {
2486 tool_card_type: e.tool
2487 })
2488 }, a.helpTool = function (e) {
2489 a.state.activeModal || a.modalPush(Ge, {
2490 tool_card_type: e.tool
2491 })
2492 }, a.giftLink = function (e) {
2493 a.state.activeModal || a.modalPush(Ke, {
2494 link: e.link
2495 })
2496 }, a.ref = function (e) {
2497 a.canvas = e, a.canvas && !a.init ? (a.init = !0, a.ctx = a.canvas.getContext("2d"), a.ctx.mozImageSmoothingEnabled = !1, a.ctx.webkitImageSmoothingEnabled = !1, a.ctx.msImageSmoothingEnabled = !1, a.ctx.imageSmoothingEnabled = !1, a.ctx.save(), a.canvas.addEventListener("touchstart", (function (e) {
2498 a.onMouseDown(e)
2499 }), !1), a.canvas.addEventListener("touchend", (function (e) {
2500 a.onMouseUp(e)
2501 }), !1), a.canvas.addEventListener("touchcancel", (function (e) {
2502 a.onMouseUp(e)
2503 }), !1), a.canvas.addEventListener("touchmove", (function (e) {
2504 a.onMove(e)
2505 }), !1), window.addEventListener("orientationchange", (function () {
2506 var e = document.getElementById("root");
2507 e.style.width = "1px", e.style.height = "1px", e.style.overflow = "hidden", a.frameW = window.innerWidth, a.frameH = window.innerHeight, e.style.width = "", e.style.height = "", e.style.overflow = "", a.setState({
2508 ts: Date.now()
2509 }), a.setZoomForPoint(a.state.zoom, a.x, a.y)
2510 })), a.oldDiff = 0, a.canvas.addEventListener("mousewheel", (function (e) {
2511 e.stopPropagation(), e.preventDefault();
2512 var t = -1 * e.deltaY / 50 + a.oldDiff,
2513 n = Math.round(a.state.zoom + t);
2514 (n = Object(D.h)(a.minZoom, n, a.maxZoom)) !== a.state.zoom ? (a.setZoomForPoint(n, e.clientX, e.clientY), a.oldDiff = 0) : a.oldDiff = t
2515 })), a.afterRender()) : a.init = !1
2516 }, a.afterRender = function () {
2517 a.init && Object(D.s)(a.ctx, a.frameW, a.frameH, a.props.image, Math.round(a.x), Math.round(a.y), a.state.zoom, a.props.channel)
2518 }, a.onMove = function (e) {
2519 if (e.preventDefault(), e.stopPropagation(), e.touches) {
2520 if (a.scale) {
2521 if (e.touches.length >= 2) {
2522 var t = a.getDistFromEvent(e),
2523 n = t / (a.lastDist / a.state.zoom);
2524 n = Math.min(a.maxZoom, Math.max(a.minZoom, n)), Math.round(n) !== a.state.zoom && (a.setZoomForPoint(n, a.getCenterXFromE(e), a.getCenterYFromE(e)), a.lastDist = t)
2525 }
2526 return a.startMoveAt = 0, !0
2527 }
2528 e = e.touches[0]
2529 }
2530 if (a.catchPos) {
2531 var r = e.clientX - a.startX,
2532 o = e.clientY - a.startY;
2533 if (r !== a.x || o !== a.y) {
2534 var i = Math.round(a.h * a.state.zoom),
2535 c = a.w * a.state.zoom,
2536 s = r + a.startOriginX,
2537 l = o + a.startOriginY,
2538 u = a.frameH - (i + l),
2539 _ = a.frameW - (c + s);
2540 if (u > 0 || l > 0) {
2541 var d = l > 0 && (l > a.topPadding && l <= a.y || l < a.topPadding) || l < 0,
2542 p = u > 0 && (u > a.bottomPadding && l >= a.y || !(u > a.bottomPadding)) || u < 0;
2543 d && p ? a.y = l : (u > 0 && u > a.bottomPadding && l < a.y && (a.y = a.frameH - i - a.bottomPadding), l > 0 && l > a.bottomPadding && l > a.y && (a.y = a.topPadding))
2544 } else a.y = l;
2545 if (s > 0 || _ > 0) {
2546 var m = s > 0 && (s > a.leftPadding && s <= a.x || s < a.leftPadding);
2547 m = m || s < 0;
2548 var h = _ > 0 && (_ > a.rightPadding && s >= a.x || _ < a.rightPadding);
2549 h = h || _ < 0, m && h ? a.x = s : (s > 0 && s > a.leftPadding && s > a.x && (a.x = a.leftPadding), _ > 0 && _ > a.rightPadding && s < a.x && (a.x = a.frameW - c - a.rightPadding))
2550 } else a.x = s;
2551 a.setState({
2552 x: a.x,
2553 y: a.y
2554 }, a.afterRender), a.startMoveAt = Date.now(), a.lockClick = !0
2555 }
2556 }
2557 }, a.onMouseDown = function (e) {
2558 if (e.changedTouches) {
2559 var t = e.changedTouches[0];
2560 a.catchPos = !0, a.startX = t.clientX, a.startY = t.clientY, a.startOriginX = a.x, a.startOriginY = a.y, a.lockClick = !1, e.touches.length >= 2 && (a.scale = !0, a.lastDist = a.getDistFromEvent(e))
2561 } else a.catchPos = !0, a.startX = e.clientX, a.startY = e.clientY, a.startOriginX = a.x, a.startOriginY = a.y, a.lockClick = !1;
2562 a.startDragAt = Date.now(), a.startMoveAt = Date.now(), cancelAnimationFrame(a.impulce)
2563 }, a.onClick = function (e) {
2564 if (!a.lockClick) {
2565 var t = a.getPointInOrigin(e);
2566 a.props.setSelectedPixel(t.cx, t.cy, !0)
2567 }
2568 }, a.onMouseUp = function (e) {
2569 if ((!e.touches || 0 === e.touches.length) && (a.scale = !1, a.catchPos = !1, e.changedTouches && (e = e.changedTouches[0]), a.startDragAt && a.startMoveAt)) {
2570 var t = e.clientX,
2571 n = e.clientY,
2572 r = Date.now() - a.startDragAt;
2573 if (a.startDragAt = 0, r <= 1) return;
2574 if (Date.now() - a.startMoveAt >= 50) return;
2575 var o = (t - a.startX) / r,
2576 i = (n - a.startY) / r;
2577 a.impylseX = Math.round(20 * o), a.impylseY = Math.round(20 * i), cancelAnimationFrame(a.impulce), (Math.abs(a.impylseY) > 1 || Math.abs(a.impylseX) > 1) && (a.impulce = requestAnimationFrame((function () {
2578 return a.inertiaMove()
2579 })))
2580 }
2581 }, a.inertiaMove = function () {
2582 a.x += a.impylseX, a.y += a.impylseY;
2583 var e = !1;
2584 a.x > a.leftPadding && (a.x = a.leftPadding, e = !0), a.x < D.b * a.state.zoom * -1 + a.frameW - a.rightPadding && (a.x = D.b * a.state.zoom * -1 + a.frameW - a.rightPadding, e = !0), a.y > a.topPadding && (a.y = a.topPadding, e = !0), a.y < D.a * a.state.zoom * -1 + a.frameH - a.bottomPadding && (a.y = D.a * a.state.zoom * -1 + a.frameH - a.bottomPadding, e = !0), a.afterRender(), a.setState({
2585 now: Date.now()
2586 }), e || (a.impylseY = a.impylseY / 1.1, a.impylseX = a.impylseX / 1.1, a.impylseX = a.impylseX > 0 ? Math.floor(a.impylseX) : Math.ceil(a.impylseX), a.impylseY = a.impylseY > 0 ? Math.floor(a.impylseY) : Math.ceil(a.impylseY), (Math.abs(a.impylseY) > 1 || Math.abs(a.impylseX) > 1) && (cancelAnimationFrame(a.impulce), a.impulce = requestAnimationFrame((function () {
2587 return a.inertiaMove()
2588 }))))
2589 }, a.lock = !1, a.modalBack = function () {
2590 a.onPopState()
2591 }, a.modalPush = function (e) {
2592 var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;
2593 if (a.state.activeModal !== e) {
2594 if (a.lock) return;
2595 a.lock = !0, setTimeout((function () {
2596 a.lock = !1
2597 }), 500);
2598 try {
2599 window.history.pushState({
2600 modal: e
2601 }, e, "#" + e)
2602 } catch (n) {
2603 Object(D.k)(n)
2604 }
2605 t ? a.setState(Object.assign({
2606 activeModal: e
2607 }, t)) : a.setState({
2608 activeModal: e
2609 })
2610 }
2611 }, a.onPopState = function () {
2612 if (null !== a.state.activeModal) {
2613 if (a.lock) return;
2614 a.lock = !0, a.setState({
2615 activeModal: null,
2616 popout: null
2617 }), setTimeout((function () {
2618 a.lock = !1
2619 }), 500)
2620 }
2621 }, a.openPalette = function () {
2622 a.modalPush(Ue)
2623 }, a.openTop = function (e) {
2624 e.stopPropagation(), a.modalPush(We)
2625 }, Object(D.q)() && (a.x = 0, a.y = 0), a.original = document.createElement("canvas"), a.original.width = a.w, a.original.height = a.h, a.originalCtx = a.original.getContext("2d"), window.addEventListener("mouseup", (function (e) {
2626 return a.onMouseUp(e)
2627 })), a.frameW = window.innerWidth, a.frameH = window.innerHeight, a.y = -1 * Math.round(Math.random() * (a.h * a.state.zoom - a.frameH)), a.x = -1 * Math.round(Math.random() * (a.w * a.state.zoom - a.frameW)), 0 === t.deviceWidth && (t.deviceWidth = window.innerWidth), 0 === t.deviceHeight && window.innerHeight && (t.deviceHeight = window.innerHeight), a.topPadding = Math.max(window.innerHeight / 2, a.topPadding), a.bottomPadding = Math.max(window.innerHeight / 2, a.bottomPadding);
2628 var r = window.location.hash.toString().replace("#", "");
2629 if (r.length >= 3 && r.length <= 8 && -1 !== r.indexOf("x")) {
2630 var o = r.split("x"),
2631 i = Object(b.a)(o, 2),
2632 c = i[0],
2633 s = i[1];
2634 if (void 0 !== s) {
2635 c = Object(D.h)(0, c, D.b), s = Object(D.h)(0, s, D.a);
2636 var l = c * a.state.zoom;
2637 a.x = -l + Math.round(a.frameW / 2);
2638 var u = s * a.state.zoom;
2639 a.y = -u + Math.round(a.frameH / 2)
2640 }
2641 }
2642 return a
2643 }
2644 return Object(y.a)(t, e), Object(g.a)(t, [{
2645 key: "componentWillUnmount",
2646 value: function () {
2647 window.removeEventListener("popstate", this.onPopState), window.removeEventListener("explore", this.onExplore), window.removeEventListener("new_tool", this.onNewTool), window.removeEventListener("redraw", this.afterRender), window.removeEventListener("scrollTo", this.scrollTo), window.removeEventListener("help_tool", this.helpTool), window.removeEventListener("gift_link", this.giftLink)
2648 }
2649 }, {
2650 key: "componentDidMount",
2651 value: function () {
2652 window.addEventListener("popstate", this.onPopState), window.addEventListener("explore", this.onExplore), window.addEventListener("new_tool", this.onNewTool), window.addEventListener("redraw", this.afterRender), window.addEventListener("scrollTo", this.scrollTo), window.addEventListener("help_tool", this.helpTool), window.addEventListener("gift_link", this.giftLink), this.afterRender()
2653 }
2654 }, {
2655 key: "setZoomForPoint",
2656 value: function (e, t, n) {
2657 var a = this;
2658 cancelAnimationFrame(this.impulce);
2659 var r = (e = Object(D.h)(this.minZoom, Math.round(e), this.maxZoom)) * this.w,
2660 o = e * this.h,
2661 i = this.state.zoom * this.w,
2662 c = this.state.zoom * this.h,
2663 s = (t - this.x) / (this.w * this.state.zoom),
2664 l = (n - this.y) / (this.h * this.state.zoom);
2665 r > i ? this.x -= (r - i) * s : this.x += (i - r) * s, o > c ? this.y -= (o - c) * l : this.y += (c - o) * l, this.setState({
2666 zoom: e
2667 }, (function () {
2668 return a.afterRender()
2669 }))
2670 }
2671 }, {
2672 key: "getPointInOrigin",
2673 value: function (e) {
2674 var t = (e.clientX - this.x) / (this.w * this.state.zoom),
2675 n = (e.clientY - this.y) / (this.h * this.state.zoom);
2676 return {
2677 cx: Math.min(this.w - 1, Math.max(0, Math.round(this.w * t - .5))),
2678 cy: Math.min(this.h - 1, Math.max(0, Math.round(this.h * n - .5)))
2679 }
2680 }
2681 }, {
2682 key: "getDistFromEvent",
2683 value: function (e) {
2684 return Math.sqrt((e.touches[0].clientX - e.touches[1].clientX) * (e.touches[0].clientX - e.touches[1].clientX) + (e.touches[0].clientY - e.touches[1].clientY) * (e.touches[0].clientY - e.touches[1].clientY))
2685 }
2686 }, {
2687 key: "getCenterXFromE",
2688 value: function (e) {
2689 var t = e.touches[0].clientX,
2690 n = e.touches[1].clientX,
2691 a = Math.min(t, n);
2692 return a + (Math.max(t, n) - a) / 2
2693 }
2694 }, {
2695 key: "getCenterYFromE",
2696 value: function (e) {
2697 var t = e.touches[0].clientY,
2698 n = e.touches[1].clientY,
2699 a = Math.min(t, n);
2700 return a + (Math.max(t, n) - a) / 2
2701 }
2702 }, {
2703 key: "getCursorX",
2704 value: function () {
2705 return this.state.pointX * this.state.zoom + this.x
2706 }
2707 }, {
2708 key: "getCursorY",
2709 value: function () {
2710 return this.state.pointY * this.state.zoom + this.y
2711 }
2712 }, {
2713 key: "modal",
2714 value: function () {
2715 var e = this;
2716 return s.a.createElement(C.l, {
2717 activeModal: this.state.activeModal
2718 }, s.a.createElement(we, {
2719 id: We,
2720 dynamicContentHeight: !0,
2721 onClose: this.modalBack
2722 }), s.a.createElement(C.j, {
2723 id: Ue,
2724 onClose: this.modalBack,
2725 header: s.a.createElement(C.k, {
2726 left: Fe === ie.OS.ANDROID && s.a.createElement(C.f, {
2727 onClick: this.modalBack
2728 }, s.a.createElement(F.a, null)),
2729 right: Fe !== ie.OS.ANDROID && s.a.createElement(C.f, {
2730 onClick: this.modalBack
2731 }, s.a.createElement(W.a, null))
2732 }, M.a.t("select_color"))
2733 }, s.a.createElement(se, {
2734 onClose: this.modalBack
2735 })), s.a.createElement(C.i, {
2736 id: ze,
2737 onClose: this.modalBack,
2738 icon: s.a.createElement(J, {
2739 disable: !0,
2740 type: this.state.tool_card_type
2741 }),
2742 title: M.a.t("you_found_" + this.state.tool_card_type),
2743 caption: M.a.t("you_found_" + this.state.tool_card_type + "_description"),
2744 actions: [{
2745 title: M.a.t("next"),
2746 type: "primary",
2747 action: function () {
2748 return e.modalBack()
2749 }
2750 }]
2751 }), s.a.createElement(C.i, {
2752 id: Ge,
2753 onClose: this.modalBack,
2754 icon: s.a.createElement(J, {
2755 disable: !0,
2756 type: this.state.tool_card_type
2757 }),
2758 title: M.a.t("it_is_" + this.state.tool_card_type),
2759 caption: M.a.t("it_is_" + this.state.tool_card_type + "_description"),
2760 actions: [{
2761 title: M.a.t("next"),
2762 type: "primary",
2763 action: function () {
2764 return e.modalBack()
2765 }
2766 }]
2767 }), s.a.createElement(C.i, {
2768 id: Ke,
2769 onClose: this.modalBack,
2770 icon: s.a.createElement(G.a, null),
2771 title: M.a.t("gift"),
2772 caption: M.a.t("this_is_link_for_gift"),
2773 actions: [{
2774 title: M.a.t("send"),
2775 type: "primary",
2776 action: function () {
2777 return Object(D.z)(e.state.link)
2778 }
2779 }]
2780 }, s.a.createElement("br", null), s.a.createElement(C.g, {
2781 value: this.state.link.replace("https://", ""),
2782 onFocus: function (e) {
2783 return e.target.select()
2784 },
2785 onChange: function () {}
2786 })), s.a.createElement(Ne, {
2787 id: "chat_update",
2788 onClose: this.modalBack
2789 }))
2790 }
2791 }, {
2792 key: "render",
2793 value: function () {
2794 var e = this,
2795 n = this.props,
2796 a = n.fatal,
2797 r = n.location,
2798 o = n.debug,
2799 i = n.duplicateConnect;
2800 if (a) return s.a.createElement(S, {
2801 error: this.props.fatal,
2802 onClose: function () {
2803 return e.props.removeFatalError()
2804 }
2805 });
2806 if (!Object(D.r)()) return s.a.createElement("div", {
2807 className: "not-supported",
2808 style: {
2809 width: t.deviceWidth,
2810 height: t.deviceHeight
2811 }
2812 }, s.a.createElement("div", {
2813 className: "plak-wrapper"
2814 }, s.a.createElement("div", {
2815 className: "plak"
2816 }), s.a.createElement("div", {
2817 className: "plak-text"
2818 }, M.a.t("not_supported"))));
2819 if (i) return s.a.createElement(ye, null);
2820 var c = V.a.fromLocation(r.pathname, r.state);
2821 return s.a.createElement(C.o, {
2822 className: "MobileContainer",
2823 activeView: c.getViewId()
2824 }, s.a.createElement(C.r, {
2825 id: Y.d,
2826 modal: this.modal(),
2827 popout: this.state.popout,
2828 activePanel: Y.b,
2829 history: []
2830 }, s.a.createElement(C.m, {
2831 id: Y.b
2832 }, s.a.createElement("canvas", {
2833 onMouseDown: this.onMouseDown,
2834 onMouseUp: this.onMouseUp,
2835 onMouseMove: this.onMove,
2836 onClick: this.onClick,
2837 width: this.frameW,
2838 height: this.frameH,
2839 className: "draw",
2840 ref: this.ref
2841 }), s.a.createElement(oe, {
2842 openPalette: this.openPalette
2843 }), s.a.createElement("div", {
2844 className: "MobileContainer__button top",
2845 onClick: this.openTop
2846 }), s.a.createElement(He, {
2847 onEmptyClick: function () {
2848 e.modalPush("chat_update")
2849 },
2850 onContext: function (t) {
2851 window.history.pushState({}, "context", "#context"), e.setState({
2852 popout: s.a.createElement(C.a, {
2853 onClose: function () {
2854 return e.setState({
2855 popout: null
2856 })
2857 }
2858 }, s.a.createElement(C.b, {
2859 autoclose: !0,
2860 before: s.a.createElement(X.a, null)
2861 }, s.a.createElement("a", {
2862 href: t,
2863 target: "_blank",
2864 className: "MobileContainer__menu-link",
2865 rel: "noopener noreferrer"
2866 }, "\xa0"), M.a.t("go_to_chat")), s.a.createElement(C.b, {
2867 autoclose: !0,
2868 onClick: function () {
2869 return e.modalPush("chat_update")
2870 },
2871 before: s.a.createElement(H.a, null)
2872 }, M.a.t("edit")), Fe === ie.OS.IOS && s.a.createElement(C.b, {
2873 autoclose: !0,
2874 theme: "cancel"
2875 }, M.a.t("cancel")))
2876 })
2877 }
2878 }), s.a.createElement(ue, {
2879 onChange: function (t) {
2880 return e.setZoomForPoint(t, e.frameW / 2, e.frameH / 2)
2881 },
2882 value: this.state.zoom,
2883 min: this.minZoom,
2884 max: this.maxZoom
2885 }), s.a.createElement(de, {
2886 x: this.x,
2887 y: this.y,
2888 mobile: !0,
2889 zoom: this.state.zoom
2890 }), o ? s.a.createElement(me, null) : null, s.a.createElement(xe, null), s.a.createElement(Ie, {
2891 mobile: !0
2892 }), s.a.createElement(Be, null))))
2893 }
2894 }]), t
2895 }(c.Component);
2896 qe.deviceWidth = 0, qe.deviceHeight = 0;
2897 var Xe = Object(v.b)((function (e) {
2898 return {
2899 can_draw: !0,
2900 fatal: e.FatalErrorModule,
2901 viewHistory: e.LocationModule.viewHistory,
2902 viewsPanels: e.LocationModule.viewsPanels,
2903 image: e.Game.image,
2904 context: e.Game.context,
2905 debug: e.Game.debug,
2906 duplicateConnect: e.Game.duplicateConnect
2907 }
2908 }), {
2909 removeFatalError: P.b,
2910 setSelectedPixel: Z.A
2911 })(qe),
2912 Ve = n(195),
2913 Ye = n(96),
2914 Ze = function (e) {
2915 function t() {
2916 return Object(O.a)(this, t), Object(w.a)(this, Object(k.a)(t).apply(this, arguments))
2917 }
2918 return Object(y.a)(t, e), Object(g.a)(t, [{
2919 key: "componentDidMount",
2920 value: function () {
2921 t.afterUpdate()
2922 }
2923 }, {
2924 key: "componentDidUpdate",
2925 value: function () {
2926 t.afterUpdate()
2927 }
2928 }], [{
2929 key: "afterUpdate",
2930 value: function () {
2931 window.onChangeHeight && window.onChangeHeight()
2932 }
2933 }]), t
2934 }(c.Component),
2935 Qe = (n(433), n(1)),
2936 Je = n.n(Qe);
2937 n(434);
2938
2939 function $e(e) {
2940 e.stopPropagation()
2941 }
2942 var et = function (e) {
2943 function t(e) {
2944 var n;
2945 Object(O.a)(this, t), (n = Object(w.a)(this, Object(k.a)(t).call(this, e))).state = {
2946 lastResizedHeight: 0,
2947 hasPopup: !1
2948 }, n.onClose = function () {
2949 n.props.onClose()
2950 };
2951 var a = document.querySelector(".PopupDesktop__window");
2952 return n.initialHeight = document.body.clientHeight, a && a.clientHeight > n.initialHeight && (n.initialHeight = a.clientHeight + 40), n.waitPopup(), n
2953 }
2954 return Object(y.a)(t, e), Object(g.a)(t, [{
2955 key: "waitPopup",
2956 value: function () {
2957 var e = this;
2958 this.popup ? (clearTimeout(this.t), this.setState({
2959 hasPopup: !0
2960 })) : this.t = setTimeout((function () {
2961 e.waitPopup()
2962 }), 100)
2963 }
2964 }, {
2965 key: "componentDidMount",
2966 value: function () {
2967 Object(D.x)(Wt)
2968 }
2969 }, {
2970 key: "componentDidUpdate",
2971 value: function () {
2972 this.fixHeight()
2973 }
2974 }, {
2975 key: "fixHeight",
2976 value: function () {
2977 if (this.popup) {
2978 var e = this.popup.clientHeight + 40;
2979 document.body.clientHeight < this.popup.clientHeight && e !== this.state.lastResizedHeight && (m.a.resizeWindow(Ut, e).then().catch(), this.setState({
2980 lastResizedHeight: e
2981 }))
2982 }
2983 }
2984 }, {
2985 key: "componentWillUnmount",
2986 value: function () {
2987 clearTimeout(this.t), this.initialHeight && m.a.resizeWindow(Ut, this.initialHeight).then().catch()
2988 }
2989 }, {
2990 key: "render",
2991 value: function () {
2992 var e = this,
2993 t = this.props,
2994 n = t.header,
2995 a = t.showCross;
2996 return s.a.createElement("div", {
2997 className: "PopupDesktop",
2998 onClick: this.onClose
2999 }, s.a.createElement("div", {
3000 className: "PopupDesktop__window " + (this.props.className || (this.state.hasPopup ? " rendered" : "")),
3001 ref: function (t) {
3002 return e.popup = t
3003 },
3004 onClick: $e
3005 }, n ? s.a.createElement("div", {
3006 className: "PopupDesktop__header"
3007 }, s.a.createElement("div", {
3008 className: "PopupDesktop__header-text"
3009 }, n), s.a.createElement("div", {
3010 onClick: function (t) {
3011 return e.onClose(t)
3012 },
3013 className: "PopupDesktop__close"
3014 })) : a ? s.a.createElement("button", {
3015 title: M.a.t("close"),
3016 onClick: this.onClose,
3017 className: "PopupDesktop__close PopupDesktop__close--body"
3018 }) : null, this.props.children, this.props.renderBottom ? s.a.createElement("div", {
3019 className: "PopupDesktop__bottom"
3020 }, this.props.renderBottom) : null))
3021 }
3022 }]), t
3023 }(Ze);
3024 et.propTypes = {
3025 onClose: Je.a.func
3026 };
3027 var tt = et,
3028 nt = function (e) {
3029 function t() {
3030 var e, n;
3031 Object(O.a)(this, t);
3032 for (var a = arguments.length, r = new Array(a), o = 0; o < a; o++) r[o] = arguments[o];
3033 return (n = Object(w.a)(this, (e = Object(k.a)(t)).call.apply(e, [this].concat(r)))).state = {
3034 details: !1
3035 }, n
3036 }
3037 return Object(y.a)(t, e), Object(g.a)(t, [{
3038 key: "componentDidMount",
3039 value: function () {
3040 Object(A.a)(Object(k.a)(t.prototype), "componentDidMount", this).call(this), m.a.scroll(0, Wt).then().catch()
3041 }
3042 }, {
3043 key: "toggleDetails",
3044 value: function () {
3045 this.setState({
3046 details: !this.state.details
3047 })
3048 }
3049 }, {
3050 key: "getTextErrorDetails",
3051 value: function () {
3052 var e = "",
3053 t = this.props.error || {};
3054 if (t.message && (t.message instanceof Object ? (e = JSON.stringify(t.message, null, 2), e += "\n") : (e += t.message || "", e += "\n")), t.code && (e += t.code || "", e += "\n"), t.stack && (e += t.stack, e += "\n"), "" === e) try {
3055 e = JSON.stringify(t, null, 2)
3056 } catch (t) {
3057 e = "Empty text and cant't json stringify"
3058 }
3059 return e = window.navigator.userAgent + "\n\n" + e, e = "user_id: ".concat(m.a.getStartParams().userId, " \n\n").concat(e), Object(D.t)(e)
3060 }
3061 }, {
3062 key: "isNetwork",
3063 value: function () {
3064 return (this.props.error || {}).network
3065 }
3066 }, {
3067 key: "getErrorHeader",
3068 value: function () {
3069 var e = this.props.error || {};
3070 return e.code ? e.code : M.a.t("error")
3071 }
3072 }, {
3073 key: "onRetry",
3074 value: function () {
3075 var e = this.props.error;
3076 e.on_retry && e.on_retry(), this.props.onClose()
3077 }
3078 }, {
3079 key: "render",
3080 value: function () {
3081 var e = this,
3082 t = this.state.details,
3083 n = this.props.error;
3084 return s.a.createElement("div", {
3085 className: "ErrorDesktop",
3086 style: {
3087 height: 500
3088 }
3089 }, s.a.createElement("div", {
3090 className: "ErrorDesktop__body"
3091 }, s.a.createElement("div", {
3092 className: "ErrorDesktop__sad"
3093 }), s.a.createElement("div", {
3094 className: "ErrorDesktop__title"
3095 }, this.isNetwork() ? M.a.t("network") : Object(D.t)(M.a.t("oops"))), !this.isNetwork() || this.props.onClose ? s.a.createElement("div", {
3096 className: "ErrorDesktop__bottom"
3097 }, this.isNetwork() ? null : s.a.createElement("div", {
3098 className: "ErrorDesktop__to-details"
3099 }, s.a.createElement(be.Button, {
3100 type: "secondary",
3101 onClick: function () {
3102 return e.toggleDetails()
3103 }
3104 }, M.a.t("error_details"))), this.isNetwork() && this.props.onClose && n.on_retry ? s.a.createElement("div", {
3105 className: "ErrorDesktop__to-details"
3106 }, s.a.createElement(be.Button, {
3107 type: "secondary",
3108 onClick: function () {
3109 return e.onRetry()
3110 }
3111 }, M.a.t("retry"))) : null, this.props.onClose && !n.prevent_close ? s.a.createElement("div", {
3112 className: "ErrorDesktop__close"
3113 }, s.a.createElement(be.Link, {
3114 onClick: function () {
3115 return e.props.onClose()
3116 }
3117 }, M.a.t("close"))) : null) : null), t && !this.isNetwork() ? s.a.createElement(tt, {
3118 onClose: function () {
3119 return e.toggleDetails()
3120 },
3121 showCross: !0,
3122 header: !1,
3123 footerRight: null
3124 }, s.a.createElement("div", {
3125 className: "ErrorDesktop__details"
3126 }, s.a.createElement("div", {
3127 className: "ErrorDesktop__details-header"
3128 }, this.getErrorHeader()), s.a.createElement("div", {
3129 className: "ErrorDesktop__details-text"
3130 }, this.getTextErrorDetails()))) : null)
3131 }
3132 }]), t
3133 }(Ze),
3134 at = (n(435), n(436), function (e) {
3135 function t() {
3136 return Object(O.a)(this, t), Object(w.a)(this, Object(k.a)(t).apply(this, arguments))
3137 }
3138 return Object(y.a)(t, e), Object(g.a)(t, [{
3139 key: "render",
3140 value: function () {
3141 return s.a.createElement("div", {
3142 className: "DesktopHeader"
3143 }, this.props.children)
3144 }
3145 }]), t
3146 }(c.Component));
3147 var rt = Object(v.b)((function (e) {
3148 return {}
3149 }), {})(at),
3150 ot = (n(437), function (e) {
3151 function t() {
3152 var e, n;
3153 Object(O.a)(this, t);
3154 for (var a = arguments.length, r = new Array(a), o = 0; o < a; o++) r[o] = arguments[o];
3155 return (n = Object(w.a)(this, (e = Object(k.a)(t)).call.apply(e, [this].concat(r)))).onClick = function () {
3156 window.dispatchEvent(new Event("open_rating")), n.props.setTag(n.props.tag)
3157 }, n
3158 }
3159 return Object(y.a)(t, e), Object(g.a)(t, [{
3160 key: "render",
3161 value: function () {
3162 var e = this.props,
3163 t = e.id,
3164 n = e.photo,
3165 a = e.name;
3166 return "0" === (t || "").toString() && (a = M.a.t("free"), n = "https://vk.com/images/camera_100.png"), s.a.createElement("div", {
3167 onClick: this.onClick,
3168 className: "RatingItem" + (null === t ? " null" : "")
3169 }, s.a.createElement("div", {
3170 className: "RatingItem__image",
3171 style: {
3172 backgroundImage: "url(".concat(n, ")")
3173 }
3174 }), s.a.createElement("div", {
3175 className: "RatingItem__description"
3176 }, s.a.createElement("div", {
3177 className: "RatingItem__name"
3178 }, a), s.a.createElement("div", {
3179 className: "RatingItem__count"
3180 }, Object(D.w)(this.props.score))))
3181 }
3182 }]), t
3183 }(c.Component));
3184 var it = Object(v.b)((function (e, t) {
3185 var n = t.index,
3186 a = t.tag;
3187 if (a === Ee.c) {
3188 var r = e.Rating.group;
3189 if (r[n]) return r[n]
3190 }
3191 if (a === Ee.b) {
3192 var o = e.Rating.friends;
3193 if (o[n]) return o[n]
3194 }
3195 if (a === Ee.a) {
3196 var i = e.Rating.user;
3197 if (i[n]) return i[n]
3198 }
3199 return {
3200 id: null,
3201 photo: "",
3202 name: "",
3203 url: "",
3204 score: ""
3205 }
3206 }), {
3207 setTag: ve.d
3208 })(ot),
3209 ct = (n(438), function (e) {
3210 function t() {
3211 var e, n;
3212 Object(O.a)(this, t);
3213 for (var a = arguments.length, r = new Array(a), o = 0; o < a; o++) r[o] = arguments[o];
3214 return (n = Object(w.a)(this, (e = Object(k.a)(t)).call.apply(e, [this].concat(r)))).state = {
3215 tab: Ee.c
3216 }, n.onListClick = function () {
3217 n.openPopup(n.state.tab)
3218 }, n.onClickTab = function (e) {
3219 var t = e.target.id;
3220 t !== Ee.b && t !== Ee.c || n.setState({
3221 tab: t
3222 }), t === Ee.b && n.props.setTag(t), t === Ee.a && n.openPopup(Ee.a)
3223 }, n
3224 }
3225 return Object(y.a)(t, e), Object(g.a)(t, [{
3226 key: "openPopup",
3227 value: function (e) {
3228 window.dispatchEvent(new Event("open_rating")), this.props.setTag(e)
3229 }
3230 }, {
3231 key: "list",
3232 value: function () {
3233 var e = this,
3234 t = this.state.tab,
3235 n = this.props,
3236 a = n.fiend_loading,
3237 r = n.friend_load_error,
3238 o = n.friends_empty;
3239 if (t === Ee.b) {
3240 if (a) return s.a.createElement("div", {
3241 className: "RatingPreview__space"
3242 }, s.a.createElement(be.WaitDots, {
3243 color: "blue"
3244 }));
3245 if (r) return s.a.createElement("div", {
3246 className: "RatingPreview__space"
3247 }, s.a.createElement("div", null, M.a.t("user_reject" === r ? "user_reject" : "friend_load_error", {
3248 text: r
3249 }), s.a.createElement("br", null), s.a.createElement("br", null), s.a.createElement(be.Button, {
3250 type: "secondary",
3251 onClick: function () {
3252 return e.props.reRequest()
3253 }
3254 }, M.a.t("retry"))));
3255 if (o) return s.a.createElement("div", {
3256 className: "RatingPreview__space"
3257 }, s.a.createElement("div", null, M.a.t("no_fiends_in_game"), s.a.createElement("br", null), s.a.createElement("br", null), s.a.createElement(be.Button, {
3258 onClick: function () {
3259 return Object(D.z)()
3260 }
3261 }, M.a.t("invite"))))
3262 }
3263 return s.a.createElement(c.Fragment, null, s.a.createElement(it, {
3264 tag: this.state.tab,
3265 index: 0
3266 }), s.a.createElement(it, {
3267 tag: this.state.tab,
3268 index: 1
3269 }), s.a.createElement(it, {
3270 tag: this.state.tab,
3271 index: 2
3272 }), s.a.createElement(it, {
3273 tag: this.state.tab,
3274 index: 3
3275 }), s.a.createElement(it, {
3276 tag: this.state.tab,
3277 index: 4
3278 }))
3279 }
3280 }, {
3281 key: "render",
3282 value: function () {
3283 var e = this.state.tab;
3284 return s.a.createElement("div", {
3285 className: "RatingPreview"
3286 }, s.a.createElement("div", {
3287 className: "RatingPreview__line"
3288 }, s.a.createElement(rt, null, s.a.createElement("span", {
3289 className: e === Ee.c ? "black" : "",
3290 id: Ee.c,
3291 onClick: this.onClickTab
3292 }, M.a.t("groups_x"))), s.a.createElement(rt, null, s.a.createElement("span", {
3293 className: e === Ee.b ? "black" : "",
3294 id: Ee.b,
3295 onClick: this.onClickTab
3296 }, M.a.t("friends"))), s.a.createElement(rt, null, s.a.createElement("span", {
3297 id: Ee.a,
3298 onClick: this.onClickTab
3299 }, M.a.t("all"), " >"))), s.a.createElement("div", {
3300 className: "RatingPreview__list"
3301 }, this.list()))
3302 }
3303 }]), t
3304 }(c.Component));
3305 var st = Object(v.b)((function (e) {
3306 return {
3307 fiend_loading: e.Rating.fiend_loading,
3308 friend_load_error: e.Rating.friend_load_error,
3309 friends_empty: 0 === e.Rating.friends.length
3310 }
3311 }), {
3312 setTag: ve.d,
3313 reRequest: ve.c
3314 })(ct),
3315 lt = (n(439), function (e) {
3316 function t() {
3317 return Object(O.a)(this, t), Object(w.a)(this, Object(k.a)(t).apply(this, arguments))
3318 }
3319 return Object(y.a)(t, e), Object(g.a)(t, [{
3320 key: "render",
3321 value: function () {
3322 return s.a.createElement("div", {
3323 className: "ToolBox"
3324 }, s.a.createElement(rt, null, M.a.t("tools")), s.a.createElement("div", {
3325 className: "ToolBox__list"
3326 }, s.a.createElement(J, {
3327 type: D.c,
3328 count: 4
3329 }), s.a.createElement(J, {
3330 type: D.d,
3331 count: 1
3332 }), s.a.createElement(J, {
3333 type: D.e,
3334 count: 0
3335 })))
3336 }
3337 }]), t
3338 }(c.Component));
3339 var ut = Object(v.b)((function (e) {
3340 return {}
3341 }), {})(lt),
3342 _t = (n(440), function (e) {
3343 function t() {
3344 var e, n;
3345 Object(O.a)(this, t);
3346 for (var a = arguments.length, r = new Array(a), o = 0; o < a; o++) r[o] = arguments[o];
3347 return (n = Object(w.a)(this, (e = Object(k.a)(t)).call.apply(e, [this].concat(r)))).onChangeColor = function (e) {
3348 n.props.setColor(e.target.id)
3349 }, n
3350 }
3351 return Object(y.a)(t, e), Object(g.a)(t, [{
3352 key: "color",
3353 value: function (e, t) {
3354 var n = "ColorPalette__color";
3355 return e === this.props.color && (n += " active"), (t + 1) % 5 === 0 && (n += " no-right"), t >= 20 && (n += " no-bottom"), "#FFFFFF" === e && (n += " white"), s.a.createElement("div", {
3356 key: e,
3357 onClick: this.onChangeColor,
3358 id: e,
3359 style: {
3360 backgroundColor: e
3361 },
3362 className: n
3363 })
3364 }
3365 }, {
3366 key: "confirm",
3367 value: function () {
3368 var e = this,
3369 t = this.props.selectedTool,
3370 n = M.a.t("fire");
3371 return t === D.c && (n = M.a.t("confirm_bomb")), t === D.d && (n = M.a.t("confirm_freeze")), s.a.createElement("div", {
3372 className: "ColorPalette__confirm"
3373 }, s.a.createElement(be.Button, {
3374 className: "button",
3375 onClick: function () {
3376 return e.props.drawPixel()
3377 }
3378 }, n), s.a.createElement(be.Button, {
3379 onClick: function () {
3380 return e.props.dropSelectedPixel()
3381 },
3382 type: "secondary"
3383 }, M.a.t("cancel")))
3384 }
3385 }, {
3386 key: "wait",
3387 value: function () {
3388 return s.a.createElement("div", {
3389 className: "ColorPalette__confirm gray"
3390 }, s.a.createElement("div", null, Object(D.t)(M.a.t("dot_will_alive_after")), s.a.createElement("br", null), Object(D.C)(this.props.wait)))
3391 }
3392 }, {
3393 key: "render",
3394 value: function () {
3395 var e = this,
3396 t = Object(D.i)(),
3397 n = this.props,
3398 a = n.selected,
3399 r = n.selectedTool,
3400 o = this.props.wait > 0 && r !== D.e,
3401 i = a && (!o || r);
3402 return s.a.createElement("div", {
3403 className: "ColorPalette"
3404 }, s.a.createElement(rt, null, M.a.t("pixels")), s.a.createElement("div", {
3405 className: "ColorPalette__list"
3406 }, t.map((function (t, n) {
3407 return e.color(t, n)
3408 })), o ? this.wait() : null, i ? this.confirm() : null))
3409 }
3410 }]), t
3411 }(c.Component));
3412 var dt = Object(v.b)((function (e) {
3413 return {
3414 color: e.Game.color,
3415 wait: e.Game.wait,
3416 selected: e.Game.selected,
3417 selectedTool: e.Game.selectedTool
3418 }
3419 }), {
3420 setColor: Z.r,
3421 dropSelectedPixel: Z.c,
3422 drawPixel: Z.b
3423 })(_t),
3424 pt = (n(441), n(442), function (e) {
3425 function t() {
3426 return Object(O.a)(this, t), Object(w.a)(this, Object(k.a)(t).apply(this, arguments))
3427 }
3428 return Object(y.a)(t, e), Object(g.a)(t, [{
3429 key: "render",
3430 value: function () {
3431 var e = this,
3432 t = this.props.checked;
3433 return s.a.createElement("div", {
3434 className: "CheckboxER" + (t ? " checked" : ""),
3435 onClick: function (n) {
3436 return e.props.onChange(!t)
3437 }
3438 }, s.a.createElement("div", {
3439 className: "CheckboxER__line"
3440 }), s.a.createElement("div", {
3441 className: "CheckboxER__dot"
3442 }))
3443 }
3444 }]), t
3445 }(c.Component)),
3446 mt = n(78),
3447 ht = function (e) {
3448 function t() {
3449 return Object(O.a)(this, t), Object(w.a)(this, Object(k.a)(t).apply(this, arguments))
3450 }
3451 return Object(y.a)(t, e), Object(g.a)(t, [{
3452 key: "render",
3453 value: function () {
3454 var e = this;
3455 return this.props.group ? s.a.createElement("div", {
3456 className: "DesktopLeftFooter"
3457 }, s.a.createElement("div", {
3458 className: "flex"
3459 }, s.a.createElement("span", null, M.a.t("auto_update_cover")), s.a.createElement(pt, {
3460 checked: this.props.enable,
3461 onChange: function () {
3462 return e.props.toggleEnable()
3463 }
3464 }))) : s.a.createElement("div", {
3465 className: "DesktopLeftFooter"
3466 }, s.a.createElement(be.Button, {
3467 onClick: D.g,
3468 className: "DesktopLeftFooter__button"
3469 }, M.a.t("add_to_group")))
3470 }
3471 }]), t
3472 }(c.Component);
3473 var ft = Object(v.b)((function (e) {
3474 return {
3475 group: e.Group.group,
3476 enable: e.Group.enable
3477 }
3478 }), {
3479 toggleEnable: mt.d
3480 })(ht),
3481 Et = (n(443), function (e) {
3482 function t() {
3483 return Object(O.a)(this, t), Object(w.a)(this, Object(k.a)(t).apply(this, arguments))
3484 }
3485 return Object(y.a)(t, e), Object(g.a)(t, [{
3486 key: "render",
3487 value: function () {
3488 return s.a.createElement("div", {
3489 className: "LeftPanel"
3490 }, s.a.createElement(st, null), s.a.createElement(ut, null), s.a.createElement(dt, {
3491 onRedraw: this.props.onRedraw
3492 }), s.a.createElement(ft, null))
3493 }
3494 }]), t
3495 }(c.Component));
3496 var vt = Object(v.b)((function (e) {
3497 return {}
3498 }), {})(Et),
3499 bt = (n(444), function (e) {
3500 function t(e) {
3501 var n;
3502 return Object(O.a)(this, t), (n = Object(w.a)(this, Object(k.a)(t).call(this, e))).root = null, n.dot = null, n.onMouseUp = function () {
3503 window.removeEventListener("mousemove", n.onMouseMove), window.removeEventListener("touchmove", n.onMouseMove)
3504 }, n.onMouseMove = function (e) {
3505 if (e.stopPropagation(), e.preventDefault(), e.changedTouches) {
3506 var t = e.changedTouches[0];
3507 n.setXForValue(t.clientX)
3508 } else n.setXForValue(e.clientX)
3509 }, n.timer = null, n.prevent = !1, n.onMouseUpF = function (e) {
3510 n.prevent && (e.preventDefault(), e.stopPropagation()), n.prevent = !1, clearTimeout(n.timer), clearInterval(n.timer)
3511 }, n.up = function () {
3512 var e = n.props,
3513 t = e.value,
3514 a = e.max;
3515 console.log(t), t > 32 ? n.props.onChange(Math.min(t + 4, a)) : t > 12 ? n.props.onChange(Math.min(t + 2, a)) : n.props.onChange(Math.min(t + 1, a))
3516 }, n.down = function () {
3517 var e = n.props,
3518 t = e.value,
3519 a = e.min;
3520 t > 32 ? n.props.onChange(Math.max(t - 4, a)) : t > 12 ? n.props.onChange(Math.max(t - 2, a)) : n.props.onChange(Math.max(t - 1, a))
3521 }, window.addEventListener("mouseup", n.onMouseUp), window.addEventListener("touchend", n.onMouseUp), window.addEventListener("touchcancel", n.onMouseUp), n
3522 }
3523 return Object(y.a)(t, e), Object(g.a)(t, [{
3524 key: "componentWillUnmount",
3525 value: function () {
3526 window.removeEventListener("mouseup", this.onMouseUp), window.removeEventListener("touchend", this.onMouseUp), window.removeEventListener("touchcancel", this.onMouseUp)
3527 }
3528 }, {
3529 key: "onMouseDown",
3530 value: function () {
3531 window.addEventListener("mousemove", this.onMouseMove), window.addEventListener("touchmove", this.onMouseMove)
3532 }
3533 }, {
3534 key: "componentDidMount",
3535 value: function () {
3536 var e = this;
3537 this.dot.addEventListener("touchstart", (function (t) {
3538 e.onMouseDown(t)
3539 }))
3540 }
3541 }, {
3542 key: "onClick",
3543 value: function (e) {
3544 this.setXForValue(e.clientX)
3545 }
3546 }, {
3547 key: "setXForValue",
3548 value: function (e) {
3549 var t = e - this.getPosition(this.root).x,
3550 n = this.root.clientWidth,
3551 a = Math.min(1, Math.max(0, t / n)),
3552 r = this.props,
3553 o = r.max,
3554 i = r.min,
3555 c = (o - i) * a + i;
3556 this.props.onChange(c)
3557 }
3558 }, {
3559 key: "getPosition",
3560 value: function (e) {
3561 for (var t = 0, n = 0; e;) {
3562 if ("BODY" === e.tagName) {
3563 var a = e.scrollLeft || document.documentElement.scrollLeft,
3564 r = e.scrollTop || document.documentElement.scrollTop;
3565 t += e.offsetLeft - a + e.clientLeft, n += e.offsetTop - r + e.clientTop
3566 } else t += e.offsetLeft - e.scrollLeft + e.clientLeft, n += e.offsetTop - e.scrollTop + e.clientTop;
3567 e = e.offsetParent
3568 }
3569 return {
3570 x: t,
3571 y: n
3572 }
3573 }
3574 }, {
3575 key: "onMouseDownF",
3576 value: function (e) {
3577 var t = this;
3578 this.timer = setTimeout((function () {
3579 t.timer = setInterval(e, 200), t.prevent = !0
3580 }), 500)
3581 }
3582 }, {
3583 key: "render",
3584 value: function () {
3585 var e = this,
3586 t = this.props,
3587 n = t.value,
3588 a = t.max,
3589 r = t.min,
3590 o = Math.abs(a - r),
3591 i = Math.min(100, Math.max(0, n / o * 100));
3592 return s.a.createElement("div", {
3593 className: "DesktopSlider"
3594 }, s.a.createElement("div", {
3595 className: "DesktopSlider__minus",
3596 onMouseDown: function () {
3597 return e.onMouseDownF(e.down)
3598 },
3599 onMouseUp: this.onMouseUpF,
3600 onClick: this.down
3601 }, s.a.createElement("svg", {
3602 width: "14",
3603 height: "3",
3604 xmlns: "http://www.w3.org/2000/svg"
3605 }, s.a.createElement("path", {
3606 d: "M12.667.75h-11a.917.917 0 0 0 0 1.833h11a.917.917 0 1 0 0-1.833z",
3607 fillRule: "nonzero"
3608 }))), s.a.createElement("div", {
3609 className: "DesktopSlider__box"
3610 }, s.a.createElement("div", {
3611 className: "DesktopSlider__inner",
3612 onClick: function (t) {
3613 return e.onClick(t)
3614 },
3615 ref: function (t) {
3616 return e.root = t
3617 }
3618 }, s.a.createElement("div", {
3619 className: "DesktopSlider__line"
3620 }), s.a.createElement("div", {
3621 style: {
3622 width: i + "%"
3623 },
3624 className: "DesktopSlider__blue"
3625 }), s.a.createElement("div", {
3626 style: {
3627 left: i + "%"
3628 },
3629 onMouseDown: function (t) {
3630 return e.onMouseDown(t)
3631 },
3632 ref: function (t) {
3633 return e.dot = t
3634 },
3635 className: "DesktopSlider__dot"
3636 }))), s.a.createElement("div", {
3637 className: "DesktopSlider__plus",
3638 onMouseDown: function () {
3639 return e.onMouseDownF(e.up)
3640 },
3641 onMouseUp: this.onMouseUpF,
3642 onClick: this.up
3643 }, s.a.createElement("svg", {
3644 width: "13",
3645 height: "13",
3646 xmlns: "http://www.w3.org/2000/svg"
3647 }, s.a.createElement("path", {
3648 d: "M7.333 5.5h4.584a.917.917 0 0 1 0 1.833H7.333v4.584a.917.917 0 1 1-1.833 0V7.333H.917a.917.917 0 1 1 0-1.833H5.5V.917a.917.917 0 1 1 1.833 0V5.5z",
3649 fillRule: "nonzero"
3650 }))))
3651 }
3652 }]), t
3653 }(c.Component));
3654 var Ot = Object(v.b)((function (e) {
3655 return {}
3656 }), {})(bt),
3657 gt = (n(445), function (e) {
3658 function t() {
3659 return Object(O.a)(this, t), Object(w.a)(this, Object(k.a)(t).apply(this, arguments))
3660 }
3661 return Object(y.a)(t, e), Object(g.a)(t, [{
3662 key: "render",
3663 value: function () {
3664 var e = "admin" === m.a.getStartParams().viewerGroupRole,
3665 t = this.props.joinChatLink;
3666 return t ? s.a.createElement("div", {
3667 className: "DesktopExLink"
3668 }, s.a.createElement("a", {
3669 href: t,
3670 target: "_blank",
3671 className: "DesktopExLink__link"
3672 }, s.a.createElement("span", {
3673 className: "icon"
3674 }, s.a.createElement("svg", {
3675 width: "20",
3676 height: "18",
3677 xmlns: "http://www.w3.org/2000/svg"
3678 }, s.a.createElement("g", {
3679 fill: "none",
3680 fillRule: "evenodd"
3681 }, s.a.createElement("path", {
3682 opacity: ".04",
3683 d: "M-1-2h22v22H-1z"
3684 }), s.a.createElement("path", {
3685 d: "M6.07 14.685a.825.825 0 0 1 .918-.237c.94.352 1.96.537 3.012.537 4.127 0 7.425-2.828 7.425-6.247 0-3.42-3.298-6.246-7.425-6.246S2.575 5.319 2.575 8.738c0 1.176.388 2.305 1.113 3.287a.825.825 0 0 1 .161.493c-.003.819-.345 1.997-1.021 3.59 1.516-.17 2.586-.653 3.242-1.423zm-3.963 3.129a1.166 1.166 0 0 1-1.103-1.657c.706-1.563 1.097-2.716 1.179-3.402C1.366 11.552.925 10.174.925 8.738.925 4.346 5.014.842 10 .842c4.986 0 9.075 3.504 9.075 7.896 0 4.392-4.089 7.897-9.075 7.897-1.06 0-2.097-.159-3.073-.464-1.109 1.023-2.728 1.56-4.82 1.643z",
3686 fill: "#528BCC",
3687 fillRule: "nonzero"
3688 })))), M.a.t("go_to_chat")), e ? s.a.createElement("div", {
3689 onClick: function () {
3690 return window.dispatchEvent(new Event("open_chat_settings"))
3691 },
3692 className: "DesktopExLink__button"
3693 }, s.a.createElement(H.a, {
3694 width: 19,
3695 height: 19
3696 })) : null) : e ? s.a.createElement("div", {
3697 className: "DesktopExLink"
3698 }, s.a.createElement("div", {
3699 onClick: function () {
3700 return window.dispatchEvent(new Event("open_chat_settings"))
3701 },
3702 className: "DesktopExLink__link"
3703 }, s.a.createElement("span", {
3704 className: "icon"
3705 }, s.a.createElement("svg", {
3706 width: "20",
3707 height: "18",
3708 xmlns: "http://www.w3.org/2000/svg"
3709 }, s.a.createElement("g", {
3710 fill: "none",
3711 fillRule: "evenodd"
3712 }, s.a.createElement("path", {
3713 opacity: ".04",
3714 d: "M-1-2h22v22H-1z"
3715 }), s.a.createElement("path", {
3716 d: "M6.07 14.685a.825.825 0 0 1 .918-.237c.94.352 1.96.537 3.012.537 4.127 0 7.425-2.828 7.425-6.247 0-3.42-3.298-6.246-7.425-6.246S2.575 5.319 2.575 8.738c0 1.176.388 2.305 1.113 3.287a.825.825 0 0 1 .161.493c-.003.819-.345 1.997-1.021 3.59 1.516-.17 2.586-.653 3.242-1.423zm-3.963 3.129a1.166 1.166 0 0 1-1.103-1.657c.706-1.563 1.097-2.716 1.179-3.402C1.366 11.552.925 10.174.925 8.738.925 4.346 5.014.842 10 .842c4.986 0 9.075 3.504 9.075 7.896 0 4.392-4.089 7.897-9.075 7.897-1.06 0-2.097-.159-3.073-.464-1.109 1.023-2.728 1.56-4.82 1.643z",
3717 fill: "#528BCC",
3718 fillRule: "nonzero"
3719 })))), M.a.t("add_chat"))) : null
3720 }
3721 }]), t
3722 }(c.Component));
3723 var wt = Object(v.b)((function (e) {
3724 return {
3725 joinChatLink: e.Game.joinChatLink
3726 }
3727 }), {})(gt),
3728 kt = (n(446), function (e) {
3729 function t() {
3730 return Object(O.a)(this, t), Object(w.a)(this, Object(k.a)(t).apply(this, arguments))
3731 }
3732 return Object(y.a)(t, e), Object(g.a)(t, [{
3733 key: "render",
3734 value: function () {
3735 var e = this.props,
3736 t = e.x,
3737 n = e.y;
3738 return s.a.createElement("div", {
3739 onClick: function () {
3740 return Object(D.z)(null, t + "x" + n)
3741 },
3742 title: M.a.t("cursor_title"),
3743 className: "DesktopCursor__cords"
3744 }, t, ",", n)
3745 }
3746 }]), t
3747 }(c.Component));
3748 var yt = Object(v.b)((function (e) {
3749 return {
3750 x: e.Game.cursorX,
3751 y: e.Game.cursorY
3752 }
3753 }), {})(kt),
3754 Pt = (n(447), n(448), function (e) {
3755 function t() {
3756 return Object(O.a)(this, t), Object(w.a)(this, Object(k.a)(t).apply(this, arguments))
3757 }
3758 return Object(y.a)(t, e), Object(g.a)(t, [{
3759 key: "onChoose",
3760 value: function (e) {
3761 this.props.activePage !== e && this.props.setPage(e)
3762 }
3763 }, {
3764 key: "buildMenuItem",
3765 value: function (e, t, n) {
3766 var a = this,
3767 r = ["item"];
3768 return n && r.push("active"), r = r.join(" "), s.a.createElement("div", {
3769 className: r,
3770 key: t,
3771 onClick: function () {
3772 a.onChoose(e)
3773 }
3774 }, s.a.createElement("span", null, this.props.lang(e)))
3775 }
3776 }, {
3777 key: "render",
3778 value: function () {
3779 var e = this,
3780 t = this.props.activePage,
3781 n = this.props.left.map((function (n, a) {
3782 return e.buildMenuItem(n, a, t === n)
3783 })),
3784 a = this.props.right.map((function (n, a) {
3785 return e.buildMenuItem(n, a, t === n)
3786 }));
3787 return s.a.createElement("div", {
3788 className: "Menu"
3789 }, s.a.createElement("div", {
3790 className: "Menu__splitter"
3791 }, s.a.createElement("div", {
3792 className: "left"
3793 }, n), s.a.createElement("div", {
3794 className: "right"
3795 }, a)))
3796 }
3797 }]), t
3798 }(c.Component));
3799
3800 function Mt(e) {
3801 return {
3802 backgroundImage: "url(".concat(e, ")")
3803 }
3804 }
3805 Pt.defaultProps = {
3806 left: [],
3807 right: [],
3808 setPage: function () {},
3809 activePage: null,
3810 lang: function (e) {
3811 return e
3812 }
3813 };
3814 var Dt = function (e) {
3815 function t() {
3816 var e, n;
3817 Object(O.a)(this, t);
3818 for (var a = arguments.length, r = new Array(a), o = 0; o < a; o++) r[o] = arguments[o];
3819 return (n = Object(w.a)(this, (e = Object(k.a)(t)).call.apply(e, [this].concat(r)))).setPage = function (e) {
3820 n.props.setTag(e)
3821 }, n.item = function (e, t) {
3822 var n = e.id,
3823 a = e.photo,
3824 r = e.name,
3825 o = e.url;
3826 return "0" === (n || "").toString() && (r = M.a.t("free"), o = void 0, a = "https://vk.com/images/camera_100.png"), s.a.createElement("a", {
3827 href: o,
3828 target: "_blank",
3829 rel: "noopener noreferrer",
3830 className: "DesktopTopList__item",
3831 key: t
3832 }, s.a.createElement("div", {
3833 className: "DesktopTopList__place"
3834 }, t + 1), s.a.createElement("div", {
3835 className: "DesktopTopList__photo",
3836 style: Mt(a)
3837 }), s.a.createElement("div", {
3838 className: "DesktopTopList__name"
3839 }, r), s.a.createElement("div", {
3840 className: "DesktopTopList__score"
3841 }, Object(D.w)(e.score)))
3842 }, n
3843 }
3844 return Object(y.a)(t, e), Object(g.a)(t, [{
3845 key: "list",
3846 value: function () {
3847 var e = this,
3848 t = this.props.list;
3849 if (0 === t.length) {
3850 if (this.props.tag === Ee.b) {
3851 var n = this.props.friend_load_error;
3852 return this.props.friend_load_error ? s.a.createElement("div", {
3853 className: "DesktopTopList__empty"
3854 }, s.a.createElement("div", null, M.a.t("user_reject" === n ? "user_reject" : "friend_load_error", {
3855 text: n
3856 }), s.a.createElement("br", null), s.a.createElement("br", null), s.a.createElement(be.Button, {
3857 type: "secondary",
3858 onClick: function () {
3859 return e.props.reRequest()
3860 }
3861 }, M.a.t("retry")))) : s.a.createElement("div", {
3862 className: "DesktopTopList__empty"
3863 }, M.a.t("no_fiends"))
3864 }
3865 return s.a.createElement("div", {
3866 className: "DesktopTopList__empty"
3867 }, M.a.t("top_not_ready"))
3868 }
3869 return t.map(this.item)
3870 }
3871 }, {
3872 key: "render",
3873 value: function () {
3874 var e = this.props.tag;
3875 return s.a.createElement("div", {
3876 className: "DesktopTopList"
3877 }, s.a.createElement("div", {
3878 className: "DesktopTopList__header"
3879 }, M.a.t("top")), s.a.createElement(Pt, {
3880 left: [Ee.c, Ee.b, Ee.a],
3881 setPage: this.setPage,
3882 lang: function (e) {
3883 return M.a.t("top_menu_item_".concat(e))
3884 },
3885 activePage: e
3886 }), s.a.createElement("div", {
3887 className: "DesktopTopList__list"
3888 }, this.list()))
3889 }
3890 }]), t
3891 }(c.Component);
3892 var Ct = Object(v.b)((function (e) {
3893 var t;
3894 return {
3895 tag: e.Rating.tag,
3896 list: (t = {}, Object(i.a)(t, Ee.c, e.Rating.group), Object(i.a)(t, Ee.a, e.Rating.user), Object(i.a)(t, Ee.b, e.Rating.friends), t)[e.Rating.tag],
3897 friend_load_error: e.Rating.friend_load_error
3898 }
3899 }), {
3900 setTag: ve.d,
3901 reRequest: ve.c
3902 })(Dt),
3903 jt = (n(449), "MODAL_TOOL"),
3904 xt = "MODAL_HELP_TOOL",
3905 Tt = "MODAL_TOP",
3906 At = "MODAL_GIFT",
3907 Lt = "MODAL_GIFT_LINK",
3908 It = "MODAL_CHAT_SETTINGS";
3909
3910 function Rt(e) {
3911 e.stopPropagation()
3912 }
3913
3914 function Bt(e) {
3915 var t = e.onClick;
3916 return s.a.createElement("div", {
3917 onClick: t,
3918 className: "DesktopModalRoot__close"
3919 }, s.a.createElement("svg", {
3920 width: "12",
3921 height: "12",
3922 xmlns: "http://www.w3.org/2000/svg"
3923 }, s.a.createElement("g", {
3924 fill: "none",
3925 fillRule: "evenodd",
3926 opacity: ".5"
3927 }, s.a.createElement("path", {
3928 d: "M-6-6h24v24H-6z"
3929 }), s.a.createElement("path", {
3930 d: "M1 1l10 10M11 1L1 11",
3931 stroke: "#828A99",
3932 strokeWidth: "2",
3933 strokeLinecap: "round",
3934 strokeLinejoin: "round"
3935 }))))
3936 }
3937 var St = function (e) {
3938 function t() {
3939 var e, n;
3940 Object(O.a)(this, t);
3941 for (var a = arguments.length, r = new Array(a), o = 0; o < a; o++) r[o] = arguments[o];
3942 return (n = Object(w.a)(this, (e = Object(k.a)(t)).call.apply(e, [this].concat(r)))).state = {
3943 activeModal: null,
3944 tool: null
3945 }, n.openChatSettings = function () {
3946 n.modalPush(It, {
3947 url: n.props.joinChatLink
3948 })
3949 }, n.giftLink = function (e) {
3950 n.modalPush(Lt, {
3951 link: e.link
3952 })
3953 }, n.createGift = function (e) {
3954 n.modalPush(At, {
3955 tool: e.tool
3956 })
3957 }, n.openTop = function () {
3958 n.modalPush(Tt)
3959 }, n.newTool = function (e) {
3960 var t = e.tool;
3961 n.modalPush(jt, {
3962 tool: t
3963 })
3964 }, n.helpTool = function (e) {
3965 var t = e.tool;
3966 n.modalPush(xt, {
3967 tool: t
3968 })
3969 }, n.modalBack = function () {
3970 n.setState({
3971 activeModal: null
3972 });
3973 try {
3974 window.history.back()
3975 } catch (e) {
3976 Object(D.k)(e)
3977 }
3978 }, n.modalPush = function (e) {
3979 var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;
3980 if (n.state.activeModal) t ? n.setState(Object.assign({
3981 activeModal: e
3982 }, t)) : n.setState({
3983 activeModal: e
3984 });
3985 else {
3986 try {
3987 window.history.pushState({
3988 modal: e
3989 }, e, "#" + e)
3990 } catch (a) {
3991 Object(D.k)(a)
3992 }
3993 t ? n.setState(Object.assign({
3994 activeModal: e
3995 }, t)) : n.setState({
3996 activeModal: e
3997 })
3998 }
3999 }, n.onPopState = function (e) {
4000 n.setState({
4001 activeModal: null
4002 })
4003 }, n.new = function () {
4004 var e = n.state.tool;
4005 return s.a.createElement("div", {
4006 className: "DesktopModalRoot__center"
4007 }, s.a.createElement("div", {
4008 className: "DesktopModalRoot__icon"
4009 }, s.a.createElement(J, {
4010 disable: !0,
4011 type: e
4012 })), s.a.createElement("div", {
4013 className: "DesktopModalRoot__header"
4014 }, M.a.t("you_found_" + e)), s.a.createElement("div", {
4015 className: "DesktopModalRoot__description"
4016 }, M.a.t("you_found_" + e + "_description")), s.a.createElement(be.Button, {
4017 onClick: n.modalBack
4018 }, M.a.t("next")))
4019 }, n.help = function () {
4020 var e = n.state.tool;
4021 return s.a.createElement("div", {
4022 className: "DesktopModalRoot__center"
4023 }, s.a.createElement("div", {
4024 className: "DesktopModalRoot__icon"
4025 }, s.a.createElement(J, {
4026 disable: !0,
4027 type: e
4028 })), s.a.createElement("div", {
4029 className: "DesktopModalRoot__header"
4030 }, M.a.t("it_is_" + e)), s.a.createElement("div", {
4031 className: "DesktopModalRoot__description"
4032 }, M.a.t("it_is_" + e + "_description")), s.a.createElement(be.Button, {
4033 onClick: n.modalBack
4034 }, M.a.t("next")))
4035 }, n.top = function () {
4036 return s.a.createElement(Ct, null)
4037 }, n.gift = function () {
4038 var e = n.state.tool;
4039 return s.a.createElement("div", {
4040 className: "DesktopModalRoot__center"
4041 }, s.a.createElement("div", {
4042 className: "DesktopModalRoot__icon"
4043 }, s.a.createElement(J, {
4044 disable: !0,
4045 type: e
4046 })), s.a.createElement("div", {
4047 className: "DesktopModalRoot__header"
4048 }, M.a.t("send_gift_" + e)), s.a.createElement("div", {
4049 className: "DesktopModalRoot__description"
4050 }, M.a.t("send_gift_description")), s.a.createElement(be.Button, {
4051 onClick: function () {
4052 n.modalBack(), n.props.channel.sendDebug(e.substr(0, 1))
4053 }
4054 }, M.a.t("create_link")))
4055 }, n.giftLinkView = function () {
4056 return s.a.createElement("div", {
4057 className: "DesktopModalRoot__center"
4058 }, s.a.createElement("div", {
4059 className: "DesktopModalRoot__icon"
4060 }, s.a.createElement(G.a, null)), s.a.createElement("div", {
4061 className: "DesktopModalRoot__header"
4062 }, M.a.t("gift")), s.a.createElement("div", {
4063 className: "DesktopModalRoot__description"
4064 }, M.a.t("this_is_link_for_gift")), s.a.createElement(be.Input, {
4065 value: n.state.link.replace("https://", ""),
4066 onFocus: function (e) {
4067 return e.target.select()
4068 },
4069 onChange: function () {}
4070 }), s.a.createElement("br", null), s.a.createElement(be.Button, {
4071 onClick: function () {
4072 return Object(D.z)(n.state.link)
4073 }
4074 }, M.a.t("send")))
4075 }, n.chatSettings = function () {
4076 return s.a.createElement("div", {
4077 className: "DesktopModalRoot__center"
4078 }, s.a.createElement("div", {
4079 className: "DesktopModalRoot__icon"
4080 }, s.a.createElement(X.a, {
4081 width: 56,
4082 height: 56
4083 })), s.a.createElement("div", {
4084 className: "DesktopModalRoot__header"
4085 }, M.a.t("do_add_chat")), s.a.createElement("div", {
4086 className: "DesktopModalRoot__description"
4087 }, M.a.t("add_chat_description")), n.props.joinChatLinkError ? s.a.createElement("div", {
4088 className: "DesktopModalRoot__error"
4089 }, n.props.joinChatLinkError) : null, s.a.createElement(be.Input, {
4090 value: n.state.url,
4091 onFocus: function (e) {
4092 return e.target.select()
4093 },
4094 onChange: function (e) {
4095 return n.setState({
4096 url: e.target.value
4097 })
4098 }
4099 }), s.a.createElement("br", null), s.a.createElement(be.Button, {
4100 className: "right-padding",
4101 onClick: function () {
4102 return n.props.saveGroupChatLink(n.state.url, n.modalBack)
4103 }
4104 }, M.a.t("add_chat")), s.a.createElement(be.Button, {
4105 type: "secondary",
4106 onClick: n.modalBack
4107 }, M.a.t("cancel")))
4108 }, n
4109 }
4110 return Object(y.a)(t, e), Object(g.a)(t, [{
4111 key: "componentWillMount",
4112 value: function () {
4113 window.addEventListener("popstate", this.onPopState), window.addEventListener("new_tool", this.newTool), window.addEventListener("help_tool", this.helpTool), window.addEventListener("open_rating", this.openTop), window.addEventListener("create_gift", this.createGift), window.addEventListener("gift_link", this.giftLink), window.addEventListener("open_chat_settings", this.openChatSettings)
4114 }
4115 }, {
4116 key: "componentWillUnmount",
4117 value: function () {
4118 window.removeEventListener("popstate", this.onPopState), window.removeEventListener("new_tool", this.newTool), window.removeEventListener("help_tool", this.helpTool), window.removeEventListener("open_rating", this.openTop), window.removeEventListener("create_gift", this.createGift), window.removeEventListener("gift_link", this.giftLink), window.removeEventListener("open_chat_settings", this.openChatSettings)
4119 }
4120 }, {
4121 key: "content",
4122 value: function () {
4123 var e, t = (e = {}, Object(i.a)(e, jt, this.new), Object(i.a)(e, xt, this.help), Object(i.a)(e, Tt, this.top), Object(i.a)(e, At, this.gift), Object(i.a)(e, Lt, this.giftLinkView), Object(i.a)(e, It, this.chatSettings), e);
4124 if (t[this.state.activeModal]) return t[this.state.activeModal]()
4125 }
4126 }, {
4127 key: "render",
4128 value: function () {
4129 return null === this.state.activeModal ? null : s.a.createElement("div", {
4130 onClick: this.modalBack,
4131 className: "DesktopModalRoot"
4132 }, s.a.createElement("div", {
4133 className: "DesktopModalRoot__window",
4134 onClick: Rt
4135 }, s.a.createElement(Bt, {
4136 onClick: this.modalBack
4137 }), this.content()))
4138 }
4139 }]), t
4140 }(c.Component);
4141 var Nt = Object(v.b)((function (e) {
4142 return {
4143 channel: e.Game.channel,
4144 joinChatLink: e.Game.joinChatLink,
4145 joinChatLinkError: e.Game.joinChatLinkError
4146 }
4147 }), {
4148 saveGroupChatLink: Z.n
4149 })(St);
4150 n(450);
4151
4152 function Ft() {
4153 document.fullscreenElement ? document.exitFullscreen && document.exitFullscreen() : document.documentElement.requestFullscreen()
4154 }
4155 var Ut = 660,
4156 Wt = 1500,
4157 zt = function (e) {
4158 function t(e, n) {
4159 var a;
4160 Object(O.a)(this, t), (a = Object(w.a)(this, Object(k.a)(t).call(this, e, n))).canvas = null, a.ctx = null, a.x = 0, a.y = 0, a.mousePressed = !1, a.w = D.b, a.h = D.a, a.frameW = 1e3, a.frameH = 692, a.original = null, a.topPadding = 250, a.leftPadding = 100, a.rightPadding = 300, a.bottomPadding = 250, a.minZoom = 1, a.maxZoom = 50, a.state = {
4161 zoom: 10,
4162 zoomR: 10,
4163 pointX: 0,
4164 pointY: 0
4165 }, a.onMouseDown = function (e) {
4166 a.mousePressed = !0, a.startX = e.clientX, a.startY = e.clientY, a.startOriginX = a.x, a.startOriginY = a.y, a.lockClick = !1, a.startDragAt = Date.now(), a.startMoveAt = Date.now(), a.props.root ? a.catchDraw = e.shiftKey : a.catchDraw = !1, cancelAnimationFrame(a.impulce)
4167 }, a.onMouseUp = function (e) {
4168 if (a.mousePressed = !1, a.lastPointClickX = null, a.lastPointClickY = null, a.catchDraw = !1, a.startDragAt && a.startMoveAt) {
4169 var t = e.clientX,
4170 n = e.clientY,
4171 r = Date.now() - a.startDragAt;
4172 if (a.startDragAt = 0, r <= 1) return;
4173 if (Date.now() - a.startMoveAt >= 50) return;
4174 var o = (t - a.startX) / r,
4175 i = (n - a.startY) / r;
4176 a.impylseX = Math.round(20 * o), a.impylseY = Math.round(20 * i), cancelAnimationFrame(a.impulce), (Math.abs(a.impylseY) > 1 || Math.abs(a.impylseX) > 1) && (a.impulce = requestAnimationFrame((function () {
4177 return a.inertiaMove()
4178 })))
4179 }
4180 }, a.inertiaMove = function () {
4181 a.x += a.impylseX, a.y += a.impylseY;
4182 var e = !1;
4183 a.x > a.leftPadding && (a.x = a.leftPadding, e = !0), a.x < D.b * a.state.zoom * -1 + a.frameW - a.rightPadding && (a.x = D.b * a.state.zoom * -1 + a.frameW - a.rightPadding, e = !0), a.y > a.topPadding && (a.y = a.topPadding, e = !0), a.y < D.a * a.state.zoom * -1 + a.frameH - a.bottomPadding && (a.y = D.a * a.state.zoom * -1 + a.frameH - a.bottomPadding, e = !0), a.afterRender(), a.setState({
4184 now: Date.now()
4185 }), e || (a.impylseY = a.impylseY / 1.1, a.impylseX = a.impylseX / 1.1, a.impylseX = a.impylseX > 0 ? Math.floor(a.impylseX) : Math.ceil(a.impylseX), a.impylseY = a.impylseY > 0 ? Math.floor(a.impylseY) : Math.ceil(a.impylseY), (Math.abs(a.impylseY) > 1 || Math.abs(a.impylseX) > 1) && (cancelAnimationFrame(a.impulce), a.impulce = requestAnimationFrame((function () {
4186 return a.inertiaMove()
4187 }))))
4188 }, a.onMouseMove = function (e) {
4189 var t = a.getPointInOrigin(e);
4190 if (a.mousePressed) {
4191 if (a.catchDraw) {
4192 if (null === a.lastPointClickX || null === a.lastPointClickY) return a.props.setSelectedPixel(t.cx, t.cy, !0), a.lastPointClickX = t.cx, a.lastPointClickY = t.cy, void(a.lockClick = !0);
4193 if (Math.abs(a.lastPointClickX - t.cx) <= 1 || Math.abs(a.lastPointClickY - t.cy) <= 1) return a.lastPointClickX === t.cx && a.lastPointClickY === t.cy || (a.props.setSelectedPixel(t.cx, t.cy, !0), a.lastPointClickX = t.cx, a.lastPointClickY = t.cy), void(a.lockClick = !0);
4194 a.startMoveAt = 0
4195 }
4196 var n = e.clientX - a.startX,
4197 r = e.clientY - a.startY;
4198 if (n !== a.x || r !== a.y) {
4199 var o = a.h * a.state.zoom,
4200 i = a.w * a.state.zoom,
4201 c = n + a.startOriginX,
4202 s = r + a.startOriginY,
4203 l = a.frameH - (o + s),
4204 u = a.frameW - (i + c);
4205 if (l > 0 || s > 0) {
4206 var _ = s > 0 && (s > a.topPadding && s <= a.y || s < a.topPadding) || s < 0,
4207 d = l > 0 && (l > a.bottomPadding && s >= a.y || !(l > a.bottomPadding)) || l < 0;
4208 _ && d ? a.y = s : (l > 0 && l > a.bottomPadding && s < a.y && (a.y = a.frameH - o - a.bottomPadding), s > 0 && s > a.bottomPadding && s > a.y && (a.y = a.topPadding))
4209 } else a.y = s;
4210 if (c > 0 || u > 0) {
4211 var p = c > 0 && (c > a.leftPadding && c <= a.x || c < a.leftPadding);
4212 p = p || c < 0;
4213 var m = u > 0 && (u > a.rightPadding && c >= a.x || u < a.rightPadding);
4214 m = m || u < 0, p && m ? a.x = c : (c > 0 && c > a.leftPadding && c > a.x && (a.x = a.leftPadding), u > 0 && u > a.rightPadding && c < a.x && (a.x = a.frameW - i - a.rightPadding))
4215 } else a.x = c;
4216 Object(D.f)(e.clientX - a.startX) + Object(D.f)(e.clientY - a.startY) > 10 && (a.lockClick = !0), a.setState({
4217 x: a.x,
4218 y: a.y
4219 }), a.startMoveAt = Date.now()
4220 }
4221 } else a.props.setCursorPos(t.cx, t.cy, !0)
4222 }, a.onClick = function (e) {
4223 if (!a.lockClick) {
4224 var t = a.getPointInOrigin(e);
4225 a.props.setSelectedPixel(t.cx, t.cy, !0)
4226 }
4227 }, a.catchHref = function (e) {
4228 a.canvas !== e && (a.canvas = e, a.canvas ? (a.ctx = a.canvas.getContext("2d"), a.ctx.mozImageSmoothingEnabled = !1, a.ctx.webkitImageSmoothingEnabled = !1, a.ctx.msImageSmoothingEnabled = !1, a.ctx.imageSmoothingEnabled = !1, a.ctx.fillStyle = "#BCBCBC", a.ctx.save(), a.afterRender(), a.canvas.addEventListener("mousewheel", (function (e) {
4229 e.stopPropagation(), e.preventDefault();
4230 var t = -1 * e.deltaY / 50,
4231 n = a.state.zoomR + t;
4232 (n = Object(D.h)(a.minZoom, n, a.maxZoom)) !== a.state.zoomR && (a.setZoomForPoint(n, e.clientX, e.clientY), cancelAnimationFrame(a.impulce))
4233 }))) : a.ctx = null)
4234 }, a.afterRender = function () {
4235 a.ctx && Object(D.s)(a.ctx, a.frameW, a.frameH, a.props.image, Math.round(a.x), Math.round(a.y), a.state.zoom, a.props.channel)
4236 }, a.fullScreenChange = function (e) {
4237 a.frameW = window.innerWidth, a.frameH = window.innerHeight, a.setState({
4238 null: 1
4239 }, (function () {
4240 requestAnimationFrame((function () {
4241 a.setState({
4242 null: 0
4243 })
4244 }))
4245 }))
4246 }, a.scrollTo = function (e) {
4247 var t = e.x,
4248 n = e.y,
4249 r = a.state.zoom;
4250 a.x = r * t * -1 + a.frameW / 2, a.y = r * n * -1 + a.frameH / 2, a.afterRender()
4251 }, a.exploreTimer = null, a.onExplore = function () {
4252 a.canvas && !a.exploreTimer && (a.canvas.classList.add("explore"), a.exploreTimer = setTimeout((function () {
4253 a.exploreTimer = null, a.canvas.classList.remove("explore")
4254 }), 150))
4255 }, a.y = -1 * Math.round(Math.random() * (a.h * a.state.zoom - a.frameH)), a.x = -1 * Math.round(Math.random() * (a.w * a.state.zoom - a.frameW));
4256 var r = window.location.hash.toString().replace("#", "");
4257 if (r.length >= 3 && r.length <= 8 && -1 !== r.indexOf("x")) {
4258 var o = r.split("x"),
4259 i = Object(b.a)(o, 2),
4260 c = i[0],
4261 s = i[1];
4262 if (void 0 !== s) {
4263 c = Object(D.h)(0, c, D.b), s = Object(D.h)(0, s, D.a);
4264 var l = c * a.state.zoom;
4265 a.x = -l + Math.round((a.frameW - 220) / 2);
4266 var u = s * a.state.zoom;
4267 a.y = -u + Math.round(a.frameH / 2)
4268 }
4269 }
4270 return a.frameW = window.innerWidth, a.frameH = window.innerHeight, a
4271 }
4272 return Object(y.a)(t, e), Object(g.a)(t, [{
4273 key: "getPointInOrigin",
4274 value: function (e) {
4275 var t = (e.clientX - this.x) / (this.w * this.state.zoom),
4276 n = (e.clientY - this.y) / (this.h * this.state.zoom);
4277 return {
4278 cx: Math.min(this.w - 1, Math.max(0, Math.round(this.w * t - .5))),
4279 cy: Math.min(this.h - 1, Math.max(0, Math.round(this.h * n - .5)))
4280 }
4281 }
4282 }, {
4283 key: "setZoomForPoint",
4284 value: function (e, t, n) {
4285 var a = Math.round(e),
4286 r = a * this.w,
4287 o = a * this.h,
4288 i = this.state.zoom * this.w,
4289 c = this.state.zoom * this.h,
4290 s = (t - this.x) / (this.w * this.state.zoom),
4291 l = (n - this.y) / (this.h * this.state.zoom);
4292 r > i ? this.x -= (r - i) * s : this.x += (i - r) * s, o > c ? this.y -= (o - c) * l : this.y += (c - o) * l, this.setState({
4293 zoom: a,
4294 zoomR: e
4295 })
4296 }
4297 }, {
4298 key: "componentDidMount",
4299 value: function () {
4300 this.afterRender(), window.addEventListener("mouseup", this.onMouseUp), window.addEventListener("redraw", this.afterRender), window.addEventListener("explore", this.onExplore), window.addEventListener("scrollTo", this.scrollTo), window.addEventListener("fullscreenchange", this.fullScreenChange)
4301 }
4302 }, {
4303 key: "componentWillUnmount",
4304 value: function () {
4305 window.removeEventListener("mouseup", this.onMouseUp), window.removeEventListener("redraw", this.afterRender), window.removeEventListener("explore", this.onExplore), window.removeEventListener("scrollTo", this.scrollTo), window.removeEventListener("fullscreenchange", this.fullScreenChange)
4306 }
4307 }, {
4308 key: "componentDidUpdate",
4309 value: function () {
4310 this.afterRender()
4311 }
4312 }, {
4313 key: "render",
4314 value: function () {
4315 var e = this,
4316 t = this.props.fatal;
4317 if (t) return s.a.createElement(nt, {
4318 error: t,
4319 onClose: function () {
4320 return e.props.removeFatalError()
4321 }
4322 });
4323 if (this.state.null) return s.a.createElement("div", null);
4324 var n = this.props;
4325 n.debug;
4326 return n.duplicateConnect ? s.a.createElement(ye, null) : s.a.createElement("div", {
4327 className: "DesktopContainer"
4328 }, s.a.createElement("canvas", {
4329 onMouseDown: this.onMouseDown,
4330 onMouseUp: this.onMouseUp,
4331 onMouseMove: this.onMouseMove,
4332 onClick: this.onClick,
4333 width: this.frameW,
4334 height: this.frameH,
4335 className: "drawer",
4336 ref: this.catchHref
4337 }), s.a.createElement(vt, {
4338 onRedraw: function () {
4339 return e.afterRender()
4340 }
4341 }), s.a.createElement(Ot, {
4342 value: this.state.zoom,
4343 min: this.minZoom,
4344 max: this.maxZoom,
4345 onChange: function (t) {
4346 return e.setZoomForPoint(t, e.frameW / 2, e.frameH / 2)
4347 }
4348 }), s.a.createElement(wt, null), s.a.createElement(yt, null), s.a.createElement(de, {
4349 x: this.x,
4350 y: this.y,
4351 zoom: this.state.zoom
4352 }), s.a.createElement(Nt, null), s.a.createElement(xe, {
4353 desktop: !0
4354 }), s.a.createElement(Be, {
4355 onDoubleClick: Ft,
4356 desktop: !0
4357 }), s.a.createElement(Ie, null))
4358 }
4359 }]), t
4360 }(c.Component);
4361 var Gt = Object(v.b)((function (e) {
4362 return {
4363 image: e.Game.image,
4364 context: e.Game.context,
4365 fatal: e.FatalErrorModule,
4366 debug: e.Game.debug,
4367 root: e.Game.root,
4368 duplicateConnect: e.Game.duplicateConnect
4369 }
4370 }), {
4371 removeFatalError: P.b,
4372 setCursorPos: Z.s,
4373 setSelectedPixel: Z.A
4374 })(zt),
4375 Kt = n(123);
4376 n(451);
4377
4378 function Ht(e, t) {
4379 var n = Object.keys(e);
4380 if (Object.getOwnPropertySymbols) {
4381 var a = Object.getOwnPropertySymbols(e);
4382 t && (a = a.filter((function (t) {
4383 return Object.getOwnPropertyDescriptor(e, t).enumerable
4384 }))), n.push.apply(n, a)
4385 }
4386 return n
4387 }
4388 n.d(t, "replacePage", (function () {
4389 return Xt
4390 }));
4391 var qt = Object(C.s)();
4392
4393 function Xt(e) {
4394 var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
4395 n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "";
4396 if (V.a.fromPageId(e, t).isPopup()) {
4397 var a = V.a.fromLocation(E.location.pathname);
4398 t.pageId && (a.pageId = t.pageId, delete t.pageId), t = function (e) {
4399 for (var t = 1; t < arguments.length; t++) {
4400 var n = null != arguments[t] ? arguments[t] : {};
4401 t % 2 ? Ht(n, !0).forEach((function (t) {
4402 Object(i.a)(e, t, n[t])
4403 })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : Ht(n).forEach((function (t) {
4404 Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t))
4405 }))
4406 }
4407 return e
4408 }({}, t, {
4409 previousRoute: a
4410 })
4411 }
4412 E.replace({
4413 pathname: Object(Ve.c)(e, t),
4414 state: t,
4415 search: n
4416 })
4417 }
4418 "scrollRestoration" in E && (E.scrollRestoration = "manual"), m.a.init(), qt === ie.OS.IOS && m.a.getVkConnect().send("VKWebAppSetViewSettings", {
4419 status_bar_style: "dark"
4420 }), m.a.subscribeEvent("VKWebAppViewRestore", (function () {
4421 h.a.dispatch(Object(Pe.g)()), h.a.dispatch(Object(Pe.l)()), h.a.dispatch(Object(Z.m)())
4422 }));
4423 var Vt = m.a.getStartParams();
4424 window._hsMobileUI = Vt.isMobile();
4425 var Yt = new Kt.a(h.a, m.a.getStartParams().userId);
4426 Yt.onOnlineCallback = function () {
4427 h.a.dispatch(Object(Z.q)(Yt)), h.a.dispatch(Object(ve.b)()), h.a.dispatch(Object(Z.D)()), h.a.dispatch(Object(Z.E)(Yt.dataUrl.split("/").pop()));
4428 var e = h.a.getState().Game,
4429 t = e.bomb,
4430 n = e.freeze,
4431 a = e.pixel,
4432 r = window.location.hash;
4433 if ("#b" === r && t && t > 0) {
4434 var o = new Event("create_gift");
4435 o.tool = D.c, window.dispatchEvent(o)
4436 }
4437 if ("#f" === r && n && n > 0) {
4438 var i = new Event("create_gift");
4439 i.tool = D.d, window.dispatchEvent(i)
4440 }
4441 if ("#p" === r && a && a > 0) {
4442 var c = new Event("create_gift");
4443 c.tool = D.e, window.dispatchEvent(c)
4444 }
4445 }, Yt.start(), h.a.dispatch(Object(Z.r)(Object(D.i)()[Object(D.v)(Object(D.i)().length - 1)])), -1 === window.location.hash.toString().indexOf("show-start-screen") && Object(D.p)().then((function (e) {
4446 e && h.a.dispatch(Object(Z.l)())
4447 })), -1 !== window.location.hash.toString().indexOf("open-console") && function () {
4448 var e = document.createElement("script");
4449 e.src = "//cdn.jsdelivr.net/npm/eruda", document.body.appendChild(e), e.onload = function () {
4450 window.eruda.init()
4451 }
4452 }(), -1 !== window.location.hash.toString().indexOf("emulate-game-end") && setTimeout((function () {
4453 h.a.dispatch(Object(Z.t)(-1))
4454 }), 5e3), h.a.dispatch(Object(Z.k)()), M.a.init(Vt.getLangCode()).then((function () {
4455 E.listen((function (e, t) {
4456 h.a.dispatch(Object(Ye.c)(e.pathname, t, e.state))
4457 })), h.a.dispatch(Object(Ye.c)(E.location.pathname, Ye.a, E.location.state, !0)), Object(mt.b)() && h.a.dispatch(Object(mt.c)())
4458 })).then(Object(o.a)(r.a.mark((function e() {
4459 var t;
4460 return r.a.wrap((function (e) {
4461 for (;;) switch (e.prev = e.next) {
4462 case 0:
4463 t = 0;
4464 case 1:
4465 if (!(window.innerHeight <= 0 && t++ < 100)) {
4466 e.next = 6;
4467 break
4468 }
4469 return e.next = 4, Object(D.j)(50);
4470 case 4:
4471 e.next = 1;
4472 break;
4473 case 6:
4474 case "end":
4475 return e.stop()
4476 }
4477 }), e)
4478 })))).then((function () {
4479 d(s.a.createElement(v.a, {
4480 store: h.a
4481 }, s.a.createElement(C.d, {
4482 isWebView: !!Object(D.q)() || void 0
4483 }, s.a.createElement(Ve.b, {
4484 history: E
4485 }, s.a.createElement(Ve.a, {
4486 component: function (e) {
4487 return Vt.isMobile() ? s.a.createElement(Xe, Object.assign({
4488 channel: Yt
4489 }, e)) : s.a.createElement(Gt, Object.assign({
4490 channel: Yt
4491 }, e))
4492 }
4493 })))))
4494 })).catch((function (e) {
4495 d(s.a.createElement(S, {
4496 error: e
4497 }))
4498 }))
4499 },
4500 2: function (module, __webpack_exports__, __webpack_require__) {
4501 "use strict";
4502 __webpack_require__.d(__webpack_exports__, "b", (function () {
4503 return CANVAS_WIDTH
4504 })), __webpack_require__.d(__webpack_exports__, "a", (function () {
4505 return CANVAS_HEIGHT
4506 })), __webpack_require__.d(__webpack_exports__, "c", (function () {
4507 return TYPE_BOMB
4508 })), __webpack_require__.d(__webpack_exports__, "d", (function () {
4509 return TYPE_FREEZE
4510 })), __webpack_require__.d(__webpack_exports__, "e", (function () {
4511 return TYPE_PIXEL
4512 })), __webpack_require__.d(__webpack_exports__, "i", (function () {
4513 return colorMap
4514 })), __webpack_require__.d(__webpack_exports__, "C", (function () {
4515 return waitFormat
4516 })), __webpack_require__.d(__webpack_exports__, "w", (function () {
4517 return score
4518 })), __webpack_require__.d(__webpack_exports__, "h", (function () {
4519 return between
4520 })), __webpack_require__.d(__webpack_exports__, "f", (function () {
4521 return abs
4522 })), __webpack_require__.d(__webpack_exports__, "q", (function () {
4523 return isDevEnv
4524 })), __webpack_require__.d(__webpack_exports__, "k", (function () {
4525 return devErrorLog
4526 })), __webpack_require__.d(__webpack_exports__, "l", (function () {
4527 return devLog
4528 })), __webpack_require__.d(__webpack_exports__, "t", (function () {
4529 return nToBr
4530 })), __webpack_require__.d(__webpack_exports__, "r", (function () {
4531 return isDeviceSupported
4532 })), __webpack_require__.d(__webpack_exports__, "x", (function () {
4533 return scrollDesktopToPopupHeader
4534 })), __webpack_require__.d(__webpack_exports__, "o", (function () {
4535 return getWssUrl
4536 })), __webpack_require__.d(__webpack_exports__, "m", (function () {
4537 return drawContextFromStringVer1
4538 })), __webpack_require__.d(__webpack_exports__, "n", (function () {
4539 return drawContextFromStringVer2
4540 })), __webpack_require__.d(__webpack_exports__, "v", (function () {
4541 return randTo
4542 })), __webpack_require__.d(__webpack_exports__, "u", (function () {
4543 return offset
4544 })), __webpack_require__.d(__webpack_exports__, "A", (function () {
4545 return unOffset
4546 })), __webpack_require__.d(__webpack_exports__, "j", (function () {
4547 return delay
4548 })), __webpack_require__.d(__webpack_exports__, "B", (function () {
4549 return vkApi
4550 })), __webpack_require__.d(__webpack_exports__, "z", (function () {
4551 return share
4552 })), __webpack_require__.d(__webpack_exports__, "s", (function () {
4553 return mapCanvasToTheScreen
4554 })), __webpack_require__.d(__webpack_exports__, "g", (function () {
4555 return addToGroup
4556 })), __webpack_require__.d(__webpack_exports__, "p", (function () {
4557 return hasStartFlag
4558 })), __webpack_require__.d(__webpack_exports__, "y", (function () {
4559 return setStartFlag
4560 }));
4561 var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0),
4562 react__WEBPACK_IMPORTED_MODULE_0___default = __webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__),
4563 _happysanta_vk_apps_sdk__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14),
4564 _happysanta_vk_apps_sdk__WEBPACK_IMPORTED_MODULE_1___default = __webpack_require__.n(_happysanta_vk_apps_sdk__WEBPACK_IMPORTED_MODULE_1__),
4565 _happysanta_vk_app_ui__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(30),
4566 _happysanta_vk_app_ui__WEBPACK_IMPORTED_MODULE_2___default = __webpack_require__.n(_happysanta_vk_app_ui__WEBPACK_IMPORTED_MODULE_2__),
4567 _vkontakte_vkui__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(21),
4568 react_dom__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(52),
4569 react_dom__WEBPACK_IMPORTED_MODULE_4___default = __webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_4__),
4570 _Pixel__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(33),
4571 CANVAS_WIDTH = 1590,
4572 CANVAS_HEIGHT = 400,
4573 TYPE_BOMB = "bomb",
4574 TYPE_FREEZE = "freeze",
4575 TYPE_PIXEL = "pixel";
4576
4577 function colorMap() {
4578 return ["#FFFFFF", "#C2C2C2", "#858585", "#474747", "#000000", "#3AAFFF", "#71AAEB", "#4a76a8", "#074BF3", "#5E30EB", "#FF6C5B", "#FE2500", "#FF218B", "#99244F", "#4D2C9C", "#FFCF4A", "#FEB43F", "#FE8648", "#FF5B36", "#DA5100", "#94E044", "#5CBF0D", "#C3D117", "#FCC700", "#D38301"]
4579 }
4580 var FREEZE_DIFF_COLOR = "#202000";
4581
4582 function colorMapFreeze() {
4583 return colorMap().map((function (e) {
4584 return substractColor(e, FREEZE_DIFF_COLOR)
4585 }))
4586 }
4587
4588 function addColor(e, t) {
4589 return "#" + ((e = parseInt(e.replace("#", ""), 16)) | (t = parseInt(t.replace("#", ""), 16))).toString(16).toUpperCase()
4590 }
4591
4592 function substractColor(e, t) {
4593 return "#" + ((e = parseInt(e.replace("#", ""), 16)) ^ (t = parseInt(t.replace("#", ""), 16))).toString(16).toUpperCase()
4594 }
4595
4596 function colorMapByteArray() {
4597 return colorMap().map((function (e) {
4598 var t = e.substr(1, 2),
4599 n = e.substr(3, 2),
4600 a = e.substr(5, 2);
4601 return [parseInt(t, 16), parseInt(n, 16), parseInt(a, 16)]
4602 }))
4603 }
4604 var colorIndexDecode = {
4605 0: 0,
4606 1: 1,
4607 2: 2,
4608 3: 3,
4609 4: 4,
4610 5: 5,
4611 6: 6,
4612 7: 7,
4613 8: 8,
4614 9: 9,
4615 a: 10,
4616 b: 11,
4617 c: 12,
4618 d: 13,
4619 e: 14,
4620 f: 15,
4621 g: 16,
4622 h: 17,
4623 i: 18,
4624 j: 19,
4625 k: 20,
4626 l: 21,
4627 m: 22,
4628 n: 23,
4629 o: 24,
4630 p: 25
4631 };
4632
4633 function dd(e) {
4634 return e < 10 ? "0" + e : e
4635 }
4636 var waitFormat = function (e) {
4637 return e <= 59 ? "0:".concat(dd(e)) : Math.floor(e / 60) + ":" + dd(e % 60)
4638 };
4639
4640 function score(e) {
4641 return number_format(e, 0, 0, " ")
4642 }
4643
4644 function number_format(e, t, n, a) {
4645 var r, o;
4646 return isNaN(t = Math.abs(t)) && (t = 2), void 0 === n && (n = ","), void 0 === a && (a = "."), (o = (r = parseInt(e = (+e || 0).toFixed(t), 10) + "").length) > 3 ? o %= 3 : o = 0, (o ? r.substr(0, o) + a : "") + r.substr(o).replace(/(\d{3})(?=\d)/g, "$1" + a) + (t ? n + Math.abs(e - r).toFixed(t).replace(/-/, 0).slice(2) : "")
4647 }
4648
4649 function createGa() {}
4650 var end = 15103008e5;
4651
4652 function getTimeToEnd() {
4653 return end - Date.now()
4654 }
4655
4656 function setEnd(e) {
4657 return end = e
4658 }
4659
4660 function isEnd() {
4661 return getTimeToEnd() <= 0
4662 }
4663
4664 function mount(e) {
4665 var t = document.getElementById("root");
4666 window.reactMounted && Object(react_dom__WEBPACK_IMPORTED_MODULE_4__.unmountComponentAtNode)(t), window.reactMounted = !0, document.body.parentNode.classList.remove("h"), Object(react_dom__WEBPACK_IMPORTED_MODULE_4__.render)(e, t)
4667 }
4668
4669 function between(e, t, n) {
4670 return t < e ? e : t > n ? n : t
4671 }
4672
4673 function abs(e) {
4674 return Math.abs(e)
4675 }
4676
4677 function isDevEnv() {
4678 return !1
4679 }
4680
4681 function devErrorLog(e) {
4682 isDevEnv() && console.error(e)
4683 }
4684
4685 function devLog(e) {
4686 isDevEnv() && console.log(e)
4687 }
4688
4689 function throwDevError(e) {
4690 if (isDevEnv()) throw e
4691 }
4692
4693 function isRetina() {
4694 return window.matchMedia && (window.matchMedia("only screen and (min-resolution: 124dpi), only screen and (min-resolution: 1.3dppx), only screen and (min-resolution: 48.8dpcm)").matches || window.matchMedia("only screen and (-webkit-min-device-pixel-ratio: 1.3), only screen and (-o-min-device-pixel-ratio: 2.6/2), only screen and (min--moz-device-pixel-ratio: 1.3), only screen and (min-device-pixel-ratio: 1.3)").matches) || window.devicePixelRatio && window.devicePixelRatio > 1.3 || (window.matchMedia && (window.matchMedia("only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx), only screen and (min-resolution: 75.6dpcm)").matches || window.matchMedia("only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min--moz-device-pixel-ratio: 2), only screen and (min-device-pixel-ratio: 2)").matches) || window.devicePixelRatio && window.devicePixelRatio >= 2) && /(iPad|iPhone|iPod)/g.test(navigator.userAgent)
4695 }
4696
4697 function parseLink(e, t) {
4698 var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
4699 a = e.split(/(\[[#&\x2D-:=\?-Z_a-z]+\|(?:[\0-\t\x0B\f\x0E-\u2027\u202A-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*?\]|<(?:[\0-\t\x0B\f\x0E-\u2027\u202A-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*?>)/gm);
4700 if (1 === a.length) return a[0];
4701 var r = [];
4702 return a.forEach((function (e, a) {
4703 if (0 !== e.indexOf("[") || n.noLink) r.push(e);
4704 else {
4705 var o = e.split("|"),
4706 i = o[0].replace("[", ""),
4707 c = o[1].replace("]", "");
4708 _happysanta_vk_apps_sdk__WEBPACK_IMPORTED_MODULE_1___default.a.getStartParams().isMobile() ? r.push(react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_vkontakte_vkui__WEBPACK_IMPORTED_MODULE_3__.h, {
4709 href: i,
4710 rel: "noopener noreferrer",
4711 target: "_blank",
4712 key: t + "_" + a
4713 }, c)) : r.push(react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_happysanta_vk_app_ui__WEBPACK_IMPORTED_MODULE_2__.Link, {
4714 href: i,
4715 rel: "noopener noreferrer",
4716 target: "_blank",
4717 key: t + "_" + a
4718 }, c))
4719 }
4720 })), r
4721 }
4722
4723 function nToBr(e) {
4724 var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
4725 e = e || "", t.noTypography || (e = (e = (e = e.replace(/­/g, "\xad")).replace(/ /g, "\xa0")).replace(/‑/g, "‑"));
4726 for (var n = e.split("\n"), a = n.length, r = [], o = 0; o < a; o++) r.push(parseLink(n[o], o, t)), o !== a - 1 && r.push(react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("br", {
4727 key: o
4728 }));
4729 return r
4730 }
4731
4732 function getAndroidVersion() {
4733 var e = window.navigator.userAgent.toLowerCase(),
4734 t = e.match(/android\s([0-9\.]*)/);
4735 return -1 === e.indexOf("chrome/6") && (!!t && parseInt(t[1], 10))
4736 }
4737
4738 function getIosVersion() {
4739 if (/iP(hone|od|ad)/.test(navigator.platform)) {
4740 var e = navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/);
4741 return parseInt(e[1], 10)
4742 }
4743 return !1
4744 }
4745
4746 function isDeviceSupported() {
4747 return !(getAndroidVersion() && getAndroidVersion() <= 4) || getIosVersion() && getIosVersion() <= 8
4748 }
4749
4750 function hasLength(e) {
4751 return e && e.length
4752 }
4753
4754 function scrollDesktopToPopupHeader() {
4755 var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 1500;
4756 if (!_happysanta_vk_apps_sdk__WEBPACK_IMPORTED_MODULE_1___default.a.getStartParams().isMobile()) {
4757 var t = document.querySelector(".PopupDesktop__window");
4758 if (t) {
4759 var n = t.getBoundingClientRect();
4760 if (n && n.top) {
4761 var a = n.top;
4762 _happysanta_vk_apps_sdk__WEBPACK_IMPORTED_MODULE_1___default.a.scroll(a, e).then().catch()
4763 }
4764 }
4765 }
4766 }
4767
4768 function getWssUrl(prefix, sign, code) {
4769 return prefix += _happysanta_vk_apps_sdk__WEBPACK_IMPORTED_MODULE_1___default.a.startSearch, "https:" === window.location.protocol ? "wss://" + window.location.host + prefix + "&s=9&c=" + eval(code) : "ws://" + window.location.host + prefix + "&s=9&c=" + eval(code)
4770 }
4771
4772 function drawContextFromStringVer1(e, t) {
4773 for (var n = colorMap(), a = 0; a < CANVAS_WIDTH; a++)
4774 for (var r = 0; r < CANVAS_HEIGHT; r++) {
4775 var o = colorIndexDecode[e[r * CANVAS_WIDTH + a]];
4776 t.fillStyle = n[o], t.fillRect(a, r, 1, 1)
4777 }
4778 }
4779
4780 function drawContextFromStringVer2(e, t) {
4781 for (var n = colorMapByteArray(), a = new Uint8ClampedArray(CANVAS_WIDTH * CANVAS_HEIGHT * 4), r = 0, o = 0; o < CANVAS_HEIGHT; o++)
4782 for (var i = 0; i < CANVAS_WIDTH; i++) {
4783 var c = n[colorIndexDecode[e[o * CANVAS_WIDTH + i]]];
4784 a[r] = c[0], a[r + 1] = c[1], a[r + 2] = c[2], a[r + 3] = 255, r += 4
4785 }
4786 var s = new ImageData(a, CANVAS_WIDTH, CANVAS_HEIGHT);
4787 t.putImageData(s, 0, 0)
4788 }
4789
4790 function randTo(e) {
4791 return Math.round(Math.random() * e)
4792 }
4793
4794 function offset(e, t) {
4795 return t * _Pixel__WEBPACK_IMPORTED_MODULE_5__.a.MAX_WIDTH + e
4796 }
4797
4798 function unOffset(e) {
4799 return {
4800 x: e % _Pixel__WEBPACK_IMPORTED_MODULE_5__.a.MAX_WIDTH,
4801 y: Math.floor(e / _Pixel__WEBPACK_IMPORTED_MODULE_5__.a.MAX_WIDTH)
4802 }
4803 }
4804 var vkAccessToken = null;
4805
4806 function vkErrorToError(e) {
4807 var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "";
4808 if (e instanceof Error) return e;
4809 e || (e = {});
4810 var n = JSON.stringify(e);
4811 return Object.assign(new Error(t + n), e)
4812 }
4813
4814 function delay(e) {
4815 var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [];
4816 return new Promise((function (n) {
4817 return setTimeout(n, e, t)
4818 }))
4819 }
4820
4821 function vkApi(e, t) {
4822 var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 5;
4823 return null === vkAccessToken ? _happysanta_vk_apps_sdk__WEBPACK_IMPORTED_MODULE_1___default.a.getAuthToken("friends").then((function (a) {
4824 return vkAccessToken = a, vkApi(e, t, n)
4825 })).catch((function (e) {
4826 throw vkErrorToError(e, "getAuthToken: ")
4827 })) : (t.v || (t.v = "5.95"), t.access_token = vkAccessToken.access_token, _happysanta_vk_apps_sdk__WEBPACK_IMPORTED_MODULE_1___default.a.callAPIMethod(e, t).then((function (e) {
4828 if (e && void 0 !== e.response) return e.response;
4829 throw new Error("TODO: fix this error")
4830 })).catch((function (t) {
4831 throw vkErrorToError(t, "vkApi:" + e + " ")
4832 })))
4833 }
4834
4835 function share() {
4836 var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : null,
4837 t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;
4838 e || (e = "https://vk.com/app" + _happysanta_vk_apps_sdk__WEBPACK_IMPORTED_MODULE_1___default.a.getStartParams().appId, _happysanta_vk_apps_sdk__WEBPACK_IMPORTED_MODULE_1___default.a.getStartParams().groupId && (e += "_-" + _happysanta_vk_apps_sdk__WEBPACK_IMPORTED_MODULE_1___default.a.getStartParams().groupId)), null !== t && (e += "#" + t), _happysanta_vk_apps_sdk__WEBPACK_IMPORTED_MODULE_1___default.a.share(e).catch(devErrorLog)
4839 }
4840
4841 function mapCanvasToTheScreen(e, t, n, a, r, o, i, c) {
4842 if (a) {
4843 e.clearRect(0, 0, t, n), e.drawImage(a, r, o, Math.round(CANVAS_WIDTH * i), Math.round(CANVAS_HEIGHT * i));
4844 var s = c.freeezedPixels,
4845 l = Date.now();
4846 e.fillStyle = "rgba(81,129,184, 0.5)", Object.keys(s).forEach((function (a) {
4847 if (!(s[a] <= l)) {
4848 var c = unOffset(a),
4849 u = c.x,
4850 _ = c.y;
4851 u *= i, _ *= i, _ += o, (u += r) >= -i && u <= t && _ >= -i && _ <= n && e.fillRect(u, _, i, i)
4852 }
4853 }))
4854 }
4855 }
4856
4857 function addToGroup() {
4858 _happysanta_vk_apps_sdk__WEBPACK_IMPORTED_MODULE_1___default.a.getVkConnect().send("VKWebAppAddToCommunity", {})
4859 }
4860 var flagValue = "UPer22";
4861
4862 function hasStartFlag() {
4863 return _happysanta_vk_apps_sdk__WEBPACK_IMPORTED_MODULE_1___default.a.getRequest("VKWebAppStorageGet", {
4864 keys: ["start"],
4865 global: !1
4866 }, "VKWebAppStorageGetResult", "VKWebAppStorageGetFailed").send().then((function (e) {
4867 return e.keys.filter((function (e) {
4868 return e.value === flagValue
4869 })).length > 0
4870 })).catch((function (e) {
4871 return devErrorLog(e), !1
4872 }))
4873 }
4874
4875 function setStartFlag() {
4876 _happysanta_vk_apps_sdk__WEBPACK_IMPORTED_MODULE_1___default.a.getRequest("VKWebAppStorageSet", {
4877 key: "start",
4878 value: flagValue,
4879 global: !1
4880 }, "VKWebAppStorageSetResult", "VKWebAppStorageSetFailed").send().catch((function (e) {
4881 return devErrorLog(e), !1
4882 }))
4883 }
4884 },
4885 247: function (e, t, n) {
4886 e.exports = n(145)
4887 },
4888 26: function (e, t, n) {
4889 "use strict";
4890 n.d(t, "c", (function () {
4891 return a
4892 })), n.d(t, "b", (function () {
4893 return r
4894 })), n.d(t, "a", (function () {
4895 return o
4896 }));
4897 var a = "group",
4898 r = "user",
4899 o = "all"
4900 },
4901 33: function (e, t, n) {
4902 "use strict";
4903 var a = n(5),
4904 r = n(6),
4905 o = function () {
4906 function e(t, n, r, o, i, c) {
4907 Object(a.a)(this, e), this.x = parseInt(t, 10), this.y = parseInt(n, 10), this.colorId = parseInt(r, 10), this.flag = parseInt(c, 10) || 0, this.userId = parseInt(o, 10), this.groupId = parseInt(i, 10), this.ts = Date.now()
4908 }
4909 return Object(r.a)(e, [{
4910 key: "isValidRange",
4911 value: function () {
4912 return this.x >= 0 && this.x < e.MAX_WIDTH && this.y >= 0 && this.y < e.MAX_HEIGHT && this.colorId >= e.MIN_COLOR_ID && this.colorId < e.MAX_COLOR_ID
4913 }
4914 }, {
4915 key: "isValid",
4916 value: function () {
4917 return this.isValidRange()
4918 }
4919 }, {
4920 key: "hasFlag",
4921 value: function (e) {
4922 return this.flag === e
4923 }
4924 }, {
4925 key: "pack",
4926 value: function () {
4927 var t = this.colorId + this.flag * e.MAX_COLOR_ID;
4928 return this.x + this.y * e.MAX_WIDTH + e.SIZE * t
4929 }
4930 }], [{
4931 key: "unpack",
4932 value: function (t) {
4933 var n = Math.floor(t / e.SIZE),
4934 a = (t -= n * e.SIZE) % e.MAX_WIDTH;
4935 return {
4936 x: a,
4937 y: (t - a) / e.MAX_WIDTH,
4938 color: n % e.MAX_COLOR_ID,
4939 flag: Math.floor(n / e.MAX_COLOR_ID)
4940 }
4941 }
4942 }]), e
4943 }();
4944 o.MAX_WIDTH = 1590, o.MAX_HEIGHT = 400, o.MAX_COLOR_ID = 25, o.MIN_COLOR_ID = 0, o.SIZE = o.MAX_WIDTH * o.MAX_HEIGHT, o.BOMB = 1, o.FREZE = 2, o.PIXEL = 3, o.FREZE_CENTER = 4, o.RELOAD_CHAT = 5, o.BOMB_CENTER = 7, o.PIXEL_START = 8, o.FREEZE_TIME = 3e4, o.EXPLORE_COLOR = 4, o.createExplode = function (e, t, n) {
4945 return [new o(e, t, 11, n.id, n.groupId, o.BOMB), new o(e, t + 1, 16, n.id, n.groupId, o.BOMB), new o(e, t - 1, 16, n.id, n.groupId, o.BOMB), new o(e + 1, t, 16, n.id, n.groupId, o.BOMB), new o(e + 1, t + 1, 15, n.id, n.groupId, o.BOMB), new o(e + 1, t - 1, 15, n.id, n.groupId, o.BOMB), new o(e - 1, t, 16, n.id, n.groupId, o.BOMB), new o(e - 1, t + 1, 15, n.id, n.groupId, o.BOMB), new o(e - 1, t - 1, 15, n.id, n.groupId, o.BOMB), new o(e + 2, t, 15, n.id, n.groupId, o.BOMB), new o(e - 2, t, 15, n.id, n.groupId, o.BOMB), new o(e, t + 2, 15, n.id, n.groupId, o.BOMB), new o(e, t - 2, 15, n.id, n.groupId, o.BOMB)].filter((function (e) {
4946 return e.isValid()
4947 }))
4948 }, o.createFreeze = function (e, t, n) {
4949 return [new o(e, t, o.EXPLORE_COLOR, n.id, n.groupId, o.FREZE), new o(e, t + 1, o.EXPLORE_COLOR, n.id, n.groupId, o.FREZE), new o(e, t - 1, o.EXPLORE_COLOR, n.id, n.groupId, o.FREZE), new o(e + 1, t, o.EXPLORE_COLOR, n.id, n.groupId, o.FREZE), new o(e + 1, t + 1, o.EXPLORE_COLOR, n.id, n.groupId, o.FREZE), new o(e + 1, t - 1, o.EXPLORE_COLOR, n.id, n.groupId, o.FREZE), new o(e - 1, t, o.EXPLORE_COLOR, n.id, n.groupId, o.FREZE), new o(e - 1, t + 1, o.EXPLORE_COLOR, n.id, n.groupId, o.FREZE), new o(e - 1, t - 1, o.EXPLORE_COLOR, n.id, n.groupId, o.FREZE), new o(e + 2, t, o.EXPLORE_COLOR, n.id, n.groupId, o.FREZE), new o(e - 2, t, o.EXPLORE_COLOR, n.id, n.groupId, o.FREZE), new o(e, t + 2, o.EXPLORE_COLOR, n.id, n.groupId, o.FREZE), new o(e, t - 2, o.EXPLORE_COLOR, n.id, n.groupId, o.FREZE)].filter((function (e) {
4950 return e.isValid()
4951 }))
4952 }, o.LOCK_TIME = 15e3, o.LOCK_COUNT = 30, t.a = o
4953 },
4954 35: function (e, t, n) {
4955 "use strict";
4956 n.d(t, "c", (function () {
4957 return l
4958 })), n.d(t, "d", (function () {
4959 return u
4960 })), n.d(t, "b", (function () {
4961 return _
4962 })), n.d(t, "a", (function () {
4963 return d
4964 }));
4965 var a, r = n(13),
4966 o = n(51),
4967 i = n(14),
4968 c = n.n(i),
4969 s = n(122),
4970 l = "root_main",
4971 u = "view_main",
4972 _ = "panel_main",
4973 d = "/",
4974 p = (a = {}, Object(r.a)(a, d, new o.a), Object(r.a)(a, "/:entityId([0-9]+)", new o.a("panel_entity", u)), Object(r.a)(a, "/:entityId([0-9]+)/popup", new o.a("panel_entity", u, l, !0)), Object(r.a)(a, "/page_2_1", new o.a("panel_2", "view_2")), Object(r.a)(a, "/page_2_2", new o.a("panel_2_2", "view_2")), Object(r.a)(a, "/page_3_1", new o.a("panel_3", "view_3")), Object(r.a)(a, "/page_3_2", new o.a("panel_3_2", "view_3")), a);
4975 c.a.getStartParams().isMobile() || (p["/:entityId([0-9]+)/popup"] = new s.a(!0)), t.e = p
4976 },
4977 39: function (e, t, n) {
4978 "use strict";
4979 var a = n(75),
4980 r = n(188),
4981 o = n(78),
4982 i = n(45),
4983 c = n(44),
4984 s = n(96),
4985 l = n(65),
4986 u = n(12),
4987 _ = Object(a.c)({
4988 Group: o.a,
4989 EventList: i.f,
4990 Rating: c.a,
4991 LocationModule: s.b,
4992 FatalErrorModule: l.a,
4993 Game: u.a
4994 }),
4995 d = [r.a],
4996 p = a.d.apply(void 0, [a.a.apply(void 0, d)].concat([])),
4997 m = Object(a.e)(_, {}, p);
4998 t.a = m
4999 },
5000 395: function (e, t, n) {
5001 var a = {
5002 "./by": [196, 0],
5003 "./by.js": [196, 0],
5004 "./en": [197, 1],
5005 "./en.js": [197, 1],
5006 "./ru": [117],
5007 "./ru.js": [117],
5008 "./ua": [198, 2],
5009 "./ua.js": [198, 2]
5010 };
5011
5012 function r(e) {
5013 if (!n.o(a, e)) return Promise.resolve().then((function () {
5014 var t = new Error("Cannot find module '" + e + "'");
5015 throw t.code = "MODULE_NOT_FOUND", t
5016 }));
5017 var t = a[e],
5018 r = t[0];
5019 return Promise.all(t.slice(1).map(n.e)).then((function () {
5020 return n(r)
5021 }))
5022 }
5023 r.keys = function () {
5024 return Object.keys(a)
5025 }, r.id = 395, e.exports = r
5026 },
5027 397: function (e, t, n) {},
5028 398: function (e, t, n) {},
5029 4: function (e, t, n) {
5030 "use strict";
5031 n.d(t, "a", (function () {
5032 return c
5033 }));
5034 var a = n(5),
5035 r = n(6),
5036 o = n(151),
5037 i = n(117),
5038 c = function () {
5039 function e() {
5040 Object(a.a)(this, e)
5041 }
5042 return Object(r.a)(e, null, [{
5043 key: "init",
5044 value: function (t) {
5045 return new Promise((function (a, r) {
5046 -1 === ["en", "ua", "ru", "by"].indexOf(t) && (t = "ru");
5047 var o = {
5048 ru: Object(i.default)()
5049 };
5050 e.lang = t, o.hasOwnProperty(t) ? e.initI18n(t, o).then(a).catch(r) : n(395)("./" + t).then((function (n) {
5051 "ua" === t && (t = "uk"), o[t] = n.default(), e.initI18n(t, o).then(a).catch(r)
5052 })).catch(r)
5053 }))
5054 }
5055 }, {
5056 key: "initI18n",
5057 value: function (t, n) {
5058 return new Promise((function (a, r) {
5059 try {
5060 o.a.init({
5061 lng: t,
5062 resources: n,
5063 fallbackLng: "ru"
5064 }, (function (n) {
5065 n ? r(n) : (e.lang = t, a())
5066 }))
5067 } catch (i) {
5068 r(i)
5069 }
5070 }))
5071 }
5072 }, {
5073 key: "t",
5074 value: function (e, t) {
5075 return o.a.t(e, t)
5076 }
5077 }]), e
5078 }();
5079 c.lang = "ru"
5080 },
5081 410: function (e, t, n) {},
5082 412: function (e, t, n) {},
5083 413: function (e, t, n) {},
5084 414: function (e, t, n) {},
5085 415: function (e, t, n) {},
5086 416: function (e, t, n) {},
5087 417: function (e, t, n) {},
5088 418: function (e, t, n) {},
5089 419: function (e, t, n) {},
5090 420: function (e, t, n) {},
5091 422: function (e, t, n) {},
5092 423: function (e, t, n) {},
5093 424: function (e, t) {
5094 e.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACYAAAAyCAMAAAAHpFkRAAAC9FBMVEUAAAAiXMfOfiDZnjj8twDtlhH+pA/4pgL+ogHSjyTzlQAAE//qpQD/rwL/qAD8nQL9qwL8ngT8tQD/oACGhlcPerj/sAD9lwP/kwD+jgD9lgL+qgH5nw/8pAH7mAP8lwLorQ32lgamiEqggUjmix//zRz/0Bb/qwD/nQD+iQD+tQ7+pwv/nwD8pBL/ogD+ngD/rgb+pQD4oQL8ngH8pQD/oQD2mAf9qAb7tAL9rwL+nAT3lg74mwrzkgr6rADxpgf0kwz2jAXuqgrmqw3NhyX3lQj/ogD3tQXuhwvPlSv4lQjMmyjykwnHhyr8ngTcnjXymBfdjBv3lwlAUJHVgAD9jwD+yS/+vB38nQz/owD9rRj9kQH+swv6oBL7mQX4sBT+mQL8ygLyugn2jQL4mg39sQLziQD/wgH5mxPrvhDxpxv+nATyhgT7lQDsohvxqhnylgbzrQbpmxHgkBbspxzjhhL2lQnqph3wlA/1sgPmmw/epjDqph3SpTjrgAf9uQDgtxzjoR7JqTbtrwr/lwD9pQDmpiD5uQL7vQD9lwDdnCD/oADzigLHkCv/uQDnpSPmiRHxiwbokBX/pAC2k03ytAPzjwjMkSb6lQD/jwCXgEbyzAD/ugj//tn/+6z//+b/kgD//+T//+D/pwL/nQL///L//9v/4jH//+z//+j/9Jb/5i3/xSn/tAf/zgD/lgD//+r//tL/+7j/97b/+bH/96n++aT/9qP/7If/9Yb/7YL/wjD/yyz/wCr/xCP/wCH/nAz/wQb/twb/xwD/uwD/mQD/lQD/jQD///X//+7//9D//sr//8j/+73++qX/9p7/6mb/21v/6Ff/30T/xT7/0Dr/3jL/wxz/uRr/wBf/sBb/rQ//1gz/pAj/qwX/0QD/mgD/mAD/+qL+/Zn/9JD/+I//8I7//IH/6Hn/8XH/82f/4mL/11f/7FD/6D//5z//6Dn/2zf/2zX+zzT/tyn/0Sf/0xr/xBn/3hj/yRH/vhD/vQBpS2fBAAAAnHRSTlMAAx4DCTv+kGAfCAEB/vrr2MORWA4FBf77+vXr5NnTyX9JLSMT/v76+vr59vTz7+7r6+no5+Lh4NjY182+l5GPjIF3dW1rYlRSTTMvLy0kHRwYEAgG/fz8/Pr59O/r6eTi4eDf2NjW1dPMysbCwLu7s7Gwr6uro6GenJualZOPi4qHgICAf3h4dHNvbmtlY15bWFdUUE5CPDAZFhQP6CRQAAACqUlEQVQ4y42UVVhbQRBGb6CkJJCmKe7uxd2tSHEodXd3d3d3I+RGm1BS3D2KOxSXurv3pRfa0LfdnOfzzew3+88gAJJMlBA4485SouAWMZx8TI5aypONbstj6Z6Ww7IjrU2AvkvN6ee8MGgtNb1vlhRzaEfnr++cLkEszXCH0uczNk0DW4pqjhVNL9ymwiz3rrSGmVs0gJbqVfeUYnqL3jVwreMOVUXsQtu9OJClEuJc9ZJXV7rQFGThQt1EzRx2c8p+UDGNUBd+a211tuUSM5Bl7Mpsq+fSW4VHVAAdjclDHdn0mkd9q9UBVoiruDSXzqO+HzxkrvAPAoEQH58QR/w/CWMXSXoBg5FZ1De4eKWX13Jv74kYBgY+PosocWOTOEpGK5oYDF7DjwcYQmHVb5FIQCIxh9EMsjJRZkU4SnueMRhUWuqH+xj3Ruj8+MmiHxUbmmjKfui6gbS3mM6l0Xg0DhWDw8mqzaJSi8orKylKirLkRHiirLbHqfmN+fmNqaNkczK5NQXplfgN0aqyFF7QE0u18PgBvkCQ8hf+5zo2Le0hC7+GMJbVkyRrHR0dGxtt69kTMKysBpi9xdxRa2M0IuPuqd2BgeNHCAiYhHFwM5P5mpb5pJtlt80MMOc9rI4sdlr3kP3OO4Asndfqyq0uqMiw3wf4M8TUo7+QnVc+PP8waGfUt2q9oeemZ+ifwIGCOUW7pD4Hs84gIEyX9uTllEmWXQRa6ttnFeaUoKuwJQW2nNuS1y7xhdzS2BUlT9tR35tgy2xd2asvqD8BbGkcmPO2bHqQAgImUr+zXDs4EWIp+Fl81w2G3T5ckO2vBeeSEAhXPPkel4kwK9aPaWiSDLNw/izDG5oIjChdI2yDYCTuWH8LbimGGcWoIlCUdkXKYSXHQN/1B4vL/9ExZTdrAAAAAElFTkSuQmCC"
5095 },
5096 425: function (e, t, n) {},
5097 430: function (e, t, n) {},
5098 431: function (e, t, n) {},
5099 432: function (e, t, n) {},
5100 433: function (e, t, n) {},
5101 434: function (e, t, n) {},
5102 436: function (e, t, n) {},
5103 437: function (e, t, n) {},
5104 438: function (e, t, n) {},
5105 439: function (e, t, n) {},
5106 44: function (e, t, n) {
5107 "use strict";
5108 n.d(t, "a", (function () {
5109 return f
5110 })), n.d(t, "b", (function () {
5111 return v
5112 })), n.d(t, "d", (function () {
5113 return b
5114 })), n.d(t, "c", (function () {
5115 return O
5116 }));
5117 var a = n(49),
5118 r = n.n(a),
5119 o = n(69),
5120 i = n(13),
5121 c = n(48),
5122 s = n(2),
5123 l = n(26);
5124
5125 function u(e, t) {
5126 var n = Object.keys(e);
5127 if (Object.getOwnPropertySymbols) {
5128 var a = Object.getOwnPropertySymbols(e);
5129 t && (a = a.filter((function (t) {
5130 return Object.getOwnPropertyDescriptor(e, t).enumerable
5131 }))), n.push.apply(n, a)
5132 }
5133 return n
5134 }
5135
5136 function _(e) {
5137 for (var t = 1; t < arguments.length; t++) {
5138 var n = null != arguments[t] ? arguments[t] : {};
5139 t % 2 ? u(n, !0).forEach((function (t) {
5140 Object(i.a)(e, t, n[t])
5141 })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : u(n).forEach((function (t) {
5142 Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t))
5143 }))
5144 }
5145 return e
5146 }
5147 var d = "Rating.UPDATE",
5148 p = "Rating.CHECK_ID",
5149 m = {
5150 group: [],
5151 user: [],
5152 friends: [],
5153 ts: 0,
5154 tag: "group",
5155 friend_load_error: null,
5156 fiend_requested: !1,
5157 fiend_loading: !1,
5158 friend_ids: [],
5159 me: null,
5160 myGroup: null
5161 };
5162
5163 function h(e, t) {
5164 return e.filter((function (e) {
5165 return e.id.toString() === t.toString()
5166 })).length > 0
5167 }
5168
5169 function f() {
5170 var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : m,
5171 t = arguments.length > 1 ? arguments[1] : void 0;
5172 switch (t.type) {
5173 case p:
5174 return e.me && (e.me = h(e.user, e.me.id) ? null : e.me), e.myGroup && (e.myGroup = h(e.group, e.myGroup.id) ? null : e.myGroup), _({}, e);
5175 case d:
5176 return f(_({}, e, {}, t.update), {
5177 type: p
5178 });
5179 default:
5180 return e
5181 }
5182 }
5183
5184 function E(e) {
5185 return {
5186 type: d,
5187 update: e
5188 }
5189 }
5190
5191 function v() {
5192 return function (e, t) {
5193 Date.now() - t().Rating.ts < 3e4 || (e(E({
5194 ts: Date.now()
5195 })), c.a.request("top", {}, "GET").then((function (t) {
5196 var n = t.user,
5197 a = t.group,
5198 r = t.userIndex,
5199 o = t.groupIndex;
5200 e(E({
5201 user: n.map((function (e) {
5202 return e.id && r[e.id] && (e = _({}, e, {}, r[e.id])), e
5203 })),
5204 group: a.map((function (e) {
5205 return e.id && o[e.id] && (e = _({}, e, {}, o[e.id])), e
5206 }))
5207 }))
5208 })).then((function () {
5209 e(g())
5210 })).catch((function (e) {
5211 return Object(s.k)(e)
5212 })))
5213 }
5214 }
5215
5216 function b(e) {
5217 return function (t, n) {
5218 t(E({
5219 tag: e
5220 })), n().Rating.fiend_requested || e !== l.b || (t(E({
5221 fiend_requested: !0,
5222 fiend_loading: !0
5223 })), Object(s.B)("friends.get", {
5224 count: 5e3
5225 }).then((function (e) {
5226 var n = e.items;
5227 t(E({
5228 friend_ids: n,
5229 friend_load_error: null
5230 })), t(g())
5231 })).catch((function (e) {
5232 Object(s.k)(e), -1 !== (e.message || "Unknown").indexOf("User denied") ? t(E({
5233 fiend_loading: !1,
5234 friend_load_error: "user_reject"
5235 })) : t(E({
5236 fiend_loading: !1,
5237 friend_load_error: (e.message || "Unknown").substr(0, 120)
5238 }))
5239 })))
5240 }
5241 }
5242
5243 function O() {
5244 return function (e) {
5245 e(E({
5246 fiend_requested: !1,
5247 fiend_loading: !0
5248 })), e(b(l.b))
5249 }
5250 }
5251
5252 function g() {
5253 return function (e, t) {
5254 e(E({
5255 fiend_loading: !0
5256 })), c.a.request("my", {
5257 ids: t().Rating.friend_ids
5258 }, "POST").then(function () {
5259 var t = Object(o.a)(r.a.mark((function t(n) {
5260 var a, o, i;
5261 return r.a.wrap((function (t) {
5262 for (;;) switch (t.prev = t.next) {
5263 case 0:
5264 if (a = n.user, o = n.group, i = n.friends, !n.fail) {
5265 t.next = 3;
5266 break
5267 }
5268 return t.abrupt("return");
5269 case 3:
5270 return t.next = 5, w((i || []).sort((function (e, t) {
5271 return e.score > t.score ? -1 : t.score > e.score ? 1 : e.id > t.id ? 1 : t.id > e.id ? -1 : 0
5272 })));
5273 case 5:
5274 i = t.sent, e(E({
5275 me: a,
5276 myGroup: o,
5277 friends: i.map((function (e, t) {
5278 return e.place = t + 1, e
5279 }))
5280 }));
5281 case 7:
5282 case "end":
5283 return t.stop()
5284 }
5285 }), t)
5286 })));
5287 return function (e) {
5288 return t.apply(this, arguments)
5289 }
5290 }()).catch((function (e) {
5291 return Object(s.k)(e)
5292 })).then((function () {
5293 return e(E({
5294 fiend_loading: !1
5295 }))
5296 }))
5297 }
5298 }
5299
5300 function w(e) {
5301 return k.apply(this, arguments)
5302 }
5303
5304 function k() {
5305 return (k = Object(o.a)(r.a.mark((function e(t) {
5306 var n, a;
5307 return r.a.wrap((function (e) {
5308 for (;;) switch (e.prev = e.next) {
5309 case 0:
5310 if (0 !== t.length) {
5311 e.next = 2;
5312 break
5313 }
5314 return e.abrupt("return", t);
5315 case 2:
5316 return n = t.map((function (e) {
5317 return e.id
5318 })), e.next = 5, Object(s.B)("users.get", {
5319 user_ids: n.join(","),
5320 fields: "screen_name,photo_100"
5321 }).then((function (e) {
5322 var t = {};
5323 return e.forEach((function (e) {
5324 t[e.id] = {
5325 name: e.first_name + " " + e.last_name,
5326 photo: e.photo_100,
5327 url: "https://vk.com/" + e.screen_name
5328 }
5329 })), t
5330 })).catch((function (e) {
5331 Object(s.k)("users.get fail", e);
5332 var t = {};
5333 return n.forEach((function (e) {
5334 t[e] = {
5335 name: "@id" + e,
5336 photo: "https://vk.com/images/camera_100.png",
5337 url: "https://vk.com/id" + e
5338 }
5339 })), t
5340 }));
5341 case 5:
5342 return a = e.sent, e.abrupt("return", t.map((function (e) {
5343 return a[e.id] ? _({}, a[e.id], {}, e) : _({}, {
5344 name: "@id" + e.id,
5345 photo: "https://vk.com/images/camera_100.png",
5346 url: "https://vk.com/id" + e.id
5347 }, {}, e)
5348 })));
5349 case 7:
5350 case "end":
5351 return e.stop()
5352 }
5353 }), e)
5354 })))).apply(this, arguments)
5355 }
5356 },
5357 440: function (e, t, n) {},
5358 441: function (e, t, n) {},
5359 442: function (e, t, n) {},
5360 443: function (e, t, n) {},
5361 444: function (e, t, n) {},
5362 445: function (e, t, n) {},
5363 446: function (e, t, n) {},
5364 447: function (e, t, n) {},
5365 448: function (e, t, n) {},
5366 449: function (e, t, n) {},
5367 45: function (e, t, n) {
5368 "use strict";
5369 n.d(t, "a", (function () {
5370 return E
5371 })), n.d(t, "e", (function () {
5372 return v
5373 })), n.d(t, "b", (function () {
5374 return b
5375 })), n.d(t, "d", (function () {
5376 return O
5377 })), n.d(t, "c", (function () {
5378 return g
5379 })), n.d(t, "f", (function () {
5380 return k
5381 })), n.d(t, "l", (function () {
5382 return D
5383 })), n.d(t, "g", (function () {
5384 return j
5385 })), n.d(t, "k", (function () {
5386 return T
5387 })), n.d(t, "i", (function () {
5388 return A
5389 })), n.d(t, "h", (function () {
5390 return L
5391 })), n.d(t, "j", (function () {
5392 return I
5393 }));
5394 var a = n(49),
5395 r = n.n(a),
5396 o = n(69),
5397 i = n(13),
5398 c = n(48),
5399 s = n(2),
5400 l = n(14),
5401 u = n.n(l);
5402
5403 function _(e, t) {
5404 var n = Object.keys(e);
5405 if (Object.getOwnPropertySymbols) {
5406 var a = Object.getOwnPropertySymbols(e);
5407 t && (a = a.filter((function (t) {
5408 return Object.getOwnPropertyDescriptor(e, t).enumerable
5409 }))), n.push.apply(n, a)
5410 }
5411 return n
5412 }
5413
5414 function d(e) {
5415 for (var t = 1; t < arguments.length; t++) {
5416 var n = null != arguments[t] ? arguments[t] : {};
5417 t % 2 ? _(n, !0).forEach((function (t) {
5418 Object(i.a)(e, t, n[t])
5419 })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : _(n).forEach((function (t) {
5420 Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t))
5421 }))
5422 }
5423 return e
5424 }
5425 var p = "EventList.UPDATE",
5426 m = "EventList.ADD_EVENT",
5427 h = "EventList.SHIFT_EVENT",
5428 f = "EventList.PIN_EVENT",
5429 E = 1,
5430 v = 2,
5431 b = 3,
5432 O = 4,
5433 g = 5,
5434 w = {
5435 list: [],
5436 pin: null
5437 };
5438
5439 function k() {
5440 var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : w,
5441 t = arguments.length > 1 ? arguments[1] : void 0;
5442 switch (t.type) {
5443 case "Game.SET_SELECTED_PIXEL":
5444 return d({}, e, {
5445 pin: null
5446 });
5447 case h:
5448 return e.list = e.list.slice(1), d({}, e);
5449 case f:
5450 return e.pin ? e.pin.id === t.event.id ? d({}, e, {
5451 pin: d({}, e.pin, {
5452 bzz: ((e.pin.bzz || 0) + 1) % 20 + 1
5453 })
5454 }) : e.pin.id !== t.event.id ? d({}, e, {
5455 pin: t.event
5456 }) : e : d({}, e, {
5457 pin: t.event
5458 });
5459 case m:
5460 return e.list = e.list.concat([t.event]), e.list.length >= 5 ? k(e, {
5461 type: h
5462 }) : d({}, e);
5463 case p:
5464 return d({}, e, {}, t.update);
5465 default:
5466 return e
5467 }
5468 }
5469 var y = 1;
5470
5471 function P(e, t) {
5472 return function (n) {
5473 n({
5474 type: m,
5475 event: {
5476 id: y++,
5477 type: e,
5478 data: t
5479 }
5480 }), n(D())
5481 }
5482 }
5483 var M = null;
5484
5485 function D() {
5486 return function (e, t) {
5487 clearTimeout(M), M = setTimeout((function () {
5488 e({
5489 type: h
5490 }), t().EventList.list.length > 0 && e(D())
5491 }), 3e3)
5492 }
5493 }
5494 var C = null;
5495
5496 function j() {
5497 return function (e) {
5498 clearTimeout(C), C = setTimeout((function () {
5499 e({
5500 type: p,
5501 update: {
5502 pin: null
5503 }
5504 })
5505 }), 3e3)
5506 }
5507 }
5508
5509 function x(e, t, n) {
5510 return function (a) {
5511 a({
5512 type: f,
5513 event: {
5514 id: n,
5515 type: e,
5516 data: t
5517 }
5518 }), a(j())
5519 }
5520 }
5521
5522 function T(e, t, n) {
5523 return function (t) {
5524 B(e).then((function (e) {
5525 e && t(P(v, {
5526 user: e
5527 }))
5528 }))
5529 }
5530 }
5531
5532 function A() {
5533 return x(g, {}, "offline")
5534 }
5535
5536 function L() {
5537 return u.a.getRequest("VKWebAppTapticNotificationOccurred", {
5538 type: "warning"
5539 }, "VKWebAppGetFriendsResult", "VKWebAppTapticNotificationOccurredFailed").send(), x(b, {}, "freeze")
5540 }
5541
5542 function I() {
5543 return u.a.getRequest("VKWebAppTapticNotificationOccurred", {
5544 type: "error"
5545 }, "VKWebAppGetFriendsResult", "VKWebAppTapticNotificationOccurredFailed").send(), x(O, {}, "same")
5546 }
5547 var R = {};
5548
5549 function B(e) {
5550 return S.apply(this, arguments)
5551 }
5552
5553 function S() {
5554 return (S = Object(o.a)(r.a.mark((function e(t) {
5555 var n;
5556 return r.a.wrap((function (e) {
5557 for (;;) switch (e.prev = e.next) {
5558 case 0:
5559 if (0 !== parseInt(t, 10)) {
5560 e.next = 2;
5561 break
5562 }
5563 return e.abrupt("return", null);
5564 case 2:
5565 if ("object" !== typeof R[t]) {
5566 e.next = 4;
5567 break
5568 }
5569 return e.abrupt("return", R[t]);
5570 case 4:
5571 if (1 !== R[t]) {
5572 e.next = 6;
5573 break
5574 }
5575 return e.abrupt("return", null);
5576 case 6:
5577 return R[t] = 1, e.next = 9, c.a.request("user", {
5578 user_id: t
5579 }).catch((function (e) {
5580 return Object(s.k)(e), null
5581 }));
5582 case 9:
5583 return (n = e.sent) ? R[t] = n : delete R[t], e.abrupt("return", n);
5584 case 12:
5585 case "end":
5586 return e.stop()
5587 }
5588 }), e)
5589 })))).apply(this, arguments)
5590 }
5591 },
5592 450: function (e, t, n) {},
5593 451: function (e, t, n) {},
5594 48: function (e, t, n) {
5595 "use strict";
5596 var a = n(5),
5597 r = n(6),
5598 o = (n(381), n(10)),
5599 i = n(7),
5600 c = n(9),
5601 s = n(194),
5602 l = function (e) {
5603 function t() {
5604 return Object(a.a)(this, t), Object(o.a)(this, Object(i.a)(t).apply(this, arguments))
5605 }
5606 return Object(c.a)(t, e), t
5607 }(Object(s.a)(Error)),
5608 u = n(14),
5609 _ = n.n(u);
5610 n.d(t, "a", (function () {
5611 return d
5612 }));
5613 var d = function () {
5614 function e() {
5615 Object(a.a)(this, e)
5616 }
5617 return Object(r.a)(e, null, [{
5618 key: "__call",
5619 value: function (t, n) {
5620 var a = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "GET",
5621 r = "/api/" + t,
5622 o = {
5623 method: a || "GET",
5624 cache: "no-cache",
5625 redirect: "error",
5626 headers: {
5627 "X-vk-sign": _.a.startSearch
5628 }
5629 };
5630 return "GET" !== a.toString().toUpperCase() ? (n instanceof FormData || (o.headers["Content-Type"] = "application/json"), o.body = n instanceof FormData ? n : JSON.stringify(n)) : r += "?" + e.stringify(n), new Promise((function (e, t) {
5631 try {
5632 fetch(r, o).then(e).catch((function (e) {
5633 e instanceof TypeError && (e.network = !0, e.message = e.message + " " + r), t(e)
5634 }))
5635 } catch (n) {
5636 t(n)
5637 }
5638 }))
5639 }
5640 }, {
5641 key: "request",
5642 value: function (t, n) {
5643 var a = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "GET",
5644 r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 5;
5645 return new Promise((function (o, i) {
5646 try {
5647 e.__call(t, n, a).then((function (c) {
5648 var s = c.headers.get("Content-Type");
5649 if (s && -1 !== s.indexOf("application/json")) c.json().then((function (e) {
5650 void 0 !== e.response ? o(e.response) : void 0 !== e.error && e.error && void 0 !== e.error.message ? i(e.error) : i(e)
5651 }));
5652 else {
5653 if (!(r > 0)) throw new l(a + " " + t + " response " + c.status + " Content-Type: " + s);
5654 setTimeout((function () {
5655 e.request(t, n, a, r - 1).then(o).catch(i)
5656 }), 1e3 * Math.random())
5657 }
5658 })).catch((function (c) {
5659 c && c.network && r > 0 ? setTimeout((function () {
5660 e.request(t, n, a, r - 1).then(o).catch(i)
5661 }), 1e3 * Math.random()) : i(c)
5662 }))
5663 } catch (c) {
5664 r > 0 ? setTimeout((function () {
5665 e.request(t, n, a, r - 1).then(o).catch(i)
5666 }), 1e3 * Math.random()) : i(c)
5667 }
5668 }))
5669 }
5670 }, {
5671 key: "stringify",
5672 value: function (t) {
5673 var n = arguments.length > 1 && void 0 !== arguments[1] && arguments[1],
5674 a = arguments.length > 2 && void 0 !== arguments[2] && arguments[2],
5675 r = [],
5676 o = function (n) {
5677 if (t.hasOwnProperty(n)) {
5678 var o = t[n];
5679 if (void 0 === o) return "continue";
5680 if (o && "function" === typeof o.forEach) o.forEach((function (e) {
5681 return r.push({
5682 k: (a ? a + "[" + n + "]" : n) + "[]",
5683 v: e
5684 })
5685 }));
5686 else if ("object" === typeof o) {
5687 e.stringify(o, !0, a ? a + "[" + n + "]" : n).forEach((function (e) {
5688 return r.push(e)
5689 }))
5690 } else r.push({
5691 k: a ? a + "[" + n + "]" : n,
5692 v: o
5693 })
5694 }
5695 };
5696 for (var i in t) o(i);
5697 return n ? r : r.map((function (e) {
5698 return e.k + "=" + encodeURIComponent(e.v)
5699 })).join("&")
5700 }
5701 }]), e
5702 }()
5703 },
5704 51: function (e, t, n) {
5705 "use strict";
5706 n.d(t, "a", (function () {
5707 return s
5708 }));
5709 var a = n(5),
5710 r = n(10),
5711 o = n(7),
5712 i = n(9),
5713 c = n(35),
5714 s = function (e) {
5715 function t() {
5716 var e, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : c.b,
5717 i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : c.d,
5718 s = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : c.c,
5719 l = arguments.length > 3 && void 0 !== arguments[3] && arguments[3];
5720 return Object(a.a)(this, t), (e = Object(r.a)(this, Object(o.a)(t).call(this))).panelId = n, e.viewId = i, e.rootId = s, e.isPopup = l, e
5721 }
5722 return Object(i.a)(t, e), t
5723 }(n(122).a)
5724 },
5725 65: function (e, t, n) {
5726 "use strict";
5727 n.d(t, "c", (function () {
5728 return o
5729 })), n.d(t, "b", (function () {
5730 return i
5731 }));
5732 var a = "FatalError.SET_ERROR",
5733 r = "FatalError.REMOVE_ERROR";
5734
5735 function o(e) {
5736 return function (t) {
5737 t({
5738 type: a,
5739 error: e
5740 })
5741 }
5742 }
5743
5744 function i() {
5745 return function (e) {
5746 e({
5747 type: r
5748 })
5749 }
5750 }
5751 t.a = function () {
5752 var e = arguments.length > 0 && void 0 !== arguments[0] && arguments[0],
5753 t = arguments.length > 1 ? arguments[1] : void 0;
5754 switch (t.type) {
5755 case a:
5756 return t.error;
5757 case r:
5758 return !1;
5759 default:
5760 return e
5761 }
5762 }
5763 },
5764 78: function (e, t, n) {
5765 "use strict";
5766 n.d(t, "a", (function () {
5767 return _
5768 })), n.d(t, "c", (function () {
5769 return p
5770 })), n.d(t, "b", (function () {
5771 return m
5772 })), n.d(t, "d", (function () {
5773 return h
5774 }));
5775 var a = n(13),
5776 r = n(48),
5777 o = n(2),
5778 i = n(14),
5779 c = n.n(i);
5780
5781 function s(e, t) {
5782 var n = Object.keys(e);
5783 if (Object.getOwnPropertySymbols) {
5784 var a = Object.getOwnPropertySymbols(e);
5785 t && (a = a.filter((function (t) {
5786 return Object.getOwnPropertyDescriptor(e, t).enumerable
5787 }))), n.push.apply(n, a)
5788 }
5789 return n
5790 }
5791 var l = "Group.UPDATE",
5792 u = {
5793 loading: !1,
5794 enable: !1,
5795 hasToken: !1,
5796 error: null,
5797 group: !1
5798 };
5799
5800 function _() {
5801 var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : u,
5802 t = arguments.length > 1 ? arguments[1] : void 0;
5803 switch (t.type) {
5804 case l:
5805 return function (e) {
5806 for (var t = 1; t < arguments.length; t++) {
5807 var n = null != arguments[t] ? arguments[t] : {};
5808 t % 2 ? s(n, !0).forEach((function (t) {
5809 Object(a.a)(e, t, n[t])
5810 })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : s(n).forEach((function (t) {
5811 Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t))
5812 }))
5813 }
5814 return e
5815 }({}, e, {}, t.update);
5816 default:
5817 return e
5818 }
5819 }
5820
5821 function d(e) {
5822 return {
5823 type: l,
5824 update: e
5825 }
5826 }
5827
5828 function p() {
5829 return function (e) {
5830 e(d({
5831 loading: !0,
5832 error: null,
5833 group: !0
5834 })), r.a.request("group/index", {}, "GET").then((function (t) {
5835 var n = t.enable,
5836 a = t.hasToken;
5837 e(d({
5838 enable: n,
5839 hasToken: a,
5840 loading: !1
5841 }))
5842 })).catch((function (t) {
5843 Object(o.k)(t), e(d({
5844 error: t.message || "unknown error",
5845 loading: !1
5846 }))
5847 }))
5848 }
5849 }
5850
5851 function m() {
5852 return "admin" === c.a.getStartParams().viewerGroupRole
5853 }
5854
5855 function h() {
5856 return function (e, t) {
5857 var n = t().Group,
5858 a = n.enable,
5859 i = n.hasToken;
5860 a ? (e(d({
5861 enable: !1
5862 })), r.a.request("group/update", {
5863 remove: !0
5864 }, "POST").catch((function (t) {
5865 e(d({
5866 error: t.message || "unknown error"
5867 }))
5868 }))) : (e(d({
5869 enable: !0
5870 })), i ? r.a.request("group/update", {
5871 enable: !0
5872 }, "POST").catch((function (t) {
5873 e(d({
5874 error: t.message || "unknown error"
5875 }))
5876 })) : c.a.getRequest("VKWebAppGetCommunityAuthToken", {
5877 app_id: c.a.getStartParams().appId,
5878 group_id: c.a.getStartParams().groupId,
5879 scope: "photos,manage"
5880 }, "VKWebAppGetCommunityAuthTokenResult", "VKWebAppGetCommunityAuthTokenFailed").send().then((function (t) {
5881 var n = t.access_token;
5882 r.a.request("group/update", {
5883 token: n,
5884 enable: !0
5885 }, "POST").catch((function (t) {
5886 e(d({
5887 error: t.message || "unknown error"
5888 }))
5889 }))
5890 })).catch((function (t) {
5891 Object(o.k)(t), e(d({
5892 enable: !1
5893 }))
5894 })))
5895 }
5896 }
5897 },
5898 79: function (e, t, n) {
5899 "use strict";
5900 n.d(t, "a", (function () {
5901 return s
5902 }));
5903 var a = n(5),
5904 r = n(6),
5905 o = n(195),
5906 i = n(35),
5907 c = n(51),
5908 s = function () {
5909 function e() {
5910 Object(a.a)(this, e)
5911 }
5912 return Object(r.a)(e, [{
5913 key: "getLocation",
5914 value: function () {
5915 return this.location
5916 }
5917 }, {
5918 key: "getPageId",
5919 value: function () {
5920 return this.pageId ? this.pageId : i.a
5921 }
5922 }, {
5923 key: "getPanelId",
5924 value: function () {
5925 return this.structure instanceof c.a ? this.structure.panelId : i.b
5926 }
5927 }, {
5928 key: "getViewId",
5929 value: function () {
5930 return this.structure instanceof c.a ? this.structure.viewId : i.d
5931 }
5932 }, {
5933 key: "getRootId",
5934 value: function () {
5935 return this.structure instanceof c.a ? this.structure.rootId : i.c
5936 }
5937 }, {
5938 key: "isPopup",
5939 value: function () {
5940 return !!this.structure && this.structure.isPopup
5941 }
5942 }, {
5943 key: "getParams",
5944 value: function () {
5945 return this.params
5946 }
5947 }, {
5948 key: "getPopupId",
5949 value: function () {
5950 return this.popupId
5951 }
5952 }], [{
5953 key: "fromLocation",
5954 value: function (t, n) {
5955 var a = new e;
5956 a.location = t;
5957 var r = null;
5958 return Object.keys(i.e).some((function (e) {
5959 return !!(r = Object(o.d)(t, e)) && r.isExact
5960 })), !r || r && !r.isExact ? a : (a.params = r.params, a.pageId = r.path, i.e[a.pageId].isPopup && n && n.previousRoute ? i.e[a.pageId] instanceof c.a ? (a.structure = new c.a(n.previousRoute.getPanelId(), n.previousRoute.getViewId(), n.previousRoute.getRootId(), !0), a.popupId = r.path, a.pageId = n.previousRoute.pageId) : (a.pageId = n.previousRoute.pageId, a.popupId = r.path, a.structure = i.e[r.path]) : (a.structure = i.e[a.pageId], a.isPopup() && (a.popupId = r.path)), a)
5961 }
5962 }, {
5963 key: "fromPageId",
5964 value: function (t, n) {
5965 var a = new e;
5966 return a.location = Object(o.c)(t, n), a.pageId = t, a.structure = i.e[t], a.params = n, a
5967 }
5968 }]), e
5969 }()
5970 },
5971 96: function (e, t, n) {
5972 "use strict";
5973 n.d(t, "a", (function () {
5974 return m
5975 })), n.d(t, "c", (function () {
5976 return w
5977 }));
5978 var a = n(13),
5979 r = n(193),
5980 o = n(79),
5981 i = n(35),
5982 c = n(51),
5983 s = n(145);
5984
5985 function l(e, t) {
5986 var n = Object.keys(e);
5987 if (Object.getOwnPropertySymbols) {
5988 var a = Object.getOwnPropertySymbols(e);
5989 t && (a = a.filter((function (t) {
5990 return Object.getOwnPropertyDescriptor(e, t).enumerable
5991 }))), n.push.apply(n, a)
5992 }
5993 return n
5994 }
5995
5996 function u(e) {
5997 for (var t = 1; t < arguments.length; t++) {
5998 var n = null != arguments[t] ? arguments[t] : {};
5999 t % 2 ? l(n, !0).forEach((function (t) {
6000 Object(a.a)(e, t, n[t])
6001 })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : l(n).forEach((function (t) {
6002 Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t))
6003 }))
6004 }
6005 return e
6006 }
6007 var _ = "LocationModule.SET_LOCATION_MODULE",
6008 d = "LocationModule.PUSH_VIEW_HISTORY",
6009 p = "LocationModule.POP_VIEW_HISTORY",
6010 m = "PUSH",
6011 h = "POP",
6012 f = "REPLACE";
6013 var E = {
6014 viewHistory: function () {
6015 var e = {};
6016 return Object.keys(i.e).forEach((function (t) {
6017 var n = i.e[t].viewId;
6018 n && !e.hasOwnProperty(n) && (e[n] = [])
6019 })), e
6020 }(),
6021 viewsPanels: function () {
6022 var e = {};
6023 return Object.keys(i.e).forEach((function (t) {
6024 var n = i.e[t].viewId,
6025 a = i.e[t].panelId;
6026 n && (e.hasOwnProperty(n) || (e[n] = []), a && !~e[n].indexOf(a) && (e[n] = [].concat(Object(r.a)(e[n]), [i.e[t].panelId])))
6027 })), e
6028 }(),
6029 currentViewId: null
6030 };
6031
6032 function v(e) {
6033 return {
6034 type: _,
6035 update: {
6036 currentViewId: e
6037 }
6038 }
6039 }
6040
6041 function b(e, t) {
6042 return function (n, a) {
6043 if (e.structure instanceof c.a) {
6044 var r = a().LocationModule.currentViewId;
6045 switch (t) {
6046 case m:
6047 n(O(e.getViewId(), e.getPanelId()));
6048 break;
6049 case h:
6050 r && n(g(r));
6051 break;
6052 case f:
6053 r && n(function (e, t, n) {
6054 return function (a) {
6055 a(g(e)), a(O(t, n))
6056 }
6057 }(r, e.getViewId(), e.getPanelId()))
6058 }
6059 n(v(e.getViewId()))
6060 }
6061 }
6062 }
6063
6064 function O(e, t) {
6065 return {
6066 type: d,
6067 viewId: e,
6068 paneId: t
6069 }
6070 }
6071
6072 function g(e) {
6073 return {
6074 type: p,
6075 viewId: e
6076 }
6077 }
6078
6079 function w(e, t, n) {
6080 var a = arguments.length > 3 && void 0 !== arguments[3] && arguments[3];
6081 return function (n) {
6082 var r = o.a.fromLocation(e);
6083 if (a && r.isPopup()) Object(s.replacePage)(i.a);
6084 else {
6085 n(b(r, t));
6086 r.getPageId()
6087 }
6088 }
6089 }
6090 t.b = function () {
6091 var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : E,
6092 t = arguments.length > 1 ? arguments[1] : void 0;
6093 switch (t.type) {
6094 case _:
6095 return Object.assign({}, e, t.update);
6096 case d:
6097 return u({}, e, {
6098 viewHistory: u({}, e.viewHistory, Object(a.a)({}, t.viewId, e.viewHistory[t.viewId].concat([t.paneId])))
6099 });
6100 case p:
6101 return u({}, e, {
6102 viewHistory: u({}, e.viewHistory, Object(a.a)({}, t.viewId, e.viewHistory[t.viewId].slice(0, -1)))
6103 });
6104 default:
6105 return e
6106 }
6107 }
6108 }
6109 },
6110 [
6111 [247, 4, 5]
6112 ]
6113]);