DOOT

Liz3 tools. Telegram clientside aes

目前為 2021-06-10 提交的版本,檢視 最新版本

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         DOOT
// @namespace    http://tampermonkey.net/
// @version      0.5
// @description  Liz3 tools. Telegram clientside aes
// @author       MrKleiner
// @match        https://web.telegram.org/
// @icon         https://www.google.com/s2/favicons?domain=telegram.org
// @require      https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/aes.js
// @grant        none
// ==/UserScript==

/*
Disclaimer: Yes, I know that Telegram uses AES by default.
The point of this shit is to make sure that there's no PHYSICAL way to intercept the "message access password".
With this method - NOTHING password-related is being tossed into the network. All the decryptions and encryptions are completely client-side.

So even if there's a malicious FBI lizard with linux laptop sitting next to your house and monitoring all the traffic - he won't see any actual messages.
Altough this doesnt mean that he won't fuck you in the ass if he wanted to.

I mean, this should theoretically protect you from your Telegram password being stolen by MITM attack or something.
*/

// ====================================================
// ====================================================
//                  API DOCUMENTATION
// ====================================================
// ====================================================


// liz3 cookie config is an array, where
/*

0 - global enable
1 - local mute
2 - darkmode
3 - group igonre

*/





/*

function release_compiler()
{
    var all_css_compile = btoa($('#user-css').html());

    var what_to_copy = 'var liz3_css_64 = "' + all_css_compile + '"';
    // console.log(what_to_copy)
    var $temp = $("<input>");
    $("body").append($temp);
    $temp.val(what_to_copy).select();
    document.execCommand("copy");
    $temp.remove();
}

*/


// append css required for the liz3 menu. This is base64.
var liz3_css_64 = "PHN0eWxlPi8qCkBpbXBvcnQgdXJsKCJodHRwczovL2RsLmRyb3Bib3guY29tL3MvdHVrMXQ4bnR2bjg0Mzc1L2RhcmsuY3NzP2RsPTAiKTsKKi8KCgouZGVkMgp7CiAgZGlzcGxheTogbm9uZTsKfQoKCgovKgo9PT09PT09PT09PT09PT09PT09PT09PT09Ck1lbnUKPT09PT09PT09PT09PT09PT09PT09PT09PQoqLwpAaW1wb3J0IHVybCgnaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1Sb2JvdG86d2dodEAxMDAmZGlzcGxheT1zd2FwJyk7CgpAaW1wb3J0IHVybCgiaHR0cHM6Ly9kbC5kcm9wYm94LmNvbS9zL3Iza2hteXA0a2pwb3ltaS9kcm9pZHNhbnMudHRmP2RsPTAiKTsKCkBmb250LWZhY2UgCnsKCWZvbnQtZmFtaWx5OiAiYmxlbmRlciI7CglzcmM6IHVybCgiaHR0cHM6Ly9kbC5kcm9wYm94LmNvbS9zL3Iza2hteXA0a2pwb3ltaS9kcm9pZHNhbnMudHRmP2RsPTAiKTsKfQoKLmNsYXNzX2hpZGRlbgp7CglkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KCi5ub3NlbGVjdAp7Cgktd2Via2l0LXRvdWNoLWNhbGxvdXQ6IG5vbmU7Cgktd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwoJLWtodG1sLXVzZXItc2VsZWN0OiBub25lOwoJLW1vei11c2VyLXNlbGVjdDogbm9uZTsKCS1tcy11c2VyLXNlbGVjdDogbm9uZTsKCXVzZXItc2VsZWN0OiBub25lOwp9CgouZmxpcF94CnsKCS13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVgoLTEpOwoJdHJhbnNmb3JtOiBzY2FsZVgoLTEpOwp9CgouZWxlbV9ob3Zlcjpob3Zlcgp7CglmaWx0ZXI6IGdyYXlzY2FsZSgxMDAlKTsKfQoKCi5ibWVudV9yb290CnsKCXotaW5kZXg6IDk5OTk5OTsKCXBvc2l0aW9uOiBmaXhlZDsKCS8qIHdpZHRoOiAyMDBweDsqLwoJbWluLXdpZHRoOiAxOTBweDsKCW1heC13aWR0aDogMjcwcHg7CglkaXNwbGF5OiBmbGV4OwoJY29sb3I6ICNFNkU2RTY7Cglmb250LWZhbWlseTogJ2JsZW5kZXInLCBzYW5zLXNlcmlmOwoJZm9udC1zaXplOiAxMnB4Owp9CgouYm1lbnVfbWVudQp7CglkaXNwbGF5OiBmbGV4OwoJZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKCXdpZHRoOiAxMDAlOwoJaGVpZ2h0OiAxMDAlOwoJYmFja2dyb3VuZDogcmdiYSgzMSwgMzEsIDMxLCAwLjkzNyk7Cglib3JkZXI6IDFweCBzb2xpZCAjMTkxOTFBOwoJYm9yZGVyLXJhZGl1czogNnB4OwoJcGFkZGluZzogNXB4IDFweCA1cHggMXB4OwoKCgktd2Via2l0LWJveC1zaGFkb3c6IDBweCAxcHggM3B4IDBweCByZ2JhKDAsMCwwLDAuOSk7IAoJYm94LXNoYWRvdzogMHB4IDFweCAzcHggMHB4IHJnYmEoMCwwLDAsMC45KTsKfQoKLmJtZW51X2VudHJ5CnsKCS8qCQoJcGFkZGluZzogMnB4IDBweCAycHggMzBweDsKCQoJcGFkZGluZzogMnB4IDBweCAycHggMHB4OwogICovCglkaXNwbGF5OiBmbGV4OwoJbWFyZ2luLXRvcDogMnB4Owp9CgouYm1lbnVfZW50cnlfbGVmdF9zaWRlCnsKCXdpZHRoOiAzMHB4OwoJZGlzcGxheTogZmxleDsKCWp1c3RpZnktY29udGVudDogY2VudGVyOwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0KCi5ibWVudV9lbnRyeTpob3Zlcgp7CgliYWNrZ3JvdW5kOiAjNTY4MEMyOwp9CgouYm1lbnVfaGVhZGVyCnsKCXBhZGRpbmc6IDBweCAwcHggMnB4IDEwcHg7CglkaXNwbGF5OiBmbGV4OwoJbWFyZ2luLXRvcDogMnB4OwoJY29sb3I6ICNhNWE1YTU7Cn0KCi5ibWVudV9oZWFkX3NlcGFyYXRvcgp7CgloZWlnaHQ6IDFweDsKCWRpc3BsYXk6IGZsZXg7CgltYXJnaW46IDNweCAwcHggM3B4IDBweDsKCWJhY2tncm91bmQ6ICMzOTM5Mzk7Cn0KCi5ibWVudV9zZXBhcmF0b3IKewoJaGVpZ2h0OiAxcHg7CglkaXNwbGF5OiBmbGV4OwoJbWFyZ2luOiA3cHggMHB4IDVweCAwcHg7CgliYWNrZ3JvdW5kOiAjMzkzOTM5Owp9CgouZGlzYWJsZWRzIHsKCXBvaW50ZXItZXZlbnRzOiBub25lOwoJY3Vyc29yOiBkZWZhdWx0Owp9CgoKLmJtZW51X2NoZWNrYm94X2NoZWNrZWRfYmcgCnsKICAgIGJhY2tncm91bmQ6ICM1Mzc5YjQgIWltcG9ydGFudDsKfQoKLmJtZW51X2NoZWNrYm94IAp7CiAgICBkaXNwbGF5OiBmbGV4OwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgd2lkdGg6IDEycHg7CiAgICBoZWlnaHQ6IDEycHg7CiAgICBiYWNrZ3JvdW5kOiAjNjY2NjY2OwogICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgYm9yZGVyOiAxcHggc29saWQgIzM3MzczNzsKfQoKCi5ibWVudV9jaGVja2JveF9jaGVja21hcmsgCnsKICAgIHdpZHRoOiAycHg7CiAgICBoZWlnaHQ6IDdweDsKICAgIGJhY2tncm91bmQ6IG5vbmU7CglvcGFjaXR5OiAxOwoJdHJhbnNmb3JtOiByb3RhdGUoCgkJNDVkZWcKCSk7Cglib3JkZXI6IHNvbGlkIHdoaXRlOwoJYm9yZGVyLXdpZHRoOiAwIDJweCAycHggMDsKCW1hcmdpbi1ib3R0b206IDJweDsKfQoKCi5ibWVudV9tZW51ICoKewogIC13ZWJraXQtYm94LXNpemluZzogdW5zZXQ7Cn0KCgoKCgoKCgovKgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogIGJtZW51IHBzd2Qgc2V0dGVyCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiovCgoKCi5wc3dkX2VkaXRvciAqCnsKICAgIHBhZGRpbmc6IDBweDsKICAgIG1hcmdpbjogMHB4OwogICAgZm9udC1mYW1pbHk6ICdibGVuZGVyJywgc2Fucy1zZXJpZjsKICAgIGZvbnQtc2l6ZTogMTFweDsKICAgIHRleHQtc2hhZG93OiAwcHggMXB4IDJweCAjMjYyNjI2OwogICAgY29sb3I6IHdoaXRlOwp9CgouaG92ZXJfZWRpdG9yXzFfcm9vdCAKewogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB3aWR0aDogMzAwcHg7CiAgICAvKiBoZWlnaHQ6IDEwMHB4OyAqLwogICAgYmFja2dyb3VuZDogIzE1MTUxNWUwOwogICAgLyogbWFyZ2luLXRvcDogLTExMHB4OyAqLwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGJvcmRlci1yYWRpdXM6IDVweDsKICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOwogICAgcGFkZGluZy1ib3R0b206IDEzcHg7Cn0KCi5ob3Zlcl9lZGl0b3JfMV9idG5zIAp7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgaGVpZ2h0OiAyMHB4OwogICAgd2lkdGg6IDgwJTsKICAgIC8qIGJhY2tncm91bmQ6ICM3OTllZDc7ICovCiAgICBiYWNrZ3JvdW5kOiAjNTA3NmIyOwogICAgbWFyZ2luLXRvcDogMTBweDsKICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGJvcmRlcjogMXB4IHNvbGlkICMzZjNmM2Y7CiAgICB1c2VyLXNlbGVjdDogbm9uZTsKfQoKCi5ob3Zlcl9lZGl0b3JfMV9pbnB1dF9jb250YWluZXIgCnsKCWRpc3BsYXk6IGZsZXg7Cgl3aWR0aDogODAlOwoJaGVpZ2h0OiAyMHB4OwoJb3V0bGluZTogMHB4OwoJY29sb3I6IHdoaXRlOwoJbWFyZ2luOiAxMHB4IDVweCAxcHggNXB4Owp9CgoKLmhvdmVyX2VkaXRvcl8xX2J0bnMgCnsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBoZWlnaHQ6IDIwcHg7CiAgICB3aWR0aDogODAlOwogICAgLyogYmFja2dyb3VuZDogIzc5OWVkNzsgKi8KICAgIGJhY2tncm91bmQ6ICM1MDc2YjI7CiAgICBtYXJnaW4tdG9wOiAxMHB4OwogICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgYm9yZGVyOiAxcHggc29saWQgIzNmM2YzZjsKICAgIHVzZXItc2VsZWN0OiBub25lOwp9CgouaG92ZXJfZWRpdG9yXzFfaW5wdXQgCnsKICAgIGFsbDogdW5zZXQ7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMjBweDsKICAgIG91dGxpbmU6IDBweDsKICAgIGJhY2tncm91bmQ6ICM1OTU5NTk7CiAgICBjb2xvcjogd2hpdGU7CiAgICBwYWRkaW5nOiAxcHggOHB4IDFweCA4cHg7CiAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjNDQ0NDQ0Owp9CgouaG92ZXJfZWRpdG9yXzFfYnRuczphY3RpdmUgCnsKICAgIGJhY2tncm91bmQ6ICM1MDc2YjI7Cn0KCi5ob3Zlcl9lZGl0b3JfMV9idG5zOmhvdmVyIAp7CiAgICBiYWNrZ3JvdW5kOiAjNzk5ZWQ3Owp9CgouaG92ZXJfZWRpdG9yXzFfaW5wdXQ6aG92ZXIgCnsKICAgIGJhY2tncm91bmQ6ICM4MDgwODA7Cn0KCi5ob3Zlcl9lZGl0b3JfMV9idG5zOmFjdGl2ZSAKewogICAgYmFja2dyb3VuZDogIzUwNzZiMjsKfQoKCi8qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgYm1lbnUgcHN3ZCBzZXR0ZXIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKi8KCgoKCi5saXozX2FsdF9tc2dfaW5wdXQKewogIGxlZnQ6IC0xN3B4OyAKICB3aWR0aDogY2FsYygxMDAlICsgMzRweCk7IAogIHBhZGRpbmctbGVmdDogMTlweDsgCiAgcGFkZGluZy1yaWdodDogNDVweDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7Cn0KCgovKiBzcGFtbWVyIAp0b2RvOiA6cm9vdCByZXVzZQoqLwoKCgoKCgoKCgoKLyoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICBibWVudSBjcmVhdG9yCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiovCgo6cm9vdAp7CgktLWJlbW51X2JnOiByZ2JhKDMxLCAzMSwgMzEsIDAuOTM3KTsKCS0tYm1lbnVfb3V0bGluZV9jb2w6ICMxOTE5MUE7CgktLWJtZW51X291dGxpbmU6IDFweCBzb2xpZCAjMTkxOTFBOwoJLS1ibWVudV9ob3ZlcjogIzU2ODBDMjsKCS0tYm1lbnVfaXRlbV90ZXh0OiAjRTZFNkU2OwoJLS1ibWVudV9oZWFkZXJfZGltOiAjYTNhM2EzOwoJLS1ibWVudV9zaGFkb3c6IDBweCAxcHggM3B4IDBweCByZ2JhKDAsMCwwLDAuOSk7CgktLWJtZW51X2JvcmRlcl9yYWRpdXM6IDZweDsKCS0tYm1lbnVfdGV4dF9maWVsZF9iZzogIzU5NTk1OTsKCS0tYm1lbnVfdGV4dF9maWVsZF9iZ19ob3ZlcjogIzgwODA4MDsKCS0tYm1lbnVfdGV4dF9maWVsZF9ib3JkZXI6IDFweCBzb2xpZCAjNDQ0NDQ0OwoJLS1ibGVuZGVyX3RleHRfc2hhZG93OiAwcHggMXB4IDJweCAjMjYyNjI2OwoJLS1ibWVudV9idXR0b25fZGVmX2JsdTogIzUwNzZiMjsKICAtLWJsZW5kZXJfdGV4dF9zZWxlY3Q6ICMxOTE5MTk7Cn0KCi5ibWVudV9jcmVhdG9yX3Jvb3QgKgp7CglwYWRkaW5nOiAwcHg7CgltYXJnaW46IDBweDsKfQoKCi5ub3NlbGVjdAp7CiAgLXdlYmtpdC10b3VjaC1jYWxsb3V0OiBub25lOwogIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgLWtodG1sLXVzZXItc2VsZWN0OiBub25lOwogIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7CiAgLW1zLXVzZXItc2VsZWN0OiBub25lOwogIHVzZXItc2VsZWN0OiBub25lOwp9CgouYm1lbnVfY3JlYXRvcl9yb290CnsKICBwb3NpdGlvbjogYWJzb2x1dGU7Cgl6LWluZGV4OiA5OTk5OTk5OwoJZGlzcGxheTogZmxleDsKCXdpZHRoOiAzMTBweDsKCWJhY2tncm91bmQ6IHZhcigtLWJlbW51X2JnKTsKCWJvcmRlcjogdmFyKC0tYm1lbnVfb3V0bGluZSk7Cglib3gtc2hhZG93OiB2YXIoLS1ibWVudV9zaGFkb3cpOwoJYm9yZGVyLXJhZGl1czogdmFyKC0tYm1lbnVfYm9yZGVyX3JhZGl1cyk7CgkKCWNvbG9yOiB2YXIoLS1ibWVudV9oZWFkZXJfZGltKTsKCWZvbnQtZmFtaWx5OiAnYmxlbmRlcicsIHNhbnMtc2VyaWY7Cglmb250LXNpemU6IDEycHg7CgkKCXRleHQtc2hhZG93OiB2YXIoLS1ibGVuZGVyX3RleHRfc2hhZG93KTsKfQoKLmJtZW51X2NyZWF0b3Jfcm9vdCAqOjpzZWxlY3Rpb24KewoJYmFja2dyb3VuZDogdmFyKC0tYmxlbmRlcl90ZXh0X3NlbGVjdCk7Cn0KCi5ibWVudV9jcmVhdG9yCnsKCWRpc3BsYXk6IGZsZXg7CglmbGV4LWRpcmVjdGlvbjogY29sdW1uOwoJZmxleC1ncm93OiAxOwoJcGFkZGluZy1ib3R0b206IDVweDsKfQoKLmJtZW51X2NyZWF0b3JfaGVhZGVyCnsKCWNvbG9yOiB2YXIoLS1ibWVudV9oZWFkZXJfZGltKTsKCW1hcmdpbi10b3A6IDExcHg7CgltYXJnaW4tbGVmdDogOHB4Owp9CgouYm1lbnVfY3JlYXRvcl9ib2R5CnsKCWRpc3BsYXk6IGZsZXg7CgltYXJnaW4tdG9wOiA3cHg7Cn0KCi5ibWVudV9jcmVhdG9yX2JvZHlfbGVmdAp7CglkaXNwbGF5OiBmbGV4OwoJZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKCXdpZHRoOiA0NSU7Cn0KCi5ibWVudV9jcmVhdG9yX2xfcm93CnsKCWRpc3BsYXk6IGZsZXg7CglhbGlnbi1pdGVtczogY2VudGVyOwoJanVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKCWhlaWdodDogMjJweDsKCW1hcmdpbjogM3B4IDBweCAzcHggMHB4OwoJcGFkZGluZy1yaWdodDogMTBweDsKCXBhZGRpbmctbGVmdDogMTBweDsKCgl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCW92ZXJmbG93OiBoaWRkZW47Cgl3aGl0ZS1zcGFjZTogbm93cmFwOwp9CgouYm1lbnVfY3JlYXRvcl9ib2R5X3JpZ2h0CnsKCWRpc3BsYXk6IGZsZXg7CglmbGV4LWRpcmVjdGlvbjogY29sdW1uOwoJZmxleC1ncm93OiAxOwp9CgouYm1lbnVfY3JlYXRvcl9yX3Jvdwp7CglkaXNwbGF5OiBmbGV4OwoJaGVpZ2h0OiAyMnB4OwoJbWFyZ2luOiAzcHggMHB4IDNweCAwcHg7CglwYWRkaW5nLXJpZ2h0OiA3cHg7Cn0KCi5ibWVudV9yb3dfdGV4dF9pbnB1dCAKewoJCiAgICBhbGw6IHVuc2V0OwoJZGlzcGxheTogZmxleDsKCXRleHQtYWxpZ246IGNlbnRlcjsKCWFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICB3aWR0aDogMTAwJTsKCWhlaWdodGQ6IDEwMCU7CiAgICBvdXRsaW5lOiAwcHg7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ibWVudV90ZXh0X2ZpZWxkX2JnKTsKICAgIGNvbG9yOiB3aGl0ZTsKICAgIHBhZGRpbmc6IDBweCA4cHggMHB4IDhweDsKICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgIGN1cnNvcjogZS1yZXNpemU7CiAgICBib3JkZXI6IHZhcigtLWJtZW51X3RleHRfZmllbGRfYm9yZGVyKTsKfQoKLmJtZW51X3Jvd190ZXh0X2lucHV0OmhvdmVyIAp7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ibWVudV90ZXh0X2ZpZWxkX2JnX2hvdmVyKTsKfQoKLmJtZW51X2NvbmZpcm1fYnRuIAp7Cgljb2xvcjogd2hpdGU7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgaGVpZ2h0OiAyMHB4OwoJd2lkdGg6IDEwMCU7CiAgICAvKiBiYWNrZ3JvdW5kOiAjNzk5ZWQ3OyAqLwogICAgYmFja2dyb3VuZDogdmFyKC0tYm1lbnVfYnV0dG9uX2RlZl9ibHUpOwogICAgbWFyZ2luLXRvcDogMTBweDsKICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGJvcmRlcjogMXB4IHNvbGlkICMzZjNmM2Y7CiAgICB1c2VyLXNlbGVjdDogbm9uZTsKfQoKLmJtZW51X2NvbmZpcm1fYnRuOmhvdmVyIAp7CiAgICBiYWNrZ3JvdW5kOiAjNzk5ZWQ3Owp9CgouYWxpZ25fc2VsZl9jZW50ZXIKewoJYWxpZ24tc2VsZjogY2VudGVyOwp9CgouY29uZmlybV9pbGx1bWluYXRpCnsKCXBhZGRpbmc6IDBweCA3cHggMHB4IDdweDsKfQoKLyoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICBibWVudSBjcmVhdG9yCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiovCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo8L3N0eWxlPg==";

// dark mode css is being loaded from dropbox text file for now.


// cbid = selector for the checkbox, state = set the checkbox state to... 1 = true, 0 = false
function checkbox_activator(cbid, cstate)
{
    // var current_cbox = $("#" + cbid).closest(".disaster_checkbox_row");
    // var current_cbox_state = $(current_cbox).find(".disaster_checkbox_checkmark").attr("mgh_checkbox_checked");
    if ( cstate == "toggle" )
    {
        console.log('toggle command');
        if ( $(cbid).find('.bmenu_checkbox_checkmark').attr('bmenu_checkbox_checked') == "1" )
        {
            $(cbid).find(".bmenu_checkbox_checkmark").attr("bmenu_checkbox_checked", "0");
            $(cbid).removeClass("bmenu_checkbox_checked_bg");
            $(cbid).find(".bmenu_checkbox_checkmark").addClass("class_hidden");
        }else{
        // if ( $(cbid).find('.bmenu_checkbox_checkmark').attr('bmenu_checkbox_checked') == "0" )

            $(cbid).find(".bmenu_checkbox_checkmark").attr("bmenu_checkbox_checked", "1");
            $(cbid).addClass("bmenu_checkbox_checked_bg");
            $(cbid).find(".bmenu_checkbox_checkmark").removeClass("class_hidden");
        }
    }else{
        if (parseInt(cstate) > 0)
        {
            $(cbid).find(".bmenu_checkbox_checkmark").attr("bmenu_checkbox_checked", "1");
            $(cbid).addClass("bmenu_checkbox_checked_bg");
            $(cbid).find(".bmenu_checkbox_checkmark").removeClass("class_hidden");
        }

        if (parseInt(cstate) == 0)
        {
            $(cbid).find(".bmenu_checkbox_checkmark").attr("bmenu_checkbox_checked", "0");
            $(cbid).removeClass("bmenu_checkbox_checked_bg");
            $(cbid).find(".bmenu_checkbox_checkmark").addClass("class_hidden");
        }
    }


}

function setCookie(cname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
    var expires = "expires="+d.toUTCString();
    document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}

function getCookie(cname) {
    var name = cname + "=";
    var ca = document.cookie.split(';');
    for(var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') {
            c = c.substring(1);
        }
        if (c.indexOf(name) == 0) {
            return c.substring(name.length, c.length);
        }
    }
    return "";
}

function checkCookie(cookie_name) {
    var user = getCookie(cookie_name);
    if (user != "") {
        console.log('detected cookie "' + cookie_name + '" ' + 'with a value of ' + user);
        return false;
    } else {
        console.log('no cookie with the name "' + cookie_name + '" detected');
        return true;
    }
}



// setTimeout(function() { big_msngr_observer(); }, 5000);
$(document).ready(function(){
    // check if we have config
    if ( checkCookie('liz3_config') )
    {
        setCookie('liz3_config', '1-0-0-0', 420);
        console.log('no liz3 config detected, falling back to defaults');
        window.liz3_system_enabled = 1;
        window.liz3_quick_mute = 0;
        window.liz3_dark_mode = 0;
        window.liz3_group_ignore_var = 0;
    }

    window.liz3_current_session_password = getCookie('liz3_cur_pswd');
    window.liz3_current_config = getCookie('liz3_config').split('-');

    window.liz3_system_enabled = parseInt(liz3_current_config[0]);
    window.liz3_quick_mute = parseInt(liz3_current_config[1]);
    window.liz3_dark_mode = parseInt(liz3_current_config[2]);
    window.liz3_group_ignore_var = parseInt(liz3_current_config[3]);
    // window.liz3_quick_mute = 1;

    window.initializer_timeout = 0;
    window.tg_msg_edit_mode = 0;

    $('body').append('<div id="global_password_changer" class="hover_editor_1_root pswd_editor class_hidden"> <div class="hover_editor_1_btns pswd_editor_btns pswd_editor_btn_apply">OK</div> <div class="hover_editor_1_input_container pswd_editor_input_container"> <input class="hover_editor_1_input pswd_editor_input" value=""> </div> <div class="hover_editor_1_btns pswd_editor_btns pswd_editor_btn_cancel">Cancel</div> </div>');
    look_at_telegram()
    console.log(getCookie('liz3_config'));
    liz3_dark_theme_page_load()
    $('body').append('<div id="liz3_required_css">' + atob(liz3_css_64) + '</div>');
    $('body').append('<div class="bmenu_creator_root illuminati_place class_hidden"> <div class="bmenu_creator"> <div class="bmenu_creator_header noselect">Toybox message spammer</div> <div class="bmenu_creator_body"> <div class="bmenu_creator_body_left"> <div class="bmenu_creator_l_row noselect">Message</div> <div class="bmenu_creator_l_row noselect">Interval</div> <div class="bmenu_creator_l_row noselect">Total count</div> <div class="bmenu_creator_l_row noselect">Notification frequency</div> </div> <div class="bmenu_creator_body_right"> <div class="bmenu_creator_r_row"> <input value="lol" class="bmenu_row_text_input illuminati_msg"></input> </div> <div class="bmenu_creator_r_row"> <input value="1" class="bmenu_row_text_input illuminati_int"></input> </div> <div class="bmenu_creator_r_row"> <input value="10" class="bmenu_row_text_input illuminati_count"></input> </div> <div class="bmenu_creator_r_row"> <input value="5" class="bmenu_row_text_input illuminati_info_freq"></input> </div> </div> </div> <div class="confirm_illuminati"> <div class="bmenu_confirm_btn noselect align_self_center illuminati_confirm">OK</div><div class="bmenu_confirm_btn noselect align_self_center cancel_illuminati">Cancel</div> </div> </div> </div>');
});

function liz3_set_config()
{
    checkbox_activator($('.bmenu_entry[bmenu_opt="enable_liz3"] .bmenu_checkbox'), liz3_current_config[0]);
    checkbox_activator($('.bmenu_entry[bmenu_opt="liz3_quick_mute"] .bmenu_checkbox'), liz3_current_config[1]);
    checkbox_activator($('.bmenu_entry[bmenu_opt="liz3_dark_theme_menu_call"] .bmenu_checkbox'), window.liz3_dark_mode);
    checkbox_activator($('.bmenu_entry[bmenu_opt="liz3_group_ignore"] .bmenu_checkbox'), window.liz3_group_ignore_var);
}

function look_at_telegram()
{
    // Try to locate the mini messenger message grid. Got better solution for more accurate selector? Email us at "[email protected]"
    if($('form .composer_rich_textarea').length > 0 && $('.im_history_message_wrap').closest('.im_history_messages_peer').length > 0 )
    {
        window.initializer_timeout = 1;
        // celebrate. Important info log
        console.log('found text field');
        // trigger message decryptor
        if ( liz3_system_enabled == 1 )
        {
            init2();
            tg_msgs_observer();
        }

    }else{
        // important info log, which informs us that no messenger presented on a page
        console.log('We aint found shit');
        // check if we've reached the timeout. If we've reached the timeout - it means that the page is done loading, but mini-messenger window did not appear
        if ( initializer_timeout == 0 )
        {
            // If we got here, then we havent found the messenger. Try again
            setTimeout( look_at_telegram, 250 );
        }

    }

}

function init2()
{
    $('.composer_rich_textarea').addClass('ded2 tg_original_msg_input');
    $('.im_send_field_wrap.hasselect').append('<textarea type="text" class="composer_rich_textarea liz3_alt_msg_input" dir="auto" placeholder="Write a message..."></textarea>');

   // setTimeout( tg_msgs_observer, 1500 );
    $(".liz3_alt_msg_input").on('keydown', function (e) {
        if (e.key === 'Enter' || e.keyCode === 13) {
            if($('.liz3_alt_msg_input').val().length > 0)
            {
                if( e.shiftKey  &&  e.key === 'Enter' )
                {
                    console.log('thats gonna be a line break')
                }else{
                    console.log("input is full and we want to send");
                    if ( window.liz3_quick_mute == 1 )
                    {
                        $('.tg_original_msg_input').text($('.liz3_alt_msg_input').val());

                    }else{
                        if ( window.liz3_system_enabled == 1 )
                        {
                            if ( window.liz3_group_ignore_var == 1 )
                            {
                                if ( window.location.href.split('?p=')[1].charAt(0) == "u" || window.location.href.split('?p=')[1].charAt(0) == "@" )
                                {
                                    var encrypted_beforesend = CryptoJS.AES.encrypt($('.liz3_alt_msg_input').val(), liz3_current_session_password);
                                    $('.tg_original_msg_input').text('enc_dat420;' + encrypted_beforesend);
                                }else{
                                    $('.tg_original_msg_input').text($('.liz3_alt_msg_input').val());
                                }
                            }else{
                                var encrypted_beforesend = CryptoJS.AES.encrypt($('.liz3_alt_msg_input').val(), liz3_current_session_password);
                                $('.tg_original_msg_input').text('enc_dat420;' + encrypted_beforesend);
                            }

                        }else{
                            $('.tg_original_msg_input').text($('.liz3_alt_msg_input').val());
                        }

                    }

                    $('.im_submit').trigger('mousedown');
                    $('.liz3_alt_msg_input').val('');
                    setTimeout( make_input_great_again, 100 );
                    console.log('is it what Im thinking about');
                    // $('.liz3_alt_msg_input').focus();

                    /*
                    setTimeout(() => {
                        console.log('focus');
                        $('.liz3_alt_msg_input').blur();
                        $('.liz3_alt_msg_input').focus();
                    }, 10);
                    */
                    console.log('pre return');
                    return false;

                }
            }else{
                console.log("input is empty");
                return false;
            }
        }

        if (e.key === 'ArrowUp')
        {
            if($('.liz3_alt_msg_input').val().length > 0)
            {
                console.log('we have text in input - dont edit last msg');
            }else{

                var se = jQuery.Event("keydown");
                se.keyCode = 38;
                $('.tg_original_msg_input').trigger(se);

                setTimeout(() => {
                    $('.liz3_alt_msg_input').val($('.tg_original_msg_input').text());
                }, 15);
                setTimeout( make_input_great_again, 100 );

            }
        }
    });

    $('.icon.icon-slash').closest('.composer_command_btn').remove();
}

function tg_msgs_observer()
{
    let tg_msgs_feed_observer = new MutationObserver(function(mutation) {
        // log that there were changes
        console.log("msg list change logged");
        setTimeout( liz3_tg_decrypt_all_msgs, 25 );

    })

    let observerConfig = {
        attributes: true,
        childList: true,
        attributeOldValue: true,
        characterData: true,
        subtree: true
    }


    let tg_msgs_feed_container = $('.im_history.im_history_selectable .im_history_messages');

    for (i = 0; i < tg_msgs_feed_container.length; i++)
    {
        tg_msgs_feed_observer.observe(tg_msgs_feed_container[i], observerConfig);
    }
}







// =================================================
//
// MENU
//
// =================================================


// img flip mode
window.img_flip_mode = false;

// hax init
window.hax_innit = true;

//lock menu
window.menu_lock = false;

//====================================
//  pootis
//====================================
		document.addEventListener('mousemove'
			, function(e){
				var x = e.clientX;
				var y = e.clientY
				window.cs_x = x + "px";
				window.cs_y = y + "px";
			});
//====================================
//  pootis
//====================================


function img_flip(selector_fuck)
{
  $(selector_fuck).toggleClass("flip_x");
}




// innit hax

document.addEventListener ("keydown", function (zEvent) {

    if ( zEvent.keyCode == 27)
    {
        window.img_flip_mode = false;
        window.menu_lock = false;
        $("img").removeClass("elem_hover");
    }

    if (  zEvent.altKey  &&  zEvent.keyCode == 87  ) {  // case sensitive
        if (hax_innit)
        {
            $("body").append('<div class="bmenu_root class_hidden"> <div class="bmenu_menu"> <div class="bmenu_header noselect">Sex Toys</div> <div class="bmenu_head_separator"></div> <div bmenu_opt="bmenu_imgflip" class="bmenu_entry noselect"><div class="bmenu_entry_left_side"></div><div class="bmenu_entry_right_side">Flip image</div></div> </div> </div>');
            $('.bmenu_menu').append('<div bmenu_opt="decrypt_pswd_changer" class="bmenu_entry noselect"><div class="bmenu_entry_left_side"></div><div class="bmenu_entry_right_side">Set Password</div></div>');
            $('.bmenu_menu').append('<div class="bmenu_separator"></div>');
            $('.bmenu_menu').append('<div bmenu_ischeckbox="1" bmenu_opt="enable_liz3" class="bmenu_entry noselect"><div class="bmenu_entry_left_side"></div><div class="bmenu_entry_right_side">Enable liz3</div></div>');
            $('.bmenu_menu').append('<div bmenu_ischeckbox="1" bmenu_opt="liz3_quick_mute" class="bmenu_entry noselect"><div class="bmenu_entry_left_side"></div><div class="bmenu_entry_right_side">Liz3 quick mute</div></div>');
            $('.bmenu_menu').append('<div bmenu_ischeckbox="1" bmenu_opt="liz3_group_ignore" class="bmenu_entry noselect"><div class="bmenu_entry_left_side"></div><div class="bmenu_entry_right_side">Liz3 group ignore</div></div>');
            $('.bmenu_menu').append('<div class="bmenu_separator"></div>');
            $('.bmenu_menu').append('<div bmenu_ischeckbox="1" bmenu_opt="liz3_dark_theme_menu_call" class="bmenu_entry noselect"><div class="bmenu_entry_left_side"></div><div class="bmenu_entry_right_side">Dark mode</div></div>');
            $('.bmenu_menu').append('<div bmenu_opt="toybox_msg_spammer" class="bmenu_entry noselect"><div class="bmenu_entry_left_side"></div><div class="bmenu_entry_right_side">Spammer</div></div>');
            window.hax_innit = false;
            console.log("hax_created");

            $('.bmenu_entry[bmenu_ischeckbox="1"] .bmenu_entry_left_side').append(' <div class="bmenu_checkbox bmenu_checkbox_checked_bg"> <div class="bmenu_checkbox_checkmark" bmenu_checkbox_checked="1"></div> </div>');
            $('.bmenu_entry[bmenu_ischeckbox="1"]').removeAttr('bmenu_ischeckbox');
            liz3_set_config()
            $(".bmenu_root")
                .css({
                left: cs_x,
                top: cs_y,
            });

            $(".bmenu_root").removeClass("class_hidden");
        }else{

            if (menu_lock)
            {
                console.log("menu_locked");
            }else{
                $(".bmenu_root")
                    .css({
                    left: cs_x,
                    top: cs_y,
                });

                $(".bmenu_root").removeClass("class_hidden");
            }

        }

    }

    // Cancel edit on ctrl + q
    if ( zEvent.ctrlKey  &&  zEvent.keyCode == 81)
    {
        console.log("ctrl + q");
        $('.liz3_alt_msg_input').val('');
        $('.im_send_reply_cancel').trigger('mousedown');
        setTimeout( make_input_great_again, 100 );
    }

});



// hax
document.addEventListener('click', event => {
    // console.log("click_registered");


    // Close hax if clicked outside
    const bmenu_close = event.target.closest('.bmenu_menu');
    if (bmenu_close)
    {
        console.log("clicked_a_menu");
    }else{
        // console.log("clicked_not_menu");
        $(".bmenu_root").addClass("class_hidden");
    }


    // Menu entries processor. Thanks to shitty eval() we now don't have to create a new if attr check
    const bmenu_entry = event.target.closest('.bmenu_entry');
    if (bmenu_entry)
    {
        console.log("clicked_on_an_entry");
        eval($(bmenu_entry).attr("bmenu_opt"))()
    }


    // built-in image alter
    const questionable_img = event.target.closest('img');
    if (img_flip_mode)
    {

        if (questionable_img)
        {
            img_flip(questionable_img);
            window.img_flip_mode = false;
            window.menu_lock = false;
            $("img").removeClass("elem_hover");
        }

    }

    const pswd_changer_cancel = event.target.closest('.pswd_editor_btn_cancel');
    if (pswd_changer_cancel)
    {
        $('#global_password_changer').addClass('class_hidden');
        $('#global_password_changer input').val('');
    }


    const pswd_changer_apply = event.target.closest('.pswd_editor_btn_apply');
    if (pswd_changer_apply)
    {
        setCookie('liz3_cur_pswd', CryptoJS.MD5($('#global_password_changer input').val()), 420)
        $('#global_password_changer').addClass('class_hidden');
        $('#global_password_changer input').val('');
    }


    // edit button. Make it copy the message to our shit
    const msg_btn_selective_edit = event.target.closest('.btn.btn-primary.im_edit_reply_btn[ng-click="selectedEdit()"]');
    if (msg_btn_selective_edit)
    {
        setTimeout(() => {
            $('.liz3_alt_msg_input').val($('.tg_original_msg_input').text());
        }, 15);
    }

    const toybox_spammer_conf = event.target.closest('.illuminati_confirm');
    if (toybox_spammer_conf)
    {
        if( $('.illuminati_msg').val().length > 0 && $('.illuminati_int').val().length > 0 && $('.illuminati_count').val().length > 0 && $('.illuminati_info_freq').val().length > 0)
        {
            $('.illuminati_place').addClass('class_hidden');
            super_msg_spammer($('.illuminati_msg').val(), $('.illuminati_int').val(), $('.illuminati_count').val(), $('.illuminati_info_freq').val())
            $('.illuminati_msg').val('lol');
            $('.illuminati_int').val('1');
            $('.illuminati_count').val('10');
            $('.illuminati_info_freq').val('5');
        }else{
            console.log('spammer config invalid!');
        }
    }

    const bmenu_input_autoselect = event.target.closest('.bmenu_row_text_input');
    if (bmenu_input_autoselect)
    {
        $(bmenu_input_autoselect).select();
    }

    const bmenu_cancel_illuminati = event.target.closest('.cancel_illuminati');
    if (bmenu_cancel_illuminati)
    {
        $('.illuminati_place').addClass('class_hidden');
        $('.illuminati_msg').val('lol');
        $('.illuminati_int').val('1');
        $('.illuminati_count').val('10');
        $('.illuminati_info_freq').val('5');
    }


});
// hax



function action_if_pizza()
{
    glob_hmenu()
    console.log('dominos');
}


function glob_hmenu()
{
    $(".bmenu_root").addClass("class_hidden");
}



function bmenu_imgflip()
{
    glob_hmenu()
    console.log("imgflipped");
    window.img_flip_mode = true;
    window.menu_lock = true;
    $("img").addClass("elem_hover");
}


function decrypt_pswd_changer()
{
    // hide the menu
    glob_hmenu()
    $("#global_password_changer").removeClass('class_hidden');
    $("#global_password_changer")
        .css({
        left: cs_x,
        top: cs_y,
    })
    $("#global_password_changer input").select();

}


function liz3_tg_decrypt_all_msgs()
{
    $('.im_message_text:contains(enc_dat420;)').each(function(){
        $(this).html($(this).html().split('enc_dat420;').join(''));
        console.log("corrected msg is " + $(this).text());
        $(this).text(CryptoJS.AES.decrypt($(this).text(), liz3_current_session_password).toString(CryptoJS.enc.Utf8));
    });

    $('span .im_short_message_text:contains(enc_dat420;)').each(function(){
        $(this).html($(this).html().split('enc_dat420;').join(''));
        console.log("corrected msg is " + $(this).text());
        $(this).text(CryptoJS.AES.decrypt($(this).text(), liz3_current_session_password).toString(CryptoJS.enc.Utf8));
    });
}


function make_input_great_again()
{
    console.log('focus');
    $('.liz3_alt_msg_input').blur();
    $('.liz3_alt_msg_input').focus();
}


// good cookie reference
function enable_liz3()
{
    glob_hmenu()
    checkbox_activator($('.bmenu_entry[bmenu_opt="enable_liz3"] .bmenu_checkbox'), "toggle");
    window.liz3_system_enabled ^= 1;
    liz3_current_config[0] ^= 1;
    setCookie('liz3_config', liz3_current_config.join('-'), 420)
}

function liz3_quick_mute()
{
    glob_hmenu()
    checkbox_activator($('.bmenu_entry[bmenu_opt="liz3_quick_mute"] .bmenu_checkbox'), "toggle");
    window.liz3_quick_mute ^= 1;
    liz3_current_config[1] ^= 1;
    setCookie('liz3_config', liz3_current_config.join('-'), 420)
}

function liz3_dark_theme_menu_call()
{

    if ( window.liz3_dark_mode == 0 )
    {
        $('body').append('<style id="liz3_darkmode_css">@import url("https://dl.dropbox.com/s/tuk1t8ntvn84375/dark.css?dl=0");</style>');
    }else{
        $('#liz3_darkmode_css').remove();
    }
    glob_hmenu()
    window.liz3_dark_mode ^= 1;
    liz3_current_config[2] ^= 1;
    checkbox_activator($('.bmenu_entry[bmenu_opt="liz3_dark_theme_menu_call"] .bmenu_checkbox'), "toggle");
    setCookie('liz3_config', liz3_current_config.join('-'), 420)

}

function liz3_dark_theme_page_load()
{
    if ( window.liz3_dark_mode == 1 )
    {
        $('body').append('<style id="liz3_darkmode_css">@import url("https://dl.dropbox.com/s/tuk1t8ntvn84375/dark.css?dl=0");</style>');
    }
}


function liz3_group_ignore()
{
    glob_hmenu()
    checkbox_activator($('.bmenu_entry[bmenu_opt="liz3_group_ignore"] .bmenu_checkbox'), "toggle");
    window.liz3_group_ignore_var ^= 1;
    liz3_current_config[3] ^= 1;
    setCookie('liz3_config', liz3_current_config.join('-'), 420)
}



function super_msg_spammer(msg, int, count, notify)
{
    /*
    var message = "lolly"; // spam message
    var interval = 0.1  ; // in seconds
    var count = 100 ; // number of times to send
    var notifyInterval = 5 ; // notify
    */
    var message = msg; // spam message
    var interval = int  ; // in seconds
    var count = count ; // number of times to send
    var notifyInterval = notify ; // notify

    var i = 0 ;
    var timer = setInterval(function(){
        document.getElementsByClassName('composer_rich_textarea')[0].innerHTML = message;
        $('.im_submit').trigger('mousedown');
        i++;
        if( i  == count )
            clearInterval(timer);
        if( i % notifyInterval == 0)
            console.log(i + ' MESSAGES SENT');
    } , interval * 1000 ) ;
}




function toybox_msg_spammer()
{
    glob_hmenu()
    $('.illuminati_place').removeClass('class_hidden');
    $(".illuminati_place")
        .css({
        left: cs_x,
        top: cs_y,
    });

}