Compare commits
	
		
			1 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| b0ea33cfff | 
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@ -1,4 +1,3 @@
 | 
				
			|||||||
config/*
 | 
					config/*
 | 
				
			||||||
modules/irc-bridge/error.log
 | 
					modules/irc-bridge/error.log
 | 
				
			||||||
__pycache__/
 | 
					__pycache__/
 | 
				
			||||||
modules/auto-schedule-pro-v2/preference-db
 | 
					 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										192
									
								
								main.py
									
									
									
									
									
								
							
							
						
						
									
										192
									
								
								main.py
									
									
									
									
									
								
							@ -11,12 +11,7 @@ import traceback
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
# global variables
 | 
					# global variables
 | 
				
			||||||
STOP_REQUESTED = False
 | 
					STOP_REQUESTED = False
 | 
				
			||||||
DEBUG_MODE = False
 | 
					 | 
				
			||||||
DELAY_AFTER_RESPONSE = 3
 | 
					 | 
				
			||||||
DELAY_AFTER_MESSAGE = 0.1
 | 
					 | 
				
			||||||
DELAY_AFTER_IDLE = 1.0
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
lock = threading.Lock()
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
# some functions that increase readability of the code
 | 
					# some functions that increase readability of the code
 | 
				
			||||||
def readfile(filename):
 | 
					def readfile(filename):
 | 
				
			||||||
@ -49,8 +44,6 @@ class ModuleV1:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    def set_predefine(self):
 | 
					    def set_predefine(self):
 | 
				
			||||||
        try:
 | 
					        try:
 | 
				
			||||||
            if DEBUG_MODE:
 | 
					 | 
				
			||||||
                print(f"Predefine on module v1 {self.alias} ({self.path})")
 | 
					 | 
				
			||||||
            exec(self.predefine)
 | 
					            exec(self.predefine)
 | 
				
			||||||
        except Exception as e:
 | 
					        except Exception as e:
 | 
				
			||||||
            print(f"[ERROR] module v1: module \"{self.path}\" ({self.alias}) raised exception \"{e}\" "
 | 
					            print(f"[ERROR] module v1: module \"{self.path}\" ({self.alias}) raised exception \"{e}\" "
 | 
				
			||||||
@ -62,13 +55,11 @@ class ModuleV1:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        self.MESSAGE = msg
 | 
					        self.MESSAGE = msg
 | 
				
			||||||
        try:
 | 
					        try:
 | 
				
			||||||
            if DEBUG_MODE:
 | 
					 | 
				
			||||||
                print(f"Calling module v1 {self.alias} ({self.path})")
 | 
					 | 
				
			||||||
            exec(self.code)
 | 
					            exec(self.code)
 | 
				
			||||||
            return self.RESPONSE, self.FORMAT
 | 
					            return self.RESPONSE, self.FORMAT
 | 
				
			||||||
        except Exception as e:
 | 
					        except Exception as e:
 | 
				
			||||||
            print(f"[ERROR] module v1: module \"{self.path}\" ({self.alias}) raised exception \"{e}\"")
 | 
					            print(f"[ERROR] module v1: module \"{self.path}\" ({self.alias}) raised exception \"{e}\"")
 | 
				
			||||||
            print(f"[ERROR] module v1: traceback:\n{traceback.format_exc()}")
 | 
					            print(f"[ERROR] module v1: traceback:\ntraceback.format_exc()")
 | 
				
			||||||
            return "", None
 | 
					            return "", None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -84,8 +75,6 @@ class ModuleV2:
 | 
				
			|||||||
    # running the module
 | 
					    # running the module
 | 
				
			||||||
    def process(self, msg):
 | 
					    def process(self, msg):
 | 
				
			||||||
        try:
 | 
					        try:
 | 
				
			||||||
            if DEBUG_MODE:
 | 
					 | 
				
			||||||
                print(f"Calling module v2 {self.alias} ({self.path})")
 | 
					 | 
				
			||||||
            return self.obj.process(msg, self.path)
 | 
					            return self.obj.process(msg, self.path)
 | 
				
			||||||
        except Exception as e:
 | 
					        except Exception as e:
 | 
				
			||||||
            print(f"[ERROR] module v2: module \"{self.path}\" ({self.alias}) raised exception \"{e}\"")
 | 
					            print(f"[ERROR] module v2: module \"{self.path}\" ({self.alias}) raised exception \"{e}\"")
 | 
				
			||||||
@ -104,12 +93,12 @@ class ModuleControlUnit:
 | 
				
			|||||||
    def reload_modules(self):
 | 
					    def reload_modules(self):
 | 
				
			||||||
        for folder in os.listdir("modules/"):
 | 
					        for folder in os.listdir("modules/"):
 | 
				
			||||||
            try:
 | 
					            try:
 | 
				
			||||||
                meta_raw = readfile(f"modules/{folder}/meta.json")
 | 
					                meta_raw = readfile("modules/{}/meta.json".format(folder))
 | 
				
			||||||
                if not meta_raw:
 | 
					                if not meta_raw:
 | 
				
			||||||
                    print(f"[WARN] module_loader: no meta.json found in module folder \"{folder}\"")
 | 
					                    print(f"[WARN] module_loader: no meta.json found in module folder \"{folder}\"")
 | 
				
			||||||
                    continue
 | 
					                    continue
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                meta = json.loads( meta_raw )
 | 
					                meta = json.loads(meta_raw)
 | 
				
			||||||
                if "version" in meta:
 | 
					                if "version" in meta:
 | 
				
			||||||
                    if meta["version"] == 1:
 | 
					                    if meta["version"] == 1:
 | 
				
			||||||
                        if "index_file" in meta:
 | 
					                        if "index_file" in meta:
 | 
				
			||||||
@ -117,9 +106,9 @@ class ModuleControlUnit:
 | 
				
			|||||||
                        else:
 | 
					                        else:
 | 
				
			||||||
                            index_file = "index.py"
 | 
					                            index_file = "index.py"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        code = readfile(f"modules/{folder}/{index_file}")
 | 
					                        code = readfile("modules/{}/{}".format(folder, index_file))
 | 
				
			||||||
                        if not code: # False both when readfile() returns False and when the code string is empty
 | 
					                        if not code:  # False both when readfile() returns False and when the code string is empty
 | 
				
			||||||
                            print(f"[WARN] reload_modules: module {folder} does not have any code, skipping...")
 | 
					                            print("[WARN] reload_modules: module {} does not have any code, skipping...".format(folder))
 | 
				
			||||||
                            continue
 | 
					                            continue
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        if "start_on_boot" in meta:
 | 
					                        if "start_on_boot" in meta:
 | 
				
			||||||
@ -133,7 +122,7 @@ class ModuleControlUnit:
 | 
				
			|||||||
                            alias = None
 | 
					                            alias = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        if "predefine" in meta:
 | 
					                        if "predefine" in meta:
 | 
				
			||||||
                            predefine = readfile(f"modules/{folder}/{meta['predefine']}")
 | 
					                            predefine = readfile("modules/{}/{}".format(folder, meta["predefine"]))
 | 
				
			||||||
                        else:
 | 
					                        else:
 | 
				
			||||||
                            predefine = False
 | 
					                            predefine = False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -177,180 +166,74 @@ def queue_processor():
 | 
				
			|||||||
        try:
 | 
					        try:
 | 
				
			||||||
            if len(message_queue) > 0:
 | 
					            if len(message_queue) > 0:
 | 
				
			||||||
                msg = message_queue[0]
 | 
					                msg = message_queue[0]
 | 
				
			||||||
                del message_queue[0]
 | 
					                print("[DEBUG] queue_processor: {}".format(msg))  # debug
 | 
				
			||||||
                print(f"[DEBUG] queue_processor: {msg}") # debug
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                # check for control commands
 | 
					                # check for control commands
 | 
				
			||||||
                if msg.from_user.id == 575246355:
 | 
					                if msg["chat"]["id"] == 575246355:
 | 
				
			||||||
                    if msg["text"][0] == "$":
 | 
					                    if msg["text"][0] == "$":
 | 
				
			||||||
                        command = msg["text"][1:].split()
 | 
					                        command = msg["text"][1:].split(" ")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        if len(command) >= 2 and command[0] == "module":
 | 
					                        if len(command) >= 2 and command[0] == "module":
 | 
				
			||||||
                            if command[1] == "reload":
 | 
					                            if command[1] == "reload":
 | 
				
			||||||
                                if len(command) == 2:
 | 
					                                print("[INFO] Module reloading triggered by a command")
 | 
				
			||||||
                                    print("[INFO] Full module reloading triggered by a command")
 | 
					 | 
				
			||||||
                                    updater.bot.send_message(msg.chat.id, f"Reloading all modules...")
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                                    # properly reload all v2 modules
 | 
					                                # properly reload all v2 modules
 | 
				
			||||||
                                    for mod in mcu.modules:
 | 
					                                for mod in mcu.modules:
 | 
				
			||||||
                                        if mod.version == 2:
 | 
					                                    if mod.version == 2:
 | 
				
			||||||
                                            importlib.reload(mod.obj)
 | 
					                                        importlib.reload(mod.obj)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                                    del mcu.modules[:]
 | 
					                                del mcu.modules[:]
 | 
				
			||||||
                                    mcu.reload_modules()
 | 
					                                mcu.reload_modules()
 | 
				
			||||||
                                else:
 | 
					 | 
				
			||||||
                                    # TO DO: make it possible to reload individual modules by their
 | 
					 | 
				
			||||||
                                    # alias or containing folder
 | 
					 | 
				
			||||||
                                    pass
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                            elif command[1] == "enable" and len(command) == 3:
 | 
					 | 
				
			||||||
                                if command[2] == "all":
 | 
					 | 
				
			||||||
                                    for mod in mcu.modules:
 | 
					 | 
				
			||||||
                                        mod.enabled = True
 | 
					 | 
				
			||||||
                                        print(f"[INFO] module {mod.alias} was enabled")
 | 
					 | 
				
			||||||
                                else:
 | 
					 | 
				
			||||||
                                    for mod in mcu.modules:
 | 
					 | 
				
			||||||
                                        if mod.alias == command[2]:
 | 
					 | 
				
			||||||
                                            mod.enabled = True
 | 
					 | 
				
			||||||
                                            print(f"[INFO] module {mod.alias} was enabled")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                            elif command[1] == "disable" and len(command) == 3:
 | 
					 | 
				
			||||||
                                if command[2] == "all":
 | 
					 | 
				
			||||||
                                    for mod in mcu.modules:
 | 
					 | 
				
			||||||
                                        mod.enabled = False
 | 
					 | 
				
			||||||
                                        print(f"[INFO] module {mod.alias} was disabled")
 | 
					 | 
				
			||||||
                                else:
 | 
					 | 
				
			||||||
                                    for mod in mcu.modules:
 | 
					 | 
				
			||||||
                                        if mod.alias == command[2]:
 | 
					 | 
				
			||||||
                                            mod.enabled = False
 | 
					 | 
				
			||||||
                                            print(f"[INFO] module {mod.alias} was disabled")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                            elif command[1] == "status" and len(command) == 3:
 | 
					 | 
				
			||||||
                                if command[2] == "all":
 | 
					 | 
				
			||||||
                                    for mod in mcu.modules:
 | 
					 | 
				
			||||||
                                        print(f"[INFO] module {mod.alias} is {mod.enabled}")
 | 
					 | 
				
			||||||
                                else:
 | 
					 | 
				
			||||||
                                    for mod in mcu.modules:
 | 
					 | 
				
			||||||
                                        if mod.alias == command[2]:
 | 
					 | 
				
			||||||
                                            print(f"[INFO] module {mod.alias} is {mod.enabled}")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                        elif (2 <= len(command) <= 3) and command[0] == "delay":
 | 
					 | 
				
			||||||
                            l = len(command)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                            if command[1] == "response":
 | 
					 | 
				
			||||||
                                if l == 3:
 | 
					 | 
				
			||||||
                                    try:
 | 
					 | 
				
			||||||
                                        new_value = float(command[2])
 | 
					 | 
				
			||||||
                                        global DELAY_AFTER_RESPONSE
 | 
					 | 
				
			||||||
                                        DELAY_AFTER_RESPONSE = new_value
 | 
					 | 
				
			||||||
                                        print(f"[INFO]: Set DELAY_AFTER_RESPONSE to {command[2]}")
 | 
					 | 
				
			||||||
                                        updater.bot.send_message(msg.chat.id, f"Set DELAY_AFTER_RESPONSE to {command[2]}")
 | 
					 | 
				
			||||||
                                    except:
 | 
					 | 
				
			||||||
                                        print(f"[WARN]: Cannot set DELAY_AFTER_RESPONSE to non-float value of {command[2]}")
 | 
					 | 
				
			||||||
                                        updater.bot.send_message(msg.chat.id, f"[WARN]: Cannot set DELAY_AFTER_RESPONSE to non-float value of {command[2]}")
 | 
					 | 
				
			||||||
                                elif l == 2:
 | 
					 | 
				
			||||||
                                    print(f"[INFO]: DELAY_AFTER_RESPONSE = {DELAY_AFTER_RESPONSE}")
 | 
					 | 
				
			||||||
                                    updater.bot.send_message(msg.chat.id, f"[INFO]: DELAY_AFTER_RESPONSE = {DELAY_AFTER_RESPONSE}")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                            elif command[1] == "message":
 | 
					 | 
				
			||||||
                                if l == 3:
 | 
					 | 
				
			||||||
                                    try:
 | 
					 | 
				
			||||||
                                        new_value = float(command[2])
 | 
					 | 
				
			||||||
                                        global DELAY_AFTER_MESSAGE
 | 
					 | 
				
			||||||
                                        DELAY_AFTER_MESSAGE = new_value
 | 
					 | 
				
			||||||
                                        print(f"[INFO]: Set DELAY_AFTER_MESSAGE to {command[2]}")
 | 
					 | 
				
			||||||
                                        updater.bot.send_message(msg.chat.id, f"Set DELAY_AFTER_MESSAGE to {command[2]}")
 | 
					 | 
				
			||||||
                                    except:
 | 
					 | 
				
			||||||
                                        print("[WARN]: Cannot set DELAY_AFTER_MESSAGE to non-float value of {command[2]}")
 | 
					 | 
				
			||||||
                                        updater.bot.send_message(msg.chat.id, f"[WARN]: Cannot set DELAY_AFTER_MESSAGE to non-float value of {command[2]}")
 | 
					 | 
				
			||||||
                                elif l == 2:
 | 
					 | 
				
			||||||
                                    print(f"[INFO]: DELAY_AFTER_MESSAGE = {DELAY_AFTER_MESSAGE}")
 | 
					 | 
				
			||||||
                                    updater.bot.send_message(msg.chat.id, f"[INFO]: DELAY_AFTER_MESSAGE = {DELAY_AFTER_MESSAGE}")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                            elif command[1] == "idle":
 | 
					 | 
				
			||||||
                                if l == 3:
 | 
					 | 
				
			||||||
                                    try:
 | 
					 | 
				
			||||||
                                        new_value = float(command[2])
 | 
					 | 
				
			||||||
                                        global DELAY_AFTER_IDLE
 | 
					 | 
				
			||||||
                                        DELAY_AFTER_IDLE = new_value
 | 
					 | 
				
			||||||
                                        print(f"[INFO]: Set DELAY_AFTER_IDLE to {command[2]}")
 | 
					 | 
				
			||||||
                                        updater.bot.send_message(msg.chat.id, f"Set DELAY_AFTER_IDLE to {command[2]}")
 | 
					 | 
				
			||||||
                                    except:
 | 
					 | 
				
			||||||
                                        print("[WARN]: Cannot set DELAY_AFTER_IDLE to non-float value of {command[2]}")
 | 
					 | 
				
			||||||
                                        updater.bot.send_message(msg.chat.id, f"[WARN]: Cannot set DELAY_AFTER_IDLE to non-float value of {command[2]}")
 | 
					 | 
				
			||||||
                                elif l == 2:
 | 
					 | 
				
			||||||
                                    print(f"[INFO]: DELAY_AFTER_IDLE = {DELAY_AFTER_IDLE}")
 | 
					 | 
				
			||||||
                                    updater.bot.send_message(msg.chat.id, f"[INFO]: DELAY_AFTER_IDLE = {DELAY_AFTER_IDLE}")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                        elif len(command) == 2 and command[0] == "queue":
 | 
					 | 
				
			||||||
                            if command[1] == "size":
 | 
					 | 
				
			||||||
                                print(f"[INFO]: Queue length is {len(message_queue)}")
 | 
					 | 
				
			||||||
                                updater.bot.send_message(msg.chat.id, f"[INFO]: Queue length is {len(message_queue)}")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                        elif len(command) == 2 and command[0] == "debug":
 | 
					 | 
				
			||||||
                            global DEBUG_MODE
 | 
					 | 
				
			||||||
                            if command[1] == "on":
 | 
					 | 
				
			||||||
                                print("[INFO] Debug mode is enabled")
 | 
					 | 
				
			||||||
                                DEBUG_MODE = True
 | 
					 | 
				
			||||||
                            else:
 | 
					 | 
				
			||||||
                                print("[INFO] Debug mode is disabled")
 | 
					 | 
				
			||||||
                                DEBUG_MODE = False
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        del message_queue[0]
 | 
				
			||||||
                        continue
 | 
					                        continue
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                # modules are used in here
 | 
					                # modules are used in here
 | 
				
			||||||
                for mod in mcu.modules:
 | 
					                for mod in mcu.modules:
 | 
				
			||||||
                    if mod.enabled:
 | 
					                    if mod.enabled:
 | 
				
			||||||
                        if mod.version in [1, 2]:
 | 
					                        if mod.version in [1, 2]:
 | 
				
			||||||
                            try:
 | 
					                            response, formatting = mod.process(msg)
 | 
				
			||||||
                                response, formatting = mod.process(msg)
 | 
					 | 
				
			||||||
                            except Exception as e:
 | 
					 | 
				
			||||||
                                print(f"Module {mod.alias} ({mod.path}) failed to do a proper return, skipping...")
 | 
					 | 
				
			||||||
                                continue
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                            if response:
 | 
					                            if response:
 | 
				
			||||||
                                if not formatting:
 | 
					                                if formatting == None:
 | 
				
			||||||
                                    print(f"Responding using module {mod.path} ({mod.alias}) with text: {response}")
 | 
					 | 
				
			||||||
                                    updater.bot.send_message(chat_id=msg.chat.id, text=response,
 | 
					                                    updater.bot.send_message(chat_id=msg.chat.id, text=response,
 | 
				
			||||||
                                                             disable_web_page_preview=True)
 | 
					                                                             disable_web_page_preview=True)
 | 
				
			||||||
                                    time.sleep(DELAY_AFTER_RESPONSE)
 | 
					                                    print(f"Responded using module {mod.path} ({mod.alias}) with text: {response}")
 | 
				
			||||||
                                    break
 | 
					                                    break
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                                elif formatting in ["Markdown", "MarkdownV2", "HTML"]:
 | 
					                                elif formatting in ["Markdown", "MarkdownV2", "HTML"]:
 | 
				
			||||||
                                    print(f"Responding using module {mod.path} ({mod.alias}) with text (using {formatting}): {response}")
 | 
					 | 
				
			||||||
                                    updater.bot.send_message(chat_id=msg.chat.id, text=response,
 | 
					                                    updater.bot.send_message(chat_id=msg.chat.id, text=response,
 | 
				
			||||||
                                            disable_web_page_preview=True,
 | 
					                                                             disable_web_page_preview=True,
 | 
				
			||||||
                                            parse_mode=formatting)
 | 
					                                                             parse_mode=formatting)
 | 
				
			||||||
                                    time.sleep(DELAY_AFTER_RESPONSE)
 | 
					                                    print(
 | 
				
			||||||
 | 
					                                        f"Responded using module {mod.path} ({mod.alias}) with text (using {formatting}): {response}")
 | 
				
			||||||
                                    break
 | 
					                                    break
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                time.sleep(DELAY_AFTER_MESSAGE)
 | 
					                del message_queue[0]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                time.sleep(0.1)
 | 
				
			||||||
            else:
 | 
					            else:
 | 
				
			||||||
                if STOP_REQUESTED:
 | 
					                if STOP_REQUESTED:
 | 
				
			||||||
                    break
 | 
					                    break
 | 
				
			||||||
                else:
 | 
					                else:
 | 
				
			||||||
                    time.sleep(DELAY_AFTER_IDLE)
 | 
					                    time.sleep(1)
 | 
				
			||||||
        except Exception as e:
 | 
					        except Exception as e:
 | 
				
			||||||
            print(f"[ERROR] queue_processor: current message queue: {message_queue}")
 | 
					            print(f"[ERROR] queue_processor: current message queue: {message_queue}")
 | 
				
			||||||
            print(f"[ERROR] Traceback:\n{traceback.format_exc()}")
 | 
					            print(f"[ERROR] Traceback:\n{traceback.format_exc()}")
 | 
				
			||||||
            print(f"[ERROR] queue_processor: error while processing message ({e})...")
 | 
					            print(f"[ERROR] queue_processor: error while processing message ({e}), trying to delete it...")
 | 
				
			||||||
            print("[INFO] queue_processor: skipped broken message")
 | 
					            try:
 | 
				
			||||||
 | 
					                del message_queue[0]
 | 
				
			||||||
 | 
					                print("[INFO] queue_processor: deleted broken message from the queue")
 | 
				
			||||||
 | 
					            except:
 | 
				
			||||||
 | 
					                print("[WARN] queue_processor: message seems absent, whatever")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    print("[INFO] queue_processor thread stops successfully")
 | 
					    print("[INFO] queue_processor thread stops successfully")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# telegram bot processor
 | 
					# telegram bot processor
 | 
				
			||||||
def message_handler(update, context):
 | 
					def message_handler(update, context):
 | 
				
			||||||
    global lock
 | 
					    print("[DEBUG] Received new message")  # just for testing
 | 
				
			||||||
    with lock:
 | 
					    message_queue.append(update.message)
 | 
				
			||||||
        if update.message and update.message.text.__class__ == str and update.message.text.startswith("$"):
 | 
					 | 
				
			||||||
            print("[DEBUG] Received new message with high priority")  # just for testing
 | 
					 | 
				
			||||||
            message_queue.insert(0, update.message)
 | 
					 | 
				
			||||||
        elif update.message:
 | 
					 | 
				
			||||||
            print("[DEBUG] Received new message")  # just for testing
 | 
					 | 
				
			||||||
            message_queue.append(update.message)
 | 
					 | 
				
			||||||
        else:
 | 
					 | 
				
			||||||
            print(f"[DEBUG] Received {update.message} instead of a message")
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# --- Final stage ---
 | 
					# --- Final stage ---
 | 
				
			||||||
@ -365,7 +248,6 @@ mcu = ModuleControlUnit()
 | 
				
			|||||||
processor_thread = threading.Thread(target=queue_processor, args=[])
 | 
					processor_thread = threading.Thread(target=queue_processor, args=[])
 | 
				
			||||||
processor_thread.start()
 | 
					processor_thread.start()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
# connecting to Telegram servers and listening for messages
 | 
					# connecting to Telegram servers and listening for messages
 | 
				
			||||||
 | 
					
 | 
				
			||||||
TOKEN = readfile("config/token")
 | 
					TOKEN = readfile("config/token")
 | 
				
			||||||
 | 
				
			|||||||
@ -60,7 +60,7 @@ class ModuleV1:
 | 
				
			|||||||
            return self.RESPONSE, self.FORMAT
 | 
					            return self.RESPONSE, self.FORMAT
 | 
				
			||||||
        except Exception as e:
 | 
					        except Exception as e:
 | 
				
			||||||
            print(f"[ERROR] module v1: module \"{self.path}\" ({self.alias}) raised exception \"{e}\"")
 | 
					            print(f"[ERROR] module v1: module \"{self.path}\" ({self.alias}) raised exception \"{e}\"")
 | 
				
			||||||
            print(f"[ERROR] module v1: traceback:\n{traceback.format_exc()}")
 | 
					            print(f"[ERROR] module v1: traceback:\ntraceback.format_exc()")
 | 
				
			||||||
            return "", None
 | 
					            return "", None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -195,7 +195,7 @@ def queue_processor():
 | 
				
			|||||||
                            response, formatting = mod.process(msg)
 | 
					                            response, formatting = mod.process(msg)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                            if response:
 | 
					                            if response:
 | 
				
			||||||
                                if not formatting:
 | 
					                                if formatting == None:
 | 
				
			||||||
                                    print(f"Responded using module {mod.path} ({mod.alias}) with text: {response}")
 | 
					                                    print(f"Responded using module {mod.path} ({mod.alias}) with text: {response}")
 | 
				
			||||||
                                    break
 | 
					                                    break
 | 
				
			||||||
                                elif formatting in ["Markdown", "MarkdownV2", "HTML"]:
 | 
					                                elif formatting in ["Markdown", "MarkdownV2", "HTML"]:
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										1
									
								
								modules/auto-schedule-pro-v2/additions.json
									
									
									
									
									
										Symbolic link
									
								
							
							
						
						
									
										1
									
								
								modules/auto-schedule-pro-v2/additions.json
									
									
									
									
									
										Symbolic link
									
								
							@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					../auto-schedule-pro/additions.json
 | 
				
			||||||
@ -1,96 +0,0 @@
 | 
				
			|||||||
import json
 | 
					 | 
				
			||||||
import sys
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if len(sys.argv) != 2:
 | 
					 | 
				
			||||||
    sys.exit(1)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class Lesson:
 | 
					 | 
				
			||||||
    def __init__(self):
 | 
					 | 
				
			||||||
        pass
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def read_from_schedule_pair(self, p):
 | 
					 | 
				
			||||||
        self.time = p["time"].rsplit(':', 1)[0]
 | 
					 | 
				
			||||||
        self.name = p["name"]
 | 
					 | 
				
			||||||
        self.teacher = p["teacherName"]
 | 
					 | 
				
			||||||
        self.type = p["tag"]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        self.selectable = False
 | 
					 | 
				
			||||||
        self.link = ""
 | 
					 | 
				
			||||||
        self.nolink = True
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def get_packable_object(self):
 | 
					 | 
				
			||||||
        return {
 | 
					 | 
				
			||||||
                "name": self.name,
 | 
					 | 
				
			||||||
                "teacher": self.teacher,
 | 
					 | 
				
			||||||
                "link": self.link,
 | 
					 | 
				
			||||||
                "type": self.type,
 | 
					 | 
				
			||||||
                "selectable": self.selectable,
 | 
					 | 
				
			||||||
                "nolink": self.nolink
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def day_to_lesson_pool(pairs):
 | 
					 | 
				
			||||||
    pool = []
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    for p in pairs:
 | 
					 | 
				
			||||||
        l = Lesson()
 | 
					 | 
				
			||||||
        l.read_from_schedule_pair(p)
 | 
					 | 
				
			||||||
        pool.append(l)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return pool
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def lesson_pool_to_objs(pool):
 | 
					 | 
				
			||||||
    times = []
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    for i in (list(map(int, (i.time.split(':')))) for i in pool):
 | 
					 | 
				
			||||||
        if i not in times:
 | 
					 | 
				
			||||||
            times.append(i)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    times.sort(key = lambda x: x[0] * 60 + x[1])
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    result = {}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    for i in times:
 | 
					 | 
				
			||||||
        lesson_timestamp = f"{i[0]:02}:{i[1]:02}"
 | 
					 | 
				
			||||||
        required_timestamp = f"{i[0]}:{i[1]}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        objs_dup = (j.get_packable_object() for j in pool if j.time == lesson_timestamp)
 | 
					 | 
				
			||||||
        objs = []
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        for i in objs_dup:
 | 
					 | 
				
			||||||
            if i not in objs:
 | 
					 | 
				
			||||||
                objs.append(i)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if len(objs) == 0:
 | 
					 | 
				
			||||||
            continue
 | 
					 | 
				
			||||||
        elif len(objs) == 1:
 | 
					 | 
				
			||||||
            result[required_timestamp] = list(objs)[0]
 | 
					 | 
				
			||||||
        else:
 | 
					 | 
				
			||||||
            result[required_timestamp] = list(objs)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return result
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def process_week(week):
 | 
					 | 
				
			||||||
    result = []
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    for weekday in ["Пн", "Вв", "Ср", "Чт", "Пт"]:
 | 
					 | 
				
			||||||
        day_pool = day_to_lesson_pool(next(filter(lambda l: l['day'] == weekday, week))['pairs'])
 | 
					 | 
				
			||||||
        result.append(lesson_pool_to_objs(day_pool))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    result.append({})
 | 
					 | 
				
			||||||
    result.append({})
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return result
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
ext_schedule = json.load(open(sys.argv[1], 'r'))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
int_schedule = []
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
int_schedule += process_week(ext_schedule["scheduleFirstWeek"])
 | 
					 | 
				
			||||||
int_schedule += process_week(ext_schedule["scheduleSecondWeek"])
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
print(json.dumps(int_schedule, ensure_ascii = False, indent = 4))
 | 
					 | 
				
			||||||
@ -1,14 +1,11 @@
 | 
				
			|||||||
from datetime import datetime
 | 
					from datetime import datetime
 | 
				
			||||||
import json
 | 
					import json
 | 
				
			||||||
import os
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def readfile(filename):
 | 
					def readfile(filename):
 | 
				
			||||||
    with open(module_path + filename) as f:
 | 
					    with open(module_path + filename) as f:
 | 
				
			||||||
        return f.read()
 | 
					        return f.read()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def writefile(filename, data):
 | 
					 | 
				
			||||||
    with open(module_path + filename, 'w') as f:
 | 
					 | 
				
			||||||
        f.write(data)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
# global constants
 | 
					# global constants
 | 
				
			||||||
# Accusative - znahidnyj
 | 
					# Accusative - znahidnyj
 | 
				
			||||||
@ -24,109 +21,12 @@ WEEKDAYS_GENITIVE_THIS = ["цього понеділка", "цього вівт
 | 
				
			|||||||
lesson_types_to_strings = {
 | 
					lesson_types_to_strings = {
 | 
				
			||||||
    "lec": "лекція",
 | 
					    "lec": "лекція",
 | 
				
			||||||
    "prac": "практика",
 | 
					    "prac": "практика",
 | 
				
			||||||
    "lab": "лабораторна",
 | 
					    "lab": "лабораторна"
 | 
				
			||||||
    "con": "консультація"
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
color_code_mapping = {
 | 
					 | 
				
			||||||
    "lec": "🔵",
 | 
					 | 
				
			||||||
    "prac": "🟡",
 | 
					 | 
				
			||||||
    "lab": "🔴",
 | 
					 | 
				
			||||||
    "con": "🟢"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
PROGRESS_BAR_LENGTH = 16
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# global variables
 | 
					# global variables
 | 
				
			||||||
module_path = ""
 | 
					module_path = ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def get_preference_by_id(user_id, name):
 | 
					 | 
				
			||||||
    if not os.path.exists(module_path + f"preference-db/{user_id}.json"):
 | 
					 | 
				
			||||||
        return None
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    raw_prefs = readfile(f"preference-db/{user_id}.json")
 | 
					 | 
				
			||||||
    try:
 | 
					 | 
				
			||||||
        preferences = json.loads(raw_prefs)
 | 
					 | 
				
			||||||
    except Exception as e:
 | 
					 | 
				
			||||||
        return None
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if not name in preferences:
 | 
					 | 
				
			||||||
        return None
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    return preferences[name]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def get_all_preferences_by_id(user_id):
 | 
					 | 
				
			||||||
    user_preferences = {
 | 
					 | 
				
			||||||
        "output-style": "legacy-vibrant",
 | 
					 | 
				
			||||||
        "output-style-lesson": "None",
 | 
					 | 
				
			||||||
        "output-style-lookup": "None"
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # label defaults as defaults and let custom settings override these labels
 | 
					 | 
				
			||||||
    for i in user_preferences:
 | 
					 | 
				
			||||||
        user_preferences[i] += " <i>(default)</i>"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    for i in user_preferences:
 | 
					 | 
				
			||||||
        override = get_preference_by_id(user_id, i)
 | 
					 | 
				
			||||||
        if override != None:
 | 
					 | 
				
			||||||
            user_preferences[i] = override
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return user_preferences
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def set_preference_by_id(user_id, name, value):
 | 
					 | 
				
			||||||
    if not os.path.exists(module_path + "preference-db/"):
 | 
					 | 
				
			||||||
        os.mkdir(module_path + "preference-db/")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    preferences = {}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if os.path.exists(module_path + f"preference-db/{user_id}.json"):
 | 
					 | 
				
			||||||
        try:
 | 
					 | 
				
			||||||
            raw_prefs = readfile(f"preference-db/{user_id}.json")
 | 
					 | 
				
			||||||
            preferences = json.loads(raw_prefs)
 | 
					 | 
				
			||||||
        except Exception as e:
 | 
					 | 
				
			||||||
            preferences = {}
 | 
					 | 
				
			||||||
    else:
 | 
					 | 
				
			||||||
        preferences = {}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    preferences[name] = value
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    final_data = json.dumps(preferences)
 | 
					 | 
				
			||||||
    writefile(f"preference-db/{user_id}.json", final_data)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def clear_preference_by_id(user_id, name):
 | 
					 | 
				
			||||||
    if not os.path.exists(module_path + "preference-db/"):
 | 
					 | 
				
			||||||
        os.mkdir(module_path + "preference-db/")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    preferences = {}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if os.path.exists(module_path + f"preference-db/{user_id}.json"):
 | 
					 | 
				
			||||||
        try:
 | 
					 | 
				
			||||||
            raw_prefs = readfile(f"preference-db/{user_id}.json")
 | 
					 | 
				
			||||||
            preferences = json.loads(raw_prefs)
 | 
					 | 
				
			||||||
        except Exception as e:
 | 
					 | 
				
			||||||
            preferences = {}
 | 
					 | 
				
			||||||
    else:
 | 
					 | 
				
			||||||
        preferences = {}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if name in preferences:
 | 
					 | 
				
			||||||
        del preferences[name]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    final_data = json.dumps(preferences)
 | 
					 | 
				
			||||||
    writefile(f"preference-db/{user_id}.json", final_data)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def load_template(template, part):
 | 
					 | 
				
			||||||
    return readfile(f"templates/{template}/{part}.msg")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def get_color_code(lesson_type):
 | 
					 | 
				
			||||||
    return color_code_mapping[lesson_type]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
def escaped_string_markdownV2(input_string):
 | 
					def escaped_string_markdownV2(input_string):
 | 
				
			||||||
    result_string = input_string
 | 
					    result_string = input_string
 | 
				
			||||||
@ -156,7 +56,7 @@ def get_human_readable_date(start_datetime, end_datetime,
 | 
				
			|||||||
    if ((current_day + 2) == int(start_datetime.strftime("%u"))) or \
 | 
					    if ((current_day + 2) == int(start_datetime.strftime("%u"))) or \
 | 
				
			||||||
            ((current_day == 6) and (start_datetime.strftime("%u") == "1")):
 | 
					            ((current_day == 6) and (start_datetime.strftime("%u") == "1")):
 | 
				
			||||||
        human_readable_date += "завтра "
 | 
					        human_readable_date += "завтра "
 | 
				
			||||||
    elif current_week != (int(start_datetime.strftime("%W")) + 1) % 2:
 | 
					    elif current_week != int(start_datetime.strftime("%W")) % 2:
 | 
				
			||||||
        human_readable_date += f"{WEEKDAYS_GENITIVE_NEXT[int(start_datetime.strftime('%u')) - 1]} "
 | 
					        human_readable_date += f"{WEEKDAYS_GENITIVE_NEXT[int(start_datetime.strftime('%u')) - 1]} "
 | 
				
			||||||
    elif current_day != (int(start_datetime.strftime("%u")) - 1):
 | 
					    elif current_day != (int(start_datetime.strftime("%u")) - 1):
 | 
				
			||||||
        human_readable_date += f"{WEEKDAYS_GENITIVE_THIS[int(start_datetime.strftime('%u')) - 1]} "
 | 
					        human_readable_date += f"{WEEKDAYS_GENITIVE_THIS[int(start_datetime.strftime('%u')) - 1]} "
 | 
				
			||||||
@ -177,141 +77,31 @@ def get_name_of_lesson_type(lesson_type):
 | 
				
			|||||||
        return lesson_types_to_strings[lesson_type]
 | 
					        return lesson_types_to_strings[lesson_type]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def make_progress_bar(start_datetime, total_bar_count):
 | 
					 | 
				
			||||||
    current_time = datetime.now()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    seconds_elapsed = (current_time.hour - start_datetime.hour) * 3600 \
 | 
					 | 
				
			||||||
            + (current_time.minute - start_datetime.minute) * 60 \
 | 
					 | 
				
			||||||
            + (current_time.second - start_datetime.second)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    total_seconds = 1 * 3600 + 30 * 60
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    percent_elapsed = max(min(seconds_elapsed / total_seconds, 1), 0)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (current_time.day < start_datetime.day):
 | 
					 | 
				
			||||||
        percent_elapsed = 0
 | 
					 | 
				
			||||||
    elif (current_time.day > start_datetime.day):
 | 
					 | 
				
			||||||
        percent_elapsed = 1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    bars_ticked = round(percent_elapsed * total_bar_count)
 | 
					 | 
				
			||||||
    bars_not_ticked = total_bar_count - bars_ticked
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    status_line = "[" + "#" * bars_ticked + "-" * bars_not_ticked + "]"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    status_bar_text = f"{round(percent_elapsed*100)}%"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    status_list_text_start_position = round((len(status_line) - len(status_bar_text))/2)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    status_line_overlayed = (status_line[:status_list_text_start_position] + status_bar_text \
 | 
					 | 
				
			||||||
            + status_line[status_list_text_start_position+len(status_bar_text):]).replace("-", "--")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return status_line_overlayed
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def generate_lesson_description(lesson, start_datetime, end_datetime, current_day, current_week, overrides={},
 | 
					def generate_lesson_description(lesson, start_datetime, end_datetime, current_day, current_week, overrides={},
 | 
				
			||||||
        custom_name_prefix="Назва", template="legacy-vibrant", force_date_at_top=False):
 | 
					                                custom_name_prefix="<b>Назва</b>"):
 | 
				
			||||||
 | 
					    output_settings = {"name": True, "date": True, "teacher": True, "link": True, "comment": True}
 | 
				
			||||||
 | 
					    output_settings.update(overrides)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if lesson.__class__ == dict:
 | 
					    result = ""
 | 
				
			||||||
        if force_date_at_top:
 | 
					 | 
				
			||||||
            total_result = load_template(template, "date")
 | 
					 | 
				
			||||||
            human_readable_date = get_human_readable_date(start_datetime, end_datetime,
 | 
					 | 
				
			||||||
                                                          current_day, current_week)
 | 
					 | 
				
			||||||
            total_result = total_result.replace("%DATE%", human_readable_date)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if "full" in overrides and overrides["full"]:
 | 
					    if output_settings['name']:
 | 
				
			||||||
                total_result += load_template(template, "multiple")
 | 
					        result += f"<b>{escaped_string_html(lesson['name'])}<b> ({escaped_string_html(get_name_of_lesson_type(lesson['type']))})\n"
 | 
				
			||||||
            else:
 | 
					 | 
				
			||||||
                total_result += load_template(template, "multiple-short")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            for i in ['name', 'teacher']:
 | 
					 | 
				
			||||||
                total_result = total_result.replace(f"%{i.upper()}%", lesson[i])
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            total_result = total_result.replace("%DATE%", human_readable_date)
 | 
					 | 
				
			||||||
            total_result = total_result.replace("%TYPE%", get_name_of_lesson_type(lesson['type']))
 | 
					 | 
				
			||||||
            total_result = total_result.replace("%NAME_PREFIX%", custom_name_prefix)
 | 
					 | 
				
			||||||
            total_result = total_result.replace("%COLOR_CODE%", get_color_code(lesson['type']))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if ('nolink' not in lesson) or (not lesson['nolink']):
 | 
					 | 
				
			||||||
                total_result = total_result.replace("%LINK%", lesson['link'])
 | 
					 | 
				
			||||||
            else:
 | 
					 | 
				
			||||||
                total_result = total_result.replace("%LINK%", "#")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if 'comment' in lesson:
 | 
					 | 
				
			||||||
                total_result += load_template(template, "comment")
 | 
					 | 
				
			||||||
                total_result = total_result.replace("%COMMENT%", lesson["comment"])
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if "full" in overrides and overrides["full"]:
 | 
					 | 
				
			||||||
                total_result += "\n"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            return total_result
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        else:
 | 
					 | 
				
			||||||
            active_template = load_template(template, "single")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            for i in ['name', 'teacher']:
 | 
					 | 
				
			||||||
                active_template = active_template.replace(f"%{i.upper()}%", lesson[i])
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            human_readable_date = get_human_readable_date(start_datetime, end_datetime,
 | 
					 | 
				
			||||||
                                                      current_day, current_week)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            active_template = active_template.replace("%DATE%", human_readable_date)
 | 
					 | 
				
			||||||
            active_template = active_template.replace("%TYPE%", get_name_of_lesson_type(lesson['type']))
 | 
					 | 
				
			||||||
            active_template = active_template.replace("%NAME_PREFIX%", custom_name_prefix)
 | 
					 | 
				
			||||||
            active_template = active_template.replace("%COLOR_CODE%", get_color_code(lesson['type']))
 | 
					 | 
				
			||||||
            active_template = active_template.replace("%PROGRESS_BAR%", make_progress_bar(start_datetime, PROGRESS_BAR_LENGTH >> 1))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if ('nolink' not in lesson) or (not lesson['nolink']):
 | 
					 | 
				
			||||||
                active_template = active_template.replace("%LINK%", lesson['link'])
 | 
					 | 
				
			||||||
            else:
 | 
					 | 
				
			||||||
                active_template = active_template.replace("%LINK%", "#")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if 'comment' in lesson:
 | 
					 | 
				
			||||||
                active_template += load_template(template, "comment")
 | 
					 | 
				
			||||||
                active_template = active_template.replace("%COMMENT%", lesson["comment"])
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            return active_template
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    elif lesson.__class__ == list:
 | 
					 | 
				
			||||||
        if not force_date_at_top:
 | 
					 | 
				
			||||||
            total_result = load_template(template, "date-progress")
 | 
					 | 
				
			||||||
            total_result = total_result.replace("%PROGRESS_BAR%", make_progress_bar(start_datetime, PROGRESS_BAR_LENGTH))
 | 
					 | 
				
			||||||
        else:
 | 
					 | 
				
			||||||
            total_result = load_template(template, "date")
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if output_settings['date']:
 | 
				
			||||||
        human_readable_date = get_human_readable_date(start_datetime, end_datetime,
 | 
					        human_readable_date = get_human_readable_date(start_datetime, end_datetime,
 | 
				
			||||||
                                                          current_day, current_week)
 | 
					                                                      current_day, current_week)
 | 
				
			||||||
        total_result = total_result.replace("%DATE%", human_readable_date)
 | 
					        result += f"<i>Дата</ii>: {escaped_string_html(human_readable_date)}\n"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if output_settings['teacher']:
 | 
				
			||||||
 | 
					        result += f"<i>Викладач</i>: {escaped_string_html(lesson['teacher'])}\n"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        for l in lesson:
 | 
					    if output_settings['link']:
 | 
				
			||||||
            if "full" in overrides and overrides["full"]:
 | 
					        result += f"<i>Посилання</i>: {escaped_string_html(lesson['link'])}\n"
 | 
				
			||||||
                active_template = load_template(template, "multiple")
 | 
					 | 
				
			||||||
            else:
 | 
					 | 
				
			||||||
                active_template = load_template(template, "multiple-short")
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            for i in ['name', 'teacher']:
 | 
					    if output_settings['comment'] and 'comment' in lesson:
 | 
				
			||||||
                active_template = active_template.replace(f"%{i.upper()}%", l[i])
 | 
					        result += f"<i>Примітка</i>: {escaped_string_html(lesson['comment'])}\n"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            active_template = active_template.replace("%DATE%", human_readable_date)
 | 
					    return result
 | 
				
			||||||
            active_template = active_template.replace("%TYPE%", get_name_of_lesson_type(l['type']))
 | 
					 | 
				
			||||||
            active_template = active_template.replace("%NAME_PREFIX%", custom_name_prefix)
 | 
					 | 
				
			||||||
            active_template = active_template.replace("%COLOR_CODE%", get_color_code(l['type']))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if ('nolink' not in l) or (not l['nolink']):
 | 
					 | 
				
			||||||
                active_template = active_template.replace("%LINK%", l['link'])
 | 
					 | 
				
			||||||
            else:
 | 
					 | 
				
			||||||
                active_template = active_template.replace("%LINK%", "#")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if 'comment' in l:
 | 
					 | 
				
			||||||
                active_template += load_template(template, "comment")
 | 
					 | 
				
			||||||
                active_template = active_template.replace("%COMMENT%", l["comment"])
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if "full" in overrides and overrides["full"]:
 | 
					 | 
				
			||||||
                active_template += "\n"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            total_result += active_template
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return total_result
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def get_schedule_data_from(filename):
 | 
					def get_schedule_data_from(filename):
 | 
				
			||||||
@ -361,15 +151,47 @@ def process_arguments(args, base_day):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def get_lesson_description(schedule, reference_time, lesson_time, current_day, current_week, overrides={},
 | 
					def get_lesson_description(schedule, reference_time, lesson_time, current_day, current_week, overrides={},
 | 
				
			||||||
        custom_name_prefix="Назва", template="legacy-vibrant", force_date_at_top=False):
 | 
					                           custom_name_prefix="<b>Назва</b>", force_date_at_top=False):
 | 
				
			||||||
    lesson_record = schedule[lesson_time]
 | 
					    lesson_record = schedule[lesson_time]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    lesson_start_datetime = datetime.fromtimestamp(reference_time + lesson_time)
 | 
					    lesson_start_datetime = datetime.fromtimestamp(reference_time + lesson_time)
 | 
				
			||||||
    lesson_end_datetime = datetime.fromtimestamp(reference_time + lesson_time + 5400)
 | 
					    lesson_end_datetime = datetime.fromtimestamp(reference_time + lesson_time + 5400)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return generate_lesson_description(lesson_record, lesson_start_datetime, lesson_end_datetime, current_day,
 | 
					    if lesson_record.__class__ == dict:
 | 
				
			||||||
            current_week, overrides=overrides, custom_name_prefix=custom_name_prefix, template=template,
 | 
					        if force_date_at_top:
 | 
				
			||||||
            force_date_at_top=force_date_at_top)
 | 
					            user_defined_overrides = dict(overrides)
 | 
				
			||||||
 | 
					            internal_overrides = dict(overrides)
 | 
				
			||||||
 | 
					            internal_overrides['date'] = False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            description = generate_lesson_description(lesson_record, lesson_start_datetime, lesson_end_datetime,
 | 
				
			||||||
 | 
					                                                      current_day,
 | 
				
			||||||
 | 
					                                                      current_week, overrides=internal_overrides)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if 'date' in user_defined_overrides and not user_defined_overrides['date']:
 | 
				
			||||||
 | 
					                return description
 | 
				
			||||||
 | 
					            else:
 | 
				
			||||||
 | 
					                human_readable_date = get_human_readable_date(lesson_start_datetime, lesson_end_datetime,
 | 
				
			||||||
 | 
					                                                              current_day, current_week)
 | 
				
			||||||
 | 
					                return f"<b><u>{human_readable_date.capitalize()}</u></b>:\n" + description
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            return generate_lesson_description(lesson_record, lesson_start_datetime, lesson_end_datetime, current_day,
 | 
				
			||||||
 | 
					                                               current_week, overrides=overrides)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    elif lesson_record.__class__ == list:
 | 
				
			||||||
 | 
					        user_defined_overrides = dict(overrides)
 | 
				
			||||||
 | 
					        internal_overrides = dict(overrides)
 | 
				
			||||||
 | 
					        internal_overrides['date'] = False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        descriptions = [generate_lesson_description(i, lesson_start_datetime, lesson_end_datetime, current_day,
 | 
				
			||||||
 | 
					                                                    current_week, overrides=internal_overrides,
 | 
				
			||||||
 | 
					                                                    custom_name_prefix=custom_name_prefix) for i in lesson_record]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if 'date' in user_defined_overrides and not user_defined_overrides['date']:
 | 
				
			||||||
 | 
					            return "\n".join(descriptions)
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            human_readable_date = get_human_readable_date(lesson_start_datetime, lesson_end_datetime,
 | 
				
			||||||
 | 
					                                                          current_day, current_week)
 | 
				
			||||||
 | 
					            return f"<b><u>{human_readable_date.capitalize()}</u></b>:\n" + "\n".join(descriptions)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def process(message, path):
 | 
					def process(message, path):
 | 
				
			||||||
@ -381,8 +203,7 @@ def process(message, path):
 | 
				
			|||||||
    # one printable symbol, so this is already protected
 | 
					    # one printable symbol, so this is already protected
 | 
				
			||||||
    base_command = full_command[0].lower()
 | 
					    base_command = full_command[0].lower()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if base_command not in ["!пара", "!пари", "!schedule-ctl",
 | 
					    if base_command not in ["!пара", "!пари"]:
 | 
				
			||||||
                            "!para", "!pary"]:
 | 
					 | 
				
			||||||
        return None, None
 | 
					        return None, None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    global module_path
 | 
					    global module_path
 | 
				
			||||||
@ -401,24 +222,17 @@ def process(message, path):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    reference_time = int(current_time.strftime("%s")) - current_seconds
 | 
					    reference_time = int(current_time.strftime("%s")) - current_seconds
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if base_command in ["!пара", "!para"]:
 | 
					    if base_command == "!пара":
 | 
				
			||||||
        # easter egg
 | 
					        study_begin_ts = int(datetime(year=2023, month=9, day=4).strftime("%s"))
 | 
				
			||||||
        study_begin_ts = int(datetime(year=2025, month=9, day=1).strftime("%s"))
 | 
					 | 
				
			||||||
        current_ts = int(datetime.now().strftime("%s"))
 | 
					        current_ts = int(datetime.now().strftime("%s"))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        until_study_day = study_begin_ts - current_ts
 | 
					        if -3600 * 4 < study_begin_ts - current_ts < 0:
 | 
				
			||||||
 | 
					            return "Навчання незабаром розпочнеться!", None
 | 
				
			||||||
        if -3600*4 < until_study_day < 0:
 | 
					        elif 0 <= study_begin_ts - current_ts < 1209600:
 | 
				
			||||||
            return "Навчання от-от розпочнеться!", None
 | 
					            return f"До навчання залишилося {study_begin_ts - current_ts} секунд...", None
 | 
				
			||||||
        elif 0 <= until_study_day < 3600*24*28:
 | 
					        elif study_begin_ts - current_ts >= 1209600:
 | 
				
			||||||
            return f"До навчання залишилося {until_study_day} секунд..." \
 | 
					 | 
				
			||||||
                   f" ({round(until_study_day/3600, 4)} годин," \
 | 
					 | 
				
			||||||
                   f" {round(until_study_day/3600/24, 4)} діб)", None
 | 
					 | 
				
			||||||
        elif until_study_day >= 3600*24*28:
 | 
					 | 
				
			||||||
            return "Ви маєте законне право відпочити, пари почнуться не скоро", None
 | 
					            return "Ви маєте законне право відпочити, пари почнуться не скоро", None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        # actual lesson finding code
 | 
					 | 
				
			||||||
        upcoming_lessons = [timestamp for timestamp in schedule if timestamp > current_seconds - 5400]
 | 
					        upcoming_lessons = [timestamp for timestamp in schedule if timestamp > current_seconds - 5400]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if len(upcoming_lessons) > 0:
 | 
					        if len(upcoming_lessons) > 0:
 | 
				
			||||||
@ -426,36 +240,10 @@ def process(message, path):
 | 
				
			|||||||
        else:
 | 
					        else:
 | 
				
			||||||
            closest_lesson_time = min(schedule)
 | 
					            closest_lesson_time = min(schedule)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # shifting lesson pointer if requested to do so
 | 
					 | 
				
			||||||
        if len(full_command) >= 2:
 | 
					 | 
				
			||||||
            possible_times = list(schedule.keys())
 | 
					 | 
				
			||||||
            current_pointer_position = possible_times.index(closest_lesson_time)
 | 
					 | 
				
			||||||
            total_list_length = len(possible_times)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if len(full_command[1]) > 1 and full_command[1][1:].isdigit():
 | 
					 | 
				
			||||||
                if full_command[1][0] == "+":
 | 
					 | 
				
			||||||
                    current_pointer_position = (current_pointer_position + int(full_command[1][1:])) % total_list_length
 | 
					 | 
				
			||||||
                else:
 | 
					 | 
				
			||||||
                    current_pointer_position = (current_pointer_position - int(full_command[1][1:])) % total_list_length
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                closest_lesson_time = possible_times[current_pointer_position]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        # getting corrent style
 | 
					 | 
				
			||||||
        output_style_preference = "legacy-vibrant"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        general_output_style_preference = get_preference_by_id(message.from_user.id, "output-style")
 | 
					 | 
				
			||||||
        if general_output_style_preference != None:
 | 
					 | 
				
			||||||
            output_style_preference = general_output_style_preference
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        specific_output_style_preference = get_preference_by_id(message.from_user.id, "output-style-lesson")
 | 
					 | 
				
			||||||
        if specific_output_style_preference != None:
 | 
					 | 
				
			||||||
            output_style_preference = specific_output_style_preference
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        # returning generated pair description
 | 
					 | 
				
			||||||
        return get_lesson_description(schedule, reference_time, closest_lesson_time, current_day,
 | 
					        return get_lesson_description(schedule, reference_time, closest_lesson_time, current_day,
 | 
				
			||||||
                current_week, custom_name_prefix="Актуальна пара", template=output_style_preference), "HTML"
 | 
					                                      current_week, custom_name_prefix="<b>Актуальна пара</b>"), "HTML"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    elif base_command in ["!пари", "!pary"]:
 | 
					    elif base_command == "!пари":
 | 
				
			||||||
        base_day = current_week * 7 + current_day
 | 
					        base_day = current_week * 7 + current_day
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if len(full_command) >= 2:
 | 
					        if len(full_command) >= 2:
 | 
				
			||||||
@ -467,52 +255,10 @@ def process(message, path):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        lesson_list = [i for i in schedule if selected_day * 86400 <= i < (selected_day + 1) * 86400]
 | 
					        lesson_list = [i for i in schedule if selected_day * 86400 <= i < (selected_day + 1) * 86400]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        output_style_preference = "legacy-vibrant"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        general_output_style_preference = get_preference_by_id(message.from_user.id, "output-style")
 | 
					 | 
				
			||||||
        if general_output_style_preference != None:
 | 
					 | 
				
			||||||
            output_style_preference = general_output_style_preference
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        specific_output_style_preference = get_preference_by_id(message.from_user.id, "output-style-lookup")
 | 
					 | 
				
			||||||
        if specific_output_style_preference != None:
 | 
					 | 
				
			||||||
            output_style_preference = specific_output_style_preference
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        lesson_descriptions_list = [get_lesson_description(schedule, reference_time, lesson_time, current_day,
 | 
					        lesson_descriptions_list = [get_lesson_description(schedule, reference_time, lesson_time, current_day,
 | 
				
			||||||
                current_week, overrides=preferences, custom_name_prefix="Назва", template=output_style_preference, force_date_at_top=True)
 | 
					                                                           current_week, overrides=preferences,
 | 
				
			||||||
 | 
					                                                           custom_name_prefix="<b>Назва</b>", force_date_at_top=True)
 | 
				
			||||||
                                    for lesson_time in lesson_list]
 | 
					                                    for lesson_time in lesson_list]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return f"<b><u>Пари у {WEEKDAYS_ACCUSATIVE[selected_day % 7]}</u></b>:\n\n\n" + "\n".join(lesson_descriptions_list), "HTML"
 | 
					        return f"<b><u>Пари у {WEEKDAYS_ACCUSATIVE[selected_day % 7]}</u></b>:\n\n\n" + "\n\n".join(
 | 
				
			||||||
 | 
					            lesson_descriptions_list), "HTML"
 | 
				
			||||||
    elif base_command == "!schedule-ctl" and len(full_command) >= 2:
 | 
					 | 
				
			||||||
        if full_command[1] == "list":
 | 
					 | 
				
			||||||
            prefs = get_all_preferences_by_id(message.from_user.id)
 | 
					 | 
				
			||||||
            return "Ваші персональні налаштування:\n" + '\n'.join([f"- {k} = {v}" for k, v in prefs.items()]), "HTML"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        elif full_command[1] == "set" and len(full_command) == 4:
 | 
					 | 
				
			||||||
            prefs = get_all_preferences_by_id(message.from_user.id)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if full_command[2] in prefs:
 | 
					 | 
				
			||||||
                if full_command[2] in ["output-style", "output-style-lesson", "output-style-lookup"]:
 | 
					 | 
				
			||||||
                    if full_command[3] not in os.listdir(module_path + "templates/"):
 | 
					 | 
				
			||||||
                        return f"Стилю {full_command[3]} не існує; доступні варіанти: " \
 | 
					 | 
				
			||||||
                                + ', '.join(os.listdir(module_path + "templates/")), "HTML"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    previous_value = prefs[full_command[2]]
 | 
					 | 
				
			||||||
                    prefs[full_command[2]] = full_command[3]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    set_preference_by_id(message.from_user.id, full_command[2], full_command[3])
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    return f"Змінено значення {full_command[2]}: {previous_value} -> {full_command[3]}", "HTML"
 | 
					 | 
				
			||||||
            else:
 | 
					 | 
				
			||||||
                return f"Такого налаштування не існує; переглянути наявні налаштування можна за допомогою команди <u>!schedule-ctl list</u>", "HTML"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        elif full_command[1] == "get" and len(full_command) == 3:
 | 
					 | 
				
			||||||
            requested_preference = get_preference_by_id(message.from_user.id, full_command[2])
 | 
					 | 
				
			||||||
            return f"Налаштування {full_command[2]} має значення {requested_preference}", "HTML"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        elif full_command[1] == "clear" and len(full_command) == 3:
 | 
					 | 
				
			||||||
            clear_preference_by_id(message.from_user.id, full_command[2])
 | 
					 | 
				
			||||||
            return f"Очищено значення для налаштування {full_command[2]}, надалі для нього використовуватиметься стандартне значення", "HTML"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        else:
 | 
					 | 
				
			||||||
            return "Такої команди не існує (або був використаний помилковий синтаксис)", "HTML"
 | 
					 | 
				
			||||||
 | 
				
			|||||||
@ -1,26 +0,0 @@
 | 
				
			|||||||
[
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {},
 | 
					 | 
				
			||||||
    {},
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {},
 | 
					 | 
				
			||||||
    {}
 | 
					 | 
				
			||||||
]
 | 
					 | 
				
			||||||
@ -1,54 +0,0 @@
 | 
				
			|||||||
[
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "9:00": {
 | 
					 | 
				
			||||||
            "name": "Вища математика. Частина 3. Ряди. Теорія функцій комплексної змінної. Операційне числення (ЕКЗАМЕН)",
 | 
					 | 
				
			||||||
            "teacher": "Овчар Раїса Федорівна",
 | 
					 | 
				
			||||||
            "link": "https://us02web.zoom.us/j/84532519615?pwd=eDFRMWtJTkxKcklpa1JUSjFmZHNyUT09",
 | 
					 | 
				
			||||||
            "type": "prac",
 | 
					 | 
				
			||||||
            "selectable": false
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {},
 | 
					 | 
				
			||||||
    {},
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "9:00": {
 | 
					 | 
				
			||||||
            "name": "Інженерія програмного забезпечення (ЕКЗАМЕН)",
 | 
					 | 
				
			||||||
            "teacher": "Васильєва Марія Давидівна",
 | 
					 | 
				
			||||||
            "link": "https://do.ipo.kpi.ua/mod/bigbluebuttonbn/view.php?id=171039",
 | 
					 | 
				
			||||||
            "type": "prac",
 | 
					 | 
				
			||||||
            "selectable": false
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "16:30": {
 | 
					 | 
				
			||||||
            "name": "Теорія електричних кіл та сигналів",
 | 
					 | 
				
			||||||
            "teacher": "Лободзинський Вадим Юрійович",
 | 
					 | 
				
			||||||
            "link": "https://meet.google.com/gwx-sshq-sqb",
 | 
					 | 
				
			||||||
            "type": "con",
 | 
					 | 
				
			||||||
            "selectable": false
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "9:00": {
 | 
					 | 
				
			||||||
            "name": "Теорія електричних кіл та сигналів (ЕКЗАМЕН)",
 | 
					 | 
				
			||||||
            "teacher": "Лободзинський Вадим Юрійович",
 | 
					 | 
				
			||||||
            "link": "https://meet.google.com/gwx-sshq-sqb",
 | 
					 | 
				
			||||||
            "type": "prac",
 | 
					 | 
				
			||||||
            "selectable": false
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {},
 | 
					 | 
				
			||||||
    {}
 | 
					 | 
				
			||||||
]
 | 
					 | 
				
			||||||
@ -1,307 +0,0 @@
 | 
				
			|||||||
[
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "8:30": {
 | 
					 | 
				
			||||||
            "name": "Політична наука: конфліктологічний підхід",
 | 
					 | 
				
			||||||
            "teacher": "Багінський Андрій Владиславович",
 | 
					 | 
				
			||||||
            "link": "(посилання відсутнє!)",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": true
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "10:25": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Захист персональних даних: стандарти ЄС та Ради Європи",
 | 
					 | 
				
			||||||
                "teacher": "Дубняк М. В.",
 | 
					 | 
				
			||||||
                "link": "https://us04web.zoom.us/j/7423381732?pwd=c1pJclU2ZDRUWDgyUE10dmhJUDhiZz09",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Психологія",
 | 
					 | 
				
			||||||
                "teacher": "Волянюк Н. Ю.",
 | 
					 | 
				
			||||||
                "link": "https://us04web.zoom.us/j/6762396563?pwd=L1EvTmpFZHBSdkRHUjZyRG95SFl4QT09",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Психологія конфлікту",
 | 
					 | 
				
			||||||
                "teacher": "Москаленко О. В.",
 | 
					 | 
				
			||||||
                "link": "https://zoom.us/j/5175581158?pwd=UlhFY3lBOUUrNG9pclRVNndTNTZzQT09",
 | 
					 | 
				
			||||||
                "type": "prac",
 | 
					 | 
				
			||||||
                "selectable": true
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "14:15": {
 | 
					 | 
				
			||||||
            "name": "Основи електронного урядування",
 | 
					 | 
				
			||||||
            "teacher": "Чукут Світлана Анатоліївна",
 | 
					 | 
				
			||||||
            "link": "(посилання відсутнє!)",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": true
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "12:20": {
 | 
					 | 
				
			||||||
            "name": "Інженерія програмного забезпечення",
 | 
					 | 
				
			||||||
            "teacher": "Васильєва Марія Давидівна",
 | 
					 | 
				
			||||||
            "link": "https://do.ipo.kpi.ua/mod/bigbluebuttonbn/view.php?id=171039",
 | 
					 | 
				
			||||||
            "type": "lab",
 | 
					 | 
				
			||||||
            "selectable": false
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "14:15": {
 | 
					 | 
				
			||||||
            "name": "Теорія електричних кіл та сигналів",
 | 
					 | 
				
			||||||
            "teacher": "Лободзинський В. Ю. & Ілліна О. О.",
 | 
					 | 
				
			||||||
            "link": "https://meet.google.com/gwx-sshq-sqb",
 | 
					 | 
				
			||||||
            "type": "lab",
 | 
					 | 
				
			||||||
            "selectable": false
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "8:30": {
 | 
					 | 
				
			||||||
            "name": "Теорія ймовірності та математична статистика",
 | 
					 | 
				
			||||||
            "teacher": "Марковський Олександр Петрович",
 | 
					 | 
				
			||||||
            "link": "https://bbb.comsys.kpi.ua/b/ole-9ru-7vc",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": false
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "10:25": {
 | 
					 | 
				
			||||||
            "name": "Вступ до операційної системи Linux",
 | 
					 | 
				
			||||||
            "teacher": "Роковий Олександр Петрович",
 | 
					 | 
				
			||||||
            "link": "https://bbb.comsys.kpi.ua/b/ole-knq-z9h-pyl",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": false
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "12:20": {
 | 
					 | 
				
			||||||
            "name": "Інженерія програмного забезпечення",
 | 
					 | 
				
			||||||
            "teacher": "Васильєва Марія Давидівна",
 | 
					 | 
				
			||||||
            "link": "https://do.ipo.kpi.ua/mod/bigbluebuttonbn/view.php?id=171039",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": false
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "10:25": {
 | 
					 | 
				
			||||||
            "name": "Вища математика. Частина 3. Ряди. Теорія функцій комплексної змінної. Операційне числення",
 | 
					 | 
				
			||||||
            "teacher": "Стаматієва Вікторія В'ячеславівна",
 | 
					 | 
				
			||||||
            "link": "https://us04web.zoom.us/j/2313886209?pwd=dnZHanV3cU9LUXJBVWYyYVArUFg5dz09",
 | 
					 | 
				
			||||||
            "type": "prac",
 | 
					 | 
				
			||||||
            "selectable": false
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "12:20": {
 | 
					 | 
				
			||||||
            "name": "Практичний курс іноземної мови. Частина 2",
 | 
					 | 
				
			||||||
            "teacher": "Шевченко Ольга Миколаївна",
 | 
					 | 
				
			||||||
            "link": "https://meet.google.com/tno-cxef-zyi",
 | 
					 | 
				
			||||||
            "type": "prac",
 | 
					 | 
				
			||||||
            "selectable": false
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "14:15": {
 | 
					 | 
				
			||||||
            "name": "Соціальна психологія",
 | 
					 | 
				
			||||||
            "teacher": "Блохіна Ірина Олександрівна",
 | 
					 | 
				
			||||||
            "link": "(посилання відсутнє!)",
 | 
					 | 
				
			||||||
            "type": "prac",
 | 
					 | 
				
			||||||
            "selectable": true
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "16:10": {
 | 
					 | 
				
			||||||
            "name": "Основи електронного урядування",
 | 
					 | 
				
			||||||
            "teacher": "Чукут Світлана Анатоліївна",
 | 
					 | 
				
			||||||
            "link": "(посилання відсутнє!)",
 | 
					 | 
				
			||||||
            "type": "prac",
 | 
					 | 
				
			||||||
            "selectable": true
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "8:30": {
 | 
					 | 
				
			||||||
            "name": "Вступ до філософії",
 | 
					 | 
				
			||||||
            "teacher": "Руденко Тамара Петрівна",
 | 
					 | 
				
			||||||
            "link": "https://zoom.us/j/9358038101?pwd=d0pwUHRDY0dxbngrU09PYll6UXpNZz09",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": false
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "10:25": {
 | 
					 | 
				
			||||||
            "name": "Теорія електричних кіл та сигналів",
 | 
					 | 
				
			||||||
            "teacher": "Лободзинський Вадим Юрійович",
 | 
					 | 
				
			||||||
            "link": "https://meet.google.com/gwx-sshq-sqb",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": false
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "12:20": {
 | 
					 | 
				
			||||||
            "name": "Вища математика. Частина 3. Ряди. Теорія функцій комплексної змінної. Операційне числення",
 | 
					 | 
				
			||||||
            "teacher": "Овчар Раїса Федорівна",
 | 
					 | 
				
			||||||
            "link": "https://us02web.zoom.us/j/84532519615?pwd=eDFRMWtJTkxKcklpa1JUSjFmZHNyUT09",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": false
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "10:00": {
 | 
					 | 
				
			||||||
            "name": "Теорія ймовірності та математична статистика",
 | 
					 | 
				
			||||||
            "teacher": "Марковський Олександр Петрович",
 | 
					 | 
				
			||||||
            "link": "https://bbb.comsys.kpi.ua/b/ole-9ru-7vc",
 | 
					 | 
				
			||||||
            "type": "con",
 | 
					 | 
				
			||||||
            "selectable": false
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {},
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "10:25": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Психологія",
 | 
					 | 
				
			||||||
                "teacher": "Сербова О. В.",
 | 
					 | 
				
			||||||
                "link": "https://us05web.zoom.us/j/9299459744?pwd=Z3VQdWEvQ0tyc3pMbzl2bHN6Y1VlUT09",
 | 
					 | 
				
			||||||
                "type": "prac",
 | 
					 | 
				
			||||||
                "selectable": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Психологія конфлікту",
 | 
					 | 
				
			||||||
                "teacher": "Кононець М. О.",
 | 
					 | 
				
			||||||
                "link": "https://zoom.us/j/9953120638?pwd=WGZsYUhPK2hxbUc4YVJmT0lhdysyZz09",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "12:20": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Політична наука: конфліктологічний підхід",
 | 
					 | 
				
			||||||
                "teacher": "Северинчик О. П.",
 | 
					 | 
				
			||||||
                "link": "https://us04web.zoom.us/j/2279372490?pwd=bHR5QmpCT0tvQXJMLzRzaldHbFZ3dz09",
 | 
					 | 
				
			||||||
                "type": "prac",
 | 
					 | 
				
			||||||
                "selectable": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Захист персональних даних: стандарти ЄС та Ради Європи",
 | 
					 | 
				
			||||||
                "teacher": "Самчинська О. А.",
 | 
					 | 
				
			||||||
                "link": "https://us04web.zoom.us/j/72149205587?pwd=Ld2Xj7RORYEwnUYauB5yEbATwwsNan.1",
 | 
					 | 
				
			||||||
                "type": "prac",
 | 
					 | 
				
			||||||
                "selectable": true 
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "14:15": {
 | 
					 | 
				
			||||||
            "name": "Розумні міста",
 | 
					 | 
				
			||||||
            "teacher": "Чукут Світлана Анатоліївна",
 | 
					 | 
				
			||||||
            "link": "https://zoom.us/j/5439919039?pwd=Um8wWHV4ZjZpallCWkpVQ08wZGNzdz09",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": true
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "10:25": {
 | 
					 | 
				
			||||||
            "name": "Вступ до філософії",
 | 
					 | 
				
			||||||
            "teacher": "Руденко Тамара Петрівна",
 | 
					 | 
				
			||||||
            "link": "https://zoom.us/j/9358038101?pwd=d0pwUHRDY0dxbngrU09PYll6UXpNZz09",
 | 
					 | 
				
			||||||
            "type": "prac",
 | 
					 | 
				
			||||||
            "selectable": false
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        "14:15": {
 | 
					 | 
				
			||||||
            "name": "Теорія ймовірності та математична статистика",
 | 
					 | 
				
			||||||
            "teacher": "Марковський Олександр Петрович",
 | 
					 | 
				
			||||||
            "link": "https://bbb.comsys.kpi.ua/b/ole-9ru-7vc",
 | 
					 | 
				
			||||||
            "type": "prac",
 | 
					 | 
				
			||||||
            "selectable": false
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "8:30": {
 | 
					 | 
				
			||||||
            "name": "Теорія ймовірності та математична статистика",
 | 
					 | 
				
			||||||
            "teacher": "Марковський Олександр Петрович",
 | 
					 | 
				
			||||||
            "link": "https://bbb.comsys.kpi.ua/b/ole-9ru-7vc",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": false
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        "10:25": {
 | 
					 | 
				
			||||||
            "name": "Вступ до операційної системи Linux",
 | 
					 | 
				
			||||||
            "teacher": "Роковий Олександр Петрович",
 | 
					 | 
				
			||||||
            "link": "https://bbb.comsys.kpi.ua/b/ole-knq-z9h-pyl",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": false
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        "12:20": {
 | 
					 | 
				
			||||||
            "name": "Інженерія програмного забезпечення",
 | 
					 | 
				
			||||||
            "teacher": "Васильєва Марія Давидівна",
 | 
					 | 
				
			||||||
            "link": "https://do.ipo.kpi.ua/mod/bigbluebuttonbn/view.php?id=171039",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": false
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        "14:15": {
 | 
					 | 
				
			||||||
            "name": "Інженерія програмного забезпечення",
 | 
					 | 
				
			||||||
            "teacher": "Васильєва Марія Давидівна",
 | 
					 | 
				
			||||||
            "link": "https://do.ipo.kpi.ua/mod/bigbluebuttonbn/view.php?id=171039",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": false
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "8:30": {
 | 
					 | 
				
			||||||
            "name": "Вступ до операційної системи Linux",
 | 
					 | 
				
			||||||
            "teacher": "Алєнін Олег Ігорович",
 | 
					 | 
				
			||||||
            "link": "https://us04web.zoom.us/j/4122071690?pwd=bANFi3fk9pWvRu9TSBRGzfxFHuEkZC.1",
 | 
					 | 
				
			||||||
            "type": "lab",
 | 
					 | 
				
			||||||
            "selectable": false
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        "10:25": {
 | 
					 | 
				
			||||||
            "name": "Вища математика. Частина 3. Ряди. Теорія функцій комплексної змінної. Операційне числення",
 | 
					 | 
				
			||||||
            "teacher": "Стаматієва Вікторія В'ячеславівна",
 | 
					 | 
				
			||||||
            "link": "https://us04web.zoom.us/j/2313886209?pwd=dnZHanV3cU9LUXJBVWYyYVArUFg5dz09",
 | 
					 | 
				
			||||||
            "type": "prac",
 | 
					 | 
				
			||||||
            "selectable": false
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        "12:20": {
 | 
					 | 
				
			||||||
            "name": "Практичний курс іноземної мови. Частина 2",
 | 
					 | 
				
			||||||
            "teacher": "Шевченко Ольга Миколаївна",
 | 
					 | 
				
			||||||
            "link": "https://meet.google.com/tno-cxef-zyi",
 | 
					 | 
				
			||||||
            "type": "prac",
 | 
					 | 
				
			||||||
            "selectable": false
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        "14:15": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Соціальна психологія",
 | 
					 | 
				
			||||||
                "teacher": "Винославська О. В.",
 | 
					 | 
				
			||||||
                "link": "(посилання відсутнє!)",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Розумні міста",
 | 
					 | 
				
			||||||
                "teacher": "Чукут Світлана Анатоліївна",
 | 
					 | 
				
			||||||
                "link": "https://zoom.us/j/5439919039?pwd=Um8wWHV4ZjZpallCWkpVQ08wZGNzdz09",
 | 
					 | 
				
			||||||
                "type": "prac",
 | 
					 | 
				
			||||||
                "selectable": true
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ]
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "10:25": {
 | 
					 | 
				
			||||||
            "name": "Теорія електричних кіл та сигналів",
 | 
					 | 
				
			||||||
            "teacher": "Лободзинський Вадим Юрійович",
 | 
					 | 
				
			||||||
            "link": "https://meet.google.com/gwx-sshq-sqb",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": false
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        "12:20": {
 | 
					 | 
				
			||||||
            "name": "Вища математика. Частина 3. Ряди. Теорія функцій комплексної змінної. Операційне числення",
 | 
					 | 
				
			||||||
            "teacher": "Овчар Раїса Федорівна",
 | 
					 | 
				
			||||||
            "link": "https://us02web.zoom.us/j/84532519615?pwd=eDFRMWtJTkxKcklpa1JUSjFmZHNyUT09",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": false
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "10:00": {
 | 
					 | 
				
			||||||
            "name": "Теорія ймовірності та математична статистика",
 | 
					 | 
				
			||||||
            "teacher": "Марковський Олександр Петрович",
 | 
					 | 
				
			||||||
            "link": "https://bbb.comsys.kpi.ua/b/ole-9ru-7vc",
 | 
					 | 
				
			||||||
            "type": "con",
 | 
					 | 
				
			||||||
            "selectable": false
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {}
 | 
					 | 
				
			||||||
]
 | 
					 | 
				
			||||||
@ -1,51 +0,0 @@
 | 
				
			|||||||
[
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "9:00": {
 | 
					 | 
				
			||||||
            "name": "Системне програмування",
 | 
					 | 
				
			||||||
            "teacher": "Порєв Віктор Миколайович",
 | 
					 | 
				
			||||||
            "link": "https://us02web.zoom.us/j/2256183863?pwd=Q3FmZGVSbW5xUnFQZERpdlcxSElrUT09",
 | 
					 | 
				
			||||||
            "type": "prac",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "comment": "Екзамен!"
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {},
 | 
					 | 
				
			||||||
    {},
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "14:00": {
 | 
					 | 
				
			||||||
            "name": "Комп'ютерна електроніка",
 | 
					 | 
				
			||||||
            "teacher": "Виноградов Юрій Миколайович",
 | 
					 | 
				
			||||||
            "link": "https://bbb.comsys.kpi.ua/b/x2g-dqc-6fg",
 | 
					 | 
				
			||||||
            "type": "lab",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "comment": "Екзамен! Деталі: https://t.me/c/1856295652/522"
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "9:00": {
 | 
					 | 
				
			||||||
            "name": "Архітектура комп'ютерів. Частина 1. Арифметичні та управляючі пристрої",
 | 
					 | 
				
			||||||
            "teacher": "Жабін Валерій Іванович",
 | 
					 | 
				
			||||||
            "link": "https://bbb.comsys.kpi.ua/rooms/jwe-mmp-lb5-jf2/join",
 | 
					 | 
				
			||||||
            "type": "prac",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "comment": "Екзамен!"
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {},
 | 
					 | 
				
			||||||
    {}
 | 
					 | 
				
			||||||
]
 | 
					 | 
				
			||||||
@ -1,348 +0,0 @@
 | 
				
			|||||||
[
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "10:25": {
 | 
					 | 
				
			||||||
            "name": "Алгоритми та методи обчислень",
 | 
					 | 
				
			||||||
            "teacher": "Новотарський Михайло Анатолійович",
 | 
					 | 
				
			||||||
            "link": "https://us02web.zoom.us/j/85323196480?pwd=aXRONTh2SUxmdFZ5M1N5NU5VcGVlZz09",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": false
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "12:20": {
 | 
					 | 
				
			||||||
            "name": "Комп'ютерна електроніка",
 | 
					 | 
				
			||||||
            "teacher": "Виноградов Юрій Миколайович",
 | 
					 | 
				
			||||||
            "link": "https://bbb.comsys.kpi.ua/b/x2g-dqc-6fg",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": false
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "10:25": {
 | 
					 | 
				
			||||||
            "name": "Практичний курс іноземної мови. Частина 2",
 | 
					 | 
				
			||||||
            "teacher": "Шевченко Ольга Миколаївна",
 | 
					 | 
				
			||||||
            "link": "https://meet.google.com/tno-cxef-zyi",
 | 
					 | 
				
			||||||
            "type": "prac",
 | 
					 | 
				
			||||||
            "selectable": false
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "12:20": {
 | 
					 | 
				
			||||||
            "name": "Комп'ютерна електроніка",
 | 
					 | 
				
			||||||
            "teacher": "Виноградов Юрій Миколайович",
 | 
					 | 
				
			||||||
            "link": "https://bbb.comsys.kpi.ua/b/x2g-dqc-6fg",
 | 
					 | 
				
			||||||
            "type": "lab",
 | 
					 | 
				
			||||||
            "selectable": false
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "14:15": {
 | 
					 | 
				
			||||||
            "name": "Стратегія охорони навколишнього середовища",
 | 
					 | 
				
			||||||
            "teacher": "Романюкіна Ірина Юріївна",
 | 
					 | 
				
			||||||
            "link": "https://us05web.zoom.us/j/84713917316?pwd=MR0w0aDdxnka2H64qqCpVcUgfuhaQP.1",
 | 
					 | 
				
			||||||
            "type": "prac",
 | 
					 | 
				
			||||||
            "selectable": false
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "8:30": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Естетика промислового дизайну",
 | 
					 | 
				
			||||||
                "teacher": "Кузіна Ольга Юріївна",
 | 
					 | 
				
			||||||
                "link": "https://us05web.zoom.us/j/87803902417?pwd=64D8BbLeLkvweVlWlY2lX95UaA0XMG.1",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Logic",
 | 
					 | 
				
			||||||
                "teacher": "Казаков Мстислав Андрійович",
 | 
					 | 
				
			||||||
                "link": "(посилання відсутнє!)",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Дизайн презентації для професійної діяльності",
 | 
					 | 
				
			||||||
                "teacher": "Іщенко Олександр Анатолійович",
 | 
					 | 
				
			||||||
                "link": "(посилання відсутнє!)",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Стилі в образотворчому мистецтві",
 | 
					 | 
				
			||||||
                "teacher": "Оляніна Світлана Валеріївна",
 | 
					 | 
				
			||||||
                "link": "https://us05web.zoom.us/j/85408874003?pwd=UGdyRWNwSytSM0Zhc3dMTG4yek9sdz09",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "10:25": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Основи підприємницької діяльності",
 | 
					 | 
				
			||||||
                "teacher": "Марченко Валентина Миколаївна",
 | 
					 | 
				
			||||||
                "link": "(посилання відсутнє!)",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Корпоративна культура та діловий етикет",
 | 
					 | 
				
			||||||
                "teacher": "Цимбаленко Яна Юріївна",
 | 
					 | 
				
			||||||
                "link": "(посилання відсутнє!)",
 | 
					 | 
				
			||||||
                "type": "prac",
 | 
					 | 
				
			||||||
                "selectable": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Дизайн презентації для професійної діяльності",
 | 
					 | 
				
			||||||
                "teacher": "Іщенко Олександр Анатолійович",
 | 
					 | 
				
			||||||
                "link": "(посилання відсутнє!)",
 | 
					 | 
				
			||||||
                "type": "prac",
 | 
					 | 
				
			||||||
                "selectable": true
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "12:20": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Логіка",
 | 
					 | 
				
			||||||
                "teacher": "Піхорович Василь Дмитрович",
 | 
					 | 
				
			||||||
                "link": "(посилання відсутнє!)",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Корпоративна культура та діловий етикет",
 | 
					 | 
				
			||||||
                "teacher": "Тимошенко Наталія Леонідівна",
 | 
					 | 
				
			||||||
                "link": "(посилання відсутнє!)",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Циклічні види спорту",
 | 
					 | 
				
			||||||
                "teacher": "Черевичко Олександр Геннадійович",
 | 
					 | 
				
			||||||
                "link": "https://us05web.zoom.us/j/84221628555?pwd=ZjVDV3lDTjRES0lOdkk4cUlUaWp0UT09",
 | 
					 | 
				
			||||||
                "type": "prac",
 | 
					 | 
				
			||||||
                "selectable": true
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "14:15": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Єдиноборства",
 | 
					 | 
				
			||||||
                "teacher": "Назимок Віктор Васильович",
 | 
					 | 
				
			||||||
                "link": "https://us04web.zoom.us/j/2276337141?pwd=ejNrUkpPQk9iQlhMMnprOEg3UHNnZz09",
 | 
					 | 
				
			||||||
                "type": "prac",
 | 
					 | 
				
			||||||
                "selectable": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Ігрові види спорту",
 | 
					 | 
				
			||||||
                "teacher": "Сироватко З. В.",
 | 
					 | 
				
			||||||
                "link": "https://us05web.zoom.us/j/7112676497?pwd=SzEySzRGUzh6NGcxdXZtQ2ovYzhCUT09",
 | 
					 | 
				
			||||||
                "type": "prac",
 | 
					 | 
				
			||||||
                "selectable": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Силові види спорту",
 | 
					 | 
				
			||||||
                "teacher": "Корюкаєв Микола Миколайович",
 | 
					 | 
				
			||||||
                "link": "https://zoom.us/j/2035574145?pwd=bk1wTVhGbjJsQTR4WmVQMlROWFBCZz09",
 | 
					 | 
				
			||||||
                "type": "prac",
 | 
					 | 
				
			||||||
                "selectable": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Складно-координаційні види спорту",
 | 
					 | 
				
			||||||
                "teacher": "Козлова Тетяна Георгіївна",
 | 
					 | 
				
			||||||
                "link": "(посилання відсутнє!)",
 | 
					 | 
				
			||||||
                "type": "prac",
 | 
					 | 
				
			||||||
                "selectable": true
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "8:30": {
 | 
					 | 
				
			||||||
            "name": "Алгоритми та методи обчислень",
 | 
					 | 
				
			||||||
            "teacher": "Порєв Віктор Миколайович",
 | 
					 | 
				
			||||||
            "link": "https://us02web.zoom.us/j/2256183863?pwd=Q3FmZGVSbW5xUnFQZERpdlcxSElrUT09",
 | 
					 | 
				
			||||||
            "type": "lab",
 | 
					 | 
				
			||||||
            "selectable": false
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "10:25": {
 | 
					 | 
				
			||||||
            "name": "Організація баз даних",
 | 
					 | 
				
			||||||
            "teacher": "Болдак Андрій Олександрович",
 | 
					 | 
				
			||||||
            "link": "https://us04web.zoom.us/j/5439063374?pwd=VG1iODU0WmpCNTlCVXJJTitYU2Nmdz09",
 | 
					 | 
				
			||||||
            "type": "lab",
 | 
					 | 
				
			||||||
            "selectable": false
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "8:30": {
 | 
					 | 
				
			||||||
            "name": "Системне програмування",
 | 
					 | 
				
			||||||
            "teacher": "Порєв Віктор Миколайович",
 | 
					 | 
				
			||||||
            "link": "https://us02web.zoom.us/j/2256183863?pwd=Q3FmZGVSbW5xUnFQZERpdlcxSElrUT09",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": false
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "10:25": {
 | 
					 | 
				
			||||||
            "name": "Організація баз даних",
 | 
					 | 
				
			||||||
            "teacher": "Болдак Андрій Олександрович",
 | 
					 | 
				
			||||||
            "link": "https://us04web.zoom.us/j/5439063374?pwd=VG1iODU0WmpCNTlCVXJJTitYU2Nmdz09",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": false
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        "12:20": {
 | 
					 | 
				
			||||||
            "name": "Архітектура комп'ютерів. Частина 1. Арифметичні та управляючі пристрої",
 | 
					 | 
				
			||||||
            "teacher": "Жабін Валерій Іванович",
 | 
					 | 
				
			||||||
            "link": "https://bbb.comsys.kpi.ua/rooms/jwe-mmp-lb5-jf2/join",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": false
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "14:15": {
 | 
					 | 
				
			||||||
            "name": "Стратегія охорони навколишнього середовища",
 | 
					 | 
				
			||||||
            "teacher": "Романюкіна Ірина Юріївна",
 | 
					 | 
				
			||||||
            "link": "https://us05web.zoom.us/j/84674156408?pwd=BoZcB13bbA82SxL503YaQgabjUiqC9.1",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": false
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {},
 | 
					 | 
				
			||||||
    {},
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "10:25": {
 | 
					 | 
				
			||||||
            "name": "Алгоритми та методи обчислень",
 | 
					 | 
				
			||||||
            "teacher": "Новотарський Михайло Анатолійович",
 | 
					 | 
				
			||||||
            "link": "https://us02web.zoom.us/j/85323196480?pwd=aXRONTh2SUxmdFZ5M1N5NU5VcGVlZz09",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": false
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "12:20": {
 | 
					 | 
				
			||||||
            "name": "Комп'ютерна електроніка",
 | 
					 | 
				
			||||||
            "teacher": "Виноградов Юрій Миколайович",
 | 
					 | 
				
			||||||
            "link": "https://bbb.comsys.kpi.ua/b/x2g-dqc-6fg",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": false
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "8:30": {
 | 
					 | 
				
			||||||
            "name": "Архітектура комп'ютерів. Частина 1. Арифметичні та управляючі пристрої",
 | 
					 | 
				
			||||||
            "teacher": "Верба Олександр Андрійович",
 | 
					 | 
				
			||||||
            "link": "https://us04web.zoom.us/j/7382214783?pwd=RnZ3SWgwK1JoVkZtNndnKzdPZjFGdz09",
 | 
					 | 
				
			||||||
            "type": "lab",
 | 
					 | 
				
			||||||
            "selectable": false
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "10:25": {
 | 
					 | 
				
			||||||
            "name": "Практичний курс іноземної мови. Частина 2",
 | 
					 | 
				
			||||||
            "teacher": "Шевченко Ольга Миколаївна",
 | 
					 | 
				
			||||||
            "link": "https://meet.google.com/tno-cxef-zyi",
 | 
					 | 
				
			||||||
            "type": "prac",
 | 
					 | 
				
			||||||
            "selectable": false
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "12:20": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Стилі в образотворчому мистецтві",
 | 
					 | 
				
			||||||
                "teacher": "Оляніна Світлана Валеріївна",
 | 
					 | 
				
			||||||
                "link": "https://us05web.zoom.us/j/85408874003?pwd=UGdyRWNwSytSM0Zhc3dMTG4yek9sdz09",
 | 
					 | 
				
			||||||
                "type": "prac",
 | 
					 | 
				
			||||||
                "selectable": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Естетика промислового дизайну",
 | 
					 | 
				
			||||||
                "teacher": "Кузіна Ольга Юріївна",
 | 
					 | 
				
			||||||
                "link": "https://us05web.zoom.us/j/87803902417?pwd=64D8BbLeLkvweVlWlY2lX95UaA0XMG.1",
 | 
					 | 
				
			||||||
                "type": "prac",
 | 
					 | 
				
			||||||
                "selectable": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Логіка",
 | 
					 | 
				
			||||||
                "teacher": "Сторожик Марина Іванівна",
 | 
					 | 
				
			||||||
                "link": "(посилання відсутнє!)",
 | 
					 | 
				
			||||||
                "type": "prac",
 | 
					 | 
				
			||||||
                "selectable": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Logic",
 | 
					 | 
				
			||||||
                "teacher": "Казаков Мстислав Андрійович",
 | 
					 | 
				
			||||||
                "link": "(посилання відсутнє!)",
 | 
					 | 
				
			||||||
                "type": "prac",
 | 
					 | 
				
			||||||
                "selectable": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Циклічні види спорту",
 | 
					 | 
				
			||||||
                "teacher": "Черевичко Олександр Геннадійович",
 | 
					 | 
				
			||||||
                "link": "https://us05web.zoom.us/j/84221628555?pwd=ZjVDV3lDTjRES0lOdkk4cUlUaWp0UT09",
 | 
					 | 
				
			||||||
                "type": "prac",
 | 
					 | 
				
			||||||
                "selectable": true
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "14:15": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Єдиноборства",
 | 
					 | 
				
			||||||
                "teacher": "Назимок Віктор Васильович",
 | 
					 | 
				
			||||||
                "link": "https://us04web.zoom.us/j/2276337141?pwd=ejNrUkpPQk9iQlhMMnprOEg3UHNnZz09",
 | 
					 | 
				
			||||||
                "type": "prac",
 | 
					 | 
				
			||||||
                "selectable": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Ігрові види спорту",
 | 
					 | 
				
			||||||
                "teacher": "Сироватко З. В.",
 | 
					 | 
				
			||||||
                "link": "https://us05web.zoom.us/j/7112676497?pwd=SzEySzRGUzh6NGcxdXZtQ2ovYzhCUT09",
 | 
					 | 
				
			||||||
                "type": "prac",
 | 
					 | 
				
			||||||
                "selectable": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Силові види спорту",
 | 
					 | 
				
			||||||
                "teacher": "Корюкаєв Микола Миколайович",
 | 
					 | 
				
			||||||
                "link": "https://zoom.us/j/2035574145?pwd=bk1wTVhGbjJsQTR4WmVQMlROWFBCZz09",
 | 
					 | 
				
			||||||
                "type": "prac",
 | 
					 | 
				
			||||||
                "selectable": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Складно-координаційні види спорту",
 | 
					 | 
				
			||||||
                "teacher": "Козлова Тетяна Георгіївна",
 | 
					 | 
				
			||||||
                "link": "(посилання відсутнє!)",
 | 
					 | 
				
			||||||
                "type": "prac",
 | 
					 | 
				
			||||||
                "selectable": true
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ]
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "8:30": {
 | 
					 | 
				
			||||||
            "name": "Системне програмування",
 | 
					 | 
				
			||||||
            "teacher": "Порєв Віктор Миколайович",
 | 
					 | 
				
			||||||
            "link": "https://us02web.zoom.us/j/2256183863?pwd=Q3FmZGVSbW5xUnFQZERpdlcxSElrUT09",
 | 
					 | 
				
			||||||
            "type": "lab",
 | 
					 | 
				
			||||||
            "selectable": false
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "8:30": {
 | 
					 | 
				
			||||||
            "name": "Системне програмування",
 | 
					 | 
				
			||||||
            "teacher": "Порєв Віктор Миколайович",
 | 
					 | 
				
			||||||
            "link": "https://us02web.zoom.us/j/2256183863?pwd=Q3FmZGVSbW5xUnFQZERpdlcxSElrUT09",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": false
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "10:25": {
 | 
					 | 
				
			||||||
            "name": "Організація баз даних",
 | 
					 | 
				
			||||||
            "teacher": "Болдак Андрій Олександрович",
 | 
					 | 
				
			||||||
            "link": "https://us04web.zoom.us/j/5439063374?pwd=VG1iODU0WmpCNTlCVXJJTitYU2Nmdz09",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": false
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "12:20": {
 | 
					 | 
				
			||||||
            "name": "Архітектура комп'ютерів. Частина 1. Арифметичні та управляючі пристрої",
 | 
					 | 
				
			||||||
            "teacher": "Жабін Валерій Іванович",
 | 
					 | 
				
			||||||
            "link": "https://bbb.comsys.kpi.ua/rooms/jwe-mmp-lb5-jf2/join",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": false
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {},
 | 
					 | 
				
			||||||
    {}
 | 
					 | 
				
			||||||
]
 | 
					 | 
				
			||||||
@ -1,43 +0,0 @@
 | 
				
			|||||||
[
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "9:00": {
 | 
					 | 
				
			||||||
            "name": "Архітектура комп'ютерів. Частина 2. Процесори",
 | 
					 | 
				
			||||||
            "teacher": "Клименко Ірина Анатоліївна",
 | 
					 | 
				
			||||||
            "link": "https://bbb.comsys.kpi.ua/rooms/iry-7ds-r3u-otz/join",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "nolink": false
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {},
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "13:00": {
 | 
					 | 
				
			||||||
            "name": "Комп'ютерна схемотехніка",
 | 
					 | 
				
			||||||
            "teacher": "Ткаченко Валентина Василівна & Старовєров Костянтин Сергійович",
 | 
					 | 
				
			||||||
            "link": "https://bbb.comsys.kpi.ua/rooms/pxx-mtu-cxz-ets/join",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "nolink": false
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {},
 | 
					 | 
				
			||||||
    {}
 | 
					 | 
				
			||||||
]
 | 
					 | 
				
			||||||
@ -1,707 +0,0 @@
 | 
				
			|||||||
[
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "8:30": {
 | 
					 | 
				
			||||||
            "name": "Архітектура комп'ютерів. Частина 2. Процесори",
 | 
					 | 
				
			||||||
            "teacher": "Клименко Ірина Анатоліївна",
 | 
					 | 
				
			||||||
            "link": "https://bbb.comsys.kpi.ua/rooms/iry-7ds-r3u-otz/join",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "nolink": false,
 | 
					 | 
				
			||||||
            "comment": "<a href=\"https://us02web.zoom.us/j/5274433531?pwd=dXkvanJ1OThaWjBXd2RPR0svU2JtUT09\">додаткове посилання (Zoom)</a>"
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "10:25": {
 | 
					 | 
				
			||||||
            "name": "Паралельне програмування",
 | 
					 | 
				
			||||||
            "teacher": "Корочкін Олександр Володимирович",
 | 
					 | 
				
			||||||
            "link": "https://bbb.comsys.kpi.ua/rooms/vvf-akd-9bh-uwu/join",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "nolink": false,
 | 
					 | 
				
			||||||
            "comment": "<a href=\"https://us02web.zoom.us/j/86949818084?pwd=id4SIsb62CKsvkbITjShLYecbX1QSX.1\">додаткове посилання (Zoom)</a>"
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        "12:20": {
 | 
					 | 
				
			||||||
            "name": "Комп'ютерна схемотехніка",
 | 
					 | 
				
			||||||
            "teacher": "Ткаченко Валентина Василівна & Старовєров Костянтин Сергійович",
 | 
					 | 
				
			||||||
            "link": "https://us02web.zoom.us/j/7824097989?pwd=SzVuL1YxM2w1WjBSQ2w0Mnd0V0FYdz09",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "nolink": false,
 | 
					 | 
				
			||||||
            "comment": "<a href=\"https://us02web.zoom.us/j/5274433531?pwd=dXkvanJ1OThaWjBXd2RPR0svU2JtUT09\">додаткове посилання (Zoom)</a>"
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "14:15": {
 | 
					 | 
				
			||||||
            "name": "Правознавство",
 | 
					 | 
				
			||||||
            "teacher": "Попов Костянтин Леонідович",
 | 
					 | 
				
			||||||
            "link": "https://us02web.zoom.us/j/8589662326?pwd=L3dGcUs5WFVHdnlOb1ZkUlV1dmdLZz09",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "nolink": false
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "16:10": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Вступ до штучного інтелекту",
 | 
					 | 
				
			||||||
                "teacher": "Таран Владислав Ігорович",
 | 
					 | 
				
			||||||
                "link": "https://bbb.comsys.kpi.ua/b/vla-thz-lwo-3uh",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Технології програмування користувацьких інтерфейсів (Front-end)",
 | 
					 | 
				
			||||||
                "teacher": "Алещенко Олексій Вадимович",
 | 
					 | 
				
			||||||
                "link": "https://us02web.zoom.us/j/2711546637?pwd=Ry82RHp3SjV6WTZRMXl6WUNod25hUT09",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Технології розроблення серверного програмного забезпечення (Back-end)",
 | 
					 | 
				
			||||||
                "teacher": "Валько В. .",
 | 
					 | 
				
			||||||
                "link": "https://meet.google.com/esi-ybgp-xwg",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ]
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "8:30": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Життєвий цикл розробки програмного забезпечення",
 | 
					 | 
				
			||||||
                "teacher": "Галушко Дмитро Олександрович",
 | 
					 | 
				
			||||||
                "link": "https://us05web.zoom.us/j/5761967742?pwd=VnpZTW1HdzdVM215Q2I3VTlPS1YxQT09",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Комп’ютерна графіка та мультимедіа",
 | 
					 | 
				
			||||||
                "teacher": "Родіонов Павло Юрійович",
 | 
					 | 
				
			||||||
                "link": "https://meet.google.com/nfs-jejb-xxd",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Методи та технології штучного інтелекту",
 | 
					 | 
				
			||||||
                "teacher": "Шимкович Володимир Миколайович",
 | 
					 | 
				
			||||||
                "link": "https://us02web.zoom.us/j/3428560060?pwd=YTZ4Vm8xVTYzTGhzQk5ONGpTcmVSZz09",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Розробка програмного забезпечення на платформі Java",
 | 
					 | 
				
			||||||
                "teacher": "Ковальчук Олександр Миронович",
 | 
					 | 
				
			||||||
                "link": "https://meet.google.com/ddt-vznu-hos",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Технології та засоби розробки комп'ютерної графіки та мультимедіа",
 | 
					 | 
				
			||||||
                "teacher": "Хмелюк Марина Сергіївна",
 | 
					 | 
				
			||||||
                "link": "https://us04web.zoom.us/j/9240595434?pwd=UzFFWlFndWw0Sk1mTWJJeFdIOVljdz09",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "10:25": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "AGILE методологія розробки програмного забезпечення (Авторський курс компаніїї SoftServe)",
 | 
					 | 
				
			||||||
                "teacher": "Шевело Олексій Павлович",
 | 
					 | 
				
			||||||
                "link": "https://softserveinc.zoom.us/j/5653825777",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Linux",
 | 
					 | 
				
			||||||
                "teacher": "Хмелюк Марина Сергіївна",
 | 
					 | 
				
			||||||
                "link": "(посилання відсутнє!)",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Основи Front-end технологій",
 | 
					 | 
				
			||||||
                "teacher": "Жереб К. А.",
 | 
					 | 
				
			||||||
                "link": "https://us04web.zoom.us/j/75914252554?pwd=UfuOlnUQvBcvLZshcYxdGvWqX8wS5o.1",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Розробка мобільних застосувань під iOS",
 | 
					 | 
				
			||||||
                "teacher": "Храмченко Микола Сергійович",
 | 
					 | 
				
			||||||
                "link": "(посилання відсутнє!)",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Розроблення застосунків з використанням Spring Framework",
 | 
					 | 
				
			||||||
                "teacher": "Букасов Максим Михайлович",
 | 
					 | 
				
			||||||
                "link": "https://us04web.zoom.us/j/5331536558?pwd=RGZaV0Y4VkZnVVRCYjlscjhrTGNZdz09",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Технологія блокчейн",
 | 
					 | 
				
			||||||
                "teacher": "Яланецький Валерій Анатолійович",
 | 
					 | 
				
			||||||
                "link": "https://us02web.zoom.us/j/9728575328?pwd=ZVo5aHRuWFZhTURIU05KRHA0QUh2dz09%D1%94",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "12:20": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Методи та технології штучного інтелекту",
 | 
					 | 
				
			||||||
                "teacher": "Шимкович Володимир Миколайович",
 | 
					 | 
				
			||||||
                "link": "https://us02web.zoom.us/j/3428560060?pwd=YTZ4Vm8xVTYzTGhzQk5ONGpTcmVSZz09",
 | 
					 | 
				
			||||||
                "type": "lab",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Комп’ютерна графіка та мультимедіа",
 | 
					 | 
				
			||||||
                "teacher": "Родіонов Павло Юрійович",
 | 
					 | 
				
			||||||
                "link": "https://meet.google.com/nfs-jejb-xxd",
 | 
					 | 
				
			||||||
                "type": "lab",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Технології Computer Vision",
 | 
					 | 
				
			||||||
                "teacher": "Баран Данило Романович",
 | 
					 | 
				
			||||||
                "link": "https://us05web.zoom.us/j/85185500969?pwd=ou3boCOzuwE49ufLdXFIPx2ZqTdyTa.1",
 | 
					 | 
				
			||||||
                "type": "lab",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Життєвий цикл розробки програмного забезпечення",
 | 
					 | 
				
			||||||
                "teacher": "Альбрехт Йосип Омелянович",
 | 
					 | 
				
			||||||
                "link": "https://us04web.zoom.us/j/79545386791?pwd=Mq5xRkZbAo2EYWijnxTWeqrmgTYqYZ.1",
 | 
					 | 
				
			||||||
                "type": "lab",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Розробка програмного забезпечення на платформі Java",
 | 
					 | 
				
			||||||
                "teacher": "Ковальчук Олександр Миронович",
 | 
					 | 
				
			||||||
                "link": "https://meet.google.com/ddt-vznu-hos",
 | 
					 | 
				
			||||||
                "type": "lab",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Технології та засоби розробки комп'ютерної графіки та мультимедіа",
 | 
					 | 
				
			||||||
                "teacher": "Хмелюк Марина Сергіївна",
 | 
					 | 
				
			||||||
                "link": "https://us04web.zoom.us/j/9240595434?pwd=UzFFWlFndWw0Sk1mTWJJeFdIOVljdz09",
 | 
					 | 
				
			||||||
                "type": "lab",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "18:30": {
 | 
					 | 
				
			||||||
            "name": "Технології Computer Vision",
 | 
					 | 
				
			||||||
            "teacher": "Писарчук О О",
 | 
					 | 
				
			||||||
            "link": "https://us04web.zoom.us/j/71823185480?pwd=MDN5d1FXNXROaFNJUVhySUdSUVo5UT09",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": true,
 | 
					 | 
				
			||||||
            "nolink": false
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "8:30": {
 | 
					 | 
				
			||||||
            "name": "Правознавство",
 | 
					 | 
				
			||||||
            "teacher": "Тихонюк Ольга Володимирівна",
 | 
					 | 
				
			||||||
            "link": "https://meet.google.com/nyj-ptfp-ihn",
 | 
					 | 
				
			||||||
            "type": "prac",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "nolink": false
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "10:25": {
 | 
					 | 
				
			||||||
            "name": "Комп'ютерна схемотехніка",
 | 
					 | 
				
			||||||
            "teacher": "Нікольський С С",
 | 
					 | 
				
			||||||
            "link": "https://meet.google.com/njc-uwmf-qrf",
 | 
					 | 
				
			||||||
            "type": "lab",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "nolink": false
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "12:20": {
 | 
					 | 
				
			||||||
            "name": "Практичний курс іноземної мови професійного спрямування. Частина 1",
 | 
					 | 
				
			||||||
            "teacher": "Шевченко Ольга Миколаївна",
 | 
					 | 
				
			||||||
            "link": "https://meet.google.com/gqm-pxso-tzm",
 | 
					 | 
				
			||||||
            "type": "prac",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "nolink": false
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "14:15": {
 | 
					 | 
				
			||||||
            "name": "Вступ до штучного інтелекту",
 | 
					 | 
				
			||||||
            "teacher": "Кочура Юрій Петрович",
 | 
					 | 
				
			||||||
            "link": "https://bbb.ugrid.org/b/yur-871-xvm-0gx",
 | 
					 | 
				
			||||||
            "type": "prac",
 | 
					 | 
				
			||||||
            "selectable": true,
 | 
					 | 
				
			||||||
            "nolink": false
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "8:30": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Мова програмування Java",
 | 
					 | 
				
			||||||
                "teacher": "Орленко С. П.",
 | 
					 | 
				
			||||||
                "link": "(посилання відсутнє!)",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Розробка програмного забезпечення на платформі Node.JS",
 | 
					 | 
				
			||||||
                "teacher": "Нечай Дмитро Олександрович",
 | 
					 | 
				
			||||||
                "link": "https://meet.google.com/hpu-mggd-jju",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Системне програмування С і С++",
 | 
					 | 
				
			||||||
                "teacher": "Ковальов Микола Олександрович",
 | 
					 | 
				
			||||||
                "link": "https://meet.google.com/wnu-xhbz-amc",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Сучасні технології розробки WEB-застосувань мовою програмування PHP",
 | 
					 | 
				
			||||||
                "teacher": "Ковтунець Олесь Володимирович",
 | 
					 | 
				
			||||||
                "link": "https://us02web.zoom.us/j/82665901429?pwd=JQFAiXokPcOCYarGFkVJmAHOXRbO7d.1",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Сучасні технології розробки WEB-застосувань на платформі Java",
 | 
					 | 
				
			||||||
                "teacher": "Іванова Любов Миколаївна",
 | 
					 | 
				
			||||||
                "link": "(посилання відсутнє!)",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Технології програмування на С/Embedded (Сертифікатна програма)",
 | 
					 | 
				
			||||||
                "teacher": "Каплунов Артем Володимирович",
 | 
					 | 
				
			||||||
                "link": "https://bbb.comsys.kpi.ua/b/art-1k1-ww6-l8x",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "10:25": {
 | 
					 | 
				
			||||||
            "name": "Системне програмування С і С++",
 | 
					 | 
				
			||||||
            "teacher": "Густера Олег Михайлович",
 | 
					 | 
				
			||||||
            "link": "(посилання відсутнє!)",
 | 
					 | 
				
			||||||
            "type": "lab",
 | 
					 | 
				
			||||||
            "selectable": true,
 | 
					 | 
				
			||||||
            "nolink": true
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "12:20": {
 | 
					 | 
				
			||||||
            "name": "Технології програмування на С/Embedded (Сертифікатна програма)",
 | 
					 | 
				
			||||||
            "teacher": "Каплунов Артем Володимирович",
 | 
					 | 
				
			||||||
            "link": "https://bbb.comsys.kpi.ua/b/art-1k1-ww6-l8x",
 | 
					 | 
				
			||||||
            "type": "lab",
 | 
					 | 
				
			||||||
            "selectable": true,
 | 
					 | 
				
			||||||
            "nolink": false
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "14:15": {
 | 
					 | 
				
			||||||
            "name": "Розроблення застосунків з використанням Spring Framework",
 | 
					 | 
				
			||||||
            "teacher": "Нікітін Валерій Андрійович",
 | 
					 | 
				
			||||||
            "link": "https://us04web.zoom.us/j/73496253590?pwd=4G5hOcm26EJXOKbvSMYxJwaMomqaB6.1",
 | 
					 | 
				
			||||||
            "type": "lab",
 | 
					 | 
				
			||||||
            "selectable": true,
 | 
					 | 
				
			||||||
            "nolink": false
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "16:10": {
 | 
					 | 
				
			||||||
            "name": "Технології програмування користувацьких інтерфейсів (Front-end)",
 | 
					 | 
				
			||||||
            "teacher": "Ковальчук Олександр Миронович",
 | 
					 | 
				
			||||||
            "link": "https://meet.google.com/bwc-nscd-who",
 | 
					 | 
				
			||||||
            "type": "lab",
 | 
					 | 
				
			||||||
            "selectable": true,
 | 
					 | 
				
			||||||
            "nolink": false
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "18:30": {
 | 
					 | 
				
			||||||
            "name": "Сучасні технології розробки WEB-застосувань на платформі Microsoft.NET",
 | 
					 | 
				
			||||||
            "teacher": "Крамар Юлія Михайлівна",
 | 
					 | 
				
			||||||
            "link": "https://teams.microsoft.com/l/meetup-join/19%3Ameeting_MDc2NDQzODItN2UxMS00OGZjLTgyOTktZDAyMDk1ODZlODIy%40thread.v2/0?context=%7B%22Tid%22%3A%22b41b72d0-4e9f-4c26-8a69-f949f367c91d%22%2C%22Oid%22%3A%22800fb5c4-7af0-4ee6-971b-4fbab595029e%22%7D",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": true,
 | 
					 | 
				
			||||||
            "nolink": false
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {},
 | 
					 | 
				
			||||||
    {},
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "8:30": {
 | 
					 | 
				
			||||||
            "name": "Архітектура комп'ютерів. Частина 2. Процесори",
 | 
					 | 
				
			||||||
            "teacher": "Клименко Ірина Анатоліївна",
 | 
					 | 
				
			||||||
            "link": "https://bbb.comsys.kpi.ua/rooms/iry-7ds-r3u-otz/join",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "nolink": false,
 | 
					 | 
				
			||||||
            "comment": "<a href=\"https://us02web.zoom.us/j/5274433531?pwd=dXkvanJ1OThaWjBXd2RPR0svU2JtUT09\">додаткове посилання (Zoom)</a>"
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "10:25": {
 | 
					 | 
				
			||||||
            "name": "Паралельне програмування",
 | 
					 | 
				
			||||||
            "teacher": "Корочкін Олександр Володимирович",
 | 
					 | 
				
			||||||
            "link": "https://bbb.comsys.kpi.ua/rooms/vvf-akd-9bh-uwu/join",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "nolink": false,
 | 
					 | 
				
			||||||
            "comment": "<a href=\"https://us02web.zoom.us/j/86949818084?pwd=id4SIsb62CKsvkbITjShLYecbX1QSX.1\">додаткове посилання (Zoom)</a>"
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "12:20": {
 | 
					 | 
				
			||||||
            "name": "Комп'ютерна схемотехніка",
 | 
					 | 
				
			||||||
            "teacher": "Ткаченко Валентина Василівна & Старовєров Костянтин Сергійович",
 | 
					 | 
				
			||||||
            "link": "https://us02web.zoom.us/j/7824097989?pwd=SzVuL1YxM2w1WjBSQ2w0Mnd0V0FYdz09",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "nolink": false,
 | 
					 | 
				
			||||||
            "comment": "<a href=\"https://us02web.zoom.us/j/5274433531?pwd=dXkvanJ1OThaWjBXd2RPR0svU2JtUT09\">додаткове посилання (Zoom)</a>"
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "14:15": {
 | 
					 | 
				
			||||||
            "name": "Технології розроблення серверного програмного забезпечення (Back-end)",
 | 
					 | 
				
			||||||
            "teacher": "Валько В. .",
 | 
					 | 
				
			||||||
            "link": "https://meet.google.com/esi-ybgp-xwg",
 | 
					 | 
				
			||||||
            "type": "lab",
 | 
					 | 
				
			||||||
            "selectable": true,
 | 
					 | 
				
			||||||
            "nolink": false
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        "16:10": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Вступ до штучного інтелекту",
 | 
					 | 
				
			||||||
                "teacher": "Гордієнко Юрій Григорович",
 | 
					 | 
				
			||||||
                "link": "https://bbb.comsys.kpi.ua/b/vla-thz-lwo-3uh",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false,
 | 
					 | 
				
			||||||
                "comment": "<a href=\"https://bbb.ugrid.org/b/vla-thz-lwo-3uh\">резервне посилання (Ugrid)</a>"
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Технології програмування користувацьких інтерфейсів (Front-end)",
 | 
					 | 
				
			||||||
                "teacher": "Алещенко Олексій Вадимович",
 | 
					 | 
				
			||||||
                "link": "https://us02web.zoom.us/j/2711546637?pwd=Ry82RHp3SjV6WTZRMXl6WUNod25hUT09",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Технології розроблення серверного програмного забезпечення (Back-end)",
 | 
					 | 
				
			||||||
                "teacher": "Валько В. .",
 | 
					 | 
				
			||||||
                "link": "https://meet.google.com/esi-ybgp-xwg",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ]
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "8:30": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Життєвий цикл розробки програмного забезпечення",
 | 
					 | 
				
			||||||
                "teacher": "Галушко Дмитро Олександрович",
 | 
					 | 
				
			||||||
                "link": "https://us05web.zoom.us/j/5761967742?pwd=VnpZTW1HdzdVM215Q2I3VTlPS1YxQT09",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Комп’ютерна графіка та мультимедіа",
 | 
					 | 
				
			||||||
                "teacher": "Родіонов Павло Юрійович",
 | 
					 | 
				
			||||||
                "link": "https://meet.google.com/nfs-jejb-xxd",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Методи та технології штучного інтелекту",
 | 
					 | 
				
			||||||
                "teacher": "Шимкович Володимир Миколайович",
 | 
					 | 
				
			||||||
                "link": "https://us02web.zoom.us/j/3428560060?pwd=YTZ4Vm8xVTYzTGhzQk5ONGpTcmVSZz09",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Розробка програмного забезпечення на платформі Java",
 | 
					 | 
				
			||||||
                "teacher": "Ковальчук Олександр Миронович",
 | 
					 | 
				
			||||||
                "link": "https://meet.google.com/ddt-vznu-hos",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Технології та засоби розробки комп'ютерної графіки та мультимедіа",
 | 
					 | 
				
			||||||
                "teacher": "Хмелюк Марина Сергіївна",
 | 
					 | 
				
			||||||
                "link": "https://us04web.zoom.us/j/9240595434?pwd=UzFFWlFndWw0Sk1mTWJJeFdIOVljdz09",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "10:25": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "AGILE методологія розробки програмного забезпечення (Авторський курс компаніїї SoftServe)",
 | 
					 | 
				
			||||||
                "teacher": "Шевело Олексій Павлович",
 | 
					 | 
				
			||||||
                "link": "https://softserveinc.zoom.us/j/5653825777",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Linux",
 | 
					 | 
				
			||||||
                "teacher": "Хмелюк Марина Сергіївна",
 | 
					 | 
				
			||||||
                "link": "(посилання відсутнє!)",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Основи Front-end технологій",
 | 
					 | 
				
			||||||
                "teacher": "Жереб К. А.",
 | 
					 | 
				
			||||||
                "link": "https://us04web.zoom.us/j/75914252554?pwd=UfuOlnUQvBcvLZshcYxdGvWqX8wS5o.1",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Розробка мобільних застосувань під iOS",
 | 
					 | 
				
			||||||
                "teacher": "Храмченко Микола Сергійович",
 | 
					 | 
				
			||||||
                "link": "(посилання відсутнє!)",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Розроблення застосунків з використанням Spring Framework",
 | 
					 | 
				
			||||||
                "teacher": "Букасов Максим Михайлович",
 | 
					 | 
				
			||||||
                "link": "https://us04web.zoom.us/j/5331536558?pwd=RGZaV0Y4VkZnVVRCYjlscjhrTGNZdz09",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Технологія блокчейн",
 | 
					 | 
				
			||||||
                "teacher": "Яланецький Валерій Анатолійович",
 | 
					 | 
				
			||||||
                "link": "https://us02web.zoom.us/j/9728575328?pwd=ZVo5aHRuWFZhTURIU05KRHA0QUh2dz09%D1%94",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "12:20": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Основи Front-end технологій",
 | 
					 | 
				
			||||||
                "teacher": "Жереб К. А.",
 | 
					 | 
				
			||||||
                "link": "https://us04web.zoom.us/j/75914252554?pwd=UfuOlnUQvBcvLZshcYxdGvWqX8wS5o.1",
 | 
					 | 
				
			||||||
                "type": "lab",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Технологія блокчейн",
 | 
					 | 
				
			||||||
                "teacher": "Яланецький Валерій Анатолійович",
 | 
					 | 
				
			||||||
                "link": "https://us02web.zoom.us/j/9728575328?pwd=ZVo5aHRuWFZhTURIU05KRHA0QUh2dz09%D1%94",
 | 
					 | 
				
			||||||
                "type": "lab",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Linux",
 | 
					 | 
				
			||||||
                "teacher": "Хмелюк Марина Сергіївна",
 | 
					 | 
				
			||||||
                "link": "(посилання відсутнє!)",
 | 
					 | 
				
			||||||
                "type": "lab",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Розробка мобільних застосувань під iOS",
 | 
					 | 
				
			||||||
                "teacher": "Храмченко Микола Сергійович",
 | 
					 | 
				
			||||||
                "link": "(посилання відсутнє!)",
 | 
					 | 
				
			||||||
                "type": "lab",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "AGILE методологія розробки програмного забезпечення (Авторський курс компаніїї SoftServe)",
 | 
					 | 
				
			||||||
                "teacher": "Шевело Олексій Павлович",
 | 
					 | 
				
			||||||
                "link": "https://softserveinc.zoom.us/j/5653825777",
 | 
					 | 
				
			||||||
                "type": "lab",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "18:30": {
 | 
					 | 
				
			||||||
            "name": "Технології Computer Vision",
 | 
					 | 
				
			||||||
            "teacher": "Писарчук О О",
 | 
					 | 
				
			||||||
            "link": "https://us04web.zoom.us/j/71823185480?pwd=MDN5d1FXNXROaFNJUVhySUdSUVo5UT09",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": true,
 | 
					 | 
				
			||||||
            "nolink": false
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "8:30": {
 | 
					 | 
				
			||||||
            "name": "Архітектура комп'ютерів. Частина 2. Процесори",
 | 
					 | 
				
			||||||
            "teacher": "Каплунов Артем Володимирович",
 | 
					 | 
				
			||||||
            "link": "(посиланя відсутнє!)",
 | 
					 | 
				
			||||||
            "type": "lab",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "nolink": true
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "10:25": {
 | 
					 | 
				
			||||||
            "name": "Паралельне програмування",
 | 
					 | 
				
			||||||
            "teacher": "Корочкін Олександр Володимирович",
 | 
					 | 
				
			||||||
            "link": "https://bbb.comsys.kpi.ua/rooms/vvf-akd-9bh-uwu/join",
 | 
					 | 
				
			||||||
            "type": "lab",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "nolink": false,
 | 
					 | 
				
			||||||
            "comment": "<a href=\"https://us02web.zoom.us/j/86949818084?pwd=id4SIsb62CKsvkbITjShLYecbX1QSX.1\">додаткове посилання (Zoom)</a>"
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "12:20": {
 | 
					 | 
				
			||||||
            "name": "Практичний курс іноземної мови професійного спрямування. Частина 1",
 | 
					 | 
				
			||||||
            "teacher": "Шевченко Ольга Миколаївна",
 | 
					 | 
				
			||||||
            "link": "https://meet.google.com/gqm-pxso-tzm",
 | 
					 | 
				
			||||||
            "type": "prac",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "nolink": false
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "8:30": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Мова програмування Java",
 | 
					 | 
				
			||||||
                "teacher": "Орленко С. П.",
 | 
					 | 
				
			||||||
                "link": "(посилання відсутнє!)",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Розробка програмного забезпечення на платформі Node.JS",
 | 
					 | 
				
			||||||
                "teacher": "Нечай Дмитро Олександрович",
 | 
					 | 
				
			||||||
                "link": "https://meet.google.com/hpu-mggd-jju",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Системне програмування С і С++",
 | 
					 | 
				
			||||||
                "teacher": "Ковальов Микола Олександрович",
 | 
					 | 
				
			||||||
                "link": "https://meet.google.com/wnu-xhbz-amc",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Сучасні технології розробки WEB-застосувань мовою програмування PHP",
 | 
					 | 
				
			||||||
                "teacher": "Ковтунець Олесь Володимирович",
 | 
					 | 
				
			||||||
                "link": "https://us02web.zoom.us/j/82665901429?pwd=JQFAiXokPcOCYarGFkVJmAHOXRbO7d.1",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Сучасні технології розробки WEB-застосувань на платформі Java",
 | 
					 | 
				
			||||||
                "teacher": "Іванова Любов Миколаївна",
 | 
					 | 
				
			||||||
                "link": "(посилання відсутнє!)",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Технології програмування на С/Embedded (Сертифікатна програма)",
 | 
					 | 
				
			||||||
                "teacher": "Каплунов Артем Володимирович",
 | 
					 | 
				
			||||||
                "link": "https://bbb.comsys.kpi.ua/b/art-1k1-ww6-l8x",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "10:25": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Сучасні технології розробки WEB-застосувань на платформі Microsoft.NET",
 | 
					 | 
				
			||||||
                "teacher": "Крамар Юлія Михайлівна",
 | 
					 | 
				
			||||||
                "link": "(посилання відсутнє!)",
 | 
					 | 
				
			||||||
                "type": "lab",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Сучасні технології розробки WEB-застосувань на платформі Java",
 | 
					 | 
				
			||||||
                "teacher": "Іванова Любов Миколаївна",
 | 
					 | 
				
			||||||
                "link": "(посилання відсутнє!)",
 | 
					 | 
				
			||||||
                "type": "lab",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Сучасні технології розробки WEB-застосувань мовою програмування PHP",
 | 
					 | 
				
			||||||
                "teacher": "Ковтунець Олесь Володимирович",
 | 
					 | 
				
			||||||
                "link": "https://us02web.zoom.us/j/82665901429?pwd=JQFAiXokPcOCYarGFkVJmAHOXRbO7d.1",
 | 
					 | 
				
			||||||
                "type": "lab",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "12:20": {
 | 
					 | 
				
			||||||
            "name": "Розробка програмного забезпечення на платформі Node.JS",
 | 
					 | 
				
			||||||
            "teacher": "Нечай Дмитро Олександрович",
 | 
					 | 
				
			||||||
            "link": "https://meet.google.com/hpu-mggd-jju",
 | 
					 | 
				
			||||||
            "type": "lab",
 | 
					 | 
				
			||||||
            "selectable": true,
 | 
					 | 
				
			||||||
            "nolink": false
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "18:30": {
 | 
					 | 
				
			||||||
            "name": "Сучасні технології розробки WEB-застосувань на платформі Microsoft.NET",
 | 
					 | 
				
			||||||
            "teacher": "Крамар Юлія Михайлівна",
 | 
					 | 
				
			||||||
            "link": "https://teams.microsoft.com/l/meetup-join/19%3Ameeting_MDc2NDQzODItN2UxMS00OGZjLTgyOTktZDAyMDk1ODZlODIy%40thread.v2/0?context=%7B%22Tid%22%3A%22b41b72d0-4e9f-4c26-8a69-f949f367c91d%22%2C%22Oid%22%3A%22800fb5c4-7af0-4ee6-971b-4fbab595029e%22%7D",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": true,
 | 
					 | 
				
			||||||
            "nolink": false
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {},
 | 
					 | 
				
			||||||
    {}
 | 
					 | 
				
			||||||
]
 | 
					 | 
				
			||||||
@ -1,113 +0,0 @@
 | 
				
			|||||||
[
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "11:00": {
 | 
					 | 
				
			||||||
            "name": "Комп'ютерні мережі",
 | 
					 | 
				
			||||||
            "teacher": "Кулаков Юрій Олексійович",
 | 
					 | 
				
			||||||
            "link": "https://us02web.zoom.us/j/3650838587?pwd=6he7zSms1SIKs82FME8PubaRsNaSRi.1",
 | 
					 | 
				
			||||||
            "type": "con",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "nolink": false
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "9:00": {
 | 
					 | 
				
			||||||
            "name": "Комп'ютерні мережі",
 | 
					 | 
				
			||||||
            "teacher": "Кулаков Юрій Олексійович",
 | 
					 | 
				
			||||||
            "link": "https://us02web.zoom.us/j/3650838587?pwd=6he7zSms1SIKs82FME8PubaRsNaSRi.1",
 | 
					 | 
				
			||||||
            "type": "lab",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "nolink": false
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "11:00": {
 | 
					 | 
				
			||||||
            "name": "Системне програмне забезпечення",
 | 
					 | 
				
			||||||
            "teacher": "Сімоненко Андрій Валерійович",
 | 
					 | 
				
			||||||
            "link": "https://us05web.zoom.us/j/6091939855?pwd=S2p5aEZSQlhKanJWZURRcDR0YkZ6UT09",
 | 
					 | 
				
			||||||
            "type": "con",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "nolink": false,
 | 
					 | 
				
			||||||
            "comment": "\nZoom: 609 193 9855, пароль 112233\nАльт.1: <a href=\"https://bbb.comsys.kpi.ua/b/and-722-eja\">Big Blue Button</a>\nАльт.2: <a href=\"https://meet.google.com/qtq-hfws-aqk\">Google Meet</a>"
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "9:00": {
 | 
					 | 
				
			||||||
            "name": "Системне програмне забезпечення",
 | 
					 | 
				
			||||||
            "teacher": "Сімоненко Андрій Валерійович",
 | 
					 | 
				
			||||||
            "link": "https://us05web.zoom.us/j/6091939855?pwd=S2p5aEZSQlhKanJWZURRcDR0YkZ6UT09",
 | 
					 | 
				
			||||||
            "type": "lab",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "nolink": false,
 | 
					 | 
				
			||||||
            "comment": "\nZoom: 609 193 9855, пароль 112233\nАльт.1: <a href=\"https://bbb.comsys.kpi.ua/b/and-722-eja\">Big Blue Button</a>\nАльт.2: <a href=\"https://meet.google.com/qtq-hfws-aqk\">Google Meet</a>"
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        "10:30": {
 | 
					 | 
				
			||||||
            "name": "Системне програмне забезпечення",
 | 
					 | 
				
			||||||
            "teacher": "Сімоненко Андрій Валерійович",
 | 
					 | 
				
			||||||
            "link": "https://us05web.zoom.us/j/6091939855?pwd=S2p5aEZSQlhKanJWZURRcDR0YkZ6UT09",
 | 
					 | 
				
			||||||
            "type": "lab",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "nolink": false,
 | 
					 | 
				
			||||||
            "comment": "\nZoom: 609 193 9855, пароль 112233\nАльт.1: <a href=\"https://bbb.comsys.kpi.ua/b/and-722-eja\">Big Blue Button</a>\nАльт.2: <a href=\"https://meet.google.com/qtq-hfws-aqk\">Google Meet</a>"
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        "12:00": {
 | 
					 | 
				
			||||||
            "name": "Системне програмне забезпечення",
 | 
					 | 
				
			||||||
            "teacher": "Сімоненко Андрій Валерійович",
 | 
					 | 
				
			||||||
            "link": "https://us05web.zoom.us/j/6091939855?pwd=S2p5aEZSQlhKanJWZURRcDR0YkZ6UT09",
 | 
					 | 
				
			||||||
            "type": "lab",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "nolink": false,
 | 
					 | 
				
			||||||
            "comment": "\nZoom: 609 193 9855, пароль 112233\nАльт.1: <a href=\"https://bbb.comsys.kpi.ua/b/and-722-eja\">Big Blue Button</a>\nАльт.2: <a href=\"https://meet.google.com/qtq-hfws-aqk\">Google Meet</a>"
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        "13:30": {
 | 
					 | 
				
			||||||
            "name": "Системне програмне забезпечення",
 | 
					 | 
				
			||||||
            "teacher": "Сімоненко Андрій Валерійович",
 | 
					 | 
				
			||||||
            "link": "https://us05web.zoom.us/j/6091939855?pwd=S2p5aEZSQlhKanJWZURRcDR0YkZ6UT09",
 | 
					 | 
				
			||||||
            "type": "lab",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "nolink": false,
 | 
					 | 
				
			||||||
            "comment": "\nZoom: 609 193 9855, пароль 112233\nАльт.1: <a href=\"https://bbb.comsys.kpi.ua/b/and-722-eja\">Big Blue Button</a>\nАльт.2: <a href=\"https://meet.google.com/qtq-hfws-aqk\">Google Meet</a>"
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        "15:00": {
 | 
					 | 
				
			||||||
            "name": "Системне програмне забезпечення",
 | 
					 | 
				
			||||||
            "teacher": "Сімоненко Андрій Валерійович",
 | 
					 | 
				
			||||||
            "link": "https://us05web.zoom.us/j/6091939855?pwd=S2p5aEZSQlhKanJWZURRcDR0YkZ6UT09",
 | 
					 | 
				
			||||||
            "type": "lab",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "nolink": false,
 | 
					 | 
				
			||||||
            "comment": "\nZoom: 609 193 9855, пароль 112233\nАльт.1: <a href=\"https://bbb.comsys.kpi.ua/b/and-722-eja\">Big Blue Button</a>\nАльт.2: <a href=\"https://meet.google.com/qtq-hfws-aqk\">Google Meet</a>"
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        "16:30": {
 | 
					 | 
				
			||||||
            "name": "Системне програмне забезпечення",
 | 
					 | 
				
			||||||
            "teacher": "Сімоненко Андрій Валерійович",
 | 
					 | 
				
			||||||
            "link": "https://us05web.zoom.us/j/6091939855?pwd=S2p5aEZSQlhKanJWZURRcDR0YkZ6UT09",
 | 
					 | 
				
			||||||
            "type": "lab",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "nolink": false,
 | 
					 | 
				
			||||||
            "comment": "\nZoom: 609 193 9855, пароль 112233\nАльт.1: <a href=\"https://bbb.comsys.kpi.ua/b/and-722-eja\">Big Blue Button</a>\nАльт.2: <a href=\"https://meet.google.com/qtq-hfws-aqk\">Google Meet</a>"
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {},
 | 
					 | 
				
			||||||
    {},
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "8:30": {
 | 
					 | 
				
			||||||
            "name": "Архітектура комп'ютерів. Частина 3. Мікропроцесорні засоби",
 | 
					 | 
				
			||||||
            "teacher": "Ткаченко Валентина Василівна",
 | 
					 | 
				
			||||||
            "link": "https://bbb.comsys.kpi.ua/rooms/bfc-khu-2lk-5jr/join",
 | 
					 | 
				
			||||||
            "type": "lab",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "nolink": false
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {},
 | 
					 | 
				
			||||||
    {}
 | 
					 | 
				
			||||||
]
 | 
					 | 
				
			||||||
@ -1,625 +0,0 @@
 | 
				
			|||||||
[
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "8:30": {
 | 
					 | 
				
			||||||
            "name": "Архітектура комп'ютерів. Частина 3. Мікропроцесорні засоби",
 | 
					 | 
				
			||||||
            "teacher": "Ткаченко Валентина Василівна",
 | 
					 | 
				
			||||||
            "link": "https://bbb.comsys.kpi.ua/rooms/bfc-khu-2lk-5jr/join",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "nolink": false
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "10:25": {
 | 
					 | 
				
			||||||
            "name": "Системне програмне забезпечення",
 | 
					 | 
				
			||||||
            "teacher": "Сімоненко Андрій Валерійович",
 | 
					 | 
				
			||||||
            "link": "https://bbb.comsys.kpi.ua/b/and-722-eja",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "nolink": false,
 | 
					 | 
				
			||||||
            "comment": "\nАльт.1: <a href=\"https://meet.google.com/qtq-hfws-aqk\">Google Meet</a>\nАльт.2: <a href=\"https://us05web.zoom.us/j/6091939855?pwd=S2p5aEZSQlhKanJWZURRcDR0YkZ6UT09\">Zoom</a> (609 193 9855, пароль 112233)"
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "12:20": {
 | 
					 | 
				
			||||||
            "name": "Комп'ютерні мережі",
 | 
					 | 
				
			||||||
            "teacher": "Кулаков Юрій Олексійович",
 | 
					 | 
				
			||||||
            "link": "https://us02web.zoom.us/j/3650838587?pwd=6he7zSms1SIKs82FME8PubaRsNaSRi.1",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "nolink": false
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "14:15": {
 | 
					 | 
				
			||||||
            "name": "Комп'ютерні мережі",
 | 
					 | 
				
			||||||
            "teacher": "Кулаков Юрій Олексійович",
 | 
					 | 
				
			||||||
            "link": "https://us02web.zoom.us/j/3650838587?pwd=6he7zSms1SIKs82FME8PubaRsNaSRi.1",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "nolink": false
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "16:10": {
 | 
					 | 
				
			||||||
            "name": "Системне програмне забезпечення",
 | 
					 | 
				
			||||||
            "teacher": "Сімоненко Андрій Валерійович",
 | 
					 | 
				
			||||||
            "link": "https://us05web.zoom.us/j/6091939855?pwd=S2p5aEZSQlhKanJWZURRcDR0YkZ6UT09",
 | 
					 | 
				
			||||||
            "type": "lab",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "nolink": false,
 | 
					 | 
				
			||||||
            "comment": "\nZoom: 609 193 9855, пароль 112233\nАльт.1: <a href=\"https://bbb.comsys.kpi.ua/b/and-722-eja\">Big Blue Button</a>\nАльт.2: <a href=\"https://meet.google.com/qtq-hfws-aqk\">Google Meet</a>"
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "8:30": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Аналіз даних з використанням мови Python",
 | 
					 | 
				
			||||||
                "teacher": "Тимофєєва Юлія Сергіївна",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Мультипарадигменне програмування",
 | 
					 | 
				
			||||||
                "teacher": "Баклан Ігор Всеволодович",
 | 
					 | 
				
			||||||
                "link": "https://us02web.zoom.us/j/89628393166?pwd=culVuydQG2rrZBZ2EydFIAYJTSbYut.1",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Основи Back-end технологій",
 | 
					 | 
				
			||||||
                "teacher": "Голубєв Леонтій Петрович",
 | 
					 | 
				
			||||||
                "link": "https://us04web.zoom.us/j/3844029757?pwd=aURtZm0zRTFTVFM3UzNCWlhHZTVUdz09",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Розробка мобільних застосувань під Android",
 | 
					 | 
				
			||||||
                "teacher": "Орленко Сергій Петрович",
 | 
					 | 
				
			||||||
                "link": "https://zoom.us/j/3331875592?pwd=bXFWMTVnR1hLOGVjb1lYTDRiMUlxUT09",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Системне мислення",
 | 
					 | 
				
			||||||
                "teacher": "Головатенко Ілля Анатолійович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Сучасні технології розробки та управління життєвим циклом ПЗ",
 | 
					 | 
				
			||||||
                "teacher": "Губський Андрій .",
 | 
					 | 
				
			||||||
                "link": "https://us04web.zoom.us/j/71473232130?pwd=AhaHUr1CvI4bRcHWcVOxFT6AQMO5yX.1",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Технології програмування на ПЛІС (FPGA) (Сертифікатна програма)",
 | 
					 | 
				
			||||||
                "teacher": "Гайдай . .",
 | 
					 | 
				
			||||||
                "link": "https://bbb.comsys.kpi.ua/rooms/iry-plu-lpe-z7l/join",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        "10:25": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "DevOps: cтратегії розгортання програмного забезпечення",
 | 
					 | 
				
			||||||
                "teacher": "Волокита Артем Миколайович",
 | 
					 | 
				
			||||||
                "link": "https://bbb.comsys.kpi.ua/rooms/wj4-9xj-3wr-gaw/join",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false,
 | 
					 | 
				
			||||||
                "comment": "Пароль: bb7md2"
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "WEB – орієнтовані технології. Основи Frontend та Backend розробок",
 | 
					 | 
				
			||||||
                "teacher": "Проскура Світлана Леонідівна",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Робота з даними в хмарних середовищах",
 | 
					 | 
				
			||||||
                "teacher": "Ахаладзе Антон Елдарійович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Розподілені інформаційні системи",
 | 
					 | 
				
			||||||
                "teacher": "Болдак Андрій Олександрович",
 | 
					 | 
				
			||||||
                "link": "https://us04web.zoom.us/j/5439063374?pwd=VG1iODU0WmpCNTlCVXJJTitYU2Nmdz09",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Сучасні операційні системи",
 | 
					 | 
				
			||||||
                "teacher": "Ковтунець Олесь Володимирович",
 | 
					 | 
				
			||||||
                "link": "https://meet.google.com/tuh-yhsq-vth",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false,
 | 
					 | 
				
			||||||
                "comment": "\nАльт.1: <a href=\"https://us02web.zoom.us/j/5249202812?pwd=ci96MGpqNG1yU3B2aXdMbzcrWU1ndz09\">Zoom</a> (524 920 2812, пароль 447412)"
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Штучний інтелект в задачах обробки зображень",
 | 
					 | 
				
			||||||
                "teacher": "Онищенко В В",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "12:20": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "DevOps: cтратегії розгортання програмного забезпечення",
 | 
					 | 
				
			||||||
                "teacher": "Обозний Дмитро Миколайович",
 | 
					 | 
				
			||||||
                "link": "https://bbb.comsys.kpi.ua/rooms/ntt-l74-s80-qb2/join",
 | 
					 | 
				
			||||||
                "type": "lab",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Сучасні операційні системи",
 | 
					 | 
				
			||||||
                "teacher": "Бабич Богдан Борисович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lab",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "14:15": {
 | 
					 | 
				
			||||||
            "name": "Розподілені інформаційні системи",
 | 
					 | 
				
			||||||
            "teacher": "Болдак Андрій Олександрович",
 | 
					 | 
				
			||||||
            "link": "https://us04web.zoom.us/j/5439063374?pwd=VG1iODU0WmpCNTlCVXJJTitYU2Nmdz09",
 | 
					 | 
				
			||||||
            "type": "lab",
 | 
					 | 
				
			||||||
            "selectable": true,
 | 
					 | 
				
			||||||
            "nolink": false
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "16:10": {
 | 
					 | 
				
			||||||
            "name": "Технології програмування на ПЛІС (FPGA) (Сертифікатна програма)",
 | 
					 | 
				
			||||||
            "teacher": "Гайдай . .",
 | 
					 | 
				
			||||||
            "link": "https://bbb.comsys.kpi.ua/rooms/iry-plu-lpe-z7l/join",
 | 
					 | 
				
			||||||
            "type": "lab",
 | 
					 | 
				
			||||||
            "selectable": true,
 | 
					 | 
				
			||||||
            "nolink": false
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "8:30": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Комп’ютерна графіка та мультимедіа",
 | 
					 | 
				
			||||||
                "teacher": "Родіонов Павло Юрійович",
 | 
					 | 
				
			||||||
                "link": "https://meet.google.com/xga-ozed-ujt",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Обробка та аналіз текстових даних на Python",
 | 
					 | 
				
			||||||
                "teacher": "Тимофєєва Юлія Сергіївна",
 | 
					 | 
				
			||||||
                "link": "https://us02web.zoom.us/j/9470737287?pwd=endFbkJ6d0Izb1Z6K0Y1R1VQL1poUT09",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Сучасні технології розробки WEB-застосувань з використанням мови Python",
 | 
					 | 
				
			||||||
                "teacher": "Барбарук Віктор Михайлович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Управління IT-інфраструктурними проектами (Сертифікатна програма, авторський курс компанії Global Logic)",
 | 
					 | 
				
			||||||
                "teacher": "Міщенко Людмила Дмитрівна",
 | 
					 | 
				
			||||||
                "link": "https://bbb.comsys.kpi.ua/rooms/iry-9si-id4-qid/join",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "10:25": {
 | 
					 | 
				
			||||||
            "name": "Управління IT-інфраструктурними проектами (Сертифікатна програма, авторський курс компанії Global Logic)",
 | 
					 | 
				
			||||||
            "teacher": "Міщенко Людмила Дмитрівна",
 | 
					 | 
				
			||||||
            "link": "https://bbb.comsys.kpi.ua/rooms/iry-9si-id4-qid/join",
 | 
					 | 
				
			||||||
            "type": "lab",
 | 
					 | 
				
			||||||
            "selectable": true,
 | 
					 | 
				
			||||||
            "nolink": false
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "14:15": {
 | 
					 | 
				
			||||||
            "name": "Практичний курс іноземної мови професійного спрямування. Частина 1",
 | 
					 | 
				
			||||||
            "teacher": "Шевченко Ольга Миколаївна",
 | 
					 | 
				
			||||||
            "link": "https://meet.google.com/gqm-pxso-tzm",
 | 
					 | 
				
			||||||
            "type": "prac",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "nolink": false
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "18:00": {
 | 
					 | 
				
			||||||
            "name": "Системне програмне забезпечення",
 | 
					 | 
				
			||||||
            "teacher": "Сімоненко Андрій Валерійович",
 | 
					 | 
				
			||||||
            "link": "https://us05web.zoom.us/j/6091939855?pwd=S2p5aEZSQlhKanJWZURRcDR0YkZ6UT09",
 | 
					 | 
				
			||||||
            "type": "con",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "nolink": false,
 | 
					 | 
				
			||||||
            "comment": "\nZoom: 609 193 9855, пароль 112233\nАльт.1: <a href=\"https://bbb.comsys.kpi.ua/b/and-722-eja\">Big Blue Button</a>\nАльт.2: <a href=\"https://meet.google.com/qtq-hfws-aqk\">Google Meet</a>"
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "16:10": {
 | 
					 | 
				
			||||||
            "name": "Криміналістика в програмно-орієнтованих системах",
 | 
					 | 
				
			||||||
            "teacher": "Бойко О. В.",
 | 
					 | 
				
			||||||
            "link": "https://us02web.zoom.us/j/5725059495?pwd=SHAzL1kwTmcyYm1PdkdzNVNLNUZ6dz09",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": true,
 | 
					 | 
				
			||||||
            "nolink": false
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {},
 | 
					 | 
				
			||||||
    {},
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "8:30": {
 | 
					 | 
				
			||||||
            "name": "Архітектура комп'ютерів. Частина 3. Мікропроцесорні засоби",
 | 
					 | 
				
			||||||
            "teacher": "Ткаченко Валентина Василівна",
 | 
					 | 
				
			||||||
            "link": "https://bbb.comsys.kpi.ua/rooms/bfc-khu-2lk-5jr/join",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "nolink": false
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "10:25": {
 | 
					 | 
				
			||||||
            "name": "Системне програмне забезпечення",
 | 
					 | 
				
			||||||
            "teacher": "Сімоненко Андрій Валерійович",
 | 
					 | 
				
			||||||
            "link": "https://bbb.comsys.kpi.ua/b/and-722-eja",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "nolink": false,
 | 
					 | 
				
			||||||
            "comment": "\nАльт.1: <a href=\"https://meet.google.com/qtq-hfws-aqk\">Google Meet</a>\nАльт.2: <a href=\"https://us05web.zoom.us/j/6091939855?pwd=S2p5aEZSQlhKanJWZURRcDR0YkZ6UT09\">Zoom</a> (609 193 9855, пароль 112233)"
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "12:20": {
 | 
					 | 
				
			||||||
            "name": "Комп'ютерні мережі",
 | 
					 | 
				
			||||||
            "teacher": "Кулаков Юрій Олексійович",
 | 
					 | 
				
			||||||
            "link": "https://us02web.zoom.us/j/3650838587?pwd=6he7zSms1SIKs82FME8PubaRsNaSRi.1",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "nolink": false
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "14:15": {
 | 
					 | 
				
			||||||
            "name": "Архітектура комп'ютерів. Частина 3. Мікропроцесорні засоби",
 | 
					 | 
				
			||||||
            "teacher": "Гайдай . .",
 | 
					 | 
				
			||||||
            "link": "",
 | 
					 | 
				
			||||||
            "type": "lab",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "nolink": true
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "16:10": {
 | 
					 | 
				
			||||||
            "name": "Комп'ютерні мережі",
 | 
					 | 
				
			||||||
            "teacher": "Алєнін О. І.",
 | 
					 | 
				
			||||||
            "link": "https://us04web.zoom.us/j/4122071690?pwd=ijlo0oGNkM10MtGluijxxeleAa9KJO.1",
 | 
					 | 
				
			||||||
            "type": "lab",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "nolink": false,
 | 
					 | 
				
			||||||
            "comment": "Zoom Meeting ID 412 207 1690, Passcode labs2025"
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "8:30": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Аналіз даних з використанням мови Python",
 | 
					 | 
				
			||||||
                "teacher": "Тимофєєва Юлія Сергіївна",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Мультипарадигменне програмування",
 | 
					 | 
				
			||||||
                "teacher": "Баклан Ігор Всеволодович",
 | 
					 | 
				
			||||||
                "link": "https://us02web.zoom.us/j/89628393166?pwd=culVuydQG2rrZBZ2EydFIAYJTSbYut.1",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Основи Back-end технологій",
 | 
					 | 
				
			||||||
                "teacher": "Голубєв Леонтій Петрович",
 | 
					 | 
				
			||||||
                "link": "https://us04web.zoom.us/j/3844029757?pwd=aURtZm0zRTFTVFM3UzNCWlhHZTVUdz09",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Розробка мобільних застосувань під Android",
 | 
					 | 
				
			||||||
                "teacher": "Орленко Сергій Петрович",
 | 
					 | 
				
			||||||
                "link": "https://zoom.us/j/3331875592?pwd=bXFWMTVnR1hLOGVjb1lYTDRiMUlxUT09",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Системне мислення",
 | 
					 | 
				
			||||||
                "teacher": "Головатенко Ілля Анатолійович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Сучасні технології розробки та управління життєвим циклом ПЗ",
 | 
					 | 
				
			||||||
                "teacher": "Губський Андрій .",
 | 
					 | 
				
			||||||
                "link": "https://us04web.zoom.us/j/71473232130?pwd=AhaHUr1CvI4bRcHWcVOxFT6AQMO5yX.1",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Технології програмування на ПЛІС (FPGA) (Сертифікатна програма)",
 | 
					 | 
				
			||||||
                "teacher": "Гайдай . .",
 | 
					 | 
				
			||||||
                "link": "https://bbb.comsys.kpi.ua/rooms/iry-plu-lpe-z7l/join",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "10:25": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "DevOps: cтратегії розгортання програмного забезпечення",
 | 
					 | 
				
			||||||
                "teacher": "Волокита Артем Миколайович",
 | 
					 | 
				
			||||||
                "link": "https://bbb.comsys.kpi.ua/rooms/wj4-9xj-3wr-gaw/join",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false,
 | 
					 | 
				
			||||||
                "comment": "Пароль: bb7md2"
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "WEB – орієнтовані технології. Основи Frontend та Backend розробок",
 | 
					 | 
				
			||||||
                "teacher": "Проскура Світлана Леонідівна",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Робота з даними в хмарних середовищах",
 | 
					 | 
				
			||||||
                "teacher": "Ахаладзе Антон Елдарійович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Розподілені інформаційні системи",
 | 
					 | 
				
			||||||
                "teacher": "Болдак Андрій Олександрович",
 | 
					 | 
				
			||||||
                "link": "https://us04web.zoom.us/j/5439063374?pwd=VG1iODU0WmpCNTlCVXJJTitYU2Nmdz09",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Сучасні операційні системи",
 | 
					 | 
				
			||||||
                "teacher": "Ковтунець Олесь Володимирович",
 | 
					 | 
				
			||||||
                "link": "https://meet.google.com/tuh-yhsq-vth",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false,
 | 
					 | 
				
			||||||
                "comment": "\nАльт.1: <a href=\"https://us02web.zoom.us/j/5249202812?pwd=ci96MGpqNG1yU3B2aXdMbzcrWU1ndz09\">Zoom</a> (524 920 2812, пароль 447412)"
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Штучний інтелект в задачах обробки зображень",
 | 
					 | 
				
			||||||
                "teacher": "Онищенко В В",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "12:20": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "WEB – орієнтовані технології. Основи Frontend та Backend розробок",
 | 
					 | 
				
			||||||
                "teacher": "Проскура Світлана Леонідівна",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lab",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Штучний інтелект в задачах обробки зображень",
 | 
					 | 
				
			||||||
                "teacher": "Нікітін Валерій Андрійович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lab",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "14:15": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Аналіз даних з використанням мови Python",
 | 
					 | 
				
			||||||
                "teacher": "Тимофєєва Юлія Сергіївна",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lab",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Мультипарадигменне програмування",
 | 
					 | 
				
			||||||
                "teacher": "Очеретяний Олександр Костянтинович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lab",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Сучасні технології розробки та управління життєвим циклом ПЗ",
 | 
					 | 
				
			||||||
                "teacher": "Губський Андрій .",
 | 
					 | 
				
			||||||
                "link": "https://us04web.zoom.us/j/71473232130?pwd=AhaHUr1CvI4bRcHWcVOxFT6AQMO5yX.1",
 | 
					 | 
				
			||||||
                "type": "lab",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Основи Back-end технологій",
 | 
					 | 
				
			||||||
                "teacher": "Зубко Роман Анатолійович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lab",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Системне мислення",
 | 
					 | 
				
			||||||
                "teacher": "Головатенко Ілля Анатолійович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lab",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Розробка мобільних застосувань під Android",
 | 
					 | 
				
			||||||
                "teacher": "Орленко Сергій Петрович",
 | 
					 | 
				
			||||||
                "link": "https://zoom.us/j/3331875592?pwd=bXFWMTVnR1hLOGVjb1lYTDRiMUlxUT09",
 | 
					 | 
				
			||||||
                "type": "lab",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ]
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "8:30": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Комп’ютерна графіка та мультимедіа",
 | 
					 | 
				
			||||||
                "teacher": "Родіонов Павло Юрійович",
 | 
					 | 
				
			||||||
                "link": "https://meet.google.com/xga-ozed-ujt",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Обробка та аналіз текстових даних на Python",
 | 
					 | 
				
			||||||
                "teacher": "Тимофєєва Юлія Сергіївна",
 | 
					 | 
				
			||||||
                "link": "https://us02web.zoom.us/j/9470737287?pwd=endFbkJ6d0Izb1Z6K0Y1R1VQL1poUT09",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Сучасні технології розробки WEB-застосувань з використанням мови Python",
 | 
					 | 
				
			||||||
                "teacher": "Барбарук Віктор Михайлович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Управління IT-інфраструктурними проектами (Сертифікатна програма, авторський курс компанії Global Logic)",
 | 
					 | 
				
			||||||
                "teacher": "Міщенко Людмила Дмитрівна",
 | 
					 | 
				
			||||||
                "link": "https://bbb.comsys.kpi.ua/rooms/iry-9si-id4-qid/join",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "10:25": {
 | 
					 | 
				
			||||||
            "name": "Сучасні технології розробки WEB-застосувань з використанням мови Python",
 | 
					 | 
				
			||||||
            "teacher": "Барбарук Віктор Михайлович",
 | 
					 | 
				
			||||||
            "link": "",
 | 
					 | 
				
			||||||
            "type": "lab",
 | 
					 | 
				
			||||||
            "selectable": true,
 | 
					 | 
				
			||||||
            "nolink": true
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "12:20": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Обробка та аналіз текстових даних на Python",
 | 
					 | 
				
			||||||
                "teacher": "Тимофєєва Юлія Сергіївна",
 | 
					 | 
				
			||||||
                "link": "https://us02web.zoom.us/j/9470737287?pwd=endFbkJ6d0Izb1Z6K0Y1R1VQL1poUT09",
 | 
					 | 
				
			||||||
                "type": "lab",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Комп’ютерна графіка та мультимедіа",
 | 
					 | 
				
			||||||
                "teacher": "Родіонов Павло Юрійович",
 | 
					 | 
				
			||||||
                "link": "https://meet.google.com/xga-ozed-ujt",
 | 
					 | 
				
			||||||
                "type": "lab",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "14:15": {
 | 
					 | 
				
			||||||
            "name": "Практичний курс іноземної мови професійного спрямування. Частина 1",
 | 
					 | 
				
			||||||
            "teacher": "Шевченко Ольга Миколаївна",
 | 
					 | 
				
			||||||
            "link": "https://meet.google.com/gqm-pxso-tzm",
 | 
					 | 
				
			||||||
            "type": "prac",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "nolink": false
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        "18:00": {
 | 
					 | 
				
			||||||
            "name": "Системне програмне забезпечення",
 | 
					 | 
				
			||||||
            "teacher": "Сімоненко Андрій Валерійович",
 | 
					 | 
				
			||||||
            "link": "https://us05web.zoom.us/j/6091939855?pwd=S2p5aEZSQlhKanJWZURRcDR0YkZ6UT09",
 | 
					 | 
				
			||||||
            "type": "con",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "nolink": false,
 | 
					 | 
				
			||||||
            "comment": "\nZoom: 609 193 9855, пароль 112233\nАльт.1: <a href=\"https://bbb.comsys.kpi.ua/b/and-722-eja\">Big Blue Button</a>\nАльт.2: <a href=\"https://meet.google.com/qtq-hfws-aqk\">Google Meet</a>"
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "12:20": {
 | 
					 | 
				
			||||||
            "name": "Криміналістика в програмно-орієнтованих системах",
 | 
					 | 
				
			||||||
            "teacher": "Бойко О. В.",
 | 
					 | 
				
			||||||
            "link": "https://us02web.zoom.us/j/5725059495?pwd=SHAzL1kwTmcyYm1PdkdzNVNLNUZ6dz09",
 | 
					 | 
				
			||||||
            "type": "lab",
 | 
					 | 
				
			||||||
            "selectable": true,
 | 
					 | 
				
			||||||
            "nolink": false
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        "16:10": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Криміналістика в програмно-орієнтованих системах",
 | 
					 | 
				
			||||||
                "teacher": "Бойко О. В.",
 | 
					 | 
				
			||||||
                "link": "https://us02web.zoom.us/j/5725059495?pwd=SHAzL1kwTmcyYm1PdkdzNVNLNUZ6dz09",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Архітектура комп'ютерів. Частина 3. Мікропроцесорні засоби",
 | 
					 | 
				
			||||||
                "teacher": "Кондратенко Д. Ю.",
 | 
					 | 
				
			||||||
                "link": "https://bbb.comsys.kpi.ua/rooms/bfc-khu-2lk-5jr/join",
 | 
					 | 
				
			||||||
                "type": "prac",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ]
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {},
 | 
					 | 
				
			||||||
    {}
 | 
					 | 
				
			||||||
]
 | 
					 | 
				
			||||||
@ -1,664 +0,0 @@
 | 
				
			|||||||
[
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "8:30": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Інженерна комп'ютерна графіка",
 | 
					 | 
				
			||||||
                "teacher": "Поліщук Михайло Миколайович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Основи WEB – технологій",
 | 
					 | 
				
			||||||
                "teacher": "Голубєв Леонтій Петрович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Основи комп’ютерного моделювання",
 | 
					 | 
				
			||||||
                "teacher": "Селіванов Віктор Левович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Системи управління мережами",
 | 
					 | 
				
			||||||
                "teacher": "Жураковський Богдан Юрійович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Системи цифрової обробки сигналів і зображень",
 | 
					 | 
				
			||||||
                "teacher": "Сергієнко Анатолій Михайлович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Створення інформаційних систем (ІС) на базі Low-code платформ",
 | 
					 | 
				
			||||||
                "teacher": "Новінський Валерій Петрович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Тестування та контроль якості (QA) вбудованих систем (Сертифікатна програма ESI&IoT з компанією Global Logic)",
 | 
					 | 
				
			||||||
                "teacher": "Клименко Ірина Анатоліївна",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
        "10:25": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Менеджмент в продуктовому ІТ",
 | 
					 | 
				
			||||||
                "teacher": "Марченко Олена Іванівна",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Методи та інструменти продуктової аналітики (авторський курс компанії Genesis)",
 | 
					 | 
				
			||||||
                "teacher": "Жураковська Оксана Сергіївна",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Методи та інструменти продуктової аналітики (авторський курс компанії Genesis)",
 | 
					 | 
				
			||||||
                "teacher": "Гавриленко Олена Валеріївна",
 | 
					 | 
				
			||||||
                "link": "https://us02web.zoom.us/j/78265010473?pwd=GIpJrrNyyCQ2IqsVi2dezWM0cGacIh.1",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Методи чисельної оптимізації",
 | 
					 | 
				
			||||||
                "teacher": "Кочура Юрій Петрович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Проектування мікропроцесорних систем на базі Arduino та Raspberry PI",
 | 
					 | 
				
			||||||
                "teacher": "Голубєв Леонтій Петрович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Розробка програмного забезпечення. Проєктний та програмний менеджмент",
 | 
					 | 
				
			||||||
                "teacher": "Селіванов Віктор Левович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
        "12:20": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Аналіз та обробка часових рядів (Time Series) (Сертифікатна програма Data Science із Sigma Software)",
 | 
					 | 
				
			||||||
                "teacher": "Писарчук Олексій Олександрович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Кібербезпека комп'ютерних мереж",
 | 
					 | 
				
			||||||
                "teacher": "Миронов Дмитро Вікторович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Проектування вбудованих систем",
 | 
					 | 
				
			||||||
                "teacher": "Гордієнко Нікіта Юрійович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Протоколи і алгоритми електронного голосування",
 | 
					 | 
				
			||||||
                "teacher": "Полторак Вадим Петрович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Розроблення VR/AR застосунків",
 | 
					 | 
				
			||||||
                "teacher": "Амонс Олександр Анатолійович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Технології інтернет речей",
 | 
					 | 
				
			||||||
                "teacher": "Жураковський Богдан Юрійович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ]
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "8:30": {
 | 
					 | 
				
			||||||
            "name": "Комп'ютерні системи",
 | 
					 | 
				
			||||||
            "teacher": "Русанова Ольга Веніаминівна",
 | 
					 | 
				
			||||||
            "link": "",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "nolink": true
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        "10:25": {
 | 
					 | 
				
			||||||
            "name": "Комп'ютерні системи",
 | 
					 | 
				
			||||||
            "teacher": "Русанова Ольга Веніаминівна",
 | 
					 | 
				
			||||||
            "link": "",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "nolink": true
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        "12:20": {
 | 
					 | 
				
			||||||
            "name": "Економіка і організація виробництва",
 | 
					 | 
				
			||||||
            "teacher": "Семенченко Наталія Віталіївна",
 | 
					 | 
				
			||||||
            "link": "",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "nolink": true
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        "14:15": {
 | 
					 | 
				
			||||||
            "name": "БЖД та цивільний захист",
 | 
					 | 
				
			||||||
            "teacher": "Праховнік Наталія Артурівна",
 | 
					 | 
				
			||||||
            "link": "https://us04web.zoom.us/j/76287180346?pwd=GF5kv1VfxpUZa16fonXAvMW5H1qAqE.1",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "nolink": false
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        "18:30": {
 | 
					 | 
				
			||||||
            "name": "Практичний курс іноземної мови професійного спрямування. Частина 2",
 | 
					 | 
				
			||||||
            "teacher": "Срібна Олеся Валеріївна",
 | 
					 | 
				
			||||||
            "link": "",
 | 
					 | 
				
			||||||
            "type": "prac",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "nolink": true
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "8:30": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Аналіз та обробка часових рядів (Time Series) (Сертифікатна програма Data Science із Sigma Software)",
 | 
					 | 
				
			||||||
                "teacher": "Туганських Олександр Антонович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lab",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Кібербезпека комп'ютерних мереж",
 | 
					 | 
				
			||||||
                "teacher": "Зенів Ірина Онуфріївна",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lab",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Розроблення VR/AR застосунків",
 | 
					 | 
				
			||||||
                "teacher": "Амонс Олександр Анатолійович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lab",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
        "10:25": {
 | 
					 | 
				
			||||||
            "name": "Технології інтернет речей",
 | 
					 | 
				
			||||||
            "teacher": "Омельченко Віталій Вікторович",
 | 
					 | 
				
			||||||
            "link": "",
 | 
					 | 
				
			||||||
            "type": "lab",
 | 
					 | 
				
			||||||
            "selectable": true,
 | 
					 | 
				
			||||||
            "nolink": true
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        "12:20": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Менеджмент в продуктовому ІТ",
 | 
					 | 
				
			||||||
                "teacher": "Марченко Олена Іванівна",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lab",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Методи та інструменти продуктової аналітики (авторський курс компанії Genesis)",
 | 
					 | 
				
			||||||
                "teacher": "Мягкий Михайло Юрійович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lab",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Розробка програмного забезпечення. Проєктний та програмний менеджмент",
 | 
					 | 
				
			||||||
                "teacher": "Дремов Артем Кирилович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lab",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
        "16:10": {
 | 
					 | 
				
			||||||
            "name": "Проектування мікропроцесорних систем на базі Arduino та Raspberry PI",
 | 
					 | 
				
			||||||
            "teacher": "Голубєв Леонтій Петрович",
 | 
					 | 
				
			||||||
            "link": "",
 | 
					 | 
				
			||||||
            "type": "lab",
 | 
					 | 
				
			||||||
            "selectable": true,
 | 
					 | 
				
			||||||
            "nolink": true
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "8:30": {
 | 
					 | 
				
			||||||
            "name": "БЖД та цивільний захист",
 | 
					 | 
				
			||||||
            "teacher": "Праховнік Наталія Артурівна",
 | 
					 | 
				
			||||||
            "link": "https://us04web.zoom.us/j/76287180346?pwd=GF5kv1VfxpUZa16fonXAvMW5H1qAqE.1",
 | 
					 | 
				
			||||||
            "type": "prac",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "nolink": false
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        "10:25": {
 | 
					 | 
				
			||||||
            "name": "Комп'ютерні системи",
 | 
					 | 
				
			||||||
            "teacher": "Гончаренко Олександр Олексійович",
 | 
					 | 
				
			||||||
            "link": "",
 | 
					 | 
				
			||||||
            "type": "lab",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "nolink": true
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        "12:20": {
 | 
					 | 
				
			||||||
            "name": "Програмні засоби проектування та реалізації нейромережевих систем",
 | 
					 | 
				
			||||||
            "teacher": "Фещенко Кирило Юрійович",
 | 
					 | 
				
			||||||
            "link": "",
 | 
					 | 
				
			||||||
            "type": "lab",
 | 
					 | 
				
			||||||
            "selectable": true,
 | 
					 | 
				
			||||||
            "nolink": true
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        "14:15": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Мобільні комп'ютерні мережі",
 | 
					 | 
				
			||||||
                "teacher": "Кулаков Юрій Олексійович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Програмні засоби проектування та реалізації нейромережевих систем",
 | 
					 | 
				
			||||||
                "teacher": "Шимкович Володимир Миколайович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ]
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {},
 | 
					 | 
				
			||||||
    {},
 | 
					 | 
				
			||||||
    {},
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "8:30": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Інженерна комп'ютерна графіка",
 | 
					 | 
				
			||||||
                "teacher": "Поліщук Михайло Миколайович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Основи WEB – технологій",
 | 
					 | 
				
			||||||
                "teacher": "Голубєв Леонтій Петрович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Основи комп’ютерного моделювання",
 | 
					 | 
				
			||||||
                "teacher": "Селіванов Віктор Левович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Системи управління мережами",
 | 
					 | 
				
			||||||
                "teacher": "Жураковський Богдан Юрійович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Системи цифрової обробки сигналів і зображень",
 | 
					 | 
				
			||||||
                "teacher": "Сергієнко Анатолій Михайлович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Створення інформаційних систем (ІС) на базі Low-code платформ",
 | 
					 | 
				
			||||||
                "teacher": "Новінський Валерій Петрович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Тестування та контроль якості (QA) вбудованих систем (Сертифікатна програма ESI&IoT з компанією Global Logic)",
 | 
					 | 
				
			||||||
                "teacher": "Клименко Ірина Анатоліївна",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
        "10:25": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Менеджмент в продуктовому ІТ",
 | 
					 | 
				
			||||||
                "teacher": "Марченко Олена Іванівна",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Методи та інструменти продуктової аналітики (авторський курс компанії Genesis)",
 | 
					 | 
				
			||||||
                "teacher": "Жураковська Оксана Сергіївна",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Методи та інструменти продуктової аналітики (авторський курс компанії Genesis)",
 | 
					 | 
				
			||||||
                "teacher": "Гавриленко Олена Валеріївна",
 | 
					 | 
				
			||||||
                "link": "https://us02web.zoom.us/j/78265010473?pwd=GIpJrrNyyCQ2IqsVi2dezWM0cGacIh.1",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": false
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Методи чисельної оптимізації",
 | 
					 | 
				
			||||||
                "teacher": "Кочура Юрій Петрович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Проектування мікропроцесорних систем на базі Arduino та Raspberry PI",
 | 
					 | 
				
			||||||
                "teacher": "Голубєв Леонтій Петрович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Розробка програмного забезпечення. Проєктний та програмний менеджмент",
 | 
					 | 
				
			||||||
                "teacher": "Селіванов Віктор Левович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
        "12:20": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Аналіз та обробка часових рядів (Time Series) (Сертифікатна програма Data Science із Sigma Software)",
 | 
					 | 
				
			||||||
                "teacher": "Писарчук Олексій Олександрович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Кібербезпека комп'ютерних мереж",
 | 
					 | 
				
			||||||
                "teacher": "Миронов Дмитро Вікторович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Проектування вбудованих систем",
 | 
					 | 
				
			||||||
                "teacher": "Гордієнко Нікіта Юрійович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Протоколи і алгоритми електронного голосування",
 | 
					 | 
				
			||||||
                "teacher": "Полторак Вадим Петрович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Розроблення VR/AR застосунків",
 | 
					 | 
				
			||||||
                "teacher": "Амонс Олександр Анатолійович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Технології інтернет речей",
 | 
					 | 
				
			||||||
                "teacher": "Жураковський Богдан Юрійович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
        "14:15": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Інженерна комп'ютерна графіка (*)",
 | 
					 | 
				
			||||||
                "teacher": "Поліщук Михайло Миколайович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Основи WEB – технологій (*)",
 | 
					 | 
				
			||||||
                "teacher": "Голубєв Леонтій Петрович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Системи управління мережами (*)",
 | 
					 | 
				
			||||||
                "teacher": "Жураковський Богдан Юрійович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ]
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "8:30": {
 | 
					 | 
				
			||||||
            "name": "Мобільні комп'ютерні мережі",
 | 
					 | 
				
			||||||
            "teacher": "Алєнін Олег Ігорович",
 | 
					 | 
				
			||||||
            "link": "",
 | 
					 | 
				
			||||||
            "type": "lab",
 | 
					 | 
				
			||||||
            "selectable": true,
 | 
					 | 
				
			||||||
            "nolink": true
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        "10:25": {
 | 
					 | 
				
			||||||
            "name": "Комп'ютерні системи",
 | 
					 | 
				
			||||||
            "teacher": "Русанова Ольга Веніаминівна",
 | 
					 | 
				
			||||||
            "link": "",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "nolink": true
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        "12:20": {
 | 
					 | 
				
			||||||
            "name": "Економіка і організація виробництва",
 | 
					 | 
				
			||||||
            "teacher": "Семенченко Наталія Віталіївна",
 | 
					 | 
				
			||||||
            "link": "",
 | 
					 | 
				
			||||||
            "type": "lec",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "nolink": true
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        "18:30": {
 | 
					 | 
				
			||||||
            "name": "Практичний курс іноземної мови професійного спрямування. Частина 2",
 | 
					 | 
				
			||||||
            "teacher": "Срібна Олеся Валеріївна",
 | 
					 | 
				
			||||||
            "link": "",
 | 
					 | 
				
			||||||
            "type": "prac",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "nolink": true
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "8:30": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Інженерна комп'ютерна графіка",
 | 
					 | 
				
			||||||
                "teacher": "Степанов Андрій Сергійович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lab",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Основи WEB – технологій",
 | 
					 | 
				
			||||||
                "teacher": "Голубєв Леонтій Петрович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lab",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Основи комп’ютерного моделювання",
 | 
					 | 
				
			||||||
                "teacher": "Морозов-Леонов Олександр Святославович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lab",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Проектування вбудованих систем",
 | 
					 | 
				
			||||||
                "teacher": "Гордієнко Нікіта Юрійович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lab",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Системи управління мережами",
 | 
					 | 
				
			||||||
                "teacher": "Нікітін Валерій Андрійович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lab",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Системи цифрової обробки сигналів і зображень",
 | 
					 | 
				
			||||||
                "teacher": "Сергієнко Анатолій Михайлович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lab",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Створення інформаційних систем (ІС) на базі Low-code платформ",
 | 
					 | 
				
			||||||
                "teacher": "Новінський Валерій Петрович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lab",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Тестування та контроль якості (QA) вбудованих систем (Сертифікатна програма ESI&IoT з компанією Global Logic)",
 | 
					 | 
				
			||||||
                "teacher": "Міщенко Людмила Дмитрівна",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lab",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
        "10:25": {
 | 
					 | 
				
			||||||
            "name": "Протоколи і алгоритми електронного голосування",
 | 
					 | 
				
			||||||
            "teacher": "Нестерук Андрій Олександрович",
 | 
					 | 
				
			||||||
            "link": "",
 | 
					 | 
				
			||||||
            "type": "lab",
 | 
					 | 
				
			||||||
            "selectable": true,
 | 
					 | 
				
			||||||
            "nolink": true
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        "12:20": {
 | 
					 | 
				
			||||||
            "name": "Методи чисельної оптимізації",
 | 
					 | 
				
			||||||
            "teacher": "Кочура Юрій Петрович",
 | 
					 | 
				
			||||||
            "link": "",
 | 
					 | 
				
			||||||
            "type": "lab",
 | 
					 | 
				
			||||||
            "selectable": true,
 | 
					 | 
				
			||||||
            "nolink": true
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "8:30": {
 | 
					 | 
				
			||||||
            "name": "Економіка і організація виробництва",
 | 
					 | 
				
			||||||
            "teacher": "Саченко Андрій Олегович",
 | 
					 | 
				
			||||||
            "link": "",
 | 
					 | 
				
			||||||
            "type": "prac",
 | 
					 | 
				
			||||||
            "selectable": false,
 | 
					 | 
				
			||||||
            "nolink": true
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        "10:25": {
 | 
					 | 
				
			||||||
            "name": "Програмні засоби проектування та реалізації нейромережевих систем",
 | 
					 | 
				
			||||||
            "teacher": "Фещенко Кирило Юрійович",
 | 
					 | 
				
			||||||
            "link": "",
 | 
					 | 
				
			||||||
            "type": "lab",
 | 
					 | 
				
			||||||
            "selectable": true,
 | 
					 | 
				
			||||||
            "nolink": true
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        "14:15": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Мобільні комп'ютерні мережі",
 | 
					 | 
				
			||||||
                "teacher": "Кулаков Юрій Олексійович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "name": "Програмні засоби проектування та реалізації нейромережевих систем",
 | 
					 | 
				
			||||||
                "teacher": "Шимкович Володимир Миколайович",
 | 
					 | 
				
			||||||
                "link": "",
 | 
					 | 
				
			||||||
                "type": "lec",
 | 
					 | 
				
			||||||
                "selectable": true,
 | 
					 | 
				
			||||||
                "nolink": true
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ]
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {},
 | 
					 | 
				
			||||||
    {},
 | 
					 | 
				
			||||||
    {}
 | 
					 | 
				
			||||||
]
 | 
					 | 
				
			||||||
@ -1 +0,0 @@
 | 
				
			|||||||
schedule-v2-term7.json
 | 
					 | 
				
			||||||
							
								
								
									
										286
									
								
								modules/auto-schedule-pro-v2/schedule-v2.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										286
									
								
								modules/auto-schedule-pro-v2/schedule-v2.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,286 @@
 | 
				
			|||||||
 | 
					[
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        "8:30": {
 | 
				
			||||||
 | 
					            "name": "Політична наука: конфліктологічний підхід",
 | 
				
			||||||
 | 
					            "teacher": "Багінський Андрій Владиславович",
 | 
				
			||||||
 | 
					            "link": "(посилання відсутнє!)",
 | 
				
			||||||
 | 
					            "type": "lec",
 | 
				
			||||||
 | 
					            "selectable": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        "10:25": [
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                "name": "Захист персональних даних: стандарти ЄС та Ради Європи",
 | 
				
			||||||
 | 
					                "teacher": "Дубняк М. В.",
 | 
				
			||||||
 | 
					                "link": "https://us04web.zoom.us/j/7423381732?pwd=c1pJclU2ZDRUWDgyUE10dmhJUDhiZz09",
 | 
				
			||||||
 | 
					                "type": "lec",
 | 
				
			||||||
 | 
					                "selectable": true
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                "name": "Психологія",
 | 
				
			||||||
 | 
					                "teacher": "Волянюк Н. Ю.",
 | 
				
			||||||
 | 
					                "link": "https://us04web.zoom.us/j/6762396563?pwd=L1EvTmpFZHBSdkRHUjZyRG95SFl4QT0",
 | 
				
			||||||
 | 
					                "type": "lec",
 | 
				
			||||||
 | 
					                "selectable": true
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                "name": "Психологія конфлікту",
 | 
				
			||||||
 | 
					                "teacher": "Москаленко О. В.",
 | 
				
			||||||
 | 
					                "link": "https://zoom.us/j/5175581158?pwd=UlhFY3lBOUUrNG9pclRVNndTNTZzQT09",
 | 
				
			||||||
 | 
					                "type": "prac",
 | 
				
			||||||
 | 
					                "selectable": true
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        "14:15": {
 | 
				
			||||||
 | 
					            "name": "Основи електронного урядування",
 | 
				
			||||||
 | 
					            "teacher": "Чукут Світлана Анатоліївна",
 | 
				
			||||||
 | 
					            "link": "(посилання відсутнє!)",
 | 
				
			||||||
 | 
					            "type": "lec",
 | 
				
			||||||
 | 
					            "selectable": true
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        "12:20": {
 | 
				
			||||||
 | 
					            "name": "Інженерія програмного забезпечення",
 | 
				
			||||||
 | 
					            "teacher": "Васильєва Марія Давидівна",
 | 
				
			||||||
 | 
					            "link": "https://zoom.us/wc/88696149166/join?from=join&_x_zm_rtaid=qhdJKhYLQNakh-zwxMG4lg.1693903841334.ad606145c892a54a4b450526e2394cbe&_x_zm_rhtaid=531",
 | 
				
			||||||
 | 
					            "type": "lab",
 | 
				
			||||||
 | 
					            "selectable": false,
 | 
				
			||||||
 | 
					            "notice": "Код: 4VHkdw"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        "14:15": {
 | 
				
			||||||
 | 
					            "name": "Теорія електричних кіл та сигналів",
 | 
				
			||||||
 | 
					            "teacher": "Лободзинський В. Ю. & Ілліна О. О.",
 | 
				
			||||||
 | 
					            "link": "https://meet.google.com/gwx-sshq-sqb",
 | 
				
			||||||
 | 
					            "type": "lab",
 | 
				
			||||||
 | 
					            "selectable": false
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        "8:30": {
 | 
				
			||||||
 | 
					            "name": "Теорія ймовірності та математична статистика",
 | 
				
			||||||
 | 
					            "teacher": "Марковський Олександр Петрович",
 | 
				
			||||||
 | 
					            "link": "https://bbb.comsys.kpi.ua/b/ole-9ru-7vc",
 | 
				
			||||||
 | 
					            "type": "lec",
 | 
				
			||||||
 | 
					            "selectable": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        "10:25": {
 | 
				
			||||||
 | 
					            "name": "Вступ до операційної системи Linux",
 | 
				
			||||||
 | 
					            "teacher": "Роковий Олександр Петрович",
 | 
				
			||||||
 | 
					            "link": "https://bbb.comsys.kpi.ua/b/ole-knq-z9h-pyl",
 | 
				
			||||||
 | 
					            "type": "lec",
 | 
				
			||||||
 | 
					            "selectable": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "12:20": {
 | 
				
			||||||
 | 
					            "name": "Інженерія програмного забезпечення",
 | 
				
			||||||
 | 
					            "teacher": "Васильєва Марія Давидівна",
 | 
				
			||||||
 | 
					            "link": "(посилання відсутнє!)",
 | 
				
			||||||
 | 
					            "type": "lec",
 | 
				
			||||||
 | 
					            "selectable": false
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        "10:25": {
 | 
				
			||||||
 | 
					            "name": "Вища математика. Частина 3. Ряди. Теорія функцій комплексної змінної. Операційне числення",
 | 
				
			||||||
 | 
					            "teacher": "Стаматієва Вікторія В'ячеславівна",
 | 
				
			||||||
 | 
					            "link": "(посилання відсутнє!)",
 | 
				
			||||||
 | 
					            "type": "prac",
 | 
				
			||||||
 | 
					            "selectable": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "12:20": {
 | 
				
			||||||
 | 
					            "name": "Практичний курс іноземної мови. Частина 2",
 | 
				
			||||||
 | 
					            "teacher": "Шевченко Ольга Миколаївна",
 | 
				
			||||||
 | 
					            "link": "(старе посилання!) https://meet.google.com/bwg-pdnr-evh",
 | 
				
			||||||
 | 
					            "type": "prac",
 | 
				
			||||||
 | 
					            "selectable": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "14:15": {
 | 
				
			||||||
 | 
					            "name": "Соціальна психологія",
 | 
				
			||||||
 | 
					            "teacher": "Блохіна Ірина Олександрівна",
 | 
				
			||||||
 | 
					            "link": "(посилання відсутнє!)",
 | 
				
			||||||
 | 
					            "type": "prac",
 | 
				
			||||||
 | 
					            "selectable": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "16:10": {
 | 
				
			||||||
 | 
					            "name": "Основи електронного урядування",
 | 
				
			||||||
 | 
					            "teacher": "Чукут Світлана Анатоліївна",
 | 
				
			||||||
 | 
					            "link": "(посилання відсутнє!)",
 | 
				
			||||||
 | 
					            "type": "prac",
 | 
				
			||||||
 | 
					            "selectable": true
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        "8:30": {
 | 
				
			||||||
 | 
					            "name": "Вступ до філософії",
 | 
				
			||||||
 | 
					            "teacher": "Руденко Тамара Петрівна",
 | 
				
			||||||
 | 
					            "link": "(посилання відсутнє!)",
 | 
				
			||||||
 | 
					            "type": "lec",
 | 
				
			||||||
 | 
					            "selectable": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "10:25": {
 | 
				
			||||||
 | 
					            "name": "Теорія електричних кіл та сигналів",
 | 
				
			||||||
 | 
					            "teacher": "Лободзинський Вадим Юрійович",
 | 
				
			||||||
 | 
					            "link": "https://meet.google.com/gwx-sshq-sqb",
 | 
				
			||||||
 | 
					            "type": "lec",
 | 
				
			||||||
 | 
					            "selectable": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "12:20": {
 | 
				
			||||||
 | 
					            "name": "Вища математика. Частина 3. Ряди. Теорія функцій комплексної змінної. Операційне числення",
 | 
				
			||||||
 | 
					            "teacher": "Овчар Раїса Федорівна",
 | 
				
			||||||
 | 
					            "link": "(посилання відсутнє!)",
 | 
				
			||||||
 | 
					            "type": "lec",
 | 
				
			||||||
 | 
					            "selectable": false
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {},
 | 
				
			||||||
 | 
					    {},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        "10:25": [
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                "name": "Психологія",
 | 
				
			||||||
 | 
					                "teacher": "Сербова О. В.",
 | 
				
			||||||
 | 
					                "link": "https://us04web.zoom.us/j/6762396563?pwd=L1EvTmpFZHBSdkRHUjZyRG95SFl4QT09",
 | 
				
			||||||
 | 
					                "type": "prac",
 | 
				
			||||||
 | 
					                "selectable": true
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                "name": "Психологія конфлікту",
 | 
				
			||||||
 | 
					                "teacher": "Кононець М. О.",
 | 
				
			||||||
 | 
					                "link": "https://zoom.us/j/5175581158?pwd=UlhFY3lBOUUrNG9pclRVNndTNTZzQT09",
 | 
				
			||||||
 | 
					                "type": "lec",
 | 
				
			||||||
 | 
					                "selectable": true
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        "12:20": [
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                "name": "Політична наука: конфліктологічний підхід",
 | 
				
			||||||
 | 
					                "teacher": "Северинчик О. П.",
 | 
				
			||||||
 | 
					                "link": "https://zoom.us/j/5175581158?pwd=UlhFY3lBOUUrNG9pclRVNndTNTZzQT09",
 | 
				
			||||||
 | 
					                "type": "prac",
 | 
				
			||||||
 | 
					                "selectable": true
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                "name": "Захист персональних даних: стандарти ЄС та Ради Європи",
 | 
				
			||||||
 | 
					                "teacher": "Самчинська О. А.",
 | 
				
			||||||
 | 
					                "link": "(посилання відсутнє!)",
 | 
				
			||||||
 | 
					                "type": "prac",
 | 
				
			||||||
 | 
					                "selectable": true 
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        "14:15": {
 | 
				
			||||||
 | 
					            "name": "Розумні міста",
 | 
				
			||||||
 | 
					            "teacher": "Чукут Світлана Анатоліївна",
 | 
				
			||||||
 | 
					            "link": "(посилання відсутнє!)",
 | 
				
			||||||
 | 
					            "type": "lec",
 | 
				
			||||||
 | 
					            "selectable": true 
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        "10:25": {
 | 
				
			||||||
 | 
					            "name": "Вступ до філософії",
 | 
				
			||||||
 | 
					            "teacher": "Руденко Тамара Петрівна",
 | 
				
			||||||
 | 
					            "link": "(посилання відсутнє!)",
 | 
				
			||||||
 | 
					            "type": "prac",
 | 
				
			||||||
 | 
					            "selectable": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "14:15": {
 | 
				
			||||||
 | 
					            "name": "Теорія ймовірності та математична статистика",
 | 
				
			||||||
 | 
					            "teacher": "Марковський Олександр Петрович",
 | 
				
			||||||
 | 
					            "link": "https://bbb.comsys.kpi.ua/b/ole-9ru-7vc",
 | 
				
			||||||
 | 
					            "type": "prac",
 | 
				
			||||||
 | 
					            "selectable": false
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        "8:30": {
 | 
				
			||||||
 | 
					            "name": "Теорія ймовірності та математична статистика",
 | 
				
			||||||
 | 
					            "teacher": "Марковський Олександр Петрович",
 | 
				
			||||||
 | 
					            "link": "https://bbb.comsys.kpi.ua/b/ole-9ru-7vc",
 | 
				
			||||||
 | 
					            "type": "lec",
 | 
				
			||||||
 | 
					            "selectable": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "10:25": {
 | 
				
			||||||
 | 
					            "name": "Вступ до операційної системи Linux",
 | 
				
			||||||
 | 
					            "teacher": "Роковий Олександр Петрович",
 | 
				
			||||||
 | 
					            "link": "https://bbb.comsys.kpi.ua/b/ole-knq-z9h-pyl",
 | 
				
			||||||
 | 
					            "type": "lec",
 | 
				
			||||||
 | 
					            "selectable": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "12:20": {
 | 
				
			||||||
 | 
					            "name": "Інженерія програмного забезпечення",
 | 
				
			||||||
 | 
					            "teacher": "Васильєва Марія Давидівна",
 | 
				
			||||||
 | 
					            "link": "(посилання відсутнє!)",
 | 
				
			||||||
 | 
					            "type": "lec",
 | 
				
			||||||
 | 
					            "selectable": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "14:15": {
 | 
				
			||||||
 | 
					            "name": "Інженерія програмного забезпечення",
 | 
				
			||||||
 | 
					            "teacher": "Васильєва Марія Давидівна",
 | 
				
			||||||
 | 
					            "link": "(посилання відсутнє!)",
 | 
				
			||||||
 | 
					            "type": "lec",
 | 
				
			||||||
 | 
					            "selectable": false
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        "8:30": {
 | 
				
			||||||
 | 
					            "name": "Вступ до операційної системи Linux",
 | 
				
			||||||
 | 
					            "teacher": "Алєнін Олег Ігорович",
 | 
				
			||||||
 | 
					            "link": "(посилання відсутнє!)",
 | 
				
			||||||
 | 
					            "type": "lab",
 | 
				
			||||||
 | 
					            "selectable": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "10:25": {
 | 
				
			||||||
 | 
					            "name": "Вища математика. Частина 3. Ряди. Теорія функцій комплексної змінної. Операційне числення",
 | 
				
			||||||
 | 
					            "teacher": "Стаматієва Вікторія В'ячеславівна",
 | 
				
			||||||
 | 
					            "link": "(старе посилання!) https://us04web.zoom.us/j/2313886209?pwd=dnZHanV3cU9LUXJBVWYyYVArUFg5dz09",
 | 
				
			||||||
 | 
					            "type": "prac",
 | 
				
			||||||
 | 
					            "selectable": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "12:20": {
 | 
				
			||||||
 | 
					            "name": "Практичний курс іноземної мови. Частина 2",
 | 
				
			||||||
 | 
					            "teacher": "Шевченко Ольга Миколаївна",
 | 
				
			||||||
 | 
					            "link": "(старе посилання!) https://meet.google.com/bwg-pdnr-evh",
 | 
				
			||||||
 | 
					            "type": "prac",
 | 
				
			||||||
 | 
					            "selectable": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "14:15": [
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                "name": "Соціальна психологія",
 | 
				
			||||||
 | 
					                "teacher": "Винославська О. В.",
 | 
				
			||||||
 | 
					                "link": "(посилання відсутнє!)",
 | 
				
			||||||
 | 
					                "type": "lec",
 | 
				
			||||||
 | 
					                "selectable": true
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                "name": "Розумні міста",
 | 
				
			||||||
 | 
					                "teacher": "Чукут С. А.",
 | 
				
			||||||
 | 
					                "link": "(посилання відсутні!)",
 | 
				
			||||||
 | 
					                "type": "prac",
 | 
				
			||||||
 | 
					                "selectable": true
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        "10:25": {
 | 
				
			||||||
 | 
					            "name": "Теорія електричних кіл та сигналів",
 | 
				
			||||||
 | 
					            "teacher": "Лободзинський Вадим Юрійович",
 | 
				
			||||||
 | 
					            "link": "https://meet.google.com/gwx-sshq-sqb",
 | 
				
			||||||
 | 
					            "type": "lec",
 | 
				
			||||||
 | 
					            "selectable": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "12:20": {
 | 
				
			||||||
 | 
					            "name": "Вища математика. Частина 3. Ряди. Теорія функцій комплексної змінної. Операційне числення",
 | 
				
			||||||
 | 
					            "teacher": "Овчар Раїса Федорівна",
 | 
				
			||||||
 | 
					            "link": "(посилання відсутнє!)",
 | 
				
			||||||
 | 
					            "type": "lec",
 | 
				
			||||||
 | 
					            "selectable": false
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {},
 | 
				
			||||||
 | 
					    {}
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
							
								
								
									
										1
									
								
								modules/auto-schedule-pro-v2/schedule.json
									
									
									
									
									
										Symbolic link
									
								
							
							
						
						
									
										1
									
								
								modules/auto-schedule-pro-v2/schedule.json
									
									
									
									
									
										Symbolic link
									
								
							@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					../auto-schedule-pro/schedule.json
 | 
				
			||||||
@ -1 +0,0 @@
 | 
				
			|||||||
<b>Коментар</b>: %COMMENT%
 | 
					 | 
				
			||||||
@ -1,2 +0,0 @@
 | 
				
			|||||||
<i>%PROGRESS_BAR%</i>
 | 
					 | 
				
			||||||
<b><u>%DATE%</u></b>:
 | 
					 | 
				
			||||||
@ -1 +0,0 @@
 | 
				
			|||||||
<b><u>%DATE%</u></b>:
 | 
					 | 
				
			||||||
@ -1 +0,0 @@
 | 
				
			|||||||
<b><a href="%LINK%">%COLOR_CODE% %NAME%</a></b>
 | 
					 | 
				
			||||||
@ -1,3 +0,0 @@
 | 
				
			|||||||
<b>%NAME_PREFIX%</b>: %NAME% (%TYPE%)
 | 
					 | 
				
			||||||
<b>Викладач</b>: %TEACHER%
 | 
					 | 
				
			||||||
<b>Посилання</b>: %LINK%
 | 
					 | 
				
			||||||
@ -1,4 +0,0 @@
 | 
				
			|||||||
<b>%NAME_PREFIX%</b>: %NAME% (%TYPE%)
 | 
					 | 
				
			||||||
<b>Дата</b>: %DATE% <i>%PROGRESS_BAR%</i>
 | 
					 | 
				
			||||||
<b>Викладач</b>: %TEACHER%
 | 
					 | 
				
			||||||
<b>Посилання</b>: %LINK%
 | 
					 | 
				
			||||||
@ -1 +0,0 @@
 | 
				
			|||||||
Коментар: %COMMENT%
 | 
					 | 
				
			||||||
@ -1,2 +0,0 @@
 | 
				
			|||||||
%PROGRESS_BAR%
 | 
					 | 
				
			||||||
<u>%DATE%</u>:
 | 
					 | 
				
			||||||
@ -1 +0,0 @@
 | 
				
			|||||||
<u>%DATE%</u>:
 | 
					 | 
				
			||||||
@ -1 +0,0 @@
 | 
				
			|||||||
<a href="%LINK%">%COLOR_CODE% %NAME%</a>
 | 
					 | 
				
			||||||
@ -1,3 +0,0 @@
 | 
				
			|||||||
%NAME_PREFIX%: %NAME% (%TYPE%)
 | 
					 | 
				
			||||||
Викладач: %TEACHER%
 | 
					 | 
				
			||||||
Посилання: %LINK%
 | 
					 | 
				
			||||||
@ -1,4 +0,0 @@
 | 
				
			|||||||
%NAME_PREFIX%: %NAME% (%TYPE%)
 | 
					 | 
				
			||||||
Дата: %DATE% %PROGRESS_BAR%
 | 
					 | 
				
			||||||
Викладач: %TEACHER%
 | 
					 | 
				
			||||||
Посилання: %LINK%
 | 
					 | 
				
			||||||
@ -1 +0,0 @@
 | 
				
			|||||||
<i>Коментар</i>: %COMMENT%
 | 
					 | 
				
			||||||
@ -1,2 +0,0 @@
 | 
				
			|||||||
<i>%PROGRESS_BAR%</i>
 | 
					 | 
				
			||||||
<b><u>%DATE%</u></b>:
 | 
					 | 
				
			||||||
@ -1 +0,0 @@
 | 
				
			|||||||
<b><u>%DATE%</u></b>:
 | 
					 | 
				
			||||||
@ -1 +0,0 @@
 | 
				
			|||||||
<b><a href="%LINK%">%COLOR_CODE% %NAME%</a></b>
 | 
					 | 
				
			||||||
@ -1,3 +0,0 @@
 | 
				
			|||||||
<b>%NAME%</b> (%TYPE%)
 | 
					 | 
				
			||||||
<i>Викладач</i>: %TEACHER%
 | 
					 | 
				
			||||||
<i>Посилання</i>: %LINK%
 | 
					 | 
				
			||||||
@ -1,4 +0,0 @@
 | 
				
			|||||||
<b>%NAME%</b> (%TYPE%)
 | 
					 | 
				
			||||||
<i>Дата</i>: %DATE% <i>%PROGRESS_BAR%</i>
 | 
					 | 
				
			||||||
<i>Викладач</i>: %TEACHER%
 | 
					 | 
				
			||||||
<i>Посилання</i>: %LINK%
 | 
					 | 
				
			||||||
@ -5,51 +5,51 @@
 | 
				
			|||||||
        "14:15": {"name": "Основи електронного урядування (лекція)", "teacher": "Чукут Світлана Анатоліївна", "link": "(посилання відсутнє!)"}
 | 
					        "14:15": {"name": "Основи електронного урядування (лекція)", "teacher": "Чукут Світлана Анатоліївна", "link": "(посилання відсутнє!)"}
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        "12:20": {"name": "Інженерія програмного забезпечення (лабораторна)", "teacher": "Васильєва Марія Давидівна", "link": "https://do.ipo.kpi.ua/mod/bigbluebuttonbn/view.php?id=171039"},
 | 
					        "12:20": {"name": "Інженерія програмного забезпечення (лабораторна)", "teacher": "Васильєва Марія Давидівна", "link": "https://zoom.us/wc/88696149166/join?from=join&_x_zm_rtaid=qhdJKhYLQNakh-zwxMG4lg.1693903841334.ad606145c892a54a4b450526e2394cbe&_x_zm_rhtaid=531"},
 | 
				
			||||||
        "14:15": {"name": "Теорія електричних кіл та сигналів (лабораторна)", "teacher": "Лободзинський В. Ю. & Ілліна О. О.", "link": "https://meet.google.com/gwx-sshq-sqb"}
 | 
					        "14:15": {"name": "Теорія електричних кіл та сигналів (лабораторна)", "teacher": "Лободзинський В. Ю. & Ілліна О. О.", "link": "https://meet.google.com/gwx-sshq-sqb"}
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        "8:30": {"name": "Теорія ймовірності та математична статистика (лекція)", "teacher": "Марковський Олександр Петрович", "link": "https://bbb.comsys.kpi.ua/b/ole-9ru-7vc"},
 | 
					        "8:30": {"name": "Теорія ймовірності та математична статистика (лекція)", "teacher": "Марковський Олександр Петрович", "link": "https://bbb.comsys.kpi.ua/b/ole-9ru-7vc"},
 | 
				
			||||||
        "10:25": {"name": "Вступ до операційної системи Linux (лекція)", "teacher": "Роковий Олександр Петрович", "link": "https://bbb.comsys.kpi.ua/b/ole-knq-z9h-pyl"},
 | 
					        "10:25": {"name": "Вступ до операційної системи Linux (лекція)", "teacher": "Роковий Олександр Петрович", "link": "https://bbb.comsys.kpi.ua/b/ole-knq-z9h-pyl"},
 | 
				
			||||||
        "12:20": {"name": "Інженерія програмного забезпечення (лекція)", "teacher": "Васильєва Марія Давидівна", "link": "https://do.ipo.kpi.ua/mod/bigbluebuttonbn/view.php?id=171039"}
 | 
					        "12:20": {"name": "Інженерія програмного забезпечення (лекція)", "teacher": "Васильєва Марія Давидівна", "link": "(посилання відсутнє!)"}
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        "10:25": {"name": "Вища математика. Частина 3. Ряди. Теорія функцій комплексної змінної. Операційне числення (практика)", "teacher": "Стаматієва Вікторія В'ячеславівна", "link": "https://us04web.zoom.us/j/2313886209?pwd=dnZHanV3cU9LUXJBVWYyYVArUFg5dz09"},
 | 
					        "10:25": {"name": "Вища математика. Частина 3. Ряди. Теорія функцій комплексної змінної. Операційне числення (практика)", "teacher": "Стаматієва Вікторія В'ячеславівна", "link": "(посилання відсутнє!)"},
 | 
				
			||||||
        "12:20": {"name": "Практичний курс іноземної мови. Частина 2 (практика)", "teacher": "Шевченко Ольга Миколаївна", "link": "https://meet.google.com/tno-cxef-zyi"},
 | 
					        "12:20": {"name": "Практичний курс іноземної мови. Частина 2 (практика)", "teacher": "Шевченко Ольга Миколаївна", "link": "(старе посилання!) https://meet.google.com/bwg-pdnr-evh"},
 | 
				
			||||||
        "14:15": {"name": "Соціальна психологія (практика)", "teacher": "Блохіна Ірина Олександрівна", "link": "(посилання відсутнє!)"},
 | 
					        "14:15": {"name": "Соціальна психологія (практика)", "teacher": "Блохіна Ірина Олександрівна", "link": "(посилання відсутнє!)"},
 | 
				
			||||||
        "16:10": {"name": "Основи електронного урядування (практика)", "teacher": "Чукут Світлана Анатоліївна", "link": "(посилання відсутнє!)"}
 | 
					        "16:10": {"name": "Основи електронного урядування (практика)", "teacher": "Чукут Світлана Анатоліївна", "link": "(посилання відсутнє!)"}
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        "8:30": {"name": "Вступ до філософії (лекція)", "teacher": "Руденко Тамара Петрівна", "link": "https://zoom.us/j/9358038101?pwd=d0pwUHRDY0dxbngrU09PYll6UXpNZz09"},
 | 
					        "8:30": {"name": "Вступ до філософії (лекція)", "teacher": "Руденко Тамара Петрівна", "link": "(посилання відсутнє!)"},
 | 
				
			||||||
        "10:25": {"name": "Теорія електричних кіл та сигналів (лекція)", "teacher": "Лободзинський Вадим Юрійович", "link": "https://meet.google.com/gwx-sshq-sqb"},
 | 
					        "10:25": {"name": "Теорія електричних кіл та сигналів (лекція)", "teacher": "Лободзинський Вадим Юрійович", "link": "https://meet.google.com/gwx-sshq-sqb"},
 | 
				
			||||||
        "12:20": {"name": "Вища математика. Частина 3. Ряди. Теорія функцій комплексної змінної. Операційне числення (лекція)", "teacher": "Овчар Раїса Федорівна", "link": "https://us02web.zoom.us/j/84532519615?pwd=eDFRMWtJTkxKcklpa1JUSjFmZHNyUT09"}
 | 
					        "12:20": {"name": "Вища математика. Частина 3. Ряди. Теорія функцій комплексної змінної. Операційне числення (лекція)", "teacher": "Овчар Раїса Федорівна", "link": "(посилання відсутнє!)"}
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {},
 | 
					    {},
 | 
				
			||||||
    {},
 | 
					    {},
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        "10:25": {"name": "Психологія (практика) & Психологія конфлікту (лекція)", "teacher": "Сербова О. В. & Кононець М. О.", "link": "https://us05web.zoom.us/j/9299459744?pwd=Z3VQdWEvQ0tyc3pMbzl2bHN6Y1VlUT09 & https://zoom.us/j/9953120638?pwd=WGZsYUhPK2hxbUc4YVJmT0lhdysyZz09"},
 | 
					        "10:25": {"name": "Психологія & Психологія конфлікту (практики)", "teacher": "Сербова О. В. & Кононець М. О.", "link": "https://us04web.zoom.us/j/6762396563?pwd=L1EvTmpFZHBSdkRHUjZyRG95SFl4QT09 & https://zoom.us/j/5175581158?pwd=UlhFY3lBOUUrNG9pclRVNndTNTZzQT09"},
 | 
				
			||||||
        "12:20": {"name": "Політична наука: конфліктологічний підхід & Захист персональних даних: стандарти ЄС та Ради Європи (практики)", "teacher": "Северинчик О. П. & Самчинська О. А.", "link": "(посилання відсутнє!) & https://us04web.zoom.us/j/72149205587?pwd=Ld2Xj7RORYEwnUYauB5yEbATwwsNan.1"},
 | 
					        "12:20": {"name": "Політична наука: конфліктологічний підхід & Захист персональних даних: стандарти ЄС та Ради Європи (практики)", "teacher": "Северинчик О. П. & Самчинська О. А.", "link": "https://zoom.us/j/5175581158?pwd=UlhFY3lBOUUrNG9pclRVNndTNTZzQT09 & (посилання відсутнє!)"},
 | 
				
			||||||
        "14:15": {"name": "Розумні міста (лекція)", "teacher": "Чукут Світлана Анатоліївна", "link": "https://zoom.us/j/5439919039?pwd=Um8wWHV4ZjZpallCWkpVQ08wZGNzdz09"}
 | 
					        "14:15": {"name": "Розумні міста (лекція)", "teacher": "Чукут Світлана Анатоліївна", "link": "(посилання відсутнє!)"}
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        "10:25": {"name": "Вступ до філософії (практика)", "teacher": "Руденко Тамара Петрівна", "link": "https://zoom.us/j/9358038101?pwd=d0pwUHRDY0dxbngrU09PYll6UXpNZz09"},
 | 
					        "10:25": {"name": "Вступ до філософії (практика)", "teacher": "Руденко Тамара Петрівна", "link": "(посилання відсутнє!)"},
 | 
				
			||||||
        "14:15": {"name": "Теорія ймовірності та математична статистика (практика)", "teacher": "Марковський Олександр Петрович", "link": "https://bbb.comsys.kpi.ua/b/ole-9ru-7vc"}
 | 
					        "14:15": {"name": "Теорія ймовірності та математична статистика (практика)", "teacher": "Марковський Олександр Петрович", "link": "(посилання відсутнє!)"}
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        "8:30": {"name": "Теорія ймовірності та математична статистика (лекція)", "teacher": "Марковський Олександр Петрович", "link": "https://bbb.comsys.kpi.ua/b/ole-9ru-7vc"},
 | 
					        "8:30": {"name": "Теорія ймовірності та математична статистика (лекція)", "teacher": "Марковський Олександр Петрович", "link": "https://bbb.comsys.kpi.ua/b/ole-9ru-7vc"},
 | 
				
			||||||
        "10:25": {"name": "Вступ до операційної системи Linux (лекція)", "teacher": "Роковий Олександр Петрович", "link": "https://bbb.comsys.kpi.ua/b/ole-knq-z9h-pyl"},
 | 
					        "10:25": {"name": "Вступ до операційної системи Linux (лекція)", "teacher": "Роковий Олександр Петрович", "link": "https://bbb.comsys.kpi.ua/b/ole-knq-z9h-pyl"},
 | 
				
			||||||
        "12:20": {"name": "Інженерія програмного забезпечення (лекція)", "teacher": "Васильєва Марія Давидівна", "link": "https://do.ipo.kpi.ua/mod/bigbluebuttonbn/view.php?id=171039"},
 | 
					        "12:20": {"name": "Інженерія програмного забезпечення (лекція)", "teacher": "Васильєва Марія Давидівна", "link": "(посилання відсутнє!)"},
 | 
				
			||||||
        "14:15": {"name": "Інженерія програмного забезпечення (лекція)", "teacher": "Васильєва Марія Давидівна", "link": "https://do.ipo.kpi.ua/mod/bigbluebuttonbn/view.php?id=171039"}
 | 
					        "14:15": {"name": "Інженерія програмного забезпечення (лекція)", "teacher": "Васильєва Марія Давидівна", "link": "(посилання відсутнє!)"}
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        "8:30": {"name": "Вступ до операційної системи Linux (лабораторна)", "teacher": "Алєнін Олег Ігорович", "link": "https://us04web.zoom.us/j/4122071690?pwd=bANFi3fk9pWvRu9TSBRGzfxFHuEkZC.1"},
 | 
					        "8:30": {"name": "Вступ до операційної системи Linux (лабораторна)", "teacher": "Алєнін Олег Ігорович", "link": "(посилання відсутнє!)"},
 | 
				
			||||||
        "10:25": {"name": "Вища математика. Частина 3. Ряди. Теорія функцій комплексної змінної. Операційне числення (практика)", "teacher": "Стаматієва Вікторія В'ячеславівна", "link": "https://us04web.zoom.us/j/2313886209?pwd=dnZHanV3cU9LUXJBVWYyYVArUFg5dz09"},
 | 
					        "10:25": {"name": "Вища математика. Частина 3. Ряди. Теорія функцій комплексної змінної. Операційне числення (практика)", "teacher": "Стаматієва Вікторія В'ячеславівна", "link": "(старе посилання!) https://us04web.zoom.us/j/2313886209?pwd=dnZHanV3cU9LUXJBVWYyYVArUFg5dz09"},
 | 
				
			||||||
        "12:20": {"name": "Практичний курс іноземної мови. Частина 2 (практика)", "teacher": "Шевченко Ольга Миколаївна", "link": "https://meet.google.com/tno-cxef-zyi"},
 | 
					        "12:20": {"name": "Практичний курс іноземної мови. Частина 2 (практика)", "teacher": "Шевченко Ольга Миколаївна", "link": "(старе посилання!) https://meet.google.com/bwg-pdnr-evh"},
 | 
				
			||||||
        "14:15": {"name": "Соціальна психологія (лекція) & Розумні міста (практика)", "teacher": "Винославська О. В. & Чукут С. А.", "link": "(посилання відсутнє!) & https://zoom.us/j/5439919039?pwd=Um8wWHV4ZjZpallCWkpVQ08wZGNzdz09"}
 | 
					        "14:15": {"name": "Соціальна психологія (лекція) & Розумні міста (практика)", "teacher": "Винославська О. В. & Чукут С. А.", "link": "(посилання відсутні!)"}
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        "10:25": {"name": "Теорія електричних кіл та сигналів (лекція)", "teacher": "Лободзинський Вадим Юрійович", "link": "https://meet.google.com/gwx-sshq-sqb"},
 | 
					        "10:25": {"name": "Теорія електричних кіл та сигналів (лекція)", "teacher": "Лободзинський Вадим Юрійович", "link": "https://meet.google.com/gwx-sshq-sqb"},
 | 
				
			||||||
        "12:20": {"name": "Вища математика. Частина 3. Ряди. Теорія функцій комплексної змінної. Операційне числення (лекція)", "teacher": "Овчар Раїса Федорівна", "link": "https://us02web.zoom.us/j/84532519615?pwd=eDFRMWtJTkxKcklpa1JUSjFmZHNyUT09"}
 | 
					        "12:20": {"name": "Вища математика. Частина 3. Ряди. Теорія функцій комплексної змінної. Операційне числення (лекція)", "teacher": "Овчар Раїса Федорівна", "link": "(посилання відсутнє!)"}
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {},
 | 
					    {},
 | 
				
			||||||
    {}
 | 
					    {}
 | 
				
			||||||
 | 
				
			|||||||
@ -1,16 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
    "s": "Головна сторінка сервера: http://10.1.1.1:12010/",
 | 
					 | 
				
			||||||
    "ss": "Головна сторінка сервера: http://10.1.1.1:12010/",
 | 
					 | 
				
			||||||
    "u": "Універсальне посилання: http://10.1.1.1:12025/?d=1",
 | 
					 | 
				
			||||||
    "c": "Розклад навчального року: http://10.1.1.1:12062/generic/4year-schedule.jpg",
 | 
					 | 
				
			||||||
    "r": "Записи пар (7 семестр): http://10.1.1.1:12066/cgi/main-full.py",
 | 
					 | 
				
			||||||
    "d": "Навчальні дисципліни (5-8 семестри): http://10.1.1.1:12022/generic/disciplines-terms5-8.png",
 | 
					 | 
				
			||||||
    "d1": "Навчальні дисципліни (1-4 семестри): http://10.1.1.1:12022/generic/disciplines-terms1-4.png",
 | 
					 | 
				
			||||||
    "d2": "Навчальні дисципліни (5-8 семестри): http://10.1.1.1:12022/generic/disciplines-terms5-8.png",
 | 
					 | 
				
			||||||
    "h": "Стисла довідка:\n!s - головна сторінка сервера\n!u - універсальне посилання\n!r - записи пар (7 семестр)\n!c - календар навчального року\n!d - перелік навчальних дисциплін\n@all [повідомлення] - тег усіх користувачів\nПовна довідка: http://10.1.1.1:12032/generic/bot-help/short-help.html",
 | 
					 | 
				
			||||||
    "пари_для_артема": "🧐",
 | 
					 | 
				
			||||||
    "пари_для_артема_хоч_і_не_на_завтра": "🤨",
 | 
					 | 
				
			||||||
    "перекур": "😮\u200d💨",
 | 
					 | 
				
			||||||
    "fiot_free_vidrahuvannja": "😢",
 | 
					 | 
				
			||||||
    "світло": "⚡️"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,6 +0,0 @@
 | 
				
			|||||||
command_storage = json.loads(open(self.path + "data.json").read())
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
received_command = self.MESSAGE.text[1:]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if received_command.lower() in command_storage:
 | 
					 | 
				
			||||||
    self.RESPONSE = command_storage[received_command.lower()]
 | 
					 | 
				
			||||||
@ -1,6 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
    "version": 1,
 | 
					 | 
				
			||||||
    "index_file": "index.py",
 | 
					 | 
				
			||||||
    "start_on_boot": true,
 | 
					 | 
				
			||||||
    "alias": "generic-command-processor"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,5 +0,0 @@
 | 
				
			|||||||
Usage: !hardsub [event_name]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Permanently subscribes to [event_name]. If blank, uses "default".
 | 
					 | 
				
			||||||
To unsubscribe, use !hardunsub
 | 
					 | 
				
			||||||
For one-time subscriptions, use !sub
 | 
					 | 
				
			||||||
@ -1,5 +0,0 @@
 | 
				
			|||||||
Usage: !hardunsub [event_name]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Remove permanent subscription to [event_name]. If blank, uses "default".
 | 
					 | 
				
			||||||
To remove one-time subscription, use !unsub
 | 
					 | 
				
			||||||
To add permanent subscription, use !hardsub
 | 
					 | 
				
			||||||
@ -1,5 +0,0 @@
 | 
				
			|||||||
Usage:
 | 
					 | 
				
			||||||
    !schedule-ctl list                  - see all settings
 | 
					 | 
				
			||||||
    !schedule-ctl get <setting>         - see specific personal setting
 | 
					 | 
				
			||||||
    !schedule-ctl set <setting> <value> - change <setting> to <value>
 | 
					 | 
				
			||||||
    !schedule-ctl clear <setting>       - restore <setting> to default value
 | 
					 | 
				
			||||||
@ -1,7 +0,0 @@
 | 
				
			|||||||
Usage: !sub [event_name]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Soft-subscribes to [event_name]. If black, uses "default".
 | 
					 | 
				
			||||||
If you want to remove soft substription, use !unsub
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Soft subscription is automatically removed after the event is triggered once.
 | 
					 | 
				
			||||||
If you want to subscribe permanently, use !hardsub
 | 
					 | 
				
			||||||
@ -1,5 +0,0 @@
 | 
				
			|||||||
Usage: !unsub [event_name]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Removes one-time subscription to [event_name]. If blank, uses "default".
 | 
					 | 
				
			||||||
Does not affect hard subscriptions. To remove hard subscription, use !hardunsub
 | 
					 | 
				
			||||||
To add one-time supscription, use !sub
 | 
					 | 
				
			||||||
@ -1,54 +0,0 @@
 | 
				
			|||||||
import json
 | 
					 | 
				
			||||||
import os
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
module_path = ""
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def readfile(filename):
 | 
					 | 
				
			||||||
    if os.path.exists(module_path + filename):
 | 
					 | 
				
			||||||
        return open(module_path + filename).read()
 | 
					 | 
				
			||||||
    else:
 | 
					 | 
				
			||||||
        return False
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def list_entries(search_query):
 | 
					 | 
				
			||||||
    files = []
 | 
					 | 
				
			||||||
    for p, d, f in os.walk(module_path + "db/"):
 | 
					 | 
				
			||||||
        for i in f:
 | 
					 | 
				
			||||||
            entry_name = f"{p.split('/', 3)[3]}/{i}"
 | 
					 | 
				
			||||||
            if search_query in entry_name:
 | 
					 | 
				
			||||||
                files.append(f"{p.split('/', 3)[3]}/{i}".rsplit(".", 1)[0].replace("/", ".").lstrip("."))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    files.sort()
 | 
					 | 
				
			||||||
    return files
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def process(message, path):
 | 
					 | 
				
			||||||
    if message.text[:5] != "!help":
 | 
					 | 
				
			||||||
        return None, None
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    global module_path
 | 
					 | 
				
			||||||
    module_path = path
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    cmd = message.text[1:].split()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if len(cmd) == 1:
 | 
					 | 
				
			||||||
        return "Usage:\n```\n!help show <entry> - displays specified manual entry\n!help list [query] - lists out available entries (optionally, filtered by [query])```", "Markdown"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    elif cmd[1] == "list":
 | 
					 | 
				
			||||||
        if len(cmd) == 2:
 | 
					 | 
				
			||||||
            return "Available entries:\n" + "\n".join(list_entries("")), None
 | 
					 | 
				
			||||||
        else:
 | 
					 | 
				
			||||||
            return f"Found entries for {cmd[2]}:\n" + "\n".join(list_entries(cmd[2])), None
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    elif cmd[1] == "show":
 | 
					 | 
				
			||||||
        if len(cmd) >= 3:
 | 
					 | 
				
			||||||
            result = ""
 | 
					 | 
				
			||||||
            for entry_name in cmd[2:]:
 | 
					 | 
				
			||||||
                data = readfile("db/" + entry_name.replace(".", "/") + ".txt")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                if data:
 | 
					 | 
				
			||||||
                    result += f"Manual page for {entry_name}:\n```\n{data}```\n"
 | 
					 | 
				
			||||||
                else:
 | 
					 | 
				
			||||||
                    result += f"No manual found for {entry_name}\n\n"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            return result, "Markdown"
 | 
					 | 
				
			||||||
        else:
 | 
					 | 
				
			||||||
            return "Usage: !help show <entry> - displays specified manual entry", None
 | 
					 | 
				
			||||||
@ -1,6 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
    "start_on_boot": true,
 | 
					 | 
				
			||||||
    "alias": "help",
 | 
					 | 
				
			||||||
    "version": 2,
 | 
					 | 
				
			||||||
    "index_file": "index.py"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,129 +0,0 @@
 | 
				
			|||||||
msg = self.MESSAGE.text.lower()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if msg == "!ping":
 | 
					 | 
				
			||||||
    current_time = time.time()
 | 
					 | 
				
			||||||
    delay = current_time - 7200 - float(self.MESSAGE.date.strftime('+%s'))
 | 
					 | 
				
			||||||
    self.RESPONSE = f"Pong in {delay} seconds"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if not os.path.exists(self.path + "scoreboard/"):
 | 
					 | 
				
			||||||
        os.mkdir(self.path + "scoreboard/")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def append_score(path, name, data):
 | 
					 | 
				
			||||||
        open(path + f"scoreboard/{name}", "a").write(data)
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    user_id = self.MESSAGE.from_user.id
 | 
					 | 
				
			||||||
    chat_id = self.MESSAGE.chat.id
 | 
					 | 
				
			||||||
    first_name = self.MESSAGE.from_user.first_name
 | 
					 | 
				
			||||||
    last_name = self.MESSAGE.from_user.last_name
 | 
					 | 
				
			||||||
    username = self.MESSAGE.from_user.username
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    append_score(self.path, self.MESSAGE.from_user.id, f"{current_time} {user_id} {chat_id} {first_name} {last_name} {username} {delay}\n")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
elif msg == "!pong":
 | 
					 | 
				
			||||||
    current_time = time.time()
 | 
					 | 
				
			||||||
    delay = current_time - 7200 - float(self.MESSAGE.date.strftime('+%s'))
 | 
					 | 
				
			||||||
    self.RESPONSE = f"Ping in {delay} seconds"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if not os.path.exists(self.path + "pong-scoreboard/"):
 | 
					 | 
				
			||||||
        os.mkdir(self.path + "pong-scoreboard/")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def append_score(path, name, data):
 | 
					 | 
				
			||||||
        open(path + f"pong-scoreboard/{name}", "a").write(data)
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    user_id = self.MESSAGE.from_user.id
 | 
					 | 
				
			||||||
    chat_id = self.MESSAGE.chat.id
 | 
					 | 
				
			||||||
    first_name = self.MESSAGE.from_user.first_name
 | 
					 | 
				
			||||||
    last_name = self.MESSAGE.from_user.last_name
 | 
					 | 
				
			||||||
    username = self.MESSAGE.from_user.username
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    append_score(self.path, self.MESSAGE.from_user.id, f"{current_time} {user_id} {chat_id} {first_name} {last_name} {username} {delay}\n")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
elif msg == "!pingtop":
 | 
					 | 
				
			||||||
    def read_score(path, name):
 | 
					 | 
				
			||||||
        if os.path.exists(path + f"scoreboard/{name}"):
 | 
					 | 
				
			||||||
            return open(path + f"scoreboard/{name}").read()
 | 
					 | 
				
			||||||
        else:
 | 
					 | 
				
			||||||
            return None
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if not os.path.exists(self.path + "scoreboard/"):
 | 
					 | 
				
			||||||
        os.mkdir(self.path + "scoreboard/")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    results = []
 | 
					 | 
				
			||||||
    for name in os.listdir(self.path + "scoreboard/"):
 | 
					 | 
				
			||||||
        data = [i for i in read_score(self.path, name).split("\n") if i != ""]
 | 
					 | 
				
			||||||
        data.sort(key = lambda x: float(x.split()[6]))
 | 
					 | 
				
			||||||
        results.append(data[0].split())
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    print(results)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    results.sort(key = lambda x: float(x[6]))
 | 
					 | 
				
			||||||
    self.RESPONSE = "<u>Ping top</u>:\n" + "\n".join( [f"{i+1}. {v[3]} {v[4]} ({v[5]}) - {v[6]}" for i, v in enumerate(results[:10])] )
 | 
					 | 
				
			||||||
    self.FORMAT = "HTML"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
elif msg == "!pongtop":
 | 
					 | 
				
			||||||
    def read_score(path, name):
 | 
					 | 
				
			||||||
        if os.path.exists(path + f"pong-scoreboard/{name}"):
 | 
					 | 
				
			||||||
            return open(path + f"pong-scoreboard/{name}").read()
 | 
					 | 
				
			||||||
        else:
 | 
					 | 
				
			||||||
            return None
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if not os.path.exists(self.path + "pong-scoreboard/"):
 | 
					 | 
				
			||||||
        os.mkdir(self.path + "pong-scoreboard/")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    results = []
 | 
					 | 
				
			||||||
    for name in os.listdir(self.path + "pong-scoreboard/"):
 | 
					 | 
				
			||||||
        data = [i for i in read_score(self.path, name).split("\n") if i != ""]
 | 
					 | 
				
			||||||
        data.sort(key = lambda x: float(x.split()[6]))
 | 
					 | 
				
			||||||
        results.append(data[0].split())
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    print(results)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    results.sort(key = lambda x: float(x[6]))
 | 
					 | 
				
			||||||
    self.RESPONSE = "<u>Pong top</u>:\n" + "\n".join( [f"{i+1}. {v[3]} {v[4]} ({v[5]}) - {v[6]}" for i, v in enumerate(results[:10])] )
 | 
					 | 
				
			||||||
    self.FORMAT = "HTML"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
elif msg == "!pingantitop":
 | 
					 | 
				
			||||||
    def read_score(path, name):
 | 
					 | 
				
			||||||
        if os.path.exists(path + f"scoreboard/{name}"):
 | 
					 | 
				
			||||||
            return open(path + f"scoreboard/{name}").read()
 | 
					 | 
				
			||||||
        else:
 | 
					 | 
				
			||||||
            return None
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if not os.path.exists(self.path + "scoreboard/"):
 | 
					 | 
				
			||||||
        os.mkdir(self.path + "scoreboard/")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    results = []
 | 
					 | 
				
			||||||
    for name in os.listdir(self.path + "scoreboard/"):
 | 
					 | 
				
			||||||
        data = [i for i in read_score(self.path, name).split("\n") if i != ""]
 | 
					 | 
				
			||||||
        data.sort(key = lambda x: float(x.split()[6]))
 | 
					 | 
				
			||||||
        results.append(data[-1].split())
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    print(results)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    results.sort(key = lambda x: float(x[6]))
 | 
					 | 
				
			||||||
    results = results[::-1]
 | 
					 | 
				
			||||||
    self.RESPONSE = "<u>Ping antitop</u>:\n" + "\n".join( [f"{i+1}. {v[3]} {v[4]} ({v[5]}) - {v[6]}" for i, v in enumerate(results[:10])] )
 | 
					 | 
				
			||||||
    self.FORMAT = "HTML"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
elif msg == "!pongantitop":
 | 
					 | 
				
			||||||
    def read_score(path, name):
 | 
					 | 
				
			||||||
        if os.path.exists(path + f"pong-scoreboard/{name}"):
 | 
					 | 
				
			||||||
            return open(path + f"pong-scoreboard/{name}").read()
 | 
					 | 
				
			||||||
        else:
 | 
					 | 
				
			||||||
            return None
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if not os.path.exists(self.path + "pong-scoreboard/"):
 | 
					 | 
				
			||||||
        os.mkdir(self.path + "pong-scoreboard/")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    results = []
 | 
					 | 
				
			||||||
    for name in os.listdir(self.path + "pong-scoreboard/"):
 | 
					 | 
				
			||||||
        data = [i for i in read_score(self.path, name).split("\n") if i != ""]
 | 
					 | 
				
			||||||
        data.sort(key = lambda x: float(x.split()[6]))
 | 
					 | 
				
			||||||
        results.append(data[-1].split())
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    print(results)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    results.sort(key = lambda x: float(x[6]))
 | 
					 | 
				
			||||||
    results = results[::-1]
 | 
					 | 
				
			||||||
    self.RESPONSE = "<u>Pong antitop</u>:\n" + "\n".join( [f"{i+1}. {v[3]} {v[4]} ({v[5]}) - {v[6]}" for i, v in enumerate(results[:10])] )
 | 
					 | 
				
			||||||
    self.FORMAT = "HTML"
 | 
					 | 
				
			||||||
@ -1,6 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
    "start_on_boot": true,
 | 
					 | 
				
			||||||
    "alias": "pingtools",
 | 
					 | 
				
			||||||
    "version": 1,
 | 
					 | 
				
			||||||
    "index_file": "index.py"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,8 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
    "trigger_lists": [
 | 
					 | 
				
			||||||
        ["fiot", "free", "sex"],
 | 
					 | 
				
			||||||
        ["fict", "free", "sex"],
 | 
					 | 
				
			||||||
        ["fice", "free", "sex"]
 | 
					 | 
				
			||||||
    ],
 | 
					 | 
				
			||||||
    "response_text": "👀"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,107 +0,0 @@
 | 
				
			|||||||
import random
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
module_path = ""
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def extract_separators(text):
 | 
					 | 
				
			||||||
    sequence_buf = ""
 | 
					 | 
				
			||||||
    seps = []
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    for i in text:
 | 
					 | 
				
			||||||
        if i in ["\n", " "]:
 | 
					 | 
				
			||||||
            sequence_buf += i
 | 
					 | 
				
			||||||
        elif sequence_buf:
 | 
					 | 
				
			||||||
            seps.append(sequence_buf)
 | 
					 | 
				
			||||||
            sequence_buf = ""
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return seps
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def process(message, path):
 | 
					 | 
				
			||||||
    if not message.text.lower().startswith("!shuf"):
 | 
					 | 
				
			||||||
        return "", None
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    global module_path
 | 
					 | 
				
			||||||
    module_path = path
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    cmd = message.text.split()
 | 
					 | 
				
			||||||
    print(cmd)
 | 
					 | 
				
			||||||
    l = len(cmd)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # settings
 | 
					 | 
				
			||||||
    split_by = "word"
 | 
					 | 
				
			||||||
    shuf_individual_words = False
 | 
					 | 
				
			||||||
    data_source = "reply"
 | 
					 | 
				
			||||||
    only_spaces = False
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    shuf_data = []
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    i = 1
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    # parsing arguments
 | 
					 | 
				
			||||||
    while i < l:
 | 
					 | 
				
			||||||
        print("C", i, cmd[i])
 | 
					 | 
				
			||||||
        if cmd[i][0] != "-" or cmd[i] == "--":
 | 
					 | 
				
			||||||
            break
 | 
					 | 
				
			||||||
        elif cmd[i] == "-i":
 | 
					 | 
				
			||||||
            shuf_individual_words = True
 | 
					 | 
				
			||||||
        elif cmd[i] == "-c":
 | 
					 | 
				
			||||||
            split_by = "char"
 | 
					 | 
				
			||||||
        elif cmd[i] == "-o":
 | 
					 | 
				
			||||||
            only_spaces = True
 | 
					 | 
				
			||||||
        i += 1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # parsing text (if any)
 | 
					 | 
				
			||||||
    while i < l:
 | 
					 | 
				
			||||||
        print("T", i, cmd[i])
 | 
					 | 
				
			||||||
        data_source = "internal"
 | 
					 | 
				
			||||||
        if split_by == "char":
 | 
					 | 
				
			||||||
            for c in cmd[i]:
 | 
					 | 
				
			||||||
                shuf_data.append(c)
 | 
					 | 
				
			||||||
            shuf_data.append(" ")
 | 
					 | 
				
			||||||
        elif split_by == "word":
 | 
					 | 
				
			||||||
            if shuf_individual_words:
 | 
					 | 
				
			||||||
                shuf_data.append(list(cmd[i]))
 | 
					 | 
				
			||||||
            else:
 | 
					 | 
				
			||||||
                shuf_data.append(cmd[i])
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        i += 1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if data_source == "reply":
 | 
					 | 
				
			||||||
        seps = extract_separators(message['reply_to_message'].text)
 | 
					 | 
				
			||||||
    else:
 | 
					 | 
				
			||||||
        seps = extract_separators(message.text)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if data_source == "reply":
 | 
					 | 
				
			||||||
        for w in message['reply_to_message'].text.split():
 | 
					 | 
				
			||||||
            if split_by == "char":
 | 
					 | 
				
			||||||
                for c in w:
 | 
					 | 
				
			||||||
                    shuf_data.append(c)
 | 
					 | 
				
			||||||
            elif split_by == "word":
 | 
					 | 
				
			||||||
                if shuf_individual_words:
 | 
					 | 
				
			||||||
                    shuf_data.append(list(w))
 | 
					 | 
				
			||||||
                else:
 | 
					 | 
				
			||||||
                    shuf_data.append(w)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if split_by == "word":
 | 
					 | 
				
			||||||
        if shuf_individual_words:
 | 
					 | 
				
			||||||
            for w in shuf_data:
 | 
					 | 
				
			||||||
                random.shuffle(w)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if only_spaces:
 | 
					 | 
				
			||||||
                return " ".join(["".join(w) for w in shuf_data]), "HTML"
 | 
					 | 
				
			||||||
            else:
 | 
					 | 
				
			||||||
                return "".join([i[0] + i[1] for i in zip(["".join(w) for w in shuf_data], seps)]) + "".join(shuf_data[-1]), "HTML"
 | 
					 | 
				
			||||||
        else:
 | 
					 | 
				
			||||||
            random.shuffle(shuf_data)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if only_spaces:
 | 
					 | 
				
			||||||
                return " ".join(shuf_data), "HTML"
 | 
					 | 
				
			||||||
            else:
 | 
					 | 
				
			||||||
                return "".join([i[0] + i[1] for i in zip(shuf_data, seps)]) + shuf_data[-1], "HTML"
 | 
					 | 
				
			||||||
    elif split_by == "char":
 | 
					 | 
				
			||||||
        if only_spaces:
 | 
					 | 
				
			||||||
            shuf_data += [" " for i in seps]
 | 
					 | 
				
			||||||
        else:
 | 
					 | 
				
			||||||
            shuf_data += seps
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        random.shuffle(shuf_data)
 | 
					 | 
				
			||||||
        return "".join(shuf_data), "HTML"
 | 
					 | 
				
			||||||
@ -1,6 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
    "start_on_boot": true,
 | 
					 | 
				
			||||||
    "alias": "shuffle",
 | 
					 | 
				
			||||||
    "version": 2,
 | 
					 | 
				
			||||||
    "index_file": "index.py"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,133 +0,0 @@
 | 
				
			|||||||
import os
 | 
					 | 
				
			||||||
import json
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def setup():
 | 
					 | 
				
			||||||
    for i in ["sub-storage"]:
 | 
					 | 
				
			||||||
        if not os.path.exists(module_path + i):
 | 
					 | 
				
			||||||
            os.mkdir(module_path + i)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def load_group(group_name):
 | 
					 | 
				
			||||||
    if os.path.exists(module_path + f"sub-storage/{group_name}.json"):
 | 
					 | 
				
			||||||
        return json.loads(open(module_path + f"sub-storage/{group_name}.json").read())
 | 
					 | 
				
			||||||
    else:
 | 
					 | 
				
			||||||
        return {"hard": [], "soft": []}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def save_group(group_name, existing_group):
 | 
					 | 
				
			||||||
    with open(module_path + f"sub-storage/{group_name}.json", "w") as f:
 | 
					 | 
				
			||||||
        f.write(json.dumps(existing_group))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def sub_to_group(group_name, tag, persistence = "soft"):
 | 
					 | 
				
			||||||
    for i in ["..", "/", "\\"]:
 | 
					 | 
				
			||||||
        if i in group_name:
 | 
					 | 
				
			||||||
            return False
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    existing_group = load_group(group_name)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if tag not in existing_group[persistence]:
 | 
					 | 
				
			||||||
        existing_group[persistence].append(tag)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    save_group(group_name, existing_group)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return True
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def unsub_from_group(group_name, tag, persistence = "soft"):
 | 
					 | 
				
			||||||
    for i in ["..", "/", "\\"]:
 | 
					 | 
				
			||||||
        if i in group_name:
 | 
					 | 
				
			||||||
            return False
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    existing_group = load_group(group_name)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if tag in existing_group[persistence]:
 | 
					 | 
				
			||||||
        existing_group[persistence].remove(tag)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    save_group(group_name, existing_group)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return True
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def get_group(cmd):
 | 
					 | 
				
			||||||
    if len(cmd) == 1:
 | 
					 | 
				
			||||||
        return "default"
 | 
					 | 
				
			||||||
    else:
 | 
					 | 
				
			||||||
        return cmd[1]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def clear_subs_in(group_name, category = "soft"):
 | 
					 | 
				
			||||||
    existing_group = load_group(group_name)
 | 
					 | 
				
			||||||
    existing_group[category] = []
 | 
					 | 
				
			||||||
    save_group(group_name, existing_group)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
module_path = ""
 | 
					 | 
				
			||||||
setup()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def process(message, path):
 | 
					 | 
				
			||||||
    global module_path
 | 
					 | 
				
			||||||
    module_path = path
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if not message.text[0] == "!":
 | 
					 | 
				
			||||||
        return "", None
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    msg = message.text.lower()
 | 
					 | 
				
			||||||
    cmd = [i for i in msg[1:].split(" ", 2) if i]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    chosen_group_name = get_group(cmd)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if cmd[0] == "sub":
 | 
					 | 
				
			||||||
        if message.from_user.username:
 | 
					 | 
				
			||||||
            if sub_to_group(chosen_group_name, message.from_user.username):
 | 
					 | 
				
			||||||
                return f"Subscribed {message.from_user.username} to the {chosen_group_name} event", None
 | 
					 | 
				
			||||||
            else:
 | 
					 | 
				
			||||||
                return f"Failed to subscribe {message.from_user.username} to the \"{chosen_group_name}\" event (event name violation)", None
 | 
					 | 
				
			||||||
        else:
 | 
					 | 
				
			||||||
            return f"Failed to subscribe {message.from_user.id} to the \"{chosen_group_name}\" event (no username available)", None
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if cmd[0] == "hardsub":
 | 
					 | 
				
			||||||
        if message.from_user.username:
 | 
					 | 
				
			||||||
            if sub_to_group(chosen_group_name, message.from_user.username, persistence = "hard"):
 | 
					 | 
				
			||||||
                return f"Hard-subscribed {message.from_user.username} to the {chosen_group_name} event", None
 | 
					 | 
				
			||||||
            else:
 | 
					 | 
				
			||||||
                return f"Failed to hard-subscribe {message.from_user.username} to the \"{chosen_group_name}\" event (event name violation)", None
 | 
					 | 
				
			||||||
        else:
 | 
					 | 
				
			||||||
            return f"Failed to hard-subscribe {message.from_user.id} to the \"{chosen_group_name}\" event (no username available)", None
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    elif cmd[0] == "unsub":
 | 
					 | 
				
			||||||
        if message.from_user.username:
 | 
					 | 
				
			||||||
            if unsub_from_group(chosen_group_name, message.from_user.username):
 | 
					 | 
				
			||||||
                return f"Unsubscribed {message.from_user.username} from the {chosen_group_name} event", None
 | 
					 | 
				
			||||||
            else:
 | 
					 | 
				
			||||||
                return f"Failed to unsubscribe {message.from_user.username} from the \"{chosen_group_name}\" event (event name violation)", None
 | 
					 | 
				
			||||||
        else:
 | 
					 | 
				
			||||||
            return f"Failed to unsubscribe {message.from_user.id} from the \"{chosen_group_name}\" event (no username available)", None
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    elif cmd[0] == "hardunsub":
 | 
					 | 
				
			||||||
        if message.from_user.username:
 | 
					 | 
				
			||||||
            if unsub_from_group(chosen_group_name, message.from_user.username, persistence = "hard"):
 | 
					 | 
				
			||||||
                return f"Unsubscribed {message.from_user.username} from the {chosen_group_name} event", None
 | 
					 | 
				
			||||||
            else:
 | 
					 | 
				
			||||||
                return f"Failed to unsubscribe {message.from_user.username} from the \"{chosen_group_name}\" event (event name violation)", None
 | 
					 | 
				
			||||||
        else:
 | 
					 | 
				
			||||||
            return f"Failed to unsubscribe {message.from_user.id} from the \"{chosen_group_name}\" event (no username available)", None
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
    elif cmd[0] == "call":
 | 
					 | 
				
			||||||
        group_data = load_group(chosen_group_name)
 | 
					 | 
				
			||||||
        tags = set()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        for subs in group_data.values():
 | 
					 | 
				
			||||||
            tags |= set([f"@{i}" for i in subs if i])
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        ping_string = " ".join(tags)
 | 
					 | 
				
			||||||
        clear_subs_in(chosen_group_name)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if len(cmd) == 3:
 | 
					 | 
				
			||||||
            return f"{message.from_user.username} calls \"{chosen_group_name}\": {cmd[2]}\n{ping_string}", None
 | 
					 | 
				
			||||||
        else:
 | 
					 | 
				
			||||||
            return f"{message.from_user.username} calls \"{chosen_group_name}\"\n{ping_string}", None
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    elif cmd[0] == "sublist":
 | 
					 | 
				
			||||||
        group_data = load_group(chosen_group_name)
 | 
					 | 
				
			||||||
        responce = f"Subscribers for group \"{chosen_group_name}\":\n"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        for name, subs in group_data.items():
 | 
					 | 
				
			||||||
            responce += f"{name}: {', '.join(subs)}\n"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return responce, None
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@ -1,6 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
    "start_on_boot": true,
 | 
					 | 
				
			||||||
    "alias": "tag-sub",
 | 
					 | 
				
			||||||
    "version": 2,
 | 
					 | 
				
			||||||
    "index_file": "index.py"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -22,7 +22,7 @@ if (command[0] in self.aliases) and (1 <= command_length <= 3):
 | 
				
			|||||||
                "target": target,
 | 
					                "target": target,
 | 
				
			||||||
                "format": "text"}
 | 
					                "format": "text"}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        res = requests.post("http://10.1.1.1:5010/translate", data = data)
 | 
					        res = requests.post("http://127.0.0.1:5000/translate", data = data)
 | 
				
			||||||
        result = json.loads(res.text)
 | 
					        result = json.loads(res.text)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if source == "auto":
 | 
					        if source == "auto":
 | 
				
			||||||
 | 
				
			|||||||
@ -4,42 +4,37 @@ command_length = len(command)
 | 
				
			|||||||
def escaped_string(unescaped_string):
 | 
					def escaped_string(unescaped_string):
 | 
				
			||||||
    result_string = str(unescaped_string)
 | 
					    result_string = str(unescaped_string)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    escaping_rules = {
 | 
					    for i in ["/", "<", ">"]:
 | 
				
			||||||
        "<": "<",
 | 
					        result_string = result_string.replace(i, f"\\{i}")
 | 
				
			||||||
        ">": ">",
 | 
					 | 
				
			||||||
        '"': """
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    for i in escaping_rules.items():
 | 
					 | 
				
			||||||
        result_string = result_string.replace(i[0], i[1])
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return result_string
 | 
					    return result_string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if (command[0] in self.aliases) and (1 <= command_length <= 3):
 | 
					if (command[0] in self.aliases) and (1 <= command_length <= 3):
 | 
				
			||||||
    models = json.loads(readfile(self.path + "translate_models.json"))
 | 
					    try:
 | 
				
			||||||
 | 
					        models = json.loads(readfile(self.path + "translate_models.json"))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if command_length == 1:
 | 
					        if command_length == 1:
 | 
				
			||||||
        chosen_model = "cz-ua"
 | 
					            chosen_model = "cz-ua"
 | 
				
			||||||
    else:
 | 
					        else:
 | 
				
			||||||
        chosen_model = command[1]
 | 
					            chosen_model = command[1]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if command_length == 3:
 | 
					        if command_length == 3:
 | 
				
			||||||
        text_to_decode = command[2]
 | 
					            text_to_decode = command[2]
 | 
				
			||||||
    else:
 | 
					        else:
 | 
				
			||||||
        if self.MESSAGE['reply_to_message'].caption:
 | 
					            text_to_decode = self.MESSAGE['reply_to_message']['text']
 | 
				
			||||||
            text_to_decode = self.MESSAGE['reply_to_message'].caption
 | 
					    
 | 
				
			||||||
        elif self.MESSAGE['reply_to_message'].text:
 | 
					        decoded_text = text_to_decode
 | 
				
			||||||
            text_to_decode = self.MESSAGE['reply_to_message'].text
 | 
					        if chosen_model not in models:
 | 
				
			||||||
 | 
					            self.RESPONSE = f"Такого варіанту транслітерації не існує. Доступні варіанти: " \
 | 
				
			||||||
 | 
					                            f"{', '.join(list(models.keys()))}"
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            for i in models[chosen_model]:
 | 
				
			||||||
 | 
					                decoded_text = decoded_text.replace(i[0], i[1])
 | 
				
			||||||
 | 
					                decoded_text = decoded_text.replace(i[0].capitalize(), i[1].capitalize())
 | 
				
			||||||
 | 
					                decoded_text = decoded_text.replace(i[0].upper(), i[1].upper())
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					            self.RESPONSE = f"<b><u>Результат</u></b>\n{escaped_string(decoded_text)}"
 | 
				
			||||||
 | 
					            self.FORMAT = "HTML"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    decoded_text = text_to_decode
 | 
					    except Exception as e:
 | 
				
			||||||
    if chosen_model not in models:
 | 
					        print(f"[translit-decoder] Got exception: {e}")
 | 
				
			||||||
        self.RESPONSE = f"Такого варіанту транслітерації не існує. Доступні варіанти: " \
 | 
					 | 
				
			||||||
                        f"{', '.join(list(models.keys()))}"
 | 
					 | 
				
			||||||
    else:
 | 
					 | 
				
			||||||
        for i in models[chosen_model]:
 | 
					 | 
				
			||||||
            decoded_text = decoded_text.replace(i[0].lower(), i[1].lower())
 | 
					 | 
				
			||||||
            decoded_text = decoded_text.replace(i[0].capitalize(), i[1].capitalize())
 | 
					 | 
				
			||||||
            decoded_text = decoded_text.replace(i[0].upper(), i[1].upper())
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        self.RESPONSE = f"<b><u>Результат</u></b>\n{escaped_string(decoded_text)}"
 | 
					 | 
				
			||||||
        self.FORMAT = "HTML"
 | 
					 | 
				
			||||||
 | 
				
			|||||||
@ -75,100 +75,5 @@
 | 
				
			|||||||
        ["$", ";"],
 | 
					        ["$", ";"],
 | 
				
			||||||
        ["^", ":"],
 | 
					        ["^", ":"],
 | 
				
			||||||
        ["&", "?"]
 | 
					        ["&", "?"]
 | 
				
			||||||
    ],
 | 
					 | 
				
			||||||
    "ua-en-direct": [
 | 
					 | 
				
			||||||
        ["й", "q"],
 | 
					 | 
				
			||||||
        ["ц", "w"],
 | 
					 | 
				
			||||||
        ["у", "e"],
 | 
					 | 
				
			||||||
        ["к", "r"],
 | 
					 | 
				
			||||||
        ["е", "t"],
 | 
					 | 
				
			||||||
        ["н", "y"],
 | 
					 | 
				
			||||||
        ["г", "u"],
 | 
					 | 
				
			||||||
        ["ш", "i"],
 | 
					 | 
				
			||||||
        ["щ", "o"],
 | 
					 | 
				
			||||||
        ["з", "p"],
 | 
					 | 
				
			||||||
        ["х", "["],
 | 
					 | 
				
			||||||
        ["ї", "]"],
 | 
					 | 
				
			||||||
        ["ф", "a"],
 | 
					 | 
				
			||||||
        ["і", "s"],
 | 
					 | 
				
			||||||
        ["в", "d"],
 | 
					 | 
				
			||||||
        ["а", "f"],
 | 
					 | 
				
			||||||
        ["п", "g"],
 | 
					 | 
				
			||||||
        ["р", "h"],
 | 
					 | 
				
			||||||
        ["о", "j"],
 | 
					 | 
				
			||||||
        ["л", "k"],
 | 
					 | 
				
			||||||
        ["д", "l"],
 | 
					 | 
				
			||||||
        ["ж", ";"],
 | 
					 | 
				
			||||||
        ["Ж", ":"],
 | 
					 | 
				
			||||||
        ["Є", "\""],
 | 
					 | 
				
			||||||
        ["є", "'"],
 | 
					 | 
				
			||||||
        ["я", "z"],
 | 
					 | 
				
			||||||
        ["ч", "x"],
 | 
					 | 
				
			||||||
        ["с", "c"],
 | 
					 | 
				
			||||||
        ["м", "v"],
 | 
					 | 
				
			||||||
        ["и", "b"],
 | 
					 | 
				
			||||||
        ["т", "n"],
 | 
					 | 
				
			||||||
        ["ь", "m"],
 | 
					 | 
				
			||||||
        [",", "?"],
 | 
					 | 
				
			||||||
        [".", "/"],
 | 
					 | 
				
			||||||
        ["\"", "@"],
 | 
					 | 
				
			||||||
        ["№", "#"],
 | 
					 | 
				
			||||||
        [";", "$"],
 | 
					 | 
				
			||||||
        [":", "^"],
 | 
					 | 
				
			||||||
        ["?", "&"],
 | 
					 | 
				
			||||||
        ["б", ","],
 | 
					 | 
				
			||||||
        ["ю", "."]
 | 
					 | 
				
			||||||
    ],
 | 
					 | 
				
			||||||
    "en-men": [
 | 
					 | 
				
			||||||
        ["a", "4"],
 | 
					 | 
				
			||||||
        ["b", "8"],
 | 
					 | 
				
			||||||
        ["c", "("],
 | 
					 | 
				
			||||||
        ["d", "|)"],
 | 
					 | 
				
			||||||
        ["e", "3"],
 | 
					 | 
				
			||||||
        ["f", "|="],
 | 
					 | 
				
			||||||
        ["g", "6"],
 | 
					 | 
				
			||||||
        ["h", "#"],
 | 
					 | 
				
			||||||
        ["i", "!"],
 | 
					 | 
				
			||||||
        ["j", "|_"],
 | 
					 | 
				
			||||||
        ["k", "|<"],
 | 
					 | 
				
			||||||
        ["l", "1"],
 | 
					 | 
				
			||||||
        ["m", "//N"],
 | 
					 | 
				
			||||||
        ["o", "0"],
 | 
					 | 
				
			||||||
        ["p", "|D"],
 | 
					 | 
				
			||||||
        ["q", "(,)"],
 | 
					 | 
				
			||||||
        ["r", "|2"],
 | 
					 | 
				
			||||||
        ["s", "5"],
 | 
					 | 
				
			||||||
        ["t", "7"],
 | 
					 | 
				
			||||||
        ["u", "|_|"],
 | 
					 | 
				
			||||||
        ["w", "//"],
 | 
					 | 
				
			||||||
        ["v", "/"],
 | 
					 | 
				
			||||||
        ["x", "><"],
 | 
					 | 
				
			||||||
        ["y", "`/"]
 | 
					 | 
				
			||||||
    ],
 | 
					 | 
				
			||||||
    "men-en": [
 | 
					 | 
				
			||||||
        ["4", "a"],
 | 
					 | 
				
			||||||
        ["8", "b"],
 | 
					 | 
				
			||||||
        ["(,)", "q"],
 | 
					 | 
				
			||||||
        ["(", "c"],
 | 
					 | 
				
			||||||
        ["|)", "d"],
 | 
					 | 
				
			||||||
        ["3", "e"],
 | 
					 | 
				
			||||||
        ["|=", "f"],
 | 
					 | 
				
			||||||
        ["6", "g"],
 | 
					 | 
				
			||||||
        ["#", "h"],
 | 
					 | 
				
			||||||
        ["!", "i"],
 | 
					 | 
				
			||||||
        ["|_|", "u"],
 | 
					 | 
				
			||||||
        ["|_", "j"],
 | 
					 | 
				
			||||||
        ["|<", "k"],
 | 
					 | 
				
			||||||
        ["1", "l"],
 | 
					 | 
				
			||||||
        ["//N", "m"],
 | 
					 | 
				
			||||||
        ["0", "o"],
 | 
					 | 
				
			||||||
        ["|D", "p"],
 | 
					 | 
				
			||||||
        ["|2", "r"],
 | 
					 | 
				
			||||||
        ["5", "s"],
 | 
					 | 
				
			||||||
        ["7", "t"],
 | 
					 | 
				
			||||||
        ["//", "w"],
 | 
					 | 
				
			||||||
        ["`/", "y"],
 | 
					 | 
				
			||||||
        ["/", "v"],
 | 
					 | 
				
			||||||
        ["><", "x"]
 | 
					 | 
				
			||||||
    ]
 | 
					    ]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -1,124 +0,0 @@
 | 
				
			|||||||
import re
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
''' Grammar reference
 | 
					 | 
				
			||||||
all_possible_match_strings = [
 | 
					 | 
				
			||||||
    "силка",  "силки",
 | 
					 | 
				
			||||||
    "силки",  "силок",
 | 
					 | 
				
			||||||
    "силці",  "силкам",
 | 
					 | 
				
			||||||
    "силку",  "силки",
 | 
					 | 
				
			||||||
    "силкою", "силками",
 | 
					 | 
				
			||||||
    "силці",  "силках",
 | 
					 | 
				
			||||||
    "силко",  "силки",
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    "лінк",   "лінка",  "лінки",
 | 
					 | 
				
			||||||
    "лінку",  "лінки",  "лінок",
 | 
					 | 
				
			||||||
    "лінку",  "лінці",  "лінкам",
 | 
					 | 
				
			||||||
    "лінк",   "лінку",  "лінки",
 | 
					 | 
				
			||||||
    "лінком", "лінкою", "лінками",
 | 
					 | 
				
			||||||
    "лінку",  "лінці",  "лінках",
 | 
					 | 
				
			||||||
    "лінке",  "лінко",  "лінки"
 | 
					 | 
				
			||||||
]
 | 
					 | 
				
			||||||
'''
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
EXTRACT_PADDING = 11
 | 
					 | 
				
			||||||
EXTRACT_INCLUDE_WHOLE_WORDS = True
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
corrections = [       # IDs
 | 
					 | 
				
			||||||
    "посилання",      # 0
 | 
					 | 
				
			||||||
    "посиланню",      # 1
 | 
					 | 
				
			||||||
    "посиланням",     # 2
 | 
					 | 
				
			||||||
    "на посиланні",   # 3
 | 
					 | 
				
			||||||
    "посилань",       # 4
 | 
					 | 
				
			||||||
    "посиланнями",    # 5
 | 
					 | 
				
			||||||
    "посиланнях"      # 6
 | 
					 | 
				
			||||||
]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
replacements = [
 | 
					 | 
				
			||||||
    ["силка", "силки", "силку", "силко",
 | 
					 | 
				
			||||||
     "лінк", "лінка", "лінки", "лінку", "лінке", "лінко"],
 | 
					 | 
				
			||||||
    ["силці",
 | 
					 | 
				
			||||||
     "лінку", "лінці"],
 | 
					 | 
				
			||||||
    ["силкам", "силкою",
 | 
					 | 
				
			||||||
     "лінкам", "лінком", "лінкою"],
 | 
					 | 
				
			||||||
    ["на силці",
 | 
					 | 
				
			||||||
     "на лінку", "на лінці"],
 | 
					 | 
				
			||||||
    ["силок",
 | 
					 | 
				
			||||||
     "лінок"],
 | 
					 | 
				
			||||||
    ["силками",
 | 
					 | 
				
			||||||
     "лінками"],
 | 
					 | 
				
			||||||
    ["силках",
 | 
					 | 
				
			||||||
     "лінках"]
 | 
					 | 
				
			||||||
]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#unique_match_strings = set(all_possible_match_strings)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ua_alphabet = "абвгґдеєжзиіїйклмнопрстуфхцчшщьюя"
 | 
					 | 
				
			||||||
#regex_matchers = [re.compile(fr"((?<=[^{ua_alphabet}])|(?<=\b)|(?<=^)|(?<= )){i}((?=[^{ua_alphabet}])|(?=\b)|(?=$)|(?= ))", re.DEBUG)
 | 
					 | 
				
			||||||
#        for i in unique_match_strings]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
ua_alphabet = "абвгґдеєжзиіїйклмнопрстуфхцчшщьюя"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
for i, group in enumerate(replacements):
 | 
					 | 
				
			||||||
    for j, match_word in enumerate(group):
 | 
					 | 
				
			||||||
        #replacements[i][j] = re.compile(fr"((?<=[^{ua_alphabet}])|(?<=\b)|(?<=^)|(?<= )){i}((?=[^{ua_alphabet}])|(?=\b)|(?=$)|(?= ))")
 | 
					 | 
				
			||||||
        replacements[i][j] = [match_word, re.compile(fr"((?<=[^{ua_alphabet}])|(?<=\b)|(?<=^)|(?<= )){match_word}((?=[^{ua_alphabet}])|(?=\b)|(?=$)|(?= ))")]
 | 
					 | 
				
			||||||
        #print(replacements[i][j])
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#_ = [print(fr"(?<=[^абвгґдеєжзиіїйклмнопрстуфхцчшщьюя]){i}(?=[^абвгґдеєжзиіїйклмнопрстуфхцчшщьюя])") for i in unique_match_strings]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def process(message, path):
 | 
					 | 
				
			||||||
    lowercase_message = message.text.lower()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    for correct_word_id, group in enumerate(replacements):
 | 
					 | 
				
			||||||
        for match_word, matcher in group:
 | 
					 | 
				
			||||||
            result = matcher.search(lowercase_message)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if result:
 | 
					 | 
				
			||||||
                l = len(message.text)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                mistake_start = result.start()
 | 
					 | 
				
			||||||
                mistake_end = result.end()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                print(mistake_start, mistake_end)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                original_text_before = message.text[max(mistake_start-EXTRACT_PADDING,0):mistake_start]
 | 
					 | 
				
			||||||
                original_text_after = message.text[mistake_end:min(mistake_end+EXTRACT_PADDING,l)]
 | 
					 | 
				
			||||||
                original_text_mistake = message.text[mistake_start:mistake_end]
 | 
					 | 
				
			||||||
                
 | 
					 | 
				
			||||||
                if EXTRACT_INCLUDE_WHOLE_WORDS:
 | 
					 | 
				
			||||||
                    while 0 <= mistake_start - EXTRACT_PADDING - 1 < l and \
 | 
					 | 
				
			||||||
                            message.text[mistake_start-EXTRACT_PADDING-1].isalnum():
 | 
					 | 
				
			||||||
                        mistake_start -= 1
 | 
					 | 
				
			||||||
                        original_text_before = message.text[max(mistake_start-EXTRACT_PADDING,0):result.start()]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    while 0 <= mistake_end + EXTRACT_PADDING < l and \
 | 
					 | 
				
			||||||
                            message.text[mistake_end+EXTRACT_PADDING].isalnum():
 | 
					 | 
				
			||||||
                        mistake_end += 1
 | 
					 | 
				
			||||||
                        original_text_after = message.text[result.end():min(mistake_end+EXTRACT_PADDING,l)]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                if len(message.text[:mistake_start]) > EXTRACT_PADDING:
 | 
					 | 
				
			||||||
                    original_text_before_continue = "..."
 | 
					 | 
				
			||||||
                else:
 | 
					 | 
				
			||||||
                    original_text_before_continue = ""
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                if len(message.text[mistake_end:]) > EXTRACT_PADDING:
 | 
					 | 
				
			||||||
                    original_text_after_continue = "..."
 | 
					 | 
				
			||||||
                else:
 | 
					 | 
				
			||||||
                    original_text_after_continue = ""
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                original_extract = original_text_before_continue + original_text_before \
 | 
					 | 
				
			||||||
                        + original_text_mistake + original_text_after + original_text_after_continue
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                correct_word = corrections[correct_word_id]
 | 
					 | 
				
			||||||
                if original_text_mistake == match_word.capitalize():
 | 
					 | 
				
			||||||
                    correct_word = corrections[correct_word_id].capitalize()
 | 
					 | 
				
			||||||
                elif original_text_mistake == match_word.upper():
 | 
					 | 
				
			||||||
                    correct_word = corrections[correct_word_id].upper()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                fixed_extract = original_text_before_continue + original_text_before \
 | 
					 | 
				
			||||||
                        + correct_word + original_text_after + original_text_after_continue
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                return f'"{original_extract}" -> "{fixed_extract}" 🌚', None
 | 
					 | 
				
			||||||
    else:
 | 
					 | 
				
			||||||
        return "", None
 | 
					 | 
				
			||||||
@ -1,6 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
    "start_on_boot": false,
 | 
					 | 
				
			||||||
    "alias": "troll-spelling-corrector",
 | 
					 | 
				
			||||||
    "version": 2,
 | 
					 | 
				
			||||||
    "index_file": "index.py"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user