From 3c876211c2f74b36b6c0c88e2356f9ec8137c6c0 Mon Sep 17 00:00:00 2001 From: "aljazbrodar." Date: Sun, 7 Dec 2025 09:56:50 +0100 Subject: [PATCH] checkpoint --- ass2/simulator/.qtcreator/CMakeLists.txt.user | 2 +- ass2/simulator/CMakeLists.txt | 3 + ...=> codemodel-v2-bf109316b2adb0d27109.json} | 4 +- ...rectory-.-Debug-37186cc2dcdc365a64e7.json} | 4 +- ...on => index-2025-12-07T08-37-00-0253.json} | 4 +- ...simulator-Debug-2b3217783aa5062c29e1.json} | 30 +- ...=> codemodel-v2-9908d093f7d320a6f887.json} | 4 +- ...rectory-.-Debug-b087ac99b4952b24d922.json} | 4 +- ...on => index-2025-12-07T08-37-15-0594.json} | 4 +- ...simulator-Debug-edef6bab040a42101471.json} | 58 +++- .../build/Desktop_Qt_6_10_1-Debug/.ninja_deps | Bin 118904 -> 75628 bytes .../build/Desktop_Qt_6_10_1-Debug/.ninja_log | 38 +-- .../index/executor.cpp.49C8014B8C305999.idx | Bin 0 -> 2620 bytes .../index/executor.h.E9A837EC0BDCD453.idx | Bin 0 -> 948 bytes .../index/loader.cpp.A594640CB9A0C658.idx | Bin 0 -> 1814 bytes .../index/loader.cpp.E84C7DA30F06D692.idx | Bin 0 -> 1796 bytes .../index/loader.h.0750D488C9967C0E.idx | Bin 0 -> 1788 bytes .../index/loader.h.496A63EDF895C00B.idx | Bin 0 -> 370 bytes .../index/machine.cpp.FD5DF53B10242751.idx | Bin 5152 -> 9758 bytes .../index/machine.h.D09D611E77E172BE.idx | Bin 3536 -> 3668 bytes .../index/opcode.cpp.015FD9F3D1CBD5AF.idx | Bin 1796 -> 1688 bytes .../index/opcode.h.2460D9A23E2279B0.idx | Bin 3678 -> 3678 bytes .../index/std_thread.h.CAAD0C2FDC550D68.idx | Bin 0 -> 5774 bytes .../this_thread_sleep.h.23766C414BE25E0F.idx | Bin 0 -> 2196 bytes .../clangd/index/thread.B3E6C045DB9045EA.idx | Bin 0 -> 2120 bytes .../.qtc_clangd/compile_commands.json | 2 +- .../simulator_autogen.dir/AutogenInfo.json | 14 + .../Testing/Temporary/LastTest.log | 4 +- .../build/Desktop_Qt_6_10_1-Debug/build.ninja | 18 +- ass2/simulator/executor.cpp | 27 ++ ass2/simulator/executor.h | 26 ++ ass2/simulator/loader.cpp | 3 + ass2/simulator/loader.h | 19 ++ ass2/simulator/machine.cpp | 302 ++++++++++-------- ass2/simulator/machine.h | 2 + 35 files changed, 365 insertions(+), 207 deletions(-) rename ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply.prev/{codemodel-v2-fc5483802601394ec595.json => codemodel-v2-bf109316b2adb0d27109.json} (91%) rename ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/{reply/directory-.-Debug-9e88f268bb4c5fb675f4.json => reply.prev/directory-.-Debug-37186cc2dcdc365a64e7.json} (95%) rename ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply.prev/{index-2025-11-24T18-29-39-0158.json => index-2025-12-07T08-37-00-0253.json} (92%) rename ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/{reply/target-simulator-Debug-44f8bd757c2b053c3c98.json => reply.prev/target-simulator-Debug-2b3217783aa5062c29e1.json} (96%) rename ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply/{codemodel-v2-8462ebb8de7ac0ba3995.json => codemodel-v2-9908d093f7d320a6f887.json} (91%) rename ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/{reply.prev/directory-.-Debug-b6d99062396e1794a7ce.json => reply/directory-.-Debug-b087ac99b4952b24d922.json} (95%) rename ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply/{index-2025-11-27T13-24-51-0967.json => index-2025-12-07T08-37-15-0594.json} (92%) rename ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/{reply.prev/target-simulator-Debug-0cbdc686daa89d68b1d7.json => reply/target-simulator-Debug-edef6bab040a42101471.json} (92%) create mode 100644 ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.qtc_clangd/.cache/clangd/index/executor.cpp.49C8014B8C305999.idx create mode 100644 ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.qtc_clangd/.cache/clangd/index/executor.h.E9A837EC0BDCD453.idx create mode 100644 ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.qtc_clangd/.cache/clangd/index/loader.cpp.A594640CB9A0C658.idx create mode 100644 ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.qtc_clangd/.cache/clangd/index/loader.cpp.E84C7DA30F06D692.idx create mode 100644 ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.qtc_clangd/.cache/clangd/index/loader.h.0750D488C9967C0E.idx create mode 100644 ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.qtc_clangd/.cache/clangd/index/loader.h.496A63EDF895C00B.idx create mode 100644 ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.qtc_clangd/.cache/clangd/index/std_thread.h.CAAD0C2FDC550D68.idx create mode 100644 ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.qtc_clangd/.cache/clangd/index/this_thread_sleep.h.23766C414BE25E0F.idx create mode 100644 ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.qtc_clangd/.cache/clangd/index/thread.B3E6C045DB9045EA.idx create mode 100644 ass2/simulator/executor.cpp create mode 100644 ass2/simulator/executor.h create mode 100644 ass2/simulator/loader.cpp create mode 100644 ass2/simulator/loader.h diff --git a/ass2/simulator/.qtcreator/CMakeLists.txt.user b/ass2/simulator/.qtcreator/CMakeLists.txt.user index d766c86..00fccf8 100644 --- a/ass2/simulator/.qtcreator/CMakeLists.txt.user +++ b/ass2/simulator/.qtcreator/CMakeLists.txt.user @@ -1,6 +1,6 @@ - + EnvironmentId diff --git a/ass2/simulator/CMakeLists.txt b/ass2/simulator/CMakeLists.txt index b1719c4..6359cf8 100644 --- a/ass2/simulator/CMakeLists.txt +++ b/ass2/simulator/CMakeLists.txt @@ -16,6 +16,9 @@ qt_add_executable(simulator device.h device.cpp opcode.h opcode.cpp + executor.h executor.cpp + loader.h loader.cpp + ) target_link_libraries(simulator diff --git a/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply.prev/codemodel-v2-fc5483802601394ec595.json b/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply.prev/codemodel-v2-bf109316b2adb0d27109.json similarity index 91% rename from ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply.prev/codemodel-v2-fc5483802601394ec595.json rename to ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply.prev/codemodel-v2-bf109316b2adb0d27109.json index 43bc05f..ce48c4e 100644 --- a/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply.prev/codemodel-v2-fc5483802601394ec595.json +++ b/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply.prev/codemodel-v2-bf109316b2adb0d27109.json @@ -7,7 +7,7 @@ { "build" : ".", "hasInstallRule" : true, - "jsonFile" : "directory-.-Debug-b6d99062396e1794a7ce.json", + "jsonFile" : "directory-.-Debug-37186cc2dcdc365a64e7.json", "minimumCMakeVersion" : { "string" : "3.16" @@ -44,7 +44,7 @@ { "directoryIndex" : 0, "id" : "simulator::@6890427a1f51a3e7e1df", - "jsonFile" : "target-simulator-Debug-0cbdc686daa89d68b1d7.json", + "jsonFile" : "target-simulator-Debug-2b3217783aa5062c29e1.json", "name" : "simulator", "projectIndex" : 0 }, diff --git a/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply/directory-.-Debug-9e88f268bb4c5fb675f4.json b/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply.prev/directory-.-Debug-37186cc2dcdc365a64e7.json similarity index 95% rename from ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply/directory-.-Debug-9e88f268bb4c5fb675f4.json rename to ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply.prev/directory-.-Debug-37186cc2dcdc365a64e7.json index 4b8072a..d920542 100644 --- a/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply/directory-.-Debug-9e88f268bb4c5fb675f4.json +++ b/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply.prev/directory-.-Debug-37186cc2dcdc365a64e7.json @@ -17,13 +17,13 @@ { "command" : 0, "file" : 0, - "line" : 29, + "line" : 31, "parent" : 0 }, { "command" : 0, "file" : 0, - "line" : 40, + "line" : 42, "parent" : 0 } ] diff --git a/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply.prev/index-2025-11-24T18-29-39-0158.json b/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply.prev/index-2025-12-07T08-37-00-0253.json similarity index 92% rename from ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply.prev/index-2025-11-24T18-29-39-0158.json rename to ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply.prev/index-2025-12-07T08-37-00-0253.json index da92b46..ce4e33a 100644 --- a/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply.prev/index-2025-11-24T18-29-39-0158.json +++ b/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply.prev/index-2025-12-07T08-37-00-0253.json @@ -26,7 +26,7 @@ "objects" : [ { - "jsonFile" : "codemodel-v2-fc5483802601394ec595.json", + "jsonFile" : "codemodel-v2-bf109316b2adb0d27109.json", "kind" : "codemodel", "version" : { @@ -77,7 +77,7 @@ }, "codemodel-v2" : { - "jsonFile" : "codemodel-v2-fc5483802601394ec595.json", + "jsonFile" : "codemodel-v2-bf109316b2adb0d27109.json", "kind" : "codemodel", "version" : { diff --git a/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply/target-simulator-Debug-44f8bd757c2b053c3c98.json b/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply.prev/target-simulator-Debug-2b3217783aa5062c29e1.json similarity index 96% rename from ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply/target-simulator-Debug-44f8bd757c2b053c3c98.json rename to ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply.prev/target-simulator-Debug-2b3217783aa5062c29e1.json index b8b0ba5..9b5daf2 100644 --- a/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply/target-simulator-Debug-44f8bd757c2b053c3c98.json +++ b/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply.prev/target-simulator-Debug-2b3217783aa5062c29e1.json @@ -71,13 +71,13 @@ { "command" : 4, "file" : 1, - "line" : 29, + "line" : 31, "parent" : 0 }, { "command" : 5, "file" : 1, - "line" : 21, + "line" : 23, "parent" : 0 }, { @@ -292,7 +292,8 @@ 2, 6, 8, - 10 + 10, + 12 ] } ], @@ -383,8 +384,8 @@ "sourceIndexes" : [ 0, - 11, - 12 + 13, + 14 ] }, { @@ -395,7 +396,8 @@ 2, 6, 8, - 10 + 10, + 12 ] }, { @@ -405,7 +407,8 @@ 3, 5, 7, - 9 + 9, + 11 ] }, { @@ -419,7 +422,7 @@ "name" : "CMake Rules", "sourceIndexes" : [ - 13 + 15 ] } ], @@ -487,6 +490,17 @@ "path" : "opcode.cpp", "sourceGroupIndex" : 1 }, + { + "backtrace" : 4, + "path" : "executor.h", + "sourceGroupIndex" : 2 + }, + { + "backtrace" : 4, + "compileGroupIndex" : 0, + "path" : "executor.cpp", + "sourceGroupIndex" : 1 + }, { "backtrace" : 0, "isGenerated" : true, diff --git a/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply/codemodel-v2-8462ebb8de7ac0ba3995.json b/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply/codemodel-v2-9908d093f7d320a6f887.json similarity index 91% rename from ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply/codemodel-v2-8462ebb8de7ac0ba3995.json rename to ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply/codemodel-v2-9908d093f7d320a6f887.json index 91d772c..314b4d9 100644 --- a/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply/codemodel-v2-8462ebb8de7ac0ba3995.json +++ b/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply/codemodel-v2-9908d093f7d320a6f887.json @@ -7,7 +7,7 @@ { "build" : ".", "hasInstallRule" : true, - "jsonFile" : "directory-.-Debug-9e88f268bb4c5fb675f4.json", + "jsonFile" : "directory-.-Debug-b087ac99b4952b24d922.json", "minimumCMakeVersion" : { "string" : "3.16" @@ -44,7 +44,7 @@ { "directoryIndex" : 0, "id" : "simulator::@6890427a1f51a3e7e1df", - "jsonFile" : "target-simulator-Debug-44f8bd757c2b053c3c98.json", + "jsonFile" : "target-simulator-Debug-edef6bab040a42101471.json", "name" : "simulator", "projectIndex" : 0 }, diff --git a/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply.prev/directory-.-Debug-b6d99062396e1794a7ce.json b/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply/directory-.-Debug-b087ac99b4952b24d922.json similarity index 95% rename from ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply.prev/directory-.-Debug-b6d99062396e1794a7ce.json rename to ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply/directory-.-Debug-b087ac99b4952b24d922.json index f362aa4..d92f347 100644 --- a/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply.prev/directory-.-Debug-b6d99062396e1794a7ce.json +++ b/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply/directory-.-Debug-b087ac99b4952b24d922.json @@ -17,13 +17,13 @@ { "command" : 0, "file" : 0, - "line" : 28, + "line" : 32, "parent" : 0 }, { "command" : 0, "file" : 0, - "line" : 39, + "line" : 43, "parent" : 0 } ] diff --git a/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply/index-2025-11-27T13-24-51-0967.json b/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply/index-2025-12-07T08-37-15-0594.json similarity index 92% rename from ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply/index-2025-11-27T13-24-51-0967.json rename to ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply/index-2025-12-07T08-37-15-0594.json index aeda707..73bf779 100644 --- a/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply/index-2025-11-27T13-24-51-0967.json +++ b/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply/index-2025-12-07T08-37-15-0594.json @@ -26,7 +26,7 @@ "objects" : [ { - "jsonFile" : "codemodel-v2-8462ebb8de7ac0ba3995.json", + "jsonFile" : "codemodel-v2-9908d093f7d320a6f887.json", "kind" : "codemodel", "version" : { @@ -77,7 +77,7 @@ }, "codemodel-v2" : { - "jsonFile" : "codemodel-v2-8462ebb8de7ac0ba3995.json", + "jsonFile" : "codemodel-v2-9908d093f7d320a6f887.json", "kind" : "codemodel", "version" : { diff --git a/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply.prev/target-simulator-Debug-0cbdc686daa89d68b1d7.json b/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply/target-simulator-Debug-edef6bab040a42101471.json similarity index 92% rename from ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply.prev/target-simulator-Debug-0cbdc686daa89d68b1d7.json rename to ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply/target-simulator-Debug-edef6bab040a42101471.json index b35f757..1874530 100644 --- a/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply.prev/target-simulator-Debug-0cbdc686daa89d68b1d7.json +++ b/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.cmake/api/v1/reply/target-simulator-Debug-edef6bab040a42101471.json @@ -71,13 +71,13 @@ { "command" : 4, "file" : 1, - "line" : 28, + "line" : 32, "parent" : 0 }, { "command" : 5, "file" : 1, - "line" : 20, + "line" : 24, "parent" : 0 }, { @@ -291,7 +291,10 @@ 1, 2, 6, - 8 + 8, + 10, + 12, + 14 ] } ], @@ -382,8 +385,8 @@ "sourceIndexes" : [ 0, - 9, - 10 + 15, + 16 ] }, { @@ -393,7 +396,10 @@ 1, 2, 6, - 8 + 8, + 10, + 12, + 14 ] }, { @@ -402,7 +408,10 @@ [ 3, 5, - 7 + 7, + 9, + 11, + 13 ] }, { @@ -416,7 +425,7 @@ "name" : "CMake Rules", "sourceIndexes" : [ - 11 + 17 ] } ], @@ -473,6 +482,39 @@ "path" : "device.cpp", "sourceGroupIndex" : 1 }, + { + "backtrace" : 4, + "path" : "opcode.h", + "sourceGroupIndex" : 2 + }, + { + "backtrace" : 4, + "compileGroupIndex" : 0, + "path" : "opcode.cpp", + "sourceGroupIndex" : 1 + }, + { + "backtrace" : 4, + "path" : "executor.h", + "sourceGroupIndex" : 2 + }, + { + "backtrace" : 4, + "compileGroupIndex" : 0, + "path" : "executor.cpp", + "sourceGroupIndex" : 1 + }, + { + "backtrace" : 4, + "path" : "loader.h", + "sourceGroupIndex" : 2 + }, + { + "backtrace" : 4, + "compileGroupIndex" : 0, + "path" : "loader.cpp", + "sourceGroupIndex" : 1 + }, { "backtrace" : 0, "isGenerated" : true, diff --git a/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.ninja_deps b/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.ninja_deps index c057401d8f040251516c3d38835776bbfa88afe0..ccc5efd260890978404e22bd2f6bcee67366d383 100644 GIT binary patch literal 75628 zcmeI*cYG8@|G@FF_ue~pRFcraPVX&rq#T>O&E1k~x!X%YL{J2zgCeMa2uc$K3-(@+ zCLs3Sd+++#exKRhyWAzYvYYVNkLUHgy^!pDXLe?GcDCH^nGJ$kaFpUv!_fox7D6;Y zR13uXiXMu%l$aj!s=)$X3#d_D353Oe{O=N$De#2?YJuV(rHn4C5l(g3n)Q8A_X$Lyr`h+d3$s}5 z2M=x^3WWK+wftW!-;li0EZ?s(s;dF3WdCE?vsgB$`hl%|MX`AzDFRf4fZZFS(;`V7lE7RZX#H_Z<(f+ z=lec!QU^*TqEvbmUCH--?5GU!^r5hjMir*zI|iDkP! zorCeAs%p&K42Y`FyCA6r0fADOwq;t&hm~> zc4IGm+5hh)t?e-&pz2CuznSm5$5Hu-A&*Qc!#YRlwO~N0kku#FI!PZ?IK9Zp zKnifTqx7+W90z3q);LKYDjLN+&M5zC(%WtWGks#da+mWM)>%U#RuRMY7+{t|#z>T9 zrK9>NQzPtd$D>1~f8VMUY28_OM~m50;$zGbAfy^rSfuUm~qL&+0!`sAHX$`LVp z#2uuyy)THU#qLl{u7+4jdfWXe>JEifPhxhk#BmI7Oo_-=6ykO#b-<~3nRv0I{5j@S zJ?2Ro^1qE3w)=B55hKx`7dbCWqCOWA!*<^?%VNby6h|x|mhJ5$s*RRo?X8Z|hK-s0 zEu^(ypE|SmqNJl%A#Ns)?fz}fGK_vT-&r~23BZ&SEc1wCe>*WwBo@Uqzr5z-yUBT3 z*n=|WnWyo@T;ka8A4XXcaa`71@7b9aLXOj2_glt?Mf~m*bg#a6}ghGMm$an*7N)zL-Ef z`)!^SFQ7z9tdpPDI*O$R%d|)+7*KG_CbJu7rEIT0m?psN z>D$=udt4z6M&;RrkUV2}rL!0uOvbOY3NhNzdayr^nq{aYz3qLEZlyP_Ul^N?sBlyc zR>d0p%Sms)Uyz>c%bcu3OfPPoaz;mpn3Hudwo~J9MCeY+L3+Q+j-2T@7hdTV-1p)r zj@hJgH)fsc5fS3p?xPjqlRIjl^8{s6ax5!xM;m*=3Et}{2hLP6p_M>}aTGgyth@lQ+RL!b| zxPlmV`;II}d{#ZgNqRY}k$s0+9PA*ydDEeJdUlY#IvAvRys928DD25LG|0GlQHX)g zVw5J`0O=dxForz+6b|_{H@ouw4rAy_QMs{R)Mr0pbYV=$@faswAEmk(A)4I3`qnX4 zaz861mW{E#M!Dkstq*Z*^w&fjbM^9ly>lrCC*}%_o1VFIvt>aiy2+r35^ihWRAt@` z-OG8L-eEP^xrcS{a!=x9JtnQaJOg9?5+&G0<%V%?ps{Y!?m@h)<4S5g*0H^D?jRnc zyZv=b#OPSTv4&NeZp6vj7t@qwpmoF%zxTYW{d!82$%@rg-ZB-B*TvB~c2H?M4?Ay- z;|L>EXX4ne@BT_e4ntOHIuWB!wr#dXJy~nT5r4F;UsIx~F*`abS0`1`W84>JRZ<5h zb!5fhZvFtfXCqR3Cvm!RI~A9a`zX3EUQg|aV{=<6)ceGW7+u>2J&};+>0;e&X0Bk{ zI>ZZy{c377A=(hHzuk5;%V&Jep(BTOm3@qzK}zV$otM*yn-YxjT}C|H{Vl1SR?kZb zd#Ur7iH)i0^HT zCN=7X#I!wrn(fqCtG3RqiREzH>En-aiXgRUqLuUYO^N3!YZ@PJL`z~iZ0~+Wp+H-m zL(3xW$PZO3Yzyb>F5|WjSKHE?*DW6XJ+(5M)h(Xv zwrEthn1y;r>l>Bku*otiyI_emAd1FBjr`=k;k$Zc=Jfi1Uc&us`+u+uz!bmPC|%_} z=Ej8TEZcRM95?kC{IGg&eY?dlj~H@ z%*R$I5qqTVI_NLIMna@jKVejyI7Q#n(*q&TQfa0FqdG|!Gj(g&kJ$Fc_Cz(v{axZ8>9&e}>#6KDw+(n(Qv30L z|JvQ|(!@);lJGAvotCk-{`wE`?Clq;%4nWgi=QnQ;%{Qv>z7rrGWGYr>QKg%4#<4* zf5fu4Y7QopWcBp2dOV(a9Q@mgqY{jg9zizpOT`*7=>yiVOU7>@A>7alE9p_`SQ zsr!pR$k(%L@=e)1e&2QLm#O*1Z@X^&Qo6^l?bI|_|;s*zW68+~8T z>yfE#z9TPt^DAo%OtT)<+vHo~I~xa$dg>mC^4Y<-->gQRWf};-Azx?XVD@~I+v@9G zxPF=1?JM%FLtoEWuhrY|OY-tN->%53a}oQooJYbh$Zur5=a<}SLVQjhbr|2%tW%~I z;~87KWW7>b>(jcm)!-&gY%~;Y^a=UZVf?5qzm$ghxc=8CV|Kpzs{;kZ=B zZMWUk%Aye8<;^;o_<(#I?w@MrlhPtQUyRre$DW$8Gq#2h@73peq_l((?-JYLI3w4i zC(jgOnl5ipNWUj~hddk|2Nia#mPcwMyiMFX^rNJ*XKsME>aF~#mH%el%HLmp-7J^m zp*QMQ{^Wd88sPQ%D}TlYc&+}*pV9!Y61NW9aQ{%u?d#``sA@3V79hkcyqy;yD}dJL@IQ`uo&C*5O`kB@bugeYHGNYFdab#C0~_SBsmm#)a5iU*%7! zc_B6t*V(qywSDg#`u0ZRJL}tt_$f91Lfy-ov8FfFy}T(k{5_&Z-s~I2Q^a?+O;p8CZi^@D zp}d*u{R!gRyEYj=7gbf>>UI1$F`dnGdT7B|MW-Sghr^FKuAg*yCD*M!Jvq&bFg;@iRBjz4g96sf}}wv2xieM2SXDpePO0*h#B?@>P#4*!R$>M5oz1Nh@l)z~dELvKv5uG3y}T*) zdnfUnZ8QC2TF5vRlC_raAP;B9($(@vsc9jW64%-MzFORjH7>-G`YL})&GQUT;yRmS z3@qvHi*(SUVZTyoYseRi$y@#U7VVn#N@=l$VrOg;aZA0fM@mzOn;oymAf?jJYY%L+$9(c~whu~|S8AKg zBfhhFY`XZF+vTQuU!T;rnd`W12D^)F9t+;+cwN%umD)7o2FGoaCVu9o5p(K$eNvl7 z%&tq@boN)+*lfhCx~xlWc~xthnRRKK+Tv$vn;G@JKGoW0I`N(DU+8N#8fF^#INQI} zmQQMpy#<-r?&c@`y9enUZsYwD#w%<@{XlfJDW#CYP{KAx*l_L|>Z7)M;&+dz%DnLFgw!rSvzKM_;UR-56e*BSTe9y-EF@5hAVhr)^odc;EKe=~bNj!V~BVD}Io;{kl_O_WU zag%y=Wj&O+W{(!4q8{ot`5Tty#Ix6bYu15z!lvpwK4rwTH-6TPnQ5zw)kB%9Z4yE! zroFMEW|@<=xLUva6D1FO^D!%r#F&))@AO+>gnS(J>ss?k-V%iQ@9N1Hz;@z=mgZ9jd1jz|`dea<^pQ_3?PVh$<6(w9 zlpybL@~U0Ux4N6F;jL?I`E=1lcdj&c7x4-zCU!0Ri`>g?JjqLQn-63%qpHNLQ(JbG zFTgOKfoE>)RxNw#S`SsVTce}6iCxRsk$XLu70@rNy0v1Bv$@rBD5~%H@fxxkQmIRw z8(n@&(0eKb;T0Ez>r_>xRvde{db@Gbw&go_s4G z#BT&0REPSMG5h;?C9x-7LY@g;$NDrM&TN)#Kpo0P6I)Nh?V!b<^4yRHJ+_ zYC-$z`%bg0{fO%xc8^=e<{U@~?#8-@$ zgkO?1w$T{z*HDU!S-y3ew&i_9tfRR+8I%yWK*x&TaX`8%JBQeB(^(VaB(XH?j~dv*qFD#a30#CR(t3#&(d)yLn?MmD4=? zvb-!WWNe4cvM$Se=-p+;M%y%NnM1tJC#<`S_nYPWny`GvdU1!tu9UZC3DG!f9u*Zz zk>=vi#jWxh;R2R#o~iEL=JN7=g)X&17SDL!O+M)|_B}Nyzt-uB%7Z1v?+U1aBKdj= zx}L}*ZN|3XvC&c0r4_SuqpZtTmFWVO%~)TF@>gvM=aVMwxF)xusx-#Hc3!sf6k9Jp zq?8g73q!1@$i*Kee;vdhl8TY?|P?_un$7L%=kSA=jGfixUq&b!}8S65rmb=V3 znz3I!ChPKy(QHxjFjIESqgg&^xPYv;Fr^)_U~2G|qFF z({u4J%V(VPM2Q_=-q>*&tzfj-KlancH)-)VX|t}A^=A0La#_}RTO!X)WZ5kJh>2Uw zuk-ypxpDrP^YT$uPH6tfWqC$9l{a~^xcEJnvh&hPd3^aB%VwOn%C?9o<*q0lkF$G5 zyO8eJT*|~_<>O=HFS(S-TwU>VF0pkr5H5xK6@UV+zceTxLk+tvgaYw$Tc?RDBrStmUgq2Psv7nlS4kdf7n%~ zspT@KuUS6JHWOiaW3KWQ%Vw-w>Q!FqVIQu$JX|wi#lOr}9@6l7*2F&Ni|osXBAg6i zs$*A4BO~$t1nMg@#T)b?~7|T8(UBTD#W?pRKFqX?TMn5*e2{4w<9r;?y~?zVPafX$ysAvg__Y9s zhvMCg%NWNF;+;&(a4nl^5^rZ(hHF1cL=|skT84c-^E&ZnmSyO|;*D&}u%|OZHsTwn z{LGDSYnIqdv)r*rB=HXEEm@YgcGZc}Y-ag%wNAB&7g#1;+r+1aieHEgESIjmt9G0bmz+vH&$8*xM{`nCJeQ$d z{GI)Z5YJ{_hCRCycqY>_=3%CII@2=N^z^9=%UDB|c#>t(t&?2mCo=q)!RcXldgY;nJ;l}Pjwsb`IF}ZjUhoi zNSbu}L?eyY&t5%ou_2N0foyph>8z6~R&MKaN)zAe%tZH-Cfyiklu!OgZgRz%R}NhF zv3$Di$9R@C+t$4-ldfMdxe)j8_jKDAyB%}*BhI>v%URPpmRp;lOy-y&#NC-=#ix2= zO{V24IYSU|vBwWZRyUF*REo7N=eIXW1I-DTi1vxD%w{{_J&5*Y>wHLQ!Sf)&gXbSVpn=>tA zoDmXYe#T`YQRZr59?KkGqh4ig<@;{pZ#Bj)dME`j=52FpOKThhgD&#M^c%02grqHrC%lyX=bhY7{?e! zJ~L|jdssK_NRkUo=kGP@G0Me8&J|3nEq?}gcb<8|Sf-y^TYQ#bJTvm2Qfqwv&WXkA z)1>7%!bm&0_P@&sr1AGj>Hlu*xF^<@w`@XEUsv1TjN^)Y--O!YmKz6>M!whb_Zs_+ ziq9h%rsoXk&SefjlAStGqM53kfz2t*V^l% z*dJ2#V4mB2V?1fE%soFdEg6m`O^$6x*LCM{Dw(r3dAwuZytq?I`W)NNxEja7MnJA- zMeb!aui}xY+)iFWZ=NT_JM7sY%5qP~l_jmBiB-s$&2&wzbUNueSu>YP9ZyK^ictMUOq^g9Q&L(TIVrhvwIAXF30+?()m@zIQuDt-*(!VnJINyVz0cR z_%<@iR-SC0dB$dKw4Y`tt-SQag%57cFw**Lr;U`ek(S8BUee~+XU!dTo_X;x&*-}O zzGBkn*zc^poe-+MG{z*yLz*1>kjy8ljh1^>A>8)zGAgvlMjE*R%ZwBo<&$X&I(6;Q zk%S{jmt!9{YP`VZvQi4+B5kg1XXNQ}6*FMAZ0<7WLnG|xEz=vRhuhEF+%H&p53`>> zP{gRKbM{Tv_fY%kqnei~g_ZvmcGul4w-__=5Jzb>k4!z7v^nl;%=UJNLM0lP2SbS? zTB895*)4-{mccClK)Y#^T5f>dv`MYj-)`EZ7VAe^TYa4qHFA`UZ!CRDZ>!#|^ez|s zFnKoIr7Lo#Ur3xbj4LU}(6!I^%=WY5aM_dV$nwZM-`B@sS&SXGi%TtvF(nhd9hSuy zAdQj;(W?$I$`pB4L5QBjur-ERb)vHxJ?y5Hg}1ih?oQHjr;sdkH@j)enI2gAb|r1D z`yx5+vM)0B5nXc6)0m9panu#m&1)r{Nt@$-mS-NCGm=iZm$O{a^kPm+8RhI~FP$8f zV=`ff+{exH^yZD_#e7dk_Sws9r>87Qm((wHlD_Ixy|{$*+1o04{rOp*Tw#p3*h${z ze#c0Ek^S`HSk-OR;zIlB<@g=Hy;rn$m|hEV7KYYqMf&XfjpVvBci2=v+gDKDaw}Te zE`ygjdma~N6mF8r_q8B>_Hiq@3^IMbuet4fnIw`cD{hP@%}Aep?2_lHqI#?-nkOgx zP3@&I`bd+U(nKqx1#asK7vD$7ISrRz%tK&NK$`5^fy^h$=|OJJHjkW)n?dt)&d-=W z80(dnoF9jc1zxwipvIhoFIL6B|HaWT_re%y8#zc@6bczT_6r=OrDBbI&nNB3gTy#C zeNlN)`GEB|j6Hr2e%=#%VQ=h%eX$?*#{oDH2jO5GfhB zHyT%B46edhT#a!Uk85x(Cg3_u#3W3{^_YUGn1<Bdr zD;8iO7U4E5#_d>wrMLrkVi}fW1y*7e?!s!U!QEJkb+`xj;y&Du^>_de;vqbYNAM^f z!{c}YPvR*&jc4#Ip2PFlfETb4o3I&MuoW+28@6KyUcyeij92g~Uc>8n18?Fjyp4D8 zF5biY_y8Z`BYccc@F_mS=lB9&;wyZOZ}2U?!}s_BKjJ6+j9>68e#7th1ApRw_zQpI zAN-5|Aok$@*b{qUZ|sA8u^;xw0XPr`;b0tsLva`m#}POZN8xB3gJW?VY>oQ4KC9cSQ7oQ1P-4$ehGoQLyq0U99>`6xhRG(l4|Lvyr1OSD33T!@QsF)qQS zxD1!04cej|+M@$Hq7yo!3%a5kx}yhrq8ECj4+_y2{m>r+Fc5<<7(;LchGH0oV+33n z2?a%P!vht?@WKZTqfi1r0th06FiH_Y6gpxkLpdr?iP5+cV{jG5;%bb;cwB>PF#*?M zA|_!nuE!Ki#WYOE49vtV%*GttfEzIvH(?&;<7V7~Td@EOu?V+eF>c2aEX5tT6U(q1 zE3gu)a2Hl%4erKTtiwIH7x&?Qtj7a*5D(#DJc38@7#_zHcoI+HX*`2x@f@DV2E2fc z*o4j4f~|NF+prxw@Dg_7WxRq{@fu#o8+a3M;cdKwckv$H#|QWjAK_zsf=}@oKF1gM z5?|qKe1mWC9lpm8_z^$hXZ(U+@f&`}ANUjh!(aFt|KMNz2f5?l1AAgG?2Ub}FZRR! zH~Gd_j3KxJLop1)F#;}(gn}Zt;em=`c;SPFQ7C~Q0R$03 z7^R3H3LP<&p&S*c#AsZJF}Mn2aW%$aJg&jDn1Jgr5tA?(*JBE%Vj8An24-RwW@8R+ zz>S!Tn=lXaaWihgtyqACScKcK7`I~ymf{ZFiDg)h6Jq{43FapJc+09G@ik;cn;5F175&JY{F)2!B)J8ZP<<-cnLf4GG4)} zXvC%!)%X&O{0@*yKHz}+p9%sYca-b(@_}L2qsYQx`nNSFe~okxJ~Xr4?A>#6(U$sa zhxX`zj_8EW=z^~3hVJNrp6G?%=z~J^ML+b%01U(+48{;#fuR_N;TQoIMnXXm-0(m} zF}(0W!zh%%j{t%QfhOHOC#Mc}&&hYs$(u39XpRL0hy# zdvriYbV6rzL05D`cl1C{^g?g+K_U90ANpee24WBfV+gLmPz=LxjDQOxp`ZwEc%Y&f zUihG46iVPn06~NhMkykQLPrc`C`SbBdrD;8iO7U4E5#_d>wrMLrkVi}fW1y*7e?!s!U z!QEJkb+`xj;y&Du^>_de;vqbYNAM^f!{c}YPvR*&jc4#Ip2PFlfETb4o3I&MuoW+2 z8@6KyUcyeij92g~Uc>8n18?Fjyp4D8F5biY_y8Z`BYccc@F_mS=lB9&;wyZOZ}2U? z!}s_BKjJ6+j9>68e#7th1ApRw_zQpIAN-5|Aeaa2fjzMo_QpQg7yDs<9DoCH5Dvy6 zI24EBa2$anaTJcmF*p{-;dq>Y6LAtw#wj=zr=bB(#~C;iXW?v|gLBak=iz)@fJVqe zJ_^tnP0$q0&>St$60Oi07vdsZj7xASF2m($gSKdg_UM3)=!DMbg0AR>?&yJ@=!M?s zgF^I0KlH}{48$M|#t>YAp%{kY7y%bXLO~JS@IXZ|yzoK8D3rjD0D=f1j8a4pg^n1? zP>u>zVl=MA7+i(1xEkXy9@pSnOu%)Rh)I}?>oEmWF%8o(12ZuTvoQxZ;6}{FO_+!I zxEZ(LRxH3mEW&MAjN7pUOK}J8#4;?$3arE`+=bOxgS)X7>u?Y5#eKLR>+t{{#6x%( zkKj=}hR5*)p2Sml8qeTaJcsA80WV-9HeoZiU@Kn4Hf+ZZyo8;28L!|~$a!3WkFPE8 zZMsp)=mP6i8wJsDNPfewDVGJT341|NO!Ir<3%Ck(S4&ru#;zuL9gMF7CYDP~?2SwJ zx)KOCwC3`!li%+1>q4}l&fB6LcF*P6mZ^v9FcFh58P{V9reYeVV+Lko7G`4(ZorM0 zi<>YH^Kmn7!L3+;g;<2!uo$;v36|mx+=*pajulvmRk#bQu?BZzE!N>4?4HZ-p3665 zZqghr&=RfC8W-XsT#QR_DK5k1XoI$BhxX`zj_8EW=z^~3hVJNrp6G?%=z~J^ML+b% z01U(+48{;#fuR_N;TQoIMnXXm-0(m}F}(0W!zh%%j{t%QA&gQ)5QUBy%2199RAMx) z#28$KvA7!JFdo<7T1>!on21T3jO#H4Q!x$GF#|I(3$rl?H{eFh#Z8!p`M4Rk;8rZa zLM*~ha<7?0plJch^d z1fIlGcpA^(Sv-g5u>mh&BQ{|(wqPq>#5Qcl4!ne&cp0zYRlJ7R@dn<+TX-Aq;9b0j z_wfNf#7FoTpWst`hR^W@zQkAf8sFese24Gx1AfF$_!+<8SNw+G@dy6I|L_<7#y|KM z|3NSh*aLfFFYJwdurKz*{x|>!;vgK1LvSb#!{ImrN8%_Pjbm^uj>GXd0Vm=loQzX& zDo#TKoQ^YaCeFgyI0xsVA+OxEPnj0T_ru7>psf0z)wj!!ZIbjD&(B zxZ#0{VtC<$hEXVi9{~grLKvlpAPOBZl%X6IsKjVoi7~heV{tXcVLYzEwU~hGFcFh5 z8P{V9reYeVV+Lko7G`4(ZorM0i<>YH^Kmn7!L3+;g;<2!uo$;v36|mx+=*pajulvm zRk#bQu?BZzE!N>4+>85gKi1;`Jcx(zFdo69cnpu@2|S6X@HC#mvv>~AV*_5mMr^`n zY{6E%h;7)89e4>l@iJb)tB~hdchOwF)|2$-TJ!oh$b0uWdLi0S|83C@yXW=0=k?Fg z51z*cynv0^gw5E3t#}dJupK+_5_V$ueKWi7o9WM7X#fUd5C&riuE0>6n3;n1$JxgBx%o=He#I!+hL~TW~8DU?CRaHY~>NSc0Xv19xH>mSY80 zVioSfYOKNCSc`SI2lwJW+>iBm01x6JJd8*1C?3P(cmhx2DLjp5@GPFg^VonFuo0WE z8C$RwFJc?EV+UTsPP~j)@G4%z>v#ii;w`+5cknLW!~6IEAL1i?j8E_>KEvnu0$<`Q ze2s7LExyC|_yIrSC;W_G@GE}9@Aw0M;(z!Hf8!tgi~k^)2ke18u^0BnKG+xgVSgNe z191=z#vwQqhv9G>fg^Dgj>a)K7RTXuoPZN?5>Cb`I2EU%0ZzvmI1^{#Y@CC0(Gch1 zd|ZG=$U{B~&=^h76wS~aEzlCJ&>9!wB3z71a49asffe2qBD8 zL=c6J7|KwN3RGe=uEZEzg|WCA<1ilA;95+;b(n}rn2hT&1yeB%(=h`xF$=RX2RGnG z%*9QZhxxb}x8PPRz(Op-ZCH%ku>?zT2kyi&EXNA0#46l{)mVeOu@>ua5AMZ%xF75B z03O6cco>i1Q9Opn@dTd4Q+OKB;8{F}=dl4VU?VnRGqzwWUc@$R#}2%Nop>3q;8k>C z(=y)KCtrdiZ`8NW$me^sNY%d*=iO_YtLMvmFwSAVUcu)sI!5R?sB6d0ZJW0oG)Ugl z!=pE~AYVlDgv#@Ix5C-v-CE`?-`$bp_X6V2LOF}H$H&vgzc(PC^~l}(XY#k^)&ExG z`v%6d1Z0Z5_#;}+AYGf>(oxz#9+mFl+bM28kEh^!AIA3vPETH^c)4oNyV$SiseA`9 zkLN@ALVUrh0cjiOmVa?L&mZ#gXqVG$r71QZFK{YpI^>p*tRFXD!HV)A4nI$`%8Ngf zNv`cF#IaG&MjTm5CzI|HyZHwd9y3;M)bUBV=c`5CN-z}E$UEP6BIz1b&)5385MMc= zP4j&xu#BxfnRt2-`y#t(`HD?E`EjIeBg>X_-K|hBXqn%naXwESbGvyUPU8D9g?jr? zL@g-Q*`~~PF*@I|PGcl}N$VIVF`70`Jg`qT(9y*3?I*^)$vCy<$X=7=eR^;3v)p&Q zg+o}+__Y*y?L=N_YW`xUuQk^2@omy_e`Xv!k5Ih8@~AM^Q?V`Mq5 zL>}ZlaZyxa3}Uzjr(rzgwJLe-YBJR zr!0fq58jXU7=`hW`)j%Xmisrk50d-g)sXv6xi6Ia#2JwL-su>Nd64^KIX{;BXE`tI z%4ZiepqOXibXq#ewNn_*I@+ZRgcC5h)%tZr~;97)m734AF16aw=@_0`k`^jUoe*AkAdgDlmG9Qg2 za5m0`AD{6zhFIes-;?;90y&R64jM+G1YOV$9a(;VbVo=2eGURR0YMB$Z?u3sKY0;) z;%an&j$UYj5ok-Cz3~BMZpY`L*a!QfKYu?Hr}MKsj_t|k1?a)=&cpFI7PBC)!OQFM z9?0wO3osNzAg|vq!BTuq`Y#Z~6ih-GQ}HAo#z>Zv*Yy`+ITqt~s5q6sAH`>9OhrqK zMKhei--`HjqZdCPjQ!xj3Fyx66}ZqA({LgdVh-k_73Se4%*S205wo!x2V#F*O1#dv z81mR(9*gJk^B6pi7qAiX_*|YBkjLSd@o#wy-Xh4<^B=|jS+;BPT%#WE@rloRV_NcjpH6!u`O5JI0xfFFvhwZL=3rY+bRR^*x_Z5yp~OtgO@#o6`eV( zeC3EZ(8)R(ar~hW4{AHW$vSy>z@U7@fwfxu6T?P3oAnZ;kCgGqSe`B^-xns=Wj`l% zQ>~p{VZQw$UyMP(eeJEA?Ej_Sn3mFO_HhtH3x;EQ`~a1<-kTV<`(4s=F!r)nFSV>k za;-4+wYN_3?Xs|QMDz4eDnl^_!abbDDD@J*ILSEi>Ra@+aKSs6-;d9ak+`2Odt424}N zf4oop=`@D%ywZWZC5Ph&XE936XPz2w+VTBPj4rv4vGMjOjSsW3XPA+gN7pe{)Ex== z{k$oKS2O=gEZgH`a-n!&xym`2U+k619B<`HnU6DJ|851Mj(#SVjr~!rbw#06FHh-{ z{qQGy>zIhg%L4tX`62}wM*L`R9TRcl)fEkEL2J_xKM>2t_GyftoMY5H);rd|x3^Aa zeMeL;U(k%G6+EjtDjyl1@B7YPITGu{2``@KoA3M9UO5u!6Ln(6`NnBEWE;^sUpq|C zD_n~d*5fPEw{ft2Mq)+0ueXSIV&?n4bXJDK9!inwC+{zurDxwkdg|bFd+Cin71rE( zj5h$t{{5M~^wu`a_FtwMlci5dZ=(*4{CRe)?g_bhxt;lN^iPOk_t>H|7BQX^^s&A2 z$NOSo52lSBJ(~WJz4FJ?m&$3UN_ts|AKEKJq7Hb$P*lG8@dJnH<@8da1n-mHM*W$6 zKsDb1@SelG<3r@T_VSL`Utv!*7<HL0EJk6USk%`prt9(;_YG$;O2fn`GGgTWUMGf)eR^VD;$w0=&TG!fQrIud!BeCw zJ9o~9JB?vH%u%)s=fR!DC^a7lX|~SG&SDhym#_FXYe?)QhLd_VUK3ufdA!EkJ~C$>f7qjZzZMhdGPEc5lQmrc+y; ztw*VcH-LtCJlz)3ccGuW_^4_10}Yl+Y6HWO>i{$kuWoX_j(KYzJ=-rT{&*7^4# ze6GYQti|r@WxKDJ?Y>^N`+C`I#)jS3%XVKc+kL$(`}MMK*;c;8_xJ%n;wSu!U+^n_ z!|(V5f8u}m3xDGu{EPn}_Tro|_QYP;8~b2i?1%kv01m`KI2ecEP#lKCaRiRUQ8*gM z;8+}o<8cB`#7Q_Ar{Gkah6XqtXW&eng|l%E&P79I(7<^4Sek#_f7W%s>3m(dSqV)wm0yYKB;$XL1i z-k#m}_AFpL*nMwL?)UaMou4$Ko-^#f-9FAYTf1AlDuE?S$?+_0r>F*7GOKB$2Po(4d{XReNOTF2Ic*U$@dOUWSQ$Q0k7g^Jciot zCtStvm!dJ`eXa6dPV<4S6Hb4B(mJ-E!>sK` HZj1j1Am`zh literal 118904 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 diff --git a/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.ninja_log b/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.ninja_log index 5817342..552ccf2 100644 --- a/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.ninja_log +++ b/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.ninja_log @@ -1,38 +1,12 @@ # ninja log v6 -16 224 1764073111478991803 CMakeFiles/simulator.dir/device.cpp.o 36fc5c8cf014f45b -15 1296 1764073111477991803 CMakeFiles/simulator.dir/mainwindow.cpp.o e3901bb2e4f9b516 -197 1160 1763912062733203284 CMakeFiles/simulator.dir/simulator_autogen/mocs_compilation.cpp.o 5301f473905a545f -3 15 1764073111465991803 /home/aljaz/Desktop/spo/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/simulator_autogen/mocs_compilation.cpp c193a23cfe79571d -197 384 1763912062733203284 CMakeFiles/simulator.dir/machine.cpp.o 7030a03f8cbf1ad0 -197 1417 1763912062733203284 CMakeFiles/simulator.dir/main.cpp.o 9ebba9b7abc4cbf1 -3 15 1764073111465991803 /home/aljaz/Desktop/spo/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/simulator_autogen/timestamp c193a23cfe79571d -1296 1566 1764073112758991795 simulator fb8524dc610350ca -3 15 1764073111465991803 simulator_autogen/mocs_compilation.cpp c193a23cfe79571d -3 15 1764073111465991803 simulator_autogen/timestamp c193a23cfe79571d -3 201 1765010356075067547 simulator_autogen/timestamp c193a23cfe79571d -3 201 1765010356075067547 simulator_autogen/mocs_compilation.cpp c193a23cfe79571d -3 201 1765010356075067547 /home/aljaz/Desktop/spo/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/simulator_autogen/timestamp c193a23cfe79571d -3 201 1765010356075067547 /home/aljaz/Desktop/spo/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/simulator_autogen/mocs_compilation.cpp c193a23cfe79571d 201 521 1765010356080064621 CMakeFiles/simulator.dir/device.cpp.o 36fc5c8cf014f45b -201 1336 1765010356080064621 CMakeFiles/simulator.dir/main.cpp.o 9ebba9b7abc4cbf1 -201 1347 1765010356080064621 CMakeFiles/simulator.dir/simulator_autogen/mocs_compilation.cpp.o 5301f473905a545f -201 1945 1765010356080064621 CMakeFiles/simulator.dir/mainwindow.cpp.o e3901bb2e4f9b516 -2 12 1765010490358892516 simulator_autogen/timestamp c193a23cfe79571d -2 12 1765010490358892516 simulator_autogen/mocs_compilation.cpp c193a23cfe79571d -2 12 1765010490358892516 /home/aljaz/Desktop/spo/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/simulator_autogen/timestamp c193a23cfe79571d -2 12 1765010490358892516 /home/aljaz/Desktop/spo/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/simulator_autogen/mocs_compilation.cpp c193a23cfe79571d +14 1383 1765010511012053000 CMakeFiles/simulator.dir/mainwindow.cpp.o e3901bb2e4f9b516 12 22 1765010490368890036 CMakeFiles/simulator.dir/opcode.cpp.o da65f589ec5e1f76 -12 1340 1765010490368890036 CMakeFiles/simulator.dir/mainwindow.cpp.o e3901bb2e4f9b516 -1 12 1765010498397941821 simulator_autogen/timestamp c193a23cfe79571d -1 12 1765010498397941821 simulator_autogen/mocs_compilation.cpp c193a23cfe79571d -1 12 1765010498397941821 /home/aljaz/Desktop/spo/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/simulator_autogen/timestamp c193a23cfe79571d -1 12 1765010498397941821 /home/aljaz/Desktop/spo/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/simulator_autogen/mocs_compilation.cpp c193a23cfe79571d -13 196 1765010498409938977 CMakeFiles/simulator.dir/machine.cpp.o 7030a03f8cbf1ad0 -12 1363 1765010498408939214 CMakeFiles/simulator.dir/mainwindow.cpp.o e3901bb2e4f9b516 -2 14 1765010511000055645 simulator_autogen/timestamp c193a23cfe79571d -2 14 1765010511000055645 simulator_autogen/mocs_compilation.cpp c193a23cfe79571d -2 14 1765010511000055645 /home/aljaz/Desktop/spo/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/simulator_autogen/timestamp c193a23cfe79571d +201 1347 1765010356080064621 CMakeFiles/simulator.dir/simulator_autogen/mocs_compilation.cpp.o 5301f473905a545f 2 14 1765010511000055645 /home/aljaz/Desktop/spo/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/simulator_autogen/mocs_compilation.cpp c193a23cfe79571d 14 192 1765010511012053000 CMakeFiles/simulator.dir/machine.cpp.o 7030a03f8cbf1ad0 -14 1383 1765010511012053000 CMakeFiles/simulator.dir/mainwindow.cpp.o e3901bb2e4f9b516 +201 1336 1765010356080064621 CMakeFiles/simulator.dir/main.cpp.o 9ebba9b7abc4cbf1 +2 14 1765010511000055645 /home/aljaz/Desktop/spo/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/simulator_autogen/timestamp c193a23cfe79571d 1383 1623 1765010512380751634 simulator 9e4eca252dc331ef +2 14 1765010511000055645 simulator_autogen/mocs_compilation.cpp c193a23cfe79571d +2 14 1765010511000055645 simulator_autogen/timestamp c193a23cfe79571d diff --git a/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.qtc_clangd/.cache/clangd/index/executor.cpp.49C8014B8C305999.idx b/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.qtc_clangd/.cache/clangd/index/executor.cpp.49C8014B8C305999.idx new file mode 100644 index 0000000000000000000000000000000000000000..eac3041544749de6c79fe823a7f20858b3205928 GIT binary patch literal 2620 zcmb_dO>7%Q6doJ9PP}&GByPG%1DO8M1b4l0nsw8(7Rq0PrIJ4qMQ~Y7b|?16yEA5I zH*tbMLPF||D+eT0!3EJCT7=Xa2c$}zI8h04fJ0FaTq-X73W>LNrglnOg^Jbw%)IZt zZ{EE3=IwIn(xtIDLeplc?hp@05JG8qxaV3^F&G4wqQLE8w@kcZeY~I-#uVG4eqAY3 zA1O0SEBfU8{KCrQ%B+5Ab$)uKv@kzZA1>-T_JC&H_lT|!4Pi=|hdnZMqCPx4+_als zSf14{m!_Jtxz$o@vh?a@eP(uQb*_o6m1gEU z;$3xy@T$jZDz7mWb3Uqa%kgdOF;`vpE!z|d`jV#?^!$jPS7yk%UvBB?*!NhOP}QP_ z?VIGG1(rN@g)y6}OWw3g8pOPUU826}8GCc1X8SyN)NL2nYQ$XfULn{dF8@Ed0tc82 z?yXU#n9T4ULLtHyql!S*;En2nv2U023G<*A>76;wP;ykwSWLA8;hlB zc$*e3Q^q~Z;6P?Gw}|a+yaUGjAYNhH3gnk4dofeEhm9&|5!Yod)Qe+z#r(*~2#6eP zxJ+3G+;g!(_P_>0ILBp>5L)&s#X#gjRa(uB!0tE*n4|C=?h!|+h?s8h9oTtYVbtD1 zN*O6uQv)eZVGMy|+%v(k)+n1ric2{2U0C0=++uqLJtD!jwNC29Xiu??X;}riYBWZp zc?5eli*P2g+59=A)KNRp*J*?V4pmYvE5;cdEQb3=R=*bRJ0HLykOrCJ&ObRsehs?ZKkW zWFj?~iqqddQH^X?&7a+;uqRW4f`(HBX=<}p|J5*`i0ji zh$Y*zWtTci1n|r#t+vP ztM9*k_hu@50pM6yEL});CJzVjS%8oJnY?+OUAvnK7XeOnrFsjg&Q!yC6yS3H{@1bJ zyMIZACjd@&rR73zXKznnoe!3G$p*g~Lg=fpFD8tupLc~4nv|D{Vo~9GXrSTu>z_>? zx3B#5*658pIr4{J4JWjCN4!gDC$#=Zza;h}ln*7eD2jFnDwsh81enlb(O9xYkcy^~ zVoM1v9Ze_24icIim6L*8e8I6GVuJ4M^;^Gv`}0qqh6lBHcU%^{gIa&GKP_y86l{ZV z3fp^s^V$d7>$f5ats~MQ39W?IDRuU=X5Eo)spa7j=}3?8@chD$SMJ^a^>!$&NhhV# z!i1js=-78_7rzM&YSMsoLWl(icoAexcp=C@9Ary~U1H-PU)(kL1^9-v@83HaA3*ih zNa5W0d2~Jio7cD)Aat%ZEVPD(W7-oieSZ9O;&5`{*rB7TuD<^8vyo`5krMu%hDXQ&@c*?E(?wmD%Y zr(Q5(6F)HRbV?`G2Q7}6pTrFzkLlDtE?cLE15WI->3*IlgfR zZP+gBT9!2qJZ3>6O|2`8J8=+NJPa(#`Le}rFL5c%VzI?gonaWBv~-MYzMlBL?QbG) z0U%nu!%R^O99aksr;5uM z5u%f37NmXS`Q>x&gWq>F46TS-P^(!$B&$}4`t1H58(&(zXW%NdZ`axl(jqM#wGo2P zj6QAmorib#cMYtAt<|(9Y@t_$t%3b@#=|GK2Cu8Q0=pMU(a3__{q!$=cPH51H*gKA zjhfLQ1~Ibc1*qO!`u0IPIQ8AYC9s>dW}7rfqb{1OV86S*^yTkWD6WpmN-Bb7^EyQU@{;7@LVKM%5s*7xl|ZD8uGGOknx{` KneqdDMCczW^ac9> literal 0 HcmV?d00001 diff --git a/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.qtc_clangd/.cache/clangd/index/loader.cpp.A594640CB9A0C658.idx b/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.qtc_clangd/.cache/clangd/index/loader.cpp.A594640CB9A0C658.idx new file mode 100644 index 0000000000000000000000000000000000000000..2d205625aa4bc9d9eda09ac6bf7a1f8dcd0e985c GIT binary patch literal 1814 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 literal 0 HcmV?d00001 diff --git a/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.qtc_clangd/.cache/clangd/index/loader.h.496A63EDF895C00B.idx b/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.qtc_clangd/.cache/clangd/index/loader.h.496A63EDF895C00B.idx new file mode 100644 index 0000000000000000000000000000000000000000..70dd247c8a0bb32a34fcac97f60cedcbedcbd6a9 GIT binary patch literal 370 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 NI@zFqq_+ul`7e-@FZ%!h literal 5152 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 diff --git a/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.qtc_clangd/.cache/clangd/index/machine.h.D09D611E77E172BE.idx b/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.qtc_clangd/.cache/clangd/index/machine.h.D09D611E77E172BE.idx index 59b1b27631bbb7c1b1d107dd67a833280fce377a..8f498c3e075f6dfe694a40e251e9d6c41cadcf68 100644 GIT binary patch delta 1552 zcmX|>YfKzf6vt=ovNCs>83qd6?(7Tpy)5htmZsE(B5qqAZE9(v{eqy-mR69$`Us67 zu@W(9G~^~WF-lWoDg>>z)<@#wgPK@vv?Z2ce1%ByQDa*h4V7x~+||P*dv^2xpL6cq zdw*vyI4(L}JDWFeZqp^Hsk`~nzMgDXo+L>n@EOVu_C`;+#$?idH$N_qiZ3tm%1b;$ zs>&-AiJ6M2=7OX^K0K#?IeBk3HsR1okdG6$?BlPKO$B9BvOXo-S%zl#U*xWl1e6A7 zK+6Rzjhxy(@!g+~Z81nS*gophasln-Xx!KJ}e!?J!@E@4fysSp#^?C71p zGW=vdb++0?bikt-`KwG-CJqX}lPd4v?vbMn^*r z8pIFwK7F5uZJ--?UtV3vQ{X9NB4DmDc5S6#;?*I8#347J2TE8Kt>T~M)m8Uv{l#pf zvQd-PN)m-*>Dxhmsy=gc#31FcH@D)}av|4>>((+$REhGCHKlr?RbyGBizSPayvLfV zu7rFq^=i3*OV_;e_R_`6mnIFe2J*)(`naW(HP8nBp*1|x?t1p*%_C30X^;?@oqDH} zt)uH0)^4=q#oFdhzh@8=>|I5>OjfJat{#*1#MMKM3j-e+q!v~V(x8?LSZ#g$%Jke~ z|5<~?zz)%no(pK#$X4EaTV^B$rl0z?TtKsB=kvG6_jk=0#DJBvdbWf$(#F;EywS0+ zZRq;&tU;=vIzl5_E@1Vo!eVTxSsD+qp-+s zeK%uin&x%+DYXWKR=u^9rD%$0^Hb3<2sNz6!(zoT6B~{CZum!g#+MBefpscqg(d=@ z$&br(TvjSAUb~malmUx?`M7e&Rsr(I_axuCv_k$thGjFyF3QL*jDR2(Wh544AeBd{ zx5(r0ID>cocJOFPrvCuh$O zoV#yvzOx~HbF!gz40-|8I`;VeeR5(V@Z1rLjcJNzLs?~RyW4>as4Q%Top{wBeE!43 zZuzUD&}0l8ujjun)*;~;<}1^_ehtw9#xqm1VYdlb~K z%KrloGSJS8)r6(OUcobJv{?X-X~;G-6-=XyOhdH*8fDxd$O2^kqFQMYl%7`;X22dW zm(C1+d*G4lnWy%I1NA-M{0v3^}^m~KK%o1K`?elf}y)0cUX%> jq`{sCy2StU(BS<;O#EQeh1V|6PS2l}OQljF{P+9|au2VM delta 1353 zcmX|>ZEO@(6ozN+cIn*RnPK|1w>$gM{oZ!B?e5O960A*aOACcc+$u)-L0ok;6>Ccu zi-Az0v04)&A=ku&wB-*WAWBj-U=)Z6{Jl4{{D?HCdKgy?}hWIJ+Ace3bv2NPUD{Xl>#phPkKH4<9Y39ej_N+5Vvm&t&4Qb^fDdn(q zJDCa>e%`*`AXRr2)=4{8qFwXw;M|Q}uWc|$M3G!Yz35@9>1uw~wlA3lp-pdNtcA8z zV}2Vs`qIQieApmium|j6+Ii%V1{W}D;G333`{+cdcJVcAO^mh4%%_={Fb)PKUBK4>#{+T z&>g37tz39tWkyZFR=4O|7|YTuf4$ODGa&Tq{dFu&)BIeem5hV1imhs3&DG5&t~e21 zicA#u-!@1ij116#CJGNKDftl3D+ycB9pvN6h)poIpmeQ|(1>>K@yv;9cgQl5CYxo# zP)5RJcbP1dkt~n}QM+lV%J1=eV{3oA`R`}G?JA3VXXA8T-e2JzrQFqkD!%p{H z{KvES^$;`*`fw)F2eP2<2}e2;Gh<%+-FJYqVS|E0>_QHqOYrxpW2+6&*@>oF<27q6glR9ZXX+2g;Aop3_4`<84`Gx%!+R zkvj9$Ph)=h>bo!m;H}5>g>UB%PJ0%nWPa7@HU-M)AjQxi=yj@r7;X|ne6UKRPnQ_{61J(dv$xQjUzY2nI^q0({RiPoc=P}O diff --git a/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.qtc_clangd/.cache/clangd/index/opcode.cpp.015FD9F3D1CBD5AF.idx b/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.qtc_clangd/.cache/clangd/index/opcode.cpp.015FD9F3D1CBD5AF.idx index 3d0b9dfc1caa9cd5377b80767bbbbc2a870bf596..ce875317bc16a15860c23fadd46d8cfaab9f02cc 100644 GIT binary patch delta 104 zcmZqSo53p=? delta 213 zcmbQi+rlRo3ImNRgH?<^@g@J)V1c-}EiZXfGHp+Fg^7|Jg=clAHKqxD# z$tzf^>g9n-RCZ{tP&nvxO^iuTpTUrcgNe_GjfIVifdeQ90!685#Wq0Nq5X6A&hG~T zn0O4C7?{{#+JHQu7MLVVlu-&rxF|Iz5oA_zQF5_3h+zaG7z98BqhX&k!zYGQQ?(e4 OCWo@wvlz%QDgXe%oj30Q diff --git a/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.qtc_clangd/.cache/clangd/index/opcode.h.2460D9A23E2279B0.idx b/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.qtc_clangd/.cache/clangd/index/opcode.h.2460D9A23E2279B0.idx index e12b48146b8a9d59c6498171d507a9e50e45baaa..15a07bae1e1da9cb05b150b6f8e74a9d949899c1 100644 GIT binary patch delta 20 bcmca7b5CYN5FZbNU2cVo(6#GVI2afJP=^N- delta 20 bcmca7b5CYN5FZbdU2cVo(6#GVI2afJP@e}C diff --git a/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.qtc_clangd/.cache/clangd/index/std_thread.h.CAAD0C2FDC550D68.idx b/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.qtc_clangd/.cache/clangd/index/std_thread.h.CAAD0C2FDC550D68.idx new file mode 100644 index 0000000000000000000000000000000000000000..aec4835254385efc4e84c066f939aef76ff308cb GIT binary patch literal 5774 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 Qv8;Y3;e?U@n843}0qgKsJ^%m! literal 0 HcmV?d00001 diff --git a/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.qtc_clangd/.cache/clangd/index/this_thread_sleep.h.23766C414BE25E0F.idx b/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.qtc_clangd/.cache/clangd/index/this_thread_sleep.h.23766C414BE25E0F.idx new file mode 100644 index 0000000000000000000000000000000000000000..17196597b045820c951c32988d8b9f036e1d542b GIT binary patch literal 2196 zcmWIYbaU(BU|?`g@vO*AElFfyU|1_)@VR2y0)=jRodC?sbT<>%#F zS*4T~C6;97=h+0M7U(Dhq!wl7r`Rc|6_sS>rq*g=(*cr+FUZf#E3t9T$xqJKQE-8p z0n`UH3!;yBTY#3JDkf}!CWB2$Mp0^FiXB6;RT)ECW=^V=zP^5GaglyzUUE)pN~(Uc zs*w{A=^GmBCuNot>qGpjmqC=`l8nsac!&-0#W|^|1%&k_rxq3Eo1cM|qBOh2nQEFN-BO3!l zgUw{gwkgFdOd=eK{D}fEgGD$}`BM2|yz&jQ_dh&6&(0{q;mYgE4>NqbvuUM$nFc2# z4~Mgyvl>izl6UKTt6$5x@EZB)z3QRUZMi&XM(%br6~0&f4qaH;ZcXQH!C*c#)hFjP zEO+MbmPHfpYEE9(DaWaSCcLpKKj-DPIhuIg<;!HFuevr<2TiX<%Y2Rv%8&FIxj5uF z0!$bdZj4gkXgQn4^YFT?tfJ0V%{YaPeddfZ9Ig_s zGO+M^ZMRrnb?rw>pdlXG9%eA%g?qpFxk&%B#_QZ8m!7{`-hR>ssMlS~-4Ld?ZeDZs zr?zcQc=ht7b1H=x{PO@h$Dhkz7^YWyVpjXTr4v2TLSQbdi;kQ~c?e!3H7o5^R99+d z0iC18r=b?5eUby*wP&9M*COo+rB}Tuyx6 zk1`i$mQuXtN~J%)aJy-B4_-xlszzUhiig%ZP&{ouFk}iC3gG@R`SGGkyhCRZP}pDF-vH)K#&ux^U7lr2@ER#6`s+e=(VFFW z6@^auu4FMwXBE(bNQFo(Sjs#rncv)b%WET=f9HI!yD4hAa|fF6zQ#j+UsBHOMiXwj zQf$0o-lIdzA{-tL9*(dCB*Kv-nIr|XNrWR^JY53DJ7W{&pm*Q;6ka#O3}Ti77h16F zBg2uzo&+zUWH{1U)A?ZL?mJfgQmF0L6ECI{*Lx literal 0 HcmV?d00001 diff --git a/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.qtc_clangd/.cache/clangd/index/thread.B3E6C045DB9045EA.idx b/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.qtc_clangd/.cache/clangd/index/thread.B3E6C045DB9045EA.idx new file mode 100644 index 0000000000000000000000000000000000000000..d743427b9fbb820739f02786bb4a25867bc4948c GIT binary patch literal 2120 zcma)6acmP+7=OKO*xp{-_112Lv`gvQm4@l18-e90b%Ng3>eL+Ag(Ix(wKsdSTk)<- zw%|wr1rj1rG6wDs3IDlGLP+?_KMaJpm_Z~&j5-oPB7bNijKoDjoxW>*eKjTrm+P1B z*Z2G0`@Zk@y%S38HX%oU*7^5_IVr6vnPdSi$m!w8 zwp?1>(eB-$rj?==^|lp8ixcf$|K1L+m_vjt$0=E_lAQ>ZgRA}=`#*17r#*51c5l@# zN*0Aw;j#a$j)y>`ych+>`vR#@$b$?gfk7oNb1ch_YAUOYWb&g~nau<`wxX8}cd`e?+8 zH$uEBm#jxC>(MPpcBC9qe|%V)N5Xd%u6}=~f6fYly%E4vZ3>nQu+*5qDqy1P&Tjq2 zb>jCQLJ-&xAx_2Vk^z=l3Or**gcnwB_6{EFdj$e3BJdPXmkcJ<)t&wFk@?g;-ysMb zh>)NXbjc9H{>wwlw|-5}LC}B*0wvHTLkMp?>bx#3-~Af`1`$L`q)UbnRC!Qy*8yO= zaQ?^L`!AR%C(PI~4Y)Wblx=ba-8;Je@WtbsX+shYtzk<27(06B{`!wsA2iw*cdC{t zb%=y)cWh^HjZWBa?{B~@al&1WT?{VoTT5u_RQJTQhKUUvcrfHU5bH2O7zSaletGq0 zWZ~6;tK1)5hOvLrZ6~=yANClMHe5UR`Qp+S#w0Adi7APVYkiM7{Jur*e9c5dkJ-~) zP7MtieRJtk&o4VoPADzivfDRb_Nh9`gh^IYV}Z<%>RQpmRP+~OtQf+6X<_47-z`X#NBZpL4s9i#BD)C>r{G^`45gjCW$l~^TJ l&Zl*?H8rELx +#include + +Executor::Executor() {} + +void Executor::start() { + running = true; + while (running) { + machine->execute(); + std::this_thread::sleep_for(std::chrono::milliseconds(1)); + } +} + + +void Executor::stop() { + running = false; +} + +bool Executor::isRunning() { + return running; +} + +void Executor::step() { + machine->execute(); +} diff --git a/ass2/simulator/executor.h b/ass2/simulator/executor.h new file mode 100644 index 0000000..99cf6f4 --- /dev/null +++ b/ass2/simulator/executor.h @@ -0,0 +1,26 @@ +#ifndef EXECUTOR_H +#define EXECUTOR_H + +class Machine; + +class Executor +{ +private: + bool running = false; + Machine* machine; +public: + Executor(); + // Zažene oz. nadaljuje samodejno izvajanje. + void start(); + + // Zaustavi samodejno izvajanje. + void stop(); + + // Pove, ali je samodejno izvajanje trenutno v teku. + bool isRunning(); + + // Izvede en ukaz. + void step(); +}; + +#endif // EXECUTOR_H diff --git a/ass2/simulator/loader.cpp b/ass2/simulator/loader.cpp new file mode 100644 index 0000000..8478618 --- /dev/null +++ b/ass2/simulator/loader.cpp @@ -0,0 +1,3 @@ +#include "loader.h" + +Loader::Loader() {} diff --git a/ass2/simulator/loader.h b/ass2/simulator/loader.h new file mode 100644 index 0000000..4c7fe87 --- /dev/null +++ b/ass2/simulator/loader.h @@ -0,0 +1,19 @@ +#ifndef LOADER_H +#define LOADER_H +#include + +class Loader +{ +public: + Loader(); + // Prebere niz dolžine len + std::string readString(string &r, int len); + + // Prebere en bajt (2 heksadecimalni znaka) + int readByte(std::string &r); + + // Prebere eno "besedo" (3 bajte = 6 heksadecimalnih znakov) + int readWord(std::string &r); +}; + +#endif // LOADER_H diff --git a/ass2/simulator/machine.cpp b/ass2/simulator/machine.cpp index aa780b8..f7c477d 100644 --- a/ass2/simulator/machine.cpp +++ b/ass2/simulator/machine.cpp @@ -181,7 +181,7 @@ bool Machine::execSICF3F4(int opcode, int ni, int operand) { if (ni == 0) { // stari SIC (neposredno in enostavno naslavljanje) UA = (((operand & 0x7F) << 8) | operand2) + x_val; //izracun uporabnega naslova: operand brez bita x + drugi del naslova + x_val - if (UA + 2 > MAX_ADDRESS) { + if (UA < 0 || UA + 2 > MAX_ADDRESS) { invalidAddressing(); return false; } @@ -205,7 +205,7 @@ bool Machine::execSICF3F4(int opcode, int ni, int operand) { invalidAddressing(); } - if (UA + 2 > MAX_ADDRESS) { + if (UA < 0 || UA + 2 > MAX_ADDRESS) { invalidAddressing(); return false; } @@ -237,7 +237,7 @@ bool Machine::execSICF3F4(int opcode, int ni, int operand) { invalidAddressing(); } - if (UA + 2 > MAX_ADDRESS) { + if (UA < 0 || UA + 2 > MAX_ADDRESS) { invalidAddressing(); return false; } @@ -252,149 +252,167 @@ bool Machine::execSICF3F4(int opcode, int ni, int operand) { } } switch (opcode) { - case Opcode::ADD: - setA(getA() + UV); - return true; - case Opcode::AND: - setA(getA() & UV); - return true; - case Opcode::COMP: - temp = getA(); - if (temp < UV) { - setSW(0x40); - } else if (temp == UV) { - setSW(0x0); - } else { - setSW(0x80); - } - return true; - break; - case Opcode::DIV: - if (UV == 0) { - cerr << "Error: Divison by zero." << endl; - return false; - } - setA(getA() / UV); - return true; - case Opcode::J: - setPC(UV); - return true; - case Opcode::JEQ: - if (getSW() == 0x00) { + case Opcode::ADD: + setA(getA() + UV); + return true; + case Opcode::AND: + setA(getA() & UV); + return true; + case Opcode::COMP: + temp = getA(); + if (temp < UV) { + setSW(0x40); + } else if (temp == UV) { + setSW(0x0); + } else { + setSW(0x80); + } + return true; + break; + case Opcode::DIV: + if (UV == 0) { + cerr << "Error: Divison by zero." << endl; + return false; + } + setA(getA() / UV); + return true; + case Opcode::J: setPC(UV); - } - return true; - case Opcode::JGT: - if (getSW() == 0x80) { + return true; + case Opcode::JEQ: + if (getSW() == 0x00) { + setPC(UV); + } + return true; + case Opcode::JGT: + if (getSW() == 0x80) { + setPC(UV); + } + return true; + case Opcode::JLT: + if (getSW() == 0x40) { + setPC(UV); + } + return true; + case Opcode::JSUB: + setL(getPC()); setPC(UV); - } - return true; - case Opcode::JLT: - if (getSW() == 0x40) { - setPC(UV); - } - return true; - case Opcode::JSUB: - setL(getPC()); - setPC(UV); - return true; - case Opcode::LDA: - setA(UV); - return true; - case Opcode::LDB: - setB(UV); - return true; - case Opcode::LDCH: - setA((getA() & 0xFFFF00) | (UV & 0xFF)); - return true; - case Opcode::LDL: - setL(UV); - return true; - case Opcode::LDS: - setS(UV); - return true; - case Opcode::LDT: - setT(UV); - return true; - case Opcode::LDX: - setX(UV); - return true; - case Opcode::MUL: - setA(getA() * UV); - return true; - case Opcode::OR: - setA(getA() | UV); - return true; - case Opcode::RD: - temp = UV & 0xFF; - if (devices[temp] != nullptr) { - setA(devices[temp]->read()); - } - return true; - case Opcode::RSUB: - setPC(getL()); - return true; - case Opcode::STA: - temp = getA(); - memory[UV] = (temp >> 16) & 0xFF; - memory[UV + 1] = (temp >> 8) & 0xFF; - memory[UV + 2] = temp & 0xFF; - return true; - case Opcode::STCH: - temp = getA(); - memory[UV] = temp & 0xFF; - return true; - case Opcode::STL: - temp = getL(); - memory[UV] = (temp >> 16) & 0xFF; - memory[UV + 1] = (temp >> 8) & 0xFF; - memory[UV + 2] = temp & 0xFF; - return true; - case Opcode::STSW: - temp = getSW(); - memory[UV] = (temp >> 16) & 0xFF; - memory[UV + 1] = (temp >> 8) & 0xFF; - memory[UV + 2] = temp & 0xFF; - return true; - case Opcode::STX: - temp = getX(); - memory[UV] = (temp >> 16) & 0xFF; - memory[UV + 1] = (temp >> 8) & 0xFF; - memory[UV + 2] = temp & 0xFF; - return true; - case Opcode::SUB: - setA(getA() - UV); - return true; - case Opcode::TD: - temp = UV & 0xFF; + return true; + case Opcode::LDA: + setA(UV); + return true; + case Opcode::LDB: + setB(UV); + return true; + case Opcode::LDCH: + setA((getA() & 0xFFFF00) | (UV & 0xFF)); + return true; + case Opcode::LDL: + setL(UV); + return true; + case Opcode::LDS: + setS(UV); + return true; + case Opcode::LDT: + setT(UV); + return true; + case Opcode::LDX: + setX(UV); + return true; + case Opcode::MUL: + setA(getA() * UV); + return true; + case Opcode::OR: + setA(getA() | UV); + return true; + case Opcode::RD: + temp = UV & 0xFF; + if (devices[temp] != nullptr) { + setA(devices[temp]->read()); + } + return true; + case Opcode::RSUB: + setPC(getL()); + return true; + case Opcode::STA: + temp = getA(); + memory[UV] = (temp >> 16) & 0xFF; + memory[UV + 1] = (temp >> 8) & 0xFF; + memory[UV + 2] = temp & 0xFF; + return true; + case Opcode::STB: + temp = getB(); + memory[UV] = (temp >> 16) & 0xFF; + memory[UV + 1] = (temp >> 8) & 0xFF; + memory[UV + 2] = temp & 0xFF; + return true; + case Opcode::STS: + temp = getS(); + memory[UV] = (temp >> 16) & 0xFF; + memory[UV + 1] = (temp >> 8) & 0xFF; + memory[UV + 2] = temp & 0xFF; + return true; + case Opcode::STT: + temp = getA(); + memory[UV] = (temp >> 16) & 0xFF; + memory[UV + 1] = (temp >> 8) & 0xFF; + memory[UV + 2] = temp & 0xFF; + return true; + case Opcode::STCH: + temp = getA(); + memory[UV] = temp & 0xFF; + return true; + case Opcode::STL: + temp = getL(); + memory[UV] = (temp >> 16) & 0xFF; + memory[UV + 1] = (temp >> 8) & 0xFF; + memory[UV + 2] = temp & 0xFF; + return true; + case Opcode::STSW: + temp = getSW(); + memory[UV] = (temp >> 16) & 0xFF; + memory[UV + 1] = (temp >> 8) & 0xFF; + memory[UV + 2] = temp & 0xFF; + return true; + case Opcode::STX: + temp = getX(); + memory[UV] = (temp >> 16) & 0xFF; + memory[UV + 1] = (temp >> 8) & 0xFF; + memory[UV + 2] = temp & 0xFF; + return true; + case Opcode::SUB: + setA(getA() - UV); + return true; + case Opcode::TD: + temp = UV & 0xFF; - ready = false; - if (devices[temp] != nullptr) { - ready = devices[temp]->test(); - } - if (ready) { - setSW(0X40); - } else { - setSW(0x00); - } + ready = false; + if (devices[temp] != nullptr) { + ready = devices[temp]->test(); + } + if (ready) { + setSW(0X40); + } else { + setSW(0x00); + } - return true; - case Opcode::TIX: - temp = getX(); - setX(temp + 1); - if (temp < UV) setSW(0x40); - else if (temp == UV) setSW(0x00); - else setSW(0x80); - return true; - case Opcode::WD: - temp = UV & 0xFF; - if (devices[temp] != nullptr) { - devices[temp]->write(getA() & 0xFF); - } - return true; - default: - notImplemented(opcode); - break; + return true; + case Opcode::TIX: + temp = getX(); + setX(temp + 1); + if (temp < UV) setSW(0x40); + else if (temp == UV) setSW(0x00); + else setSW(0x80); + return true; + case Opcode::WD: + temp = UV & 0xFF; + if (devices[temp] != nullptr) { + devices[temp]->write(getA() & 0xFF); + } + return true; + default: + notImplemented(opcode); + break; } return false; } diff --git a/ass2/simulator/machine.h b/ass2/simulator/machine.h index e3715a2..0e4847d 100644 --- a/ass2/simulator/machine.h +++ b/ass2/simulator/machine.h @@ -68,6 +68,8 @@ public: bool execF2(int opcode, int operand); bool execSICF3F4(int opcode, int ni, int operand); + + bool loadSection(Reader r); }; #endif