From 675301df7f823f45641bdafe8ecf68a322aa5abf Mon Sep 17 00:00:00 2001 From: anishd100 Date: Tue, 24 Mar 2026 16:08:37 +0530 Subject: [PATCH 1/3] GST Release Display Chages --- .env | 2 +- __pycache__/config.cpython-314.pyc | Bin 940 -> 874 bytes activity.log | 95 +++++++++++++++ .../auth_controller.cpython-314.pyc | Bin 2340 -> 2274 bytes .../block_controller.cpython-314.pyc | Bin 4574 -> 4512 bytes .../district_controller.cpython-314.pyc | Bin 3411 -> 3345 bytes .../excel_upload_controller.cpython-314.pyc | Bin 20763 -> 19416 bytes .../gst_release_controller.cpython-314.pyc | Bin 4717 -> 3219 bytes .../hold_types_controller.cpython-314.pyc | Bin 2960 -> 2894 bytes .../invoice_controller.cpython-314.pyc | Bin 5385 -> 5655 bytes .../log_controller.cpython-314.pyc | Bin 1289 -> 1223 bytes .../payment_controller.cpython-314.pyc | Bin 5939 -> 5875 bytes .../pmc_report_controller.cpython-314.pyc | Bin 1662 -> 1685 bytes .../report_controller.cpython-314.pyc | Bin 9795 -> 2209 bytes .../state_controller.cpython-314.pyc | Bin 2831 -> 2757 bytes .../subcontractor_controller.cpython-314.pyc | Bin 4983 -> 3461 bytes .../village_controller.cpython-314.pyc | Bin 5565 -> 5351 bytes controllers/gst_release_controller.py | 12 +- model/ItemCRUD.py | 99 +++++++++++----- model/Utilities.py | 2 +- model/__pycache__/Auth.cpython-314.pyc | Bin 2846 -> 2780 bytes model/__pycache__/Block.cpython-314.pyc | Bin 5189 -> 4786 bytes model/__pycache__/District.cpython-314.pyc | Bin 5003 -> 4269 bytes model/__pycache__/GST.cpython-314.pyc | Bin 2343 -> 2188 bytes model/__pycache__/HoldTypes.cpython-314.pyc | Bin 3843 -> 3777 bytes model/__pycache__/Invoice.cpython-314.pyc | Bin 17044 -> 11587 bytes model/__pycache__/ItemCRUD.cpython-314.pyc | Bin 15647 -> 17910 bytes model/__pycache__/Log.cpython-314.pyc | Bin 5730 -> 6442 bytes model/__pycache__/PmcReport.cpython-314.pyc | Bin 16453 -> 14760 bytes model/__pycache__/Report.cpython-314.pyc | Bin 8811 -> 16713 bytes model/__pycache__/State.cpython-314.pyc | Bin 5778 -> 5589 bytes .../__pycache__/Subcontractor.cpython-314.pyc | Bin 6217 -> 6151 bytes model/__pycache__/Utilities.cpython-314.pyc | Bin 4100 -> 4055 bytes model/__pycache__/Village.cpython-314.pyc | Bin 6089 -> 7662 bytes model/__pycache__/gst_release.cpython-314.pyc | Bin 7236 -> 7224 bytes model/__pycache__/payment.cpython-314.pyc | Bin 8203 -> 12860 bytes model/gst_release.py | 112 ++---------------- templates/add_gst_release.html | 71 ++++++----- 38 files changed, 215 insertions(+), 178 deletions(-) diff --git a/.env b/.env index 5bfeba1..494210b 100644 --- a/.env +++ b/.env @@ -2,7 +2,7 @@ Secret_Key = 9f2a1b8c4d6e7f0123456789abcdef01 MYSQL_HOST=127.0.0.1 MYSQL_USER=root -MYSQL_PASSWORD=root +MYSQL_PASSWORD=admin MYSQL_DB=test DEFAULT_USERNAME=admin diff --git a/__pycache__/config.cpython-314.pyc b/__pycache__/config.cpython-314.pyc index f7ac19fd6340f33fca43abf40abb3efc98865ffb..847ed1acf8d9fbd6b1745f2e4aa63871055e1caf 100644 GIT binary patch delta 73 zcmZ3({)&xPn~#@^0SFRR4rMBC#wE2lyClB=P8TFr z=BDPA#22L|=jSD7=42+8Waj6^7w4yylqVLY>gFb9=EV?FWMrsoV61CoU}P2pG$k!F TU9X_>mSB2nN&MzeCQ(KJfFn0@ diff --git a/activity.log b/activity.log index e69de29..dc6b2a6 100644 --- a/activity.log +++ b/activity.log @@ -0,0 +1,95 @@ +Timestamp: 2026-03-24 12:53:58 | User: Unknown | Action: Login | Details: User admin logged in (static user) +Timestamp: 2026-03-24 12:54:01 | User: Unknown | Action: Check State | Details: User admin checked 'l' +Timestamp: 2026-03-24 12:54:01 | User: Unknown | Action: Check State | Details: User admin checked 'la' +Timestamp: 2026-03-24 12:54:01 | User: Unknown | Action: Check State | Details: User admin checked 'lax' +Timestamp: 2026-03-24 12:54:02 | User: Unknown | Action: Check State | Details: User admin checked 'laxm' +Timestamp: 2026-03-24 12:54:02 | User: Unknown | Action: Check State | Details: User admin checked 'laxmi' +Timestamp: 2026-03-24 12:54:08 | User: Unknown | Action: Edit State | Details: User admin edited '9' +Timestamp: 2026-03-24 12:54:39 | User: Unknown | Action: Add GST Release | Details: User added GST release +Timestamp: 2026-03-24 12:56:54 | User: Unknown | Action: Upload Excel File | Details: User admin Upload Excel File 'Aadi Shakti Construction_shamli_31.07.25.xlsx' +Timestamp: 2026-03-24 12:56:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2026-03-24 12:56:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2026-03-24 12:56:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2026-03-24 12:56:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2026-03-24 12:56:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2026-03-24 12:56:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2026-03-24 12:56:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2026-03-24 12:56:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2026-03-24 12:56:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2026-03-24 12:56:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2026-03-24 12:56:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2026-03-24 12:56:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2026-03-24 12:56:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2026-03-24 12:56:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2026-03-24 12:56:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2026-03-24 12:56:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2026-03-24 12:56:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2026-03-24 12:56:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2026-03-24 12:56:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2026-03-24 12:56:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2026-03-24 12:56:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2026-03-24 12:56:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2026-03-24 12:56:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2026-03-24 12:56:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2026-03-24 12:56:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2026-03-24 12:57:01 | User: Unknown | Action: Search Contractor | Details: User admin searched contractor 'ad' +Timestamp: 2026-03-24 12:57:01 | User: Unknown | Action: Search Contractor | Details: User admin searched contractor 'ad' +Timestamp: 2026-03-24 12:57:03 | User: Unknown | Action: Search Contractor | Details: User admin searched contractor 'ad' +Timestamp: 2026-03-24 12:58:20 | User: Unknown | Action: Add GST Release | Details: User added GST release +Timestamp: 2026-03-24 12:58:26 | User: Unknown | Action: Search Contractor | Details: User admin searched contractor 'ad' +Timestamp: 2026-03-24 12:58:26 | User: Unknown | Action: Search Contractor | Details: User admin searched contractor 'ad' +Timestamp: 2026-03-24 12:58:28 | User: Unknown | Action: Search Contractor | Details: User admin searched contractor 'ad' +Timestamp: 2026-03-24 12:59:42 | User: Unknown | Action: Download PMC Report | Details: User admin Download PMC Report '59485' +Timestamp: 2026-03-24 13:02:31 | User: Unknown | Action: Download PMC Report | Details: User admin Download PMC Report '59485' +Timestamp: 2026-03-24 13:02:38 | User: Unknown | Action: Search Contractor | Details: User admin searched contractor 'a' +Timestamp: 2026-03-24 13:02:38 | User: Unknown | Action: Search Contractor | Details: User admin searched contractor 'ad' +Timestamp: 2026-03-24 13:02:39 | User: Unknown | Action: Search Contractor | Details: User admin searched contractor 'ad' +Timestamp: 2026-03-24 13:10:49 | User: Unknown | Action: Add Hold Type | Details: User admin adding '30%' +Timestamp: 2026-03-24 13:14:15 | User: Unknown | Action: Search Contractor | Details: User admin searched contractor 'a' +Timestamp: 2026-03-24 13:14:16 | User: Unknown | Action: Search Contractor | Details: User admin searched contractor 'ad' +Timestamp: 2026-03-24 13:14:17 | User: Unknown | Action: Search Contractor | Details: User admin searched contractor 'ad' +Timestamp: 2026-03-24 13:40:26 | User: Unknown | Action: Search Contractor | Details: User admin searched contractor 'a' +Timestamp: 2026-03-24 13:40:27 | User: Unknown | Action: Search Contractor | Details: User admin searched contractor 'a' +Timestamp: 2026-03-24 14:19:43 | User: Unknown | Action: Delete GSTRelease | Details: User admin deleted GSTRelease '1' +Timestamp: 2026-03-24 14:19:43 | User: Unknown | Action: Delete GST Release | Details: User deleted GST release +Timestamp: 2026-03-24 14:24:04 | User: Unknown | Action: Check State | Details: User admin checked 'a' +Timestamp: 2026-03-24 14:54:10 | User: Unknown | Action: Add Item | Details: User admin adding 'None' +Timestamp: 2026-03-24 14:54:10 | User: Unknown | Action: Add GST Release | Details: User added GST release +Timestamp: 2026-03-24 15:03:52 | User: Unknown | Action: Add GSTRelease | Details: User admin adding 'None' +Timestamp: 2026-03-24 15:03:52 | User: Unknown | Action: Add GST Release | Details: User added GST release +Timestamp: 2026-03-24 15:10:46 | User: Unknown | Action: Add GSTRelease | Details: User admin adding 'None' +Timestamp: 2026-03-24 15:10:46 | User: Unknown | Action: Add GST Release | Details: User added GST release +Timestamp: 2026-03-24 15:14:20 | User: Unknown | Action: Add GSTRelease | Details: User admin adding 'None' +Timestamp: 2026-03-24 15:14:20 | User: Unknown | Action: Add GST Release | Details: User added GST release +Timestamp: 2026-03-24 15:14:29 | User: Unknown | Action: Add GSTRelease | Details: User admin adding 'None' +Timestamp: 2026-03-24 15:14:29 | User: Unknown | Action: Add GST Release | Details: User added GST release +Timestamp: 2026-03-24 15:15:26 | User: Unknown | Action: Add GSTRelease | Details: User admin adding 'None' +Timestamp: 2026-03-24 15:15:26 | User: Unknown | Action: Add GST Release | Details: User added GST release +Timestamp: 2026-03-24 15:17:34 | User: Unknown | Action: Add GSTRelease | Details: User admin adding 'None' +Timestamp: 2026-03-24 15:17:34 | User: Unknown | Action: Add GST Release | Details: User added GST release +Timestamp: 2026-03-24 15:20:29 | User: Unknown | Action: Add GSTRelease | Details: User admin adding 'None' +Timestamp: 2026-03-24 15:20:29 | User: Unknown | Action: Add GST Release | Details: User added GST release +Timestamp: 2026-03-24 15:20:46 | User: Unknown | Action: Add GSTRelease | Details: User admin adding 'None' +Timestamp: 2026-03-24 15:20:46 | User: Unknown | Action: Add GST Release | Details: User added GST release +Timestamp: 2026-03-24 15:21:33 | User: Unknown | Action: Add GSTRelease | Details: User admin adding 'None' +Timestamp: 2026-03-24 15:21:33 | User: Unknown | Action: Add GST Release | Details: User added GST release +Timestamp: 2026-03-24 15:22:17 | User: Unknown | Action: Add GSTRelease | Details: User admin adding 'None' +Timestamp: 2026-03-24 15:22:17 | User: Unknown | Action: Add GST Release | Details: User added GST release +Timestamp: 2026-03-24 15:27:58 | User: Unknown | Action: Add GSTRelease | Details: User admin adding 'None' +Timestamp: 2026-03-24 15:27:58 | User: Unknown | Action: Add GST Release | Details: User added GST release +Timestamp: 2026-03-24 15:28:20 | User: Unknown | Action: Add GSTRelease | Details: User admin adding 'None' +Timestamp: 2026-03-24 15:28:20 | User: Unknown | Action: Add GST Release | Details: User added GST release +Timestamp: 2026-03-24 15:33:32 | User: Unknown | Action: Add GSTRelease | Details: User admin adding 'None' +Timestamp: 2026-03-24 15:33:32 | User: Unknown | Action: Add GST Release | Details: User added GST release +Timestamp: 2026-03-24 15:34:55 | User: Unknown | Action: Add GSTRelease | Details: User admin adding 'None' +Timestamp: 2026-03-24 15:34:55 | User: Unknown | Action: Add GST Release | Details: User added GST release +Timestamp: 2026-03-24 15:35:49 | User: Unknown | Action: Add GSTRelease | Details: User admin adding 'None' +Timestamp: 2026-03-24 15:35:49 | User: Unknown | Action: Add GST Release | Details: User added GST release +Timestamp: 2026-03-24 15:40:15 | User: Unknown | Action: Delete GSTRelease | Details: User admin deleted GSTRelease '12' +Timestamp: 2026-03-24 15:40:15 | User: Unknown | Action: Delete GST Release | Details: User deleted GST release with ID 12 +Timestamp: 2026-03-24 15:41:46 | User: Unknown | Action: Add GSTRelease | Details: User admin adding 'None' +Timestamp: 2026-03-24 15:41:46 | User: Unknown | Action: Add GST Release | Details: User added GST release +Timestamp: 2026-03-24 15:56:34 | User: Unknown | Action: Add GSTRelease | Details: User admin adding 'None' +Timestamp: 2026-03-24 15:56:34 | User: Unknown | Action: Add GST Release | Details: User added GST release +Timestamp: 2026-03-24 15:59:39 | User: Unknown | Action: Delete GSTRelease | Details: User admin deleted GSTRelease '15' +Timestamp: 2026-03-24 15:59:39 | User: Unknown | Action: Delete GST Release | Details: User deleted GST release diff --git a/controllers/__pycache__/auth_controller.cpython-314.pyc b/controllers/__pycache__/auth_controller.cpython-314.pyc index 7cb65507b4cc1661cb570d7dba8430252af63913..3a95e792c279ef4c406826f909a8f3f953e772f7 100644 GIT binary patch delta 73 zcmZ1?^hl6bn~#@^0SFRR4rRXH$a|4R*W1}DCbT%Us5mAlKfff#CAB!aB)=dgAh9wx bHLoN-C^b1hFF7+OGqEHyKX0=y>vd)TZJHVR delta 155 zcmaDPxI~Con~#@^0SJ~%-j}&=Bkx6)`d(+Nn9$>oS&DRnUk4Vl9`_uU!0#-Ql40ps+*gbnHNJyk&&UUfw8WUfst7Z(3Fy* S{G1$+jftfto26NgGXnryhdIdr diff --git a/controllers/__pycache__/block_controller.cpython-314.pyc b/controllers/__pycache__/block_controller.cpython-314.pyc index 6b948982264ab6c26e5baff2bc378e70d6bc35e2..cd3b3a2e7068d4a0c812135a42723d122ec05a56 100644 GIT binary patch delta 2036 zcmZ`)O>7%Q6rTOF*WO**>o`q<(>RG6w^l<_iL{p50&1ExHdK|hs8$XRmTPZYD;wLL zod^|GN-l^45^6J74iy3+Bn}{cjv%;kC`w3C(9+T(l>;Xt(GvoRd9&UU+Ay-;yqS65 zd(UsaH~u+$D;ql;GopwMdFq>%s@;qYuD&ZEw1!?qmQX?jX0ap`MIsg@A{AvK7Zsuu zLnKrTlWq^Ne#z>6op;EkQ?P zE+)$deI2d#W|%D1idfMjqNNpjri)QaA3)PRn_woXT@H5RjcN8{U@%;44_yD#I3C}M zv#`Q{!Y1~B?|T{!!7Ou+w3B<_2ll`}2M+pn<(=9CIA{r3l<)ryqMgr&>22ZkxTjol z>h6`i;KiKIPp_RVS@ZyUG>>cO1v2pD5$zFms}Vw+<6)=uwD1R3`Jf z`PTf}+>b_b+sJGhnUBI7MrO-6x_0(~xo_LdZkpNm=C{nrwU<7<9{OFN@5{xI(r`Mi zP2X0BM!hJD(Y6~94j*8Cy-2g=65MJK*AuZzzgBZYY1lU|+obmR3?F5Cu&cPTq_j6TcMM)eg`f zqB&uS{uMpDnnCP7Rc7_X2zsqKhR`soKIVZXSYptW8B{d_ST!DKmJ~2En6ta^PejY~ zP?o&QDKLbOa*~#{F}f}dOHxImT|K2+O5inv=nZ{@ey3?ddOe)hl$ZMvil7k`Scd+` zaw_!LQYh~aV*NW;PypH=F*2d5Vp32jfBJ%j@%dVK!jP zY@O6;+(RD2Eh@}g2r19;`{vv9Lhlhvf&dkYO^eQJUqot=h)Xx3-lM` z(2QzqtLg96^aCxit&OnHhBk6nH#d?~9}nHpPu}fIzcasa;Mmsi@vXkXhF*B6n>Qx5 zlM|cCiCeGT(Wh8v>X9rh#BMTTe;fNCf{!!rd4;_tZ^Xy*C)vVp4ER&X^%ByXwqp~! zm(q*uq)j*C$28zTeu$TaYKe(eUN29Bw{oe*A4&{=fS$J8VIGd~x57&^pLYqfTL*{;<*m0x)6V%Jk}XNA3B@Z|7T=e>$qp=J<<+&)AY67y@R zo??Di9Qy@aVtdf-?%z!8NP-~zgpB)WVH+)MqJ?`X_bb|ek3LFFrV>Kv4+)705QQC? dEq4ylX>+Onz^;RNVMk``o%8fFGbcm9e*igEmzn?o delta 1917 zcmai!O>7%Q6o6;;$KLhNZk#xA9MUGSiNS4RrD@VosGw;RVnd1CMYVEpuv~jvR&i`+ zb^;0#a*z;+1E|pm2~`|=sDvt296%t%fddz=jardt5m1S8;6wz711H|B?X-~`7|CyE z-_N|a?|tJN@t@+_aV_XWux_$%tP{R1t-o;{BeaQLK?csCG^RK$P$4Z+F)dLkEmJw| zp`Iab7c$l(zPR#hIAD&VskPgzIYm+ltTBrIDTE-*D@GN&t2|Oc0G_)Mb zjyCuEvH?58Ybb`A5)9u=%XL{X{1G(O@@hY6Plp3|d|(Pbf-i^*c8Cif5~mqzBZUv7 z)jNdu9unTwq3lqH_`XBpyP@o3?Yet91V#)oj*{WuxKGlq1V*hPdhAGH|Z*+hR@mIGOYT2?Wu}ah?!`!^#O+-gv z;{>mowD8b44!Yy)EAJOL&Z^29_Obg)B*yz|^V>8`+#rAHRkO5GxXfokCP4o@i>jj# z@|-#?qy)AlMA-XkLX9Id$SLr0M%bbc(w~?81$JYc~aTK@31*_~LzCX`-^i zNR?E*L@RTkY*tKawsM~aOPyWQr#*lKO7^om z`e?)PU#S%Bm4f@vMO1za?~|jiZrE#;RO>p|h$FiS$G=*GLsQMR@`i(_tGPtsj#A6C ziJxngLZMn*H4BAy`!3fVnbg*)N%$osoN=Ib9whGx;lF&*EL_!xAGkX%e?mfl+?po7OlbKkOnV&Z~nZ=2bZSyh~Jw`_P%~x3$Gcsyyu4K1j6%k-$`^?P1 ZBmg38Kd=C~AJirv=Lut!nk>g_3ILZTC8PiV delta 191 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 diff --git a/controllers/__pycache__/gst_release_controller.cpython-314.pyc b/controllers/__pycache__/gst_release_controller.cpython-314.pyc index ff435e400889e685d2ee15ce286023dd2f3a36d9..ecb0aee4c12bd02e17edb9a17103f6b7f9b1c5c6 100644 GIT binary patch literal 3219 zcmbVOO>7fK6rQ!$_S%lUPMkj=Bo0xNn9w9d0V- z;z}qzwNg29=%I&J;s7@e9C}1m4>_)}CDWBrRTZ`BEp2+@)Hk!>Xtg+D12#z$~B`qcAat;)ppFXN*BO=%lIYs?@LTx)@8hyHFQxaJ!~(+xukzZQ%S z8s@E0a0?!R8+QoaQw_Z}PVn`ZdZvE+EA;&>^xInKcf3MB&_X}hLO(3hgSZ}b zYu-7jC>C%wr)WGDa~TmQ6>+N|r4&)~VDY1(C@UI=#Y`59X+`rCv6Q@($C~Swl#(~1 zj24vg>)BkAY=tcuSnF43NO?fFZY83L0zHXp@GlRbw{Nm}DTv zJ|s978G*Ig2pjtnUB*ms86F$skUiEOW1lq|P%NOt0b^BguOPu=Ko<>hW%ut55SmArIli zlb0SIP~Tgva@Xs8&o>@5a;DOIw!+V;+}w+Be=R&&4o_CXQ`?v8{)6hF<4@YE{za8t z+ynEdG&}*ESM2PZn1Ng3v^}6~W;WfR3(>L2iJQquDBILlkO9~Nv%(m_U)O=}-3MZl ztEMI}l-i$CYMZjS*PNOYi*R7EaY+DOO-jex%&q1G$n6lEw%xoTvM!2v3;Nom9fpQA z8ZkD=%>ubyHXA0T6DDZ|w{b?s295T)a*JY zS?Gno{3UdhW}!nh{#cnm_TXlPpV^N6><>TV$5d|Yg(tY5e@DvPk^83}ELFL;Z48`H zk6)~EmtL2FgmY6*R;&Icm0iLE;7n!TJwxRkTxiQjXTB|p**=t9p~v$?Za~~#j}2f`^r-j zprc+LnIZihuLZv-gWmwZXki%EG1l?#tl^`uXO!#{pra^rg=%c1%tpTLud-$NcQ9(q1$yb4D&l$ zuA$}UX!toAeU1ixX$KmNJy@-@pWF`q6zu&<+V=0dkt0-Ny2?zK+CBQ{#P`FGCRC=Y z!puEm_&*&Sv&8Ho_KeKEpT?Zwyu-j)-I^ Y6;^k2OE;(z%e-qE`hfY1g=ZS&Kl9|9Hvj+t literal 4717 zcmcInZEO?C8J_j$+FpMqj?EFU(})ir#DS0mgpL%#m!mtCwm)vo$Rspn%Q-) zaZ`>{rEB`DMLh{BRcchV68%vrl`55!PK7^}@^hLG1+8+TRijGxFOZX}(m$P9+wt0G zaQmYx?d-fW?>qDE%)HO@&JmB>3GnmlpZ!VvAp^kQiBNs4mC8<(0^lB)0xUHG5|m0M zOsXkiR?P{EYDrjCYr>}5BBb9mVo%U2op7iQT{e$66E4-I*DWJV!mYX^V3O(rtaZ}U zZz_+kdMCYOUDZizU)ILjSvqcF9VaWAlQioLf&Pk0^{e_{WAAEW&or?QyvE+$#NN}y zzK!*EgP89t;#bV3IfkX8P=I1y)x1#1X9UQpLare3s-W4SaHl9JszyU0BSImqYW51 zk7cSsHZ{oR2HDaeTN`AXQI6Y3P49ji00-EQeJD^@s5mH?QkJR*W43Co_GRs-CIHC% zoBV-6ldfr0YxTYt%q_HOqh|$63vEZ8wzY+}vrgOALfciRZEvB?)M?W#wB2>uj+Blu zWW~lX#xy<{4Lqzj<*Bxh`KqG$@@hmla zJQg#p+w&FstZrYGRNcNJnTsmad`fXTE$3Cpr&SqpVy5Ihm&ru2qtS|^udLTGjzmlC zQ49=1xvPQ~(L)+_=+%A$SYQN+H{eI9y`dpKtL7w(Ta3X@(dfz=C^0uAc%pS=1vNd( z@seajBLxzo(QIWH(kvJYbC8@9&52=`?7Z3BA_Z-j?d!b7X!v&a(sCj*>& zUzkDrfgOjn-S&dUwFQ3L3fvy#*}u+27X6E-ezW%xzr_4be#W>L^6SjLhj$kDuSbq8 zbuEpq_nm)w^=a|X6FXM3!}-F7&0ms%ww<7>d)o!9{;xfN_WtPZCwCuqtl1-*{_um& z`<)MG*ZqeUY@5N(2dVq1#iQ%N-Ua7oX#a!x`}2#V>!A}1%o`<7@F&ubrH2FSo~{M+ zW;pUo=I0DLaB@9-YQeol`#0#$6}l7ci!UAcf_dWo+>1^oP$GpU(L#eFyXYY2!wTnW1zAU$9|$S9E3_#Z20oS(Ce{ zM3}S6tuuIpPC)Vw0}?mmF-qsLt^b0@>NvNKADgjW9V547y*j>b$$E8cUTDR7bzEO) z#d`KSX0o?rCYp7$WF}|Qgqg|pKQWVua8uIWf|-~qBUQh3%;ZkuOosK;m?`Fa6*Rzn zG%u^sEGC_d&MB}BpFT*4tr_f8RiHnIeaVAWDEN{)CVNx&!>h9vE!U}FeW$-rlf zf()g8k0~ln(hc-e(E1{vs zcUMEB$kP7YwfC9#2%?W{***VPEHr>$@6x~*olhd4N6@JeG%|%a0ZnC5b_N}vU8BVs z_zgWhjV47jH@`;zpgH*Up^Mki2h(e=G_s_3@IQjm;a+^*5bD>vHRh4U)G_ZL`a-q3 zP1G>&BaD$SV8A_`=i!XJdNTzqzLT;h*4%5VMhI&;VZu?ei-luN(2LwZS=*aqA4jx3 z32;f*#kFx}hu-h(Gh+{2H4mnii3c%;T&xs@pAky2ra>8%VKmE&5{@lZj+U2IvneXC z78T7ZKqy0af~fPFkv|D#dgf`;{$9(p+4#SHzgToT3H3 zxxJ9AV6)hZnc*Pm!ne9|>ZFi8#zCXU3mhWNq#&>IDK7L7Y46@>8(3)@Sjw-qUHs&| zdzYWP0-N5BhYr*|ipD0;O&*1&SG{Q@%p&hBqGz`(?hQ+L#S%t)dX|EJnE&I)zyBBw zUPhNE(UgQHb10Wbz4Dr+u;~i?bY!vfQ6BZ2L1(U^$T&()p$|mV_Tj4QHp&%{tAH#8 zcnZ5R8f(|AS&3I}L*lfaHG{@!noWOC=O-8dqxu^aZsM%V%tnn z)N^ok16+L$`o9D{UxLWr{5U~5@@Qh!KX}ixZ38CX1{M4Z6+|6}mj)gmTyYA`yxJb>7V X87bt4;fr)G4EdTAjI`VamG%=`S9 diff --git a/controllers/__pycache__/hold_types_controller.cpython-314.pyc b/controllers/__pycache__/hold_types_controller.cpython-314.pyc index f9eb4d102d066a7294ae23695b7c26aae6aef54b..1835d4ccceabb79bc19f06d733519012ba48597d 100644 GIT binary patch delta 73 zcmbOreol;6n~#@^0SFRR4rO+3h delta 155 zcmX>nHbI>oS&DRnUk4Vl9`_uU!0#-Ql40ps+*gbnHNJyk&&UUfw8WUfst7Z(3Fy* S{G1$+jT!kln?Etfumb?|Ejeuf diff --git a/controllers/__pycache__/invoice_controller.cpython-314.pyc b/controllers/__pycache__/invoice_controller.cpython-314.pyc index 6bfc202429b26283fdc7e03de7f37e418918b8de..e14f3b91de542d3a0ed1be6b2dbe6d426123540e 100644 GIT binary patch literal 5655 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 literal 5385 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 b%`1ryN=?qsOU}&6Of1RF&)eL<+{p+4FH0E3 delta 155 zcmX@k*~!JL&Bx2d00c`W@5?;9k(Y(JzQ@@rCbT%Us5r*a#n;m>#wE2lyClB=P8TFr z=BDPA#22L|=jSD7=42+8Waj6^7w4yylqVLY>gFb9=EV?FWMrsoV61CoU}P2pG^L~{ RKPLxdV@`hhW7%Q6vt=$u^(Q0{hdPV)OOM~STu=UIf*DqA#GCI0YbGBG>vR5*WM&cY;QHY z5o!c-PaNP+F20tUfpZk zu7WQw>S7#~a1u%Gl0WN!N(kwJQsByH`-9V%Z|_FkA$#@J@Cjb>9z)sgp24h#A#6DC z>Fc~CJ|!N3crWS5B>5$F0!#c%@6Zx21)h=}m4c%v75W7-Q>^hJo@XuhTD_uebiT$f zxNyK=m>ujjK4Q`#AKhbl>gsyAQq>i;Nd)6NW|>J+H#u%(*t3^oU=CAgAX;KDtmRAR zi*IN$(Tb9)>cs_F+tk$?#VeJY4Y{e8CAq3Lt4dv|KwaY}HjOi#Aui>lC%-Jb9|BP{ zmf}peBuN{Ogb_U7`Adkp@&Otk5x@z+5a1YKaGh=MVolK#z2nG98r=3Lj`|W~ByOw( zPT_>{ULdu2iSAH#Fx4bPywtYBYqDP5DBtK^`1;MVQX_6S1hglo0H6;!0}udX#;<{s z&rE?i4Va;@n5x=nC^|WBB!kJhMev^mi~}YBlYqg^$t)}(-#{EYSNl++W_xRWw=I7ol4+3y zt(D@tqKn;Kebot1WB*ebd<+2kBjq9mu$KV?VKo71FnX0F!EYqBY?nUm`exec0gTe!1yXVx5>GsO${_=numV$6|66kns?IU&q_>0KB_>K0PxGmVwTc_@dwn#fTdT)}d0gD7s=WXG>C1 zcI9DEfg?Z%1;ZFnZ+Tk*gx;(Gwuw=5@br;wYeJRLsM+ zlQ5-Ym}-ZK2cUXN&|}ANdODnG<(U2B$3*n%i8RpES9EKQ!=J+IyFbHAEL5<#Rk%%|qL-S{7!ZZb{BpRha zbwcL|`2AJ0(J35g$#uW z3f;=lTXad|gRUH%pQwN)cW))OA@dU8oyb}Iw|ZJr0T=}3FyRJ62RhUlJv7O5E~U;+ zF=>ww0h5_Qc}=ql>4WJxtclhnS@fqP`)Y~%gj!OiEQ`m56SS;R}&-5DOCNZPre}WWja8qqwHKng zFC@0^?VQ|^yzv`e&+NVs-_j1kp}w@`%ENiUZ#H*F%o#LekX7cf)G9j3wvMz5A=O;u>b)h?ZLzo nnDEs6qxBzF9@!pDJcV=nQ2CRILg_FBm^g*^;9o3R2b=r@@fArc diff --git a/controllers/__pycache__/pmc_report_controller.cpython-314.pyc b/controllers/__pycache__/pmc_report_controller.cpython-314.pyc index 76b3ae2655a85970e87a161f932edd64b81f48ac..7ba9e4397ad880e3e936c96488f0fe5a2d40e49e 100644 GIT binary patch delta 624 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 VrHcJAL3pYRXMU-}b?I&H{{dT}&CLJ+ diff --git a/controllers/__pycache__/state_controller.cpython-314.pyc b/controllers/__pycache__/state_controller.cpython-314.pyc index ba9b5cec04b6ad97b26c1f74f1d7f55259e4e41e..f6bd2c19c7033e7d3cae9fa4d62dda32e7660c4f 100644 GIT binary patch delta 204 zcmeAdJ1WYn&Bx2d00fCDhcXXsMa}2`x@7Dvk-t&o7B_NiEJU$uEcrNUY3F z%`1ryN=?qsOU}&6Of1RF&)a;M`5q&iJVO{`0NZ2%4&}+GSo;N;isXPM7Jg delta 264 zcmX>q+Aqed&Bx2d00c`W@5^M~$m`CW-{))<6Iz^FR2<{z;_K-b`i*jpGvD{#uhE->%D5sY z5nIa4Gv|8ht}-Cx?~WZ@nL}ppsZ>d#Qc0%r2&xJNWX7t>q{xdAqH0ww7ykOItr<7_ z%tTQ%`={EK)r6VMp~-epbW;5v_fxI=D{BFybpX=;0Fc-DfU?g0jHzx#hW43%%!r5m z$J_?46UU>WN-$g#W{ZXxCQEeLEn&BgNvN7QsQX@kOEu4SSwapP^9#O5No|4p1nP-t zF)Kn|%fa)+sBjU!Bu<~$h0qYHv=rtKl_hT1t^%qkQKqa#UiU0OHJO7u{fC7Hyz1XL zISCm1h07LS$uml(6vm1uXc3~o~0H5T=xXMD3 zhV#mPAp^ISg2y{Ra@=s;$pAMoZa74!pR^siMsvcO8!C;uU86YCo^X1kj~hF5k&8`utnTaE!s@OK?}00N z27ap}!bcdD!NSUSzErp<-hfuSe4m z$u?fkDYk}fl#_Gy%`t;zX5f}S(IL092`}`q7Mn9h7Jlk8UZ^hn47xZ=+3ZmV2Y(-K zO@6|%yxKChtWaAuiaxRC>tT%e4T@W1Nw|uHzxD_bt`r$!CQM8-FERX6hBvzDe*leZQCA{R8kX5-9)x literal 4983 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 diff --git a/controllers/gst_release_controller.py b/controllers/gst_release_controller.py index 009372c..5827f8a 100644 --- a/controllers/gst_release_controller.py +++ b/controllers/gst_release_controller.py @@ -1,8 +1,8 @@ -from flask import Blueprint, render_template, request, redirect, url_for +# routes/gst_release_routes.py +from flask import Blueprint, render_template, request, redirect, url_for, flash from flask_login import login_required from model.gst_release import GSTRelease from model.Log import LogHelper -from flask import flash, current_app gst_release_bp = Blueprint('gst_release_bp', __name__) gst_service = GSTRelease() @@ -13,7 +13,7 @@ gst_service = GSTRelease() def add_gst_release(): if request.method == 'POST': gst_service.AddGSTRelease(request) - LogHelper.log_action("Add GST Release", f"User added GST release") + LogHelper.log_action("Add GST Release", "User added GST release") flash(gst_service.resultMessage, 'success' if gst_service.isSuccess else 'error') return redirect(url_for('gst_release_bp.add_gst_release')) @@ -30,7 +30,7 @@ def edit_gst_release(gst_release_id): if request.method == 'POST': gst_service.EditGSTRelease(request, gst_release_id) - LogHelper.log_action("Edit GST Release", f"User edited GST release") + LogHelper.log_action("Edit GST Release", "User edited GST release") flash(gst_service.resultMessage, 'success' if gst_service.isSuccess else 'error') return redirect(url_for('gst_release_bp.add_gst_release')) @@ -40,7 +40,7 @@ def edit_gst_release(gst_release_id): @gst_release_bp.route('/delete_gst_release/', methods=['GET', 'POST']) @login_required def delete_gst_release(gst_release_id): - gst_service.DeleteGSTRelease(gst_release_id) # remove request - LogHelper.log_action("Delete GST Release", f"User deleted GST release") + gst_service.DeleteGSTRelease(gst_release_id) + LogHelper.log_action("Delete GST Release", "User deleted GST release") flash(gst_service.resultMessage, 'success' if gst_service.isSuccess else 'error') return redirect(url_for('gst_release_bp.add_gst_release')) \ No newline at end of file diff --git a/model/ItemCRUD.py b/model/ItemCRUD.py index 19f8dfb..ac6058f 100644 --- a/model/ItemCRUD.py +++ b/model/ItemCRUD.py @@ -6,7 +6,6 @@ import config import re import mysql.connector - # ---------------------------------------------------------- # Mapping Class # ---------------------------------------------------------- @@ -23,10 +22,11 @@ class itemCRUDMapping: self.name = "Hold Type" elif itemType is ItemCRUDType.Subcontractor: self.name = "Subcontractor" + elif itemType.name == "GSTRelease": + self.name = "GSTRelease" else: self.name = "Item" - # ---------------------------------------------------------- # Generic CRUD Class # ---------------------------------------------------------- @@ -93,13 +93,47 @@ class ItemCRUD: try: # ====================================================== - # SUBCONTRACTOR (MULTI-FIELD) + # GSTRelease MULTI-FIELD # ====================================================== - if data: + if self.itemCRUDType.name == "GSTRelease" and data: + + # Duplicate check (PMC_No + Invoice_No) + if storedprocfetch: + cursor.callproc(storedprocfetch, (data['PMC_No'], data['Invoice_No'])) + existing_item = None + for rs in cursor.stored_results(): + existing_item = rs.fetchone() + if existing_item: + self.isSuccess = False + self.resultMessage = HtmlHelper.json_response( + ResponseHandler.already_exists(self.itemCRUDMapping.name), 409 + ) + return + + # Insert GSTRelease + cursor.callproc(storedprocadd, ( + data['PMC_No'], + data['Invoice_No'], + data['Basic_Amount'], + data['Final_Amount'], + data['Total_Amount'], + data['UTR'], + data['Contractor_ID'] + )) + connection.commit() + + self.isSuccess = True + self.resultMessage = HtmlHelper.json_response( + ResponseHandler.add_success(self.itemCRUDMapping.name), 200 + ) + return + + # ====================================================== + # SUBCONTRACTOR MULTI-FIELD + # ====================================================== + if self.itemCRUDType.name == "Subcontractor" and data: - # Duplicate check cursor.callproc(storedprocfetch, (data['Contractor_Name'],)) - existing_item = None for rs in cursor.stored_results(): existing_item = rs.fetchone() @@ -111,7 +145,6 @@ class ItemCRUD: ) return - # Insert cursor.callproc(storedprocadd, ( data['Contractor_Name'], data['Address'], @@ -123,17 +156,16 @@ class ItemCRUD: data['GST_No'], data['Contractor_password'] )) - connection.commit() - self.isSuccess = True self.resultMessage = HtmlHelper.json_response( ResponseHandler.add_success(self.itemCRUDMapping.name), 200 ) return + # ====================================================== - # NORMAL (Village / Block / State) + # NORMAL SINGLE-FIELD (Village / Block / State) # ====================================================== if not re.match(RegEx.patternAlphabetOnly, childname): self.isSuccess = False @@ -142,7 +174,6 @@ class ItemCRUD: ) return - # Duplicate check if parentid is None: cursor.callproc(storedprocfetch, (childname,)) else: @@ -159,17 +190,14 @@ class ItemCRUD: ) return - # Insert if parentid is None: cursor.callproc(storedprocadd, (childname,)) else: cursor.callproc(storedprocadd, (childname, parentid)) connection.commit() - self.isSuccess = True self.resultMessage = HtmlHelper.json_response( - ResponseHandler.add_success(self.itemCRUDMapping.name), 200 ) @@ -199,9 +227,33 @@ class ItemCRUD: try: # ====================================================== - # SUBCONTRACTOR (MULTI-FIELD) + # GSTRelease MULTI-FIELD # ====================================================== - if data: + if self.itemCRUDType.name == "GSTRelease" and data: + + cursor.callproc(storedprocupdate, ( + childid, + data['PMC_No'], + data['Invoice_No'], + data['Basic_Amount'], + data['Final_Amount'], + data['Total_Amount'], + data['UTR'], + data['Contractor_ID'] + )) + connection.commit() + + self.isSuccess = True + self.resultMessage = HtmlHelper.json_response( + ResponseHandler.update_success(self.itemCRUDMapping.name), 200 + ) + return + + # ====================================================== + # SUBCONTRACTOR MULTI-FIELD + # ====================================================== + if self.itemCRUDType.name == "Subcontractor" and data: + cursor.callproc(storedprocupdate, ( childid, data['Contractor_Name'], @@ -214,9 +266,7 @@ class ItemCRUD: data['GST_No'], data['Contractor_password'] )) - connection.commit() - self.isSuccess = True self.resultMessage = HtmlHelper.json_response( ResponseHandler.update_success(self.itemCRUDMapping.name), 200 @@ -224,7 +274,7 @@ class ItemCRUD: return # ====================================================== - # NORMAL + # NORMAL SINGLE-FIELD # ====================================================== if not re.match(RegEx.patternAlphabetOnly, childname): self.isSuccess = False @@ -237,7 +287,6 @@ class ItemCRUD: cursor.callproc(storedprocupdate, (childid, parentid, childname)) connection.commit() - self.isSuccess = True self.resultMessage = ResponseHandler.update_success(self.itemCRUDMapping.name)['message'] @@ -259,20 +308,15 @@ class ItemCRUD: data = [] connection = config.get_db_connection() - if not connection: return [] cursor = connection.cursor() - try: cursor.callproc(storedproc) - for result in cursor.stored_results(): data = result.fetchall() - self.isSuccess = True - except mysql.connector.Error as e: print(f"Error fetching {self.itemCRUDMapping.name}: {e}") self.isSuccess = False @@ -280,7 +324,6 @@ class ItemCRUD: ResponseHandler.fetch_failure(self.itemCRUDMapping.name), 500 ) return [] - finally: cursor.close() connection.close() @@ -298,13 +341,10 @@ class ItemCRUD: try: cursor.callproc(storedproc, (id,)) - for rs in cursor.stored_results(): data = rs.fetchone() - except mysql.connector.Error as e: print(f"Error fetching {self.itemCRUDMapping.name}: {e}") - finally: cursor.close() connection.close() @@ -353,7 +393,6 @@ class ItemCRUD: return HtmlHelper.json_response( ResponseHandler.fetch_failure(self.itemCRUDMapping.name), 500 ) - finally: cursor.close() connection.close() \ No newline at end of file diff --git a/model/Utilities.py b/model/Utilities.py index 1b88456..53844db 100644 --- a/model/Utilities.py +++ b/model/Utilities.py @@ -8,7 +8,7 @@ class ItemCRUDType(Enum): State = 4 HoldType = 5 Subcontractor = 6 - + GSTRelease = 7 class RegEx: patternAlphabetOnly = "^[A-Za-z ]+$" diff --git a/model/__pycache__/Auth.cpython-314.pyc b/model/__pycache__/Auth.cpython-314.pyc index d9bfd24d221be6d3348ce47f72c9fe4d923fb522..6b10b20280d13af96ad2358bb28b1be56f47c3bf 100644 GIT binary patch delta 73 zcmbOyc1M&~n~#@^0SFRR4rO|6#wE2lyClB=P8TFr z=BDPA#22L|=jSD7=42+8Waj6^7w4yylqVLY>gFb9=EV?FWMrsoV61CoU}P4Po1c=J U6XRG~lA%{nS;V!uoGFz90FjzEjQ{`u diff --git a/model/__pycache__/Block.cpython-314.pyc b/model/__pycache__/Block.cpython-314.pyc index 77bf4019508d30af321171907e79616eb55a17a4..0052c366f9f93162069712db691a41b5dfa8340f 100644 GIT binary patch delta 1225 zcmZ8gO=uHA6y9kzyPKcQW|OpO+J;z5qN}zQTM=q0+NN|PqIR)}P%JeW?Y7%&nVlZ$ zr9x3bMASJb2qFkV@n-KHL{A<)h$|wVMDQSZ@Z`_DO|2mV`^|fA-n{qCH?yzzJ};{K z6KYi8LmYf*=kKaH^yu!MzV(7|L9p5?vZ+wTjL?V~rBO3RV?jJriJK}_%>+#ZzF5(y z#`DEWk|u*$r+P4_XqwOAO3KX8Opq&8+RYByVPNZJRmpMxKnSise#3dPG!{N!eSkR{gO0E4h=0DOsHZ`Glm zDs!(?+69Ajv5(PSWU@ceCp(fX#Ct}Dd5$5qGKz6!K$h{fO1Y`^wlrmE)z4nUJGnIP z;zhK`e#Osq=Xtmq;_z=M+~B_QV|dF|hfvm%_;Zm7Xcx$|tr~liD6a2lg!3iR?MZk0fy5GZtAD@fOP z#M@xcw2kn4B|-9RGzqT<>4#6W+*-7Z9ZYdc+veBP&K*7IyRV;+ zKs3_9zUZUI&J!fv5IhKQ1mGCJ6u@Z!i=9kOYC)wm_y9@vICVIy{X8IrweJE45)_6d zBgej_in^~YyEW_#%uxPkQ5$eD;VYv&ch$jTWP!Vgf8HSu-$MwYPr~#&VVdPKdqv>%7fEshCjbBd delta 1662 zcmah}O>7%Q6y9;{UE6D~fAZ@%iJc!CJ0xj-ODPeM#4WoeA(A1Agxt7`Jx;b+d(G@v z5Tq(M5ETc)2&p#?AW;Nd$Q=m;91w>{2vu4YRYKx`1gHoJE*zM*CLs+6_VDfdn>X)$ z^JYHDe3=VBtb~IC|K4Mt8rKfO3G~CkL!)SlYAdZ8=wPQ&w?;W2VKJuP4T~98&cCW?FI+5VReL#sH1c=C3FkJLNVAY6yp<2Y09TJ8j&kmTSbSm#YTB6>5<^$5-R-9Y?xuTMeVO z=XgQLBS)^Z2*C|n)|*YP`l~v{)TraU=!90SZKJWKH}q{xoWO>S$(r%9(Qtw$ILa+< zaAYo9E!tKTaP&3G1i#qgJ6E01adwDhadZoHu@BLkD8&{%=k{-`Tr5FWyR=kT)1E06 zu)RyI=E=XQ@719+-ha(I=Kj|9tB+_*lwBBmbjA5rqjN3I!!X{o4_zyWxodA zZL_cmRXb7MwaYH_y}YLt@*c-yRLK+EnHSF%D)Z>$z*80dL()25!%6yB?&BnVC1+5B z{VZ=LbKG3%;Bfr;xxjV*@0Sm^LUSlz>OA%o#d*}0`8AOUR7fTO+KjT>;mpnnnNHN^ z*92Fa#HzHKoCExdqF1Zs7u;dlp>^{=OrPb~f2nHF2k9kVz8~*=j14QD$qTSKkm}NF zi(JYArNHO9k`iC%2Kx>6o7}^0Ds|;7efg0E*UEt~l=mCH`>;&3DtJXH@17iY=EELb_ z{U9lAH}JMn+$glia{vON+7EyBW3Cs^ML UgFgy`_k`LVp~hZ~=e*GQ-vcv{+yDRo diff --git a/model/__pycache__/District.cpython-314.pyc b/model/__pycache__/District.cpython-314.pyc index d77e6097e7995e275a0f3cd8bf4ed5215a8e0cea..d0f570ad26b80e82c39a89aaf35a6bc49d2f7e1c 100644 GIT binary patch delta 1094 zcmZ8g&ubGw6rR~%NjAwQEiJ7zC5bI**3!h<9&9NsZ6h{VTV2d8Dj^v(HqFM_>7jV2 z)SH4RbI^nTKm`xdgEv7Dy^0493kn_u4;2r^oAa_sj0xo1`SsrSzW2>MoOqcuCXKL; z#IH2|u6huBVhmq8D`xl5b!6c@TEh&-VJzjPHJQnAG>DSOl82C`%t{c45K}C544K*w zn3&iNBoh{O0rbvCF7E-C|P{DFG1A2iS)6rj-% zjEDGZbqR<0v6{vPPiS{>^zgZs!P)@q4)RaFY;XvMCjdsc?w_!_lEPvPU{rwXTdq_< z75zt}wrJo?0w4)+N`RvZNTm{q1P$~1{uCbJFZ}yB%BKSFul0*PH*$fnw|ctLZa$<*0Cc*-UxfyQ z9Unrc@frRr^jP#`Kl}#w^JOEBv%F-)3O#~@LU2x~UD?g&x)gUeKHlbWLzPxDDXv-pnJzUB3)TH=3TSy#&^na zAU-9$r%e}D_}gdZ?;w(Sb3WeQ9@B330%^Od-Ux7vQ1p1BZmfV^;^ pas3P8*iMZsQcFy+_&abhk7SJTSCsyW#*USBj6-w3k@$GTe*p}X7%Q6rQoY>wi0Oe%t&xO`3FR>$YhrZHZciI$T^FS6c$2 z%c|LI!ZB8Z=+bI%LszLw?waK+n~u50g^I6uTr6Ad>z1PuHd?AJ(5NKHZcBC!nT`RA zgQ99G)s2p>Mnq|4zP5N>Wy{=ax{k-0>C|ipl3=o7Gj2CQPL-g|i{+K#mCYtMLMjSn z6isQWI0!5oI9-NPwM8LZamzbNbGL5$bliWL9&6vYc&>tldX=+ND7X`5<7gBkj-g-<0%KoCO+WB!NXk=!JT2LKFROrfm#UxzQyY5(u=Av)?$ zN8Y2ecR!63sD2o&NBkePV@ZrAjv*ZPGx}_KS5Q>WA)EwI(S=$KDHQ*v(RR|H&uN60 z5Y7O27aoYblRtBCP0S1+d zfGm7T96^`|Fd{**JG`OxJZj^6>J>@Qs_+_@9SY+Y*ZJzk9um8=!YI#^sQPumy_PLK z9gG2+NauHn7wCEaN#Y}*^JelMHTWI*X=9sxH4aNTTbo2G$x^Ey!x+f zmWsQ0+&#`0gL3?@QloHxwo(Op+1Jx1WL!`G3>hzE2C3%1k(q4oolue6T=Hiccb zy0h#yL>OO)AOt@i9FB-0#1P^L_~#N#U!+h<1E?gf%8hEU%0vd$S%e;hUW6RNdLN+5 z1`D9DB4L$Ci+iFUZ375{2>7d4@s1O$FENbDeW(n%p3-3n)vYxZ5*#9Jde`g%XdKw) zu*S7OA@=*P_w;+g^su`xNT*X|M8)PIa?9rDg$qXtUk^Ea9Hx|R6L*WaKN0r<8GA&= uwn=@9)PE6Et8mHk;K8iVd@*& z%Q9&jeVMceCiP*HHfc!w3ES8okPKL|J0Y>{VcJ_usxjVn9NUlr53`)(bI<*qkKge< z&f7gf3Gli$_oKe#1NhTkco**~t;49?f>n^2MYzBaCT{EOB71=&Tpapf3}kKqWc~>2 zco1F|CLrni+g>IaDlQVOI47^nqaN_|OY3DV=inXbIz#Iqu2oEU83-c-VOM#=^@9PI zd6^l2Bd!k-WS00cK)PfOlkt>0fAP|;fHpG@Ky3Yip>IK!aXlgHrGjOTqql`m8IHNg zGGt)6t7FSmWkzOSU>L-RuVePPrZuc!7*a3+872%XY=uohg*}HX%51jV^UJWS%z;5~ z1%PX|bFD?~DA}Ngcy<4XTk*RLz8UVA%WsKI9|iEkD3m$O_9p&4Uc{Hr4*qZw z5T<=*%>as|-$ZU;+9O1}+(1-v+~!rHQon9ptmH7cMftp*BUHFrFjRt=7eT2{Etj=Y zJ{hC|-6>VcnUy>Zx+_aDjSno!p+s^n87i(>#KE<-HiTKDA=~VQDH#@x*oG@MbwzE{ zvZz!knGT^mvYeWMwFL@D3}Kuj(e}$@v98hhd8^p zV8;isz26NtlBep)Qx6ADR|C!1WFt0Rk4@K3F4tny4`T0EgHJ+3jZgybS}4(s_Ei_R zdmxr*b^CgyZ3(pvZpRP7NONfPiyL1aZB8G)cj)fTpQmTSBA>IQ#g3($FI5A+Uym2D(u>WP_$(Nk5i869dwr|QwE+TnL<(WwW~bX9y38fb*Z z@UDf%oa`d>kG2GUNcz2RWP@pj!W)s>YNc*cjWG{e1GXwCgd59wX9L5A?^X(r?kB>RdBEzB%(Ke(>IV_4r&ZFx(tZ zY#NWokJe74>*MKKApTeHWW9H?vHxU!|H)=}un``shsQQ2ehE))cOyfL6&|dKZ#{py z$RO+IPe-w&=T8He#u~+U@q=(;VVu7&L>Bh(_lJVEOa&JX@IOI6%5PyQDN<2UN@`J4 z6e=kSzW7SP)&q)iqoNkvosgnj)lG{O^paLG>}`wSNy!y8a?Qw_6ZTZ~DT-rMR69^znDz;33wu(n0Tlm!gs16=5ZPuA z2!kySe0%c_A*#C^5W(He;qV4t{yp`|I literal 2343 zcmb_dO>7fK6n^{X*k&EuiQ|yO#Q7l!E)FCiEl?^#T1bG<5Sidh4Xcg42`e_$)Fr()tw+PlC zk^%6pO`yFB8HWfk;f7lG04C}RYmkNsEO2{EVNnMu+pAG6kftWA2-{kU9&|8q*asSo zDBm^+4&7KG7^w%)m^3r7Z%Dsr0@r){MWKqlbELCq}~w`SDd z?P%9%9Im-HP2;+LfV#f4Z)>J$&ta6){F_vL6G1n^#yjP4)sIkHtBd2|cIVPHRka;y zzl+J)c^|_S*s;xb8hzf0@J0-`m-e}OaTvSc?6Vj55KqST=AN6lbw>Ylz7uyVj*rI4 zn|f_9`5N8H*XYV{gxLi$m8h9aP{f~;v!<-(MSYIck4omSqMXWqq{>;zcvm#!EQ#7q z{4`UNB8i6U_d76QTqS%JDh$u6g}g}uh!xHqcZLZ+@nqHfv^+z?GmH2JzTZgr6}?l(mZ>)C>t)4hJUWRRa@5$COpJAXaNJh`*3`C^^C) zmV{kxv^>fWVyL*xp{x7dH>_){-USc(tc;?_RwNW@`iVnftG=a z9|H9@W$+RIX1Qh8{F!Z(c-NgPx34V5`)=@6%BmllyVp22Ui({9S8=#pA1P*T4qYF5 z#zDBPNEMSegT>%4Oq^6r)MG5`P>UliPFwJ%gLcqa;O|>U5<2>B3*a0k0Woa*2B)WN)#fk6_2$9 zXRe+3e7wv@m-$$Uk1g@7FP|R4)L%a3F_#yWcC;Wpi2573B FzX7WV2QL5s diff --git a/model/__pycache__/HoldTypes.cpython-314.pyc b/model/__pycache__/HoldTypes.cpython-314.pyc index 3a51958a67e3a78e8d07314cdfddb549861e3537..2aa01dabb0f6d5fa569bf77c980d6c2363be2437 100644 GIT binary patch delta 74 zcmZpcJ1EPi&Bx2d00fCDhcdmmH}Xwq)U|iEiU}=FEh>%)%Fi!}aY-%CF3B&52}rEW cP0cHb4@ynW&r8nC$xJNC%+K2_!t|a805yvk*8l(j delta 156 zcmX>o+bqYY&Bx2d00c`X@5}tiwUKW+V|}BuRZM7cYEf~Fql>SnUyMs?adt_50h}&K ztjtZ#D~T^kP0r6t&dkY7EXmBzi!aVkD=AMbO4ZFx%*=}+q{zrn*T7iU$iT=fCO1DN VH7CX+KPM%mvLLm1^CQOlJODx~Iwk-B diff --git a/model/__pycache__/Invoice.cpython-314.pyc b/model/__pycache__/Invoice.cpython-314.pyc index 68c905859987ec5462d8dcfd5f88f1df33dc0a30..47bdb008d132f6f53751c516790f3c0e205ef719 100644 GIT binary patch literal 11587 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 literal 17044 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 Qm|n)c?PWR`H+kg$0#R4AK>z>% diff --git a/model/__pycache__/ItemCRUD.cpython-314.pyc b/model/__pycache__/ItemCRUD.cpython-314.pyc index df8d5358566eb310cb9f9138e84cc67f003e51d1..2c87bfcb2a30cbc1d3dadaa55b37d90b1051e52f 100644 GIT binary patch delta 4606 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 cOTPiXOa^LndgA?5I zvGwnN&Ytt1v*-Mm?>}4f&3OolxBgCGF(0A7;)+)26tngwFcWA5al}C+;U{^J7$hX3 z2J_TGa*&cJg{KeFgN($~ARDSh98-!oT|22tk#tHM3vK#z8_N-O$Z7Z+?&5M1vfl5N zcquT(18?+21%VGq9&aQ9Rg+eYioD=cWvY})Ro2>p@xnsSAc^3RM2@f$Rf59k49(FT zQHp{D?tzQMaHOPjBZ=iGSO6m%UJIWad1cn?_j}--lah5_ zpA-m(WY*71-at^4_0aBto$-ozrp88xyt}t^_yp{OILw8^(r_OyUXa3(;UVvpF}!0O z?+b@~fndOk1r3jd{d{m3W@?RGk@K*y)C|SYrhav6rd1Dfh~+>g&=Vahu6%#@q&}&) zB=lu5ec5!$eZ6xHUZPvbb&HUZQ!nd1o{)Ep_ju$yj|b+81~G5)crHf0!PJ`qk7qO> zh*B^R;zMElT9jaMzA;`pANC6cAW*h>JZhuID@j7&Y*gY!=xOzMd_k`$`U5`6#|MKR z56o-MYJ_3oF)h4V-63yjtB-SXMUpCbPA{EK-nb&rw5wH86+dT7rAH5&v~ELq z?>3d%w3ZLyt=d#LqCK^KkcdA=DZ{ojSE6wo$x-cCbD?w*O)7)VZAHkAYEaG*bj}fl z<ggr%BBL>q&o?V&3ey2`l{D0qF|X^QYE^Q!Nc+Ee(E0!(eB_kSti4xOh>%Zd71uhI1mzO_#W9HfEjv}R{dxo z$YV~x%aJJ7{zW)Hed=`J{FPLb70<}=mI_tnZ|R2o1;ZOII8G#qoU8)x&onq z1cqP%YsJ2zRcpbgB7P6Z1bSFjG0V=dv!)r-&rc^BI%5r;ORjj?;Ys>k^TYDmS^LlI zA66&Ix5di0EpP9Om-oYq{D;MrH(pz)U!>#3JJ%6uJ4CE1^kHfBjdvE_Tq=&2?pvoa z?O)>d<(9omSK_4yR~ck5|Ja~dkuSCLuoQ&M@PoQ(?Mq;?eWn}b(q)do`q7b+&_#HN zC>fpY%VEhdON@Fs^1z#E;L0Lr>ap!!z~ng)Z9HsC)^gK)hL zInY*=)>g1WI|`6Bs0wrz|KT28R22#k&b;x`UV(?m)wbEi%Y^qS6O~3=c7e~*^C4f@ z9|)a$YCNuKL8s%X!SRj*`*L87!1gH4A1WrO^r;b`(;*XiE(lX}IKqbnCw!^QToM8j zFT4!A&R$rN{tetKK zuFjsc*G=!9dv%qitj$j-#+<)Sq5NGS4gT+%JD!Sof%7|hs+rr>#-29A1}|uVcZ%-( z9rk+ywW0{|zk9;mdZC@QcB1`+ANI?RhSR<)_qgZkCm;X|8u%ANil*YP+f+2HFoZ2* zQ{iZBT@iX1M?s~y)2$=)t~U@m2YX^ihe42=$mxq2H$8%0uF%Fqgvd3QZX}ILMu-i) zpRsDN7J5_fZ%?)!WRn|K^6kksfNbjjBfBkqJ~im@zY#K^Y6O4){xTlK4X6+Qp6x}B zLywdfF^=bRycZy1Fo;2-*eVl(fOSXM31plCcc56iOmr#+pRsh8(;zh9j*UQM9e+6> zN}}Q=1dLl{2EtDu0*^>AAjwpa4*|xEfG6=g8O3SHG@ek{hda|4qRC9eD@dYO2jxBa1tX(VCuBD5g*{i1dl6J@Jp_xM;zLv1J#_X*N(YSr*RR6=$ zis_y2kIxpPdWuhj2N)c3~fd*k)}NqhYqztD5@{KujB(BiSB+IZuh zrK2m2`xA}*vBv&*l)c+=h`?@Cj5qG=%3G!SnZTs1Ha z6<;Byyz&u?s;a@;74BIrMwa49r6!|GZL9zxS6ZJ}-?a zhq7l)39kjc1$39{bEIH6(>q7JjWAiWy_j_Jzevv!vm-h;Z9ym4DA|glTy|;?OfZsGH5{jcJb2R`smWAYNNx2l#)yvaYO^K{^oyR1zg4Y#@ts>c$-d zfgk_`#g{nFUU5JI$veCue_L2^V6fRbuGes|iXt2^lj>QDfpfCLVcY;}h!g-DQ2;D8 z76{4InD?^G1jCnjL8id^oqE-cl3B%G@98148~&VXlAQbb`eB~0lhfvduOuuB4e zf=?f?N|w8^V#fk-8oq*8l4DUW&-OVRUhRP4;$MJFpf3uF5(SP}fg@h9Ws+XkAydh0 z+2?((4=yK4o9~u3FH|hPd9Sql-tpnY@wZ~f-A$+1|6<>yFo)ykF#9KJASa zd7n_oTKu5M`w#q_kya^Wwyq)=zHUM$+k?8Mc+v2D`*iOo`)}=!Z{71L^;`Bf`#at8 z5Et)0mgqhe>pm6lJ{{Y7`g-qF?|l1Y-*V9~e9ffs>&HbPNoBp<4PZ z^qrj~rn_}Oe`Rj(v(dlS>40wVCfG(4Z?ddx&-1*=2s#cJJY^@4V*p0NN}!YsGT8;$ zm>(jBU9lRR)@Jzuz@K(>vfjM`WpD(JPg%C4_G;hMi&T2$%yBcb1OA4K8zq@$#@kLr zRONPv5#ARV4fry*ELigcAwPfF(Y&qYtXJgy&elxiJU-y0R5b^?MslG?;1yV{1URgE zycQuDMM!3(qRMJ~Oap8=FRCmAkCqEHP0h67IYjj?ZKH}NjixE)zOnWOHQo220hmYm z$YNVJBTGrLxpnHqPmI%pF-ybe1tm%6Hl=znW@${CED2Lx%v3kmchBT}P*nP$pjb`E z(heIYOdtL)pz_>MLO%2GNe!$jhYx8;>hMW?__>laclwf`1_v<~mawU~(=y>m0Ss{< z%Sny5_3=R-`>Pi`QaDID>maE}I3nQ80ghM6ip~J99vN0;EhCci;9?A>*?3@?HV*oV z2Y_t$Dc?LWJsj973+8@p@ao{yiFaRrvD3lVE{bXD6v&jhV1(VuK1Jw;%L^nU1SBJS zm1HF6i9p&+aZENWR?=dMV>h+wp`T$>TOPC-H?^6v)9AzdQ()N4!CwXpbLQs(Vca7H zg!9LpufNR;iXl3r^Solr*cKg^0@8U$>K<6b$d@u0S%3hE)K~_=I~B`t{8Y^rLcN+9 z3lKozx|veYv5J#n$I=-z4pIsh7Ty3Zl|!c>u%c9Qg=X8|^cPssQg<>r)9KGjE2pTW z#d@86k4=`;&ehFbSlRN*a_tUCp4+RERgSrmk4{e?f!a$o$(k*5yFU8V*<(jqy0kUh`j;|=jTKI@UW%kV}HctQNd+44v=60L$Rb+rq#dijo%K`zTP$%Vb z!5uXG%mTi)6Y!0lfNx9%z;Q?bK!gN*XP_F^Da?&vauyS8T|xyWm6+IpWM9MLtXjF{ z#7V7)FDR62*vB-(93q}r^i2Na;(Vs~iNgw{F^{o5E@K(ndWnH4Ttz_C+gU6Hz=e|B zV8fM}QMd}epkBHe6&~9zT*Ki^MZNn~W`^K|R1w(1Wc?oXUV5JpfGWn)B1Uwp6hRQ5 gA;X_gmGWP|u49Oo9w8v>mXicgxCR&bgu0gh0HpBIT>t<8 literal 5730 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 b(fF6h`j{6O@7D;(>PG(u%N&4q diff --git a/model/__pycache__/PmcReport.cpython-314.pyc b/model/__pycache__/PmcReport.cpython-314.pyc index 40f23beeeb7ee5c5c3c943a0cbdca2fc4f758e0f..7d41e1947ed3c81563be109fac786d6a14498db1 100644 GIT binary patch delta 5960 zcma)A3v3%ldY~Prrr-r)LV*WS+XTdmMlwRR?_-KTcO3Z&6py$OWKy5 z%gHSYlvfz3+__$S4_pyLE?9|r-NuPi)M+jS49JOcO>jWa zfB29o#=YwRJ2U@3-~98>%s>Ckzi;29mLdiF3N(2LlCR>;z+WD{T~N~VB2YKcImA%I zC`wA%Ff}BL%7*AD?M(9JQ91DGVa1R#s!Z_Y!#P8$sLF|M2R*mrmeN{EQZpPM7NSF3 zkmm%THG|=xpA!y;{DXlYcl&WQm4}O|DVeCm@4DRhdsL0ut0bzBxucM}rq+&H07Neh4^tTV}&rSuUl=O-d`)(8us= z<$AT(l!kaq@KxGLY4CUGPRQS-Tk#W_72D+bsV@C;3uVRUK0jN> zB1TPgY@?G%UhTDFhoT(%_bJN0HX|ETxCdRBEzZVh_W-onfFee>2cU!T-c@F5s>iRZ zj4EE=h!_JjT5>8unL~;ELL$GFQ<*U_J50<>I{>+rX#HwWYk8uz0$Pu$h#X$k5BWc- z#xW(|-3;85t54CBWOMG`%I%^Wdi%S)QxQ&xc$siG>OI0mE=R+>*W;r0Uo;R7;r9Fyss;aP{s&YWenI_PsuvGy)~G|+QSg{Li`9jj)H(d9@VAr?|62Rs z_}@wt_~*J`Q8V~kMgKwh@n!uZio+hme^D23XYuRQMf|(s$J8bK$oQBF;8oLO>czXi zC~2lB9)D{7K2?BUv6PnxIk0C^9yiC$T#0hi5nfWv1j7*y|IAW-_Y=zzDn|`~$U8J{ zv+e5(Q@PF^6)LING`Uwz?xm|@=kwy^X>sC=c-9v;osSKDtha8NtlMKW(&+!{__vPV z8rxDEH`TTkwQWP~*dE2pwsX`LF0>arw+xn7$8V2smAJRe&ZWln(k`)kR4f_$TtOEb zxASnneP({A2${+^jSZ{DhNTN)$FckD{h_#VDt7ddqjaTo>fcYqOQ+(Fso3~~EP6+a zY&DzKmQ`!Za))@pBTk$WnbUFWnb>h?vQ}?enpZ8&%T;36nE3n&(Q`6xITagu1cU9) zZ210Q?)~TDrpegQj`8k~9IsP(12nP^QeSNM(YUF{G*k~u^V8B%8okkYSOLYGZMx$< z^0yRyIw0OQ9aTc{s~*zwYr1T-lAfWG2PBafK@JB-_1RKBIs6PuRi|1n0^5cd1V@|l zC^EXFstm=*I#Z%}nH8J>i`0mbx6nMj=cs((vhSB?a1vf_ue?&k(rsy33NP90MDi36 z=TpTf$U$S2ZSo|WSF*}oH7kgk)|9tNI3?nCioh#@>e-?$F*&S~QPo>g13;1CF>=@( zEt*nYku{<#vOzsUe-dMIGqJ3S$;+hA%SMV3%0&*u=kluT!E8+a9tV+^4X6W;^?z%V z|8=#A@*?4JB>> z?^&rTz>PE}*9OGuSPh8n2C+qK5mSV3RvRjk1~y`Vn?mV$86Imdtf^%f1e>0?78qKz0B* z{usy!AlDxT;n(X5&vuPdd~w?T-NgR$6ZXHy-p6Dknv}g8c@@m?0Q54k#jKGyp>$$R znG|1=S`fA*bDpfhQ-yEtE1ie^=gr>QbZ2lYNVtULs%Soyu zfk;#c%tR$kx|VEE^aaB+m!-T!kzff2$T;-WBm<$E{5*tePX`?f<7+L~XZO6|NTk*Z z-)DagSs8Mon`jaZc7XHNd4Q9h(k7j{ePL2waCyn(-F@c4lP}H0&HME8XHx+OJ zgS`=7OkP;+bbzX*#%gIvan%>R!bxZwnr}^2LX(6$3?rvBYUog_+?!L%{=D9gu=qZ2~Vua}b3CvM+FmKTJ zg`^K8H^#_r^Z(WT3_{M8D{;qe^*(y3)-=e>akeBA4=?^37dsUFZa_0EC3%)DC z=neaTAcO@Mh~@-{dO{anU6RDa zqA5)!rH|*ikY6C%Eae5m7pK93AxsmzkVv!q)_{nUeehn7TxR z7=gTuB--cqOY+Oy^@x-+6AoUP4MijxdPuq?HSG^TBp3m)5lNF`1-WRH6C}m8fIoUk zl1F@3IVpEwZieH@@REWT0-S81cdmiL`5iTO-CXjw#)F)AwBy}1!J?rBo8Yo=X(QD1Q z#QEU=MMU@^nVTlUaiQtdQN%y(=rTz(Od+`OV&r-(Iw*f;n7T6{N0zEhbJME1Y1t_5pAcD2yl`cmy(&&! zi<{?g|8u4Ddt$|t;u)WK`h46p1ByX(xf^)0;;BnwU~c`?b@Aklxb>yj@jcBa#M1%s z#p~;*Z-}Q}id(;t)tni&?&-&hg{P*)lP|=rzS!|?6*60K|NizOn~r?^G}LE_bh&9}>-n*VKJ!Zrx&d zIlNvqD4LJ1sfW_s1U7dUj6XWiIcO?h^sXD5m&ezQ{jsBIq-jlE3W}H=ceuZu{qF2$ zNxfK7zaW2Lb1nLRFuoxFPVN&LnHyk_?XK?+#76NqyDR7IYkK!@47Lxo_DyZ+inesI zZcW?pabxGAYDxE_{CkrN8W34*-7=W&6s#MnNtwTHsDM%|sa-eJJ#BD2t?pt$fptRz zX;7~lDoLsOo6$^iJ|*l<;ku!QG-Q_Br8-m50=->>O6z{Cc}=r4vs}OK?)^nk+;wC@ zvt_T_v^TEU8#nCD3j@&i)nm7h-FbP_*|g$pS}wjPi#rc&7`kE3juzN!oq>oab9mT! zWMNb+YuPZg-k&dfcwmT79UF$u`{y6F_brSrx;G5X_hk?3_d~sM!%%Zi*v?m$6n&1A zI--si>5Q+cZ>#T2z>+;VLxE{*zW}-Y)tA5h@&f(9VqYP?KJH*d@7XoWxrLmq!BNrk z{M(lo6r0-W6>aqry>$2=m76u)D}^=P>)L}G+J0hemGJxKgM(&;sIS{DfL|rW<6nMy zSdQ!`s4qW-0c?HL7dw+Oq&4p#S#HS#wN5lNFPARs#iI5#b;o;p6EVYQ{6G5rwg&LO z2kG$pW&Rp?lDmiXQ#I(#+6u_u(wL_l^0%t`i-C9t9Wg-hOM`BzT>i_-J_iu*%KKeV ztW@eq-bwP++(d5eD+6NPkw@~He72rmZ!KV}=?zNGHlmGc1#mX%X;N=2JE5b0g2rm` zPkN5QudJP(iSy*Ti!?#@#b1D1`%s~KB8yTA=Vvrh7Huc0+aXeaB0DKdv45AWLLVfM z?zIKNKR_WBhT+oTug?YDk?8dx7fD%Ez?Ql0|i#3cE?w)O_p~jx#%x`Py?^ zYN^2jliKXMZEoLt?z!ilbMEW(Jx5Ii8Wjf5PyY5_{kNJi>{r*6pLBuM0 zeO~{Z2W6F09?D1g=X{V?d*?~g7o^B7<-DA@sth9(+RW_E zNUId!;X4 zthzn1>WO^NZ3Cf%w2{z2+C&sU+DsHd+9IIg02(<)8L(Q3;z?0hj~^l=_+dhUA0ec8 z8==OJ5<2`Cp~a6Ag?KxmZ&kt!-1l61-nnImlfnXjVVNJZVq?#tHujuT(2sRWDlxyP zp<@h;9@UiJOZh`V4|$hWPR>tH`$*puYdGtpdcYbYJzgqA4hE+~-FLzC7zvHAMNs7q z&w1Ump}>@zx*PUISWOn!JvhaxGgWT?6f0_G_0VQ8cq`=h`XcU&erk3A+H#aK(2)>= z?XYT)Wzq(JPcK1Ig;~I|8N>RmaAN9QLhA==(Sw6+$e&f6BL1|T0lUZqZLeW>u^Q_q$k6QwvV&@^>|gYpm>36Z zFEZim9UdH+==DWzQlW6>9roOvLlz1&zu_=6MALppM} zI3B_phIi*Y`8{m2aMc5sCe!sZsPG zzftr;Mnv834|)P_XKF~uGT?_q=X`o7ND~57qQnfzF;oL4VoJQKiyzIdM?PqOuYL9O z+F{0iDrxVg?cM9TxV`)1*>6Y-AaYah?1eGh7w~x^KA79XJugPkNl(P@b*Jav^8`H& ztUt{NY8(IP;=1>Py7%f<9cwnG>SVIYNmn`7Me!=<#}`wAz8ImVxzRhIP+cGtS%VU8 zWQt*{Ks$kOXt?3(fqltOjfAMwaIsoIbfuPDj=3&v z6r;&XH+8O^XY5@`doOM8T|XSR_cE?aFLD&eLKLjQ1CAnr;-gD@PR+DXY*A!> z&h3X&!Obs%ogcOTU)#UBn_Ghi+-xp`pieV{(z!h0a3{#DB)J7AtQum8ZJoOFIJQyC&$FM z66h5)NgE*H7GLX)n8#0Fx%w}PpDXB&a~mG!kSlp;oQD5n97 z$9K|WRGJYH>}GFhZq6TxfC>FVj2O*m(A|?^VdQzH*>xms=3H;_#;#1#7l;pM9?nEV z>#s77!K7n^c8qMCk2^+~E0bw~i!%bx-kl;tZps&VF$aTYfa`w@`u7KCo-3^fq2KQu9z(NeHDnH2hd*|GmcBgk;q8aF>Gq+G^Gxe#vUQAx{};yMtz*n}{s*9SD;lFDr%bZHg_3z%__( z3Ob9-2dD_Eoc2-P*-#LudIKRKo&rE4R(d1k53-UuPneZNC=!zSxrP!}j;>6CAy$>` zjdK+N?@)n+B$0W-if1WSlaUebPa-6;!&sf*lETeNk_I7FAT&4XOrBzp)p8gq>zbQv zB(et2*^OJ_xS zmMwMBz0tQuY18qw(zU#}y8CgNak)QfIvg_{W=w5N+0kU#saV-5rmSmm;CIEw%`)S5 zw*=D^-#ho#xgU&ds!Nk-xpVR5CvvQ_PsEt|e%To9UMWacw$hcYzieC_rcHfYW#x+ln^qgG zuKc{vv{m2qq4J^f7sbE0u-3vH9$@MRX?@L>zT(}{w?{V(j?Hq*YHPxFf<8G+8%F*h zla!QhtFaPes=7H-ZRq@(t5ae|Te6}xR?+&X;_#Au(^B)`&HHaMmP79hJdt3=BY%`* z+RDe(busSZhpBsoseXml+P<_@#n4>|Q+1KCT%^^eZ6#6%FLty(uI}6{H7uUptgs5n zS6Cmk-fv|pn%+@x9PN*G#MLJ^jg^b%b`j3< zt>y@Ct1``C7*hOHm==e2H8WQ~2;C1c=GJ%ecQ?_!M2 z?vEz&t-_Ao|6{fSl-xK3ZTBhy_ zQ+;JSAHmhn!Ziq9fa$88dH zv=#eRp;HF0U+ZT5!)%>=#%B7R+IBkodHRoY3g`50u<6+0K zuy_J?v()2~^SSKXmGPQqVT2eL5ttfcAC6@FuVKk^=;ZLY6Jp*Anz;{$%T(~1W;s%4 zd*yRB@RIZG_VTLZ5?tDzzJ(7<-f&cJNuhX{e(k|+ont`z#|g?{00EtfIN9iQX549f{Q zLlU6K)Pa>F?ym1Bpe0_ONbJ@SjaoS7fdywy?`jrDetZ}&l%?u z!8k+I4WZ9D8-!S+`)WwPQ$rw6>36aMN(C#Rj3@;S{Qxv%0Q%*GVdt#RXbCt4E$ymx z*>+8JDB>k}DeqSeSKwtt#Y+I4f_(|vSGepsT9om63zrX@aKiyw7z8aOM1?~HoR@0&$U75ZavjRn@VRg$UP)92GiMZ0nQO*5F#PPOh}RgL zYB{lRGweMU;R?Y^aVx-VyI@rSvkPGk<#TCQLz^058=zeau)1BadVtjnVF#ey0BstD zZGd(Yz?y|HhwQmLwm=()uno{@1z4*P_Ix@p%hGm^1q00wjEcf$B7H(*OcVRnGMc9Lx(~z)133=DKX9!k1T0awAJS1bSROf)z5P4dx zPt^Y!(5)qEckV#pI@p_?Je};DsLQVBa6M5+RKEmzPsMKx!CEA$T|HTBK1bALHAK{B zb~lJOhTWN4Fm=p9T&o(+`g;av8(*jj&dEeII#m#i+AoSpWIbGwX1w+ zSNZg=a@Vf%nO$Y)u5!1q?9hfA;l$6S<=VYY{BRSYboKFi&A$1OPVdIeL}RW!iD=5% zTXXj8$c_`g8;>=D9(#m*6AimYumSHC*24&v=D_JY08ak_a1QUrambn>7MFiOr#W|8 zqA@F5pJ?cfv<+Z#o#k6*--INK3ui!Pr_W;W`i6a7@DB$s0&I|MrvkD5Cr$l_~9Zs6}rZOWfx#feXNRmrD?dF zBODEQBXud9Q&Vv94Ak$AS-zodMD9oOQNHbJdKiWl%U;_96-qs zO2CB1NE=GfiA`Qa2{QW{B;;SCJW3WC&w1|5`K>+vTmFExFF4~5`g|lf*{m0Q?EsKnpzA)-=}(JlED<;Cg|dz|edl71Lr(&0ki= zMM*3aaUm1X8bVOgRSS7&`0EdM)HHB9Ur>U#2g)@K3yKT9*7{?R0Z*tk>j_;*xeBdm zSK$KkrC9+r)m4LRAr-sF)92%(_;Nm?pI#~psxjn|fuetk{4vs7HR(ZmLk>4q9Ez~g zu!ou@Z=j;wcL(McOtCr7O$Y=dBcvChPNBqyl4+F8paglJNIxX3D&nK2eA6EA*|2g? zI1ICeRX~_zz~cqaO(Y!fQ>2nZ41{Lf5bFxwW>SFwVhCJShM+Z>bDleHh!$m~)96=3QZyUE_v52T1FDvIrlwfwP2XJ*D&o22 zYiJ>ZsBH*UYC`i=c%E`k!=&|*Y(8Iv6~jr%7J4)LWY$$gzRI=D?1FA^Ii-9>YJn3h zLe3+!LIDUNvSKedseqrflPu-kiKI7G_@R@B70t40aA@%k$Ox+jrw@v7jc^1Cz%NF6 zvb7SZWz}hq9CElt*g`=m)#(gKm)#j7tilVvxgZ1_%K?h^O66@{)3V5{&quLpaG(0z zvpx@K23X*v9%)ZMkzr+afs?Ict!twz(fJB}Vj`}-`q*e$kteOkV%B4fwVg3`B#q9P(a9Kl z7SC-NDi#MnEwL?$Hb-6b`D=+$_flR`TOHF@ubf|b{U`3|B%^(4&9*j@I5EU%&w)d$ zv?_8umDD%H^bM;}ay-ey4AtP6;$4aSbomy#{Q~KB%WPfB-zqLy3M7l|@nSoa zS4;`BBWXS!Garve*18#U*V5UovWn%IAHK0!+w#HOdvnnqrncjL{#LnZMe!r^P9W%` zzIDaFod1QnVX1#pZ%^tSF}-8;Rutqpk<>e5dgpr8BYodf31(@0Vu!){x*pSjU)cJI z+PbN&*(@sik@`X5{X)8|o~}Q=c57{R-9u{!zzeG>_*#V-tjV(aPs-|P^UB zyV$o`QM=gpgP|?84tbhCDIbliU7M)_UD34arcaF|T1M&f7wGY;v^z+LZYSJ#=!Ms} zG3-szpcr05;w$L&ikKAt0hJ=CR6&Wq#xTviI8AH0Zlx=FGGRZnUbQ|;yWI5k*@Vka z-<+dEcL4o0(aR}PV~ECUqH&G}!O^&wq0zV!iiQ%k{Tt$qA^P$x?WYo#=jrlWarNyS z-OOyfNxP>Lqce2*Y+UWJ<%db5cT^{}Ujm2}c z(fO5BY$*VTD!81BkY1Keu!PEwM&C@7_s7*|zpSW<)~{cpFS+9t*B6H#SD06Nf7H4- zv}LGV_C1)pKbJH#(}w0H>87b}N&3S)?)CS1u)@k)zE)zD)_>?*9DZ!8{>KtpZT_;% zvLxB6MAN6zv838G)+LQiF=Nx}%WGoB*tw+KDz03)`l$HGmfn`s*TnQSD>vf$!=JZx zt_-Z6|EHmK{n9W@o^s2IWMw2_ZHr!5GbWDpZ5oWUsU=}>L?zLY#G#(`D*#y@Nf??| zFGS6WmNOi}p@iXZv@QC2qOBKI5BylO5?MW&sOwm>uiZ?Xco_jl6NcthZ?rYx=w9#H zC`|NT+SVwHrAs~Fu&r@?F#O(d)E*5aj`XbKO!dIh@RrSyw6(=-ZI5inmSsTUf$F|$ z1%BsnG-f{<9fy@+?|Ni71G_-gabUc}fI2~pecm~+tO1AaBSZVf^3e+-`5c6N#W-ULmu@?S?NFjQ|MEM9}_B>US=1m4%TgL4M-MAxQr8 zSJ?NkEt&3#cupjW<`$I^~Bu!?x*^%{UIz^kd;A4S1tWHB)su`GX@* zN{1yw5=K&i;<91skc^QDamlcpkwcz*STUqzltP|jST&?()D@TstHcPU86#9((u8D2 zLrAKzM)hw{a=cN(tG#Z9WPEcZ#5FV-@VaJwew2_81_KN{^9O@|FG=+Tyn}%7B*Y}3 zESY%r4n*8g-^&;yAuvWdtzl%vSP*K@$O$QW-OJ~LK^CwO6NgZm666Ft_31^Eg3i& z$YUN!vSjo?O#`Z^pB;k8U5vmSSODb1ga2;){?hL z&pboA=n!w-*0O1Y0SM_60PbQ>)CF%9zEQZW*;F_EPKoJCK9^znB~iRFf;T>_&>t`stxB6!oo!yMibS3xFK1QND&L^Pg+7jQw4ZNoy)`LewPaa`!IL8wbe>X1$% z-W@@t3Q0yy7^cAvVh$Mllo7}prF;R+1S!%hHW#lJS_B&KeHn%N4V4doS0>t*M&j$N zR-uh3Gr}C));PPG-vTr=OmC=-3iV-mtk@DQZjKZ;e^T5U9*h}EmQLO~$r)ImbH+^p%G`$tMH~Rm<_AO9GXeApzH_)EO1AX z^Jhp~hB<{z1R|P5y=6zRYYDAg^0H*R^a_l~vrDt)%ChFlv*s$Y<|?!1sm5 zdF9YXA^aph)|+_xBtGnASvlsDSTTE!TG?~dN|e-?&ll12GqAohl-mQ-u(&qO!73Hx z6*L2TGT52Uh4&7*ekfH zJA5$>B(Owgl;I1^2FDjH0~8gctiFJC7sX4~MlCO&4N`Nw>?+B?@)-=w`mXYNNVvQ+ zNLGLpN=PgaXep-9JkM(eZhOcODw|h?C|>}o?C}R_5)@TY6^pKn9jU}-@~IiYeZ*VF>|`cup(wCT{?d6 zc+^lGF;uUNaE7+9IxAgK$x_R`mS|B`q^N4;7+2I9R>h2EOJn!OqQ;ttv1a8GXKW8^ zVp-^(n#!W4){jlCoT)9W{m;UZn86etexfgn>Z>C9s)t@yU&ZM=!^*h4SX1%XP!TmW zMGQ?bU2#m;@WfabHQHFC?O{#KSh_U6IKJ$S8B3PVES_1m$BY&zorTin8F^((6N?ke zOw3pwHP*7m+7%!*hj||kn?ki4B|hRSDmht zZQE<1&6lvmI$?^wi#Z{g2$QKzteAtrSClyQz_KdIwz(zXvw@HtN%DrIFhQrL{%q5^ zLrTC>YlE+)uH<47lI7%pW!5H1O_K7Q^svBY&?|D%!_t~Tugpmgi)seFDknWGry2C> zob>8#^qMw|&^YtNx8h7KdxX}EITX6oI}#US@i`+Q^0M;bIr;Ll@)hLdE6mEL%gLwD z%2$+=&ybbRn3KH$UZ$~CrCf(rb)g4l88r4BXl2>{lS zT{CXl=W)5`m~BfV+J$$*@7W-LDy#yQM>{qMAN@D<1lCdtnaQww7e9^N#_lRAu+fr) z!2uZ?yJbEJ*cC06t~QjV9~Q3hpn;OPrqVIu?0ccvq}KJfr_)8?#P8J>{p69yL5*itQJ4115xa9^YSq8h(HHF)VmpS`Z)|o9adzh} zbr>(bPoqR@@1J^Jbr{fuav>m$k-}8#?^|s(Q~l3d*?FiZZ3Q5Vh(nhm#Kn!y)k|CL zJ<;|-wtaB@>}LBQM_f#{eQ`>eU;rk=xj7$A!&mn{OyBtv0astD!0}uY)lH;Vm8jQ| z*~n#*b$o4YV(aKw^ypa@{wB|E9zDxlCX<>OQkq@61+L~) z>lSE~UR%06k&83zlw+-8t9v-wJ6(r#j<cPVMCK^KrBFo(*wQ3 z6>&^&(5tU)bq+*3N7&Ah4gF^42ot#>I zeXDaY+BwR0j&4+Lc8+rAcd4|my-F)KwT>}*LHa$mprWfJbP?-t9vBcJ;8QQY`8bOC%8+VWal!Y(Sr0s3;6!(R)iMv zuc+T$q+e>+c+?;9TxXpw_Qct(V?^{AD0-fCoZmclp7UJK96f@9L1zCZFnhAF=jv+T zL`tQ;QaY|g&bzXX9#=x81$FJ$T5IQ8YrWtLhmRoPlTnR6;)Jh3tuPfa!Uv-YO&b*H z=hewqOY?ai;ZqQt3-B$73$#EWd^jo?RBIjwS2=}_9iZbNjd@fzRF680fZz*GoB9>A z{-B%TWzdBv^r6Vh0>N9n8Vvli=oATc4D#T>MSjMYn$JtUoRakCC>BQG+X%dYz?%sC z1p?ne;JXNX4*-n=$TayUEdHjfUxIv9?yp7USEu`-+IO+1B^A+<_K!>2xsuNCNX%3b zHPuB-b*nY&M%GlvnFhmyad~ro_0zKYXjw<3tYh^s`|>z@7Unn?>n6Ff*+uo!^2TU+ zSERga)xn-P$6g@W^Rry})kW<#CW1XT!`eMunHM-p>!PLYk<#|ny0x~AGaDzl(o2h~ zrxnf7io=nL!>c#hlM^iAV$WXTD%^|s(}PXXgWZvX-K(=}L3Z-;#y7ZwuEo3z@oOhG zPHePsWfvFKaiy`OC}wPURQrJ}B7F98oo?=sn`@eh%K-HxJ4yklxDqq9eW3Wj6A`}2 zxMOqN;W_S5Ag)44HD;=QZ{SgN1byakt>?I=b6kxhu0c30W~zUrc;tx)pAB65WzKe) zYnYDbAtb&BG9MueFjL)o^N*$?!lsuybct)d#ML|Fg$Sv`Os$W|5Beg)&XGGZ%XQ6i zwySYHLKb1Brbpc$7$U;{i|g`m?H;b#8#f@NaSx;kA&W6nW47ioBjf?h)bPmkh>i%0 zGuPqb+FV@Ym3Rq4S~8I5r_;!Cggm$hvH~HiQWZiIGuP$i+Pz#e8Lvjj8q8#SH2=X= zM3~jMqkgX2&$Z3PYZ0<8B^J#NT*noz?F!fEj@JWnQSo^TW^H)))puU~tJjmAXMwBe zUBuyC>IGNT4+>(s(uBWiQ&)wu%a(^A3jxdWpT%?~%SV#Q^5w6`bO%>(a9%B&gjn35 zH5SA%ZGOQQan){tTe_-02&41IBh6zP>_0SBW6j(BD_{Uh_*aU-PJb5ze+XnG!k_G6 zk)#~p(wx47UEY=SVWottoj44xcIjlwpCHx_j&&vcEJrWEata1IC7 z-;lx~pG1d6CIS<5g^yPBMXw# z5<)Hd!~&@{$X>QBb#$cyvuCfJ#vz-m-CYWy73;j)AW7ueG93JS$i?@NoBx7x3-*v( z@Pcv+_mHc5LAm-pL$3J+4t!${d{Yj5%J;a(`)kR;-rTcSB#rK$+?< zOb6^FIySc>g!GO=;5i9AMUJA$Lp#ur6sO9MX;UBwJ87EzML3G(?q=0We$G#88h|UgK$l!cQGral z#B%1PaGEi(lrtu&g*c41XR&MJraa0zZ?DWsi z1$g;5x)V{Dmg7Ph!hMzn&6(f~T==n$2l-^w1yRMooZIK;RgUCQR6H3G7o7W?Vq7W045?UBx(fHN_}61FdOi z;6lFOM6)KHXbVDXrAU#qG-txgBO*mhx0udD#U-u73yC&OqNpE(K8;m-+9fFy;1f4E zl;mv&?y*r;$l=w&5E%&FxeeA(^x9{F!Rx#d&RqL$lDvZPF@Crb26t7R>yu2pQ}!%xg5;h|WmHCoyh zDQ)|tw0#jyd>>dUyjQrQd{B75kh8XbqU(UGN@X2z&C6){)NDgVS)=BLkIfC7xe2(9 zmZgb%6XAhaX=`}k%~4cJ5jrBxmUgfuott>q(M4>sA^bwA^oD+fH#+J<+PuY}M&?f-M<>3X9~;E4LrKdjHkc zQLg?}w0@ASA6)NcOHOa%Ln1}}%FzeM?;l@Pan(no)vvJCudD&Z$xZx}NYS`*;eqqM zbJfPx_C#w>v$eZQ5oO?9^@(V8A6wnGUc{F4Z{h=@jHZ=q5B&H2t0%d-zG&SrTQ|H; zu_Ys$_^3#cTZUMVMy~dFw6>S6?Om6$C4HNCzbK<&W$3}!{jt>pT+K_-np14eskIrl zq-PWFeSQkmz#=t@|5m9s7lcoPSvm2#md%@Z3gS_hd5(xEEyl?jLl+vj59Wh@yz^D&e)L5XDzLq(Uy%UgMqaif_nraQD$kG zC1l1kN?4xYj4dK>X8a6iY|56ut>6~U*qS8TUW*K><$>>y$6L+jqD5J}1Jhf6G`}+S z;Qamb52uCq-NV-QtV_U#y`}42%!}#D-!rYy4{qJR#kQRkI`;ruKd|1zRSs_H1{d?e zi2a^o#q;3m{i_cHT-}LiT`ybLyRPS~eOtP|Mf{1*gf46>PepZ=pPhiA8t;{eZ#bh1 z#B@cAz01<&-WBOe??dUs-c{*p@0xTCy54&4hIFGBY~nFp8B_--p-h1BLUn1u=a@Rb z5F83+)^}Tf)C#jj`N2hP%v!f{<8L)l>ye1{$YTDlELDsBF>~3{!qUQDEQmWM-sKlc6@du)Vj8D*QtHU?NT5gvM6S|2Sv_HpU4wFa)V4|*SNeCx~` zXO^2c@w%r5%krf)`KI9ni=X)7Y2ks-F*J=DiWhHu|L}Lud>NNP@((m}!+onq^|c1< z-?S10@tz`h{Is&S6doTQZwC0Y1_VDcBKUJmfGr4a96<0FaseJf@ZT*6{!%?u0uQdL z3E*bF0FU+>AQ9E|n&I(jL*7NT?9)!|MVai=6B3B?G6ld!nQ-@%LZ*2NS**t!_2|Ac zT5{mNv)1K;%h2x1cm58Dlzb`-rf-YBDLPDSpWbrtzRP(7=y=2f!EKh7~QQGu<7A%h-3%#58$#`+qB!Da_zcQx?Tq+t#|D zVM>MenGBL~Da61drY!nQDpwejc@P5^+Fp4LDLRP79TI`?Wko@f8DjB;MCPj!MX8Yc zzfu$xuHXuntQ)n7&6eQg1+TB0zMj~T`~xV!7mE8T8_nGDlXPPDWDstt+qV6W0m3Fn zkeE0kgB%$NKd$6~010NMa=XN%_&2gG@gsqMlK3ZfFxU=1i!6u@EMm37iY2YQyCiYi z#-2X3q|+HYZl`hDha@xUBAr$%x?i^Y8v1`c)M||G^jeLz8Q4x}b3n%^^}Xf&_dn z8&M6b1eG1xP%9$Ub%@k>%CdJ0Wu&SdIkaEn%Tb3)(g*wkBZMLhoxLGTb9bZ7b8zj4 zr_UlmMIxbWP9vym5sPLuq^b^iau`7i*JazTb);G-_aQ+~YOpqmAek7;3Byb{#&EPg z2g4@<{?rKRH~*%>R?HMc)nI*vuVTDn@4I5gD>j4-s2Rc2OncvFM=;X+%Z>1kHC~uZ#z2S`LTuE}-H~c} z#?R3=DVmK6oSzn0jtWJC?5Lw$(g80RT9mAdj6ekz@GVhB27+jb<5^D9)BbQc#<8?y z<^jqCD30Nm!U8YpgN#7m1gWH@!z|A@2&sx+TG*y0>W?szE*7DwC@X1s0VX(1^AIm^ z&^t-H5N7FHQu!O9aM-`dNQOJmPb$c<5vg2m3an(@>Jf*BP||>x_$6Jg4|vXY<&G9O zq<1cyp1H;|96xjZ;;SR0GZz{DmcYge=a~Oagoz4Z13Z`xg+qQkN)*oqg*W{i;zZX+9ciNK{^;`P zgFu?F-hXxZ)d$`*QIjGX<3!^l%{E^3{jue-2SS>#rHH0D(e$V$P2_kPtHEvj78wi` znObD2TGphYC$+~Cwa31ybuJI3s~g@w``%fxy5lz&zfq$)S4M{nmG_BviQk&j`l^(^ zKB2Eq>JL4wtX{6z1Y;1LbA8-K5HPc$We@_+j|eR)pK6cLf`dygEXB$WBVUWb*pJ_nuUMRe+(gHC-Bov?WR zq&c+T`!p2MsecYS3yVw-A`LT@vR?w3vF2N(u?|h^EQN*Llk?#Gc|k>1DB_4Z zc12uEQCzDct_|jA`M&eBT@lv-`u4|lD&o38pK)J(M-*}0pl^SiLlJkh7%o;ZgI7}d z7_Z51dM;V7}2uZ)N6bv$uiAvT> zjBufl)s8??E7d;38fL=*@0}RKOSWhDBhfe55Djb-urEz|NhZwrc}6nBCC22hvG@XL z3JIeulzs(^aZBW!$Kf|Mojg4)2EspNEhM%qEXgd@9q>hv*pjBaCC+PK3_qD% z?fz>d**`3LXLgw*1o#qpiP3v;@}TB;!4mE)CbExI7Dm5hy){f;JZNXHK|lEx zAhJjF-bj$w*WIf(Hu}z|`iA0tLr*4>eM2I7Jva8X1!JK0r`bp(#PjeOpakLDG!~^U z6cmmY3sgRAS6kk$6T!qR6ZgHgHnwr{YU<=f9Dd^y$&(Y}ER(aWx?tJOI{}WR1coog zs$?3LwRu5XD7skGtSPW)Yi;q+iR%mTN#B}%V_+mTFd82iU7tt}jEdJ6c3Fj8pAVGC zT};^f4?YQ}!7A=5CbGwD1f}H@D8O{$j)ZO3HmX?!LTkO}a0OzPa4QkqyFgrlcuaUfF>x!r$4q zd;u()nv0K5uD-M39!j~d#NAicTa)f9;?ypaN;<3Z$_`}GES^>J)RG-Rj!E!MmCAot zEls9u&SmNcT|+25wFJ%6{757agPfdyRt?k|;8^{W!3t--y zvI9*uKQ^jRrS#7yrYJ@4p|U2ut?zuz*%@(m24G(U3P-tQ)Z-#ft_F>AC=%p?u^fjD zjtNWp+^glK3R*4&VKW12K|;P4ZjcK{t$=$i5wK~(;r#`?m*+5X_;WLdHxA{^3l48r zaQMSuZtsMRGMpJ-YJ*|cFGy;bQ5>!tC3Td2Q_{mmNf7S{a`gybR}b9m zgK;&<1u?ma$s#5pOv0Gl!sK;KBA7&h@VFOUc*`VzWXndIVtFXF6)z$2OW?nQ&dd84 zhgwn%eP1^8i4E@M%W0cEW$Q}Vx>h@$)WmIFqHSn-D5E>4GPOUo)V^Q&US+(+y&74i zl9pG}%^j&`ccR(-RrA1up|rj8!@D2c745wbhhg8rKA6!XYh4y`a_yzHo}}gS4n*sb zPwgMu#n%3Zmv<6sa-1G3#P8GeYFRenS zUfzLdcYJ#G;AOo;~ufi{qV{TfN9nA+1;e&><$gPj4;+TRHbXW zS2`c76LR$~y8U9WUp%^yQG@8IvPcUe*xRx7Jk~y@6LM)Oo{ETr5wSO#DaS%RvbBHm z%1V0zS8Jm4nt1e@*x}0~ebV9Cv#J*Y4H7j<{Wh$_c*h6T-LNl^;eX_JN znUHgLvG<1PydfT$$y8#Y1=*Y{%;O6QIRO?=1Vv9!bS-AASXhN@M^^?OS105&QuNSb zA1xjWWU8^SW)Gna3u}?hp)@>oSXhs2-7B^gJ|X8AVm~GJP@-c#(}0DI+k{hdTf!zR zY~Dj?$HKNkhw%C$dIDl!Ks?4|+Oe<$*<342k0%pya28L7#euNc6UlU9VOQa?ILL|p z^J34u=l^q_ z4Xs&bekV7%<~-h^&W3m#v$Ic?zdXru`7@mU#jM3=xVvx*?gEcL&1TdpmFi!}^l#Mk PUrkJgL>F diff --git a/model/__pycache__/State.cpython-314.pyc b/model/__pycache__/State.cpython-314.pyc index 7e0b85edb56afc1e28637ce8963029fbf92ccaec..9af47acfc19605cbc9c77b231cd1b3de02076db2 100644 GIT binary patch delta 1540 zcmZuxO>7%Q6rSgsms^BOkhqS@6C&Y~tx3d#O zPEJomh#!@?A|cvS#RU7vvlvr~ zdchDzAtXYDun2oTwHPTxMKnt+a+H*`G${p#0$73&5i8MdV(Y)5an4p;owF;;%n`1^ zS+&MlMMPYEnb&9M8r)W{{hkjQMZp$FOH*TVkRGQY`6~Tv;N<9YGgA)Z&P=J%5Hn-U zSrCoOGZW>NMYbenORUmZs?_SWvZytdou2wNUH_?>< zxT*4_oL75ji+oq@h_-;sSp--m+wyaDfm*UlD+e>=d|*P8_q2?no>%3!32Xh9c9qg; zd0LwQ&uG$jHZd=(cE4N|gHmwtDXXS8cM}GpozAm#A4QC40XI(qp!DmJSE#kFMGe|Kls-Jh>P)Z){~{1R5HkRLyACSn_B9&; zmz(rU`Z>Jy^g-DjGyP$7tF3pVt#{MxTT_2AqVJpXo!Ik01aP?aA{2O9FF zgx8RY-;h+3-z2_(9(*tPl{&3Ww98?=L%z{cYo5TQHUc&i??dPZa1F018%yk940s-+ zg9wi!U~}*x0NXgs^+^mph2W)q8duK%I5=h=b-ztZ;GY1O+v02fA`{+XWTiN^3V!ET zfQLIb<#q0lsr0UzdZ=$dP2E;*3@0UTeSya1dh4ld3X2B?38e*xNYXO{o~ delta 1731 zcmah}&2Jk;6rZto?e%x;IIR;a&1W4siA|bD6iQWa;=o!;)6{8l!6I1BI5pYWW_BWo z1ad$^pq>aTA%wVaLgfVHfH)QYgi;}-ErCi@D&<0y9?F3t-kT*22}tbWx9@A-yf^RT zyOH-Yp^6SprqA8NDqs!q&HmzzPi4kVXU50IA1|#nmYGqS7iGb+%?;c7lXlX`cEa^BJsE_2 zI6gKH1K8f&@-ha@V<>6|xTf&9^`m=mxC8YX=%pV!?6}+KkAc=)1K1?DtqYN1Yf;I0 z62Mnn)*FGi^|_)ei>^7<%BfvSQ%RETr1}9>E-Q0=D6+m%`>p$)_+ddX=C>|+H)+iJ z);oB{hXI6MGT|jSGn)=bx~X9-Dq$ERbE@cY;5-m6TA<_ zN2=kQy22`}vK|AVHWdI2oOf6c{e8iUD4PesHy;jMqKWO-0vcUC;>Dk51{3UXSs|`C zoOFV7L0BiznR7wv?`N3?ksWoO#qlBO7tzwW_Kx*i5UtN+H zq)8LjH<7Zk=-%%^HA$>|+t$ diff --git a/model/__pycache__/Utilities.cpython-314.pyc b/model/__pycache__/Utilities.cpython-314.pyc index d4ac3392843744d8097a92365cecca05a3e58719..2fbbe575e7021d4d0e85ba99f3dc04900a982efc 100644 GIT binary patch delta 963 zcmZ{j&rj1}7{__%Si7#>96vTOjdW8dQ%4j9mPrtUK_FQI6LcYqTGn^5v0G=~&IsY) z0gXrTjemjh;Mof|6HgutiN-{-gE8^S#l(v@-{-BO(`|>(w!Y8%{k%{6bW{5@sGJHb zQWyIaSKgRpOZk9Cw!Wmr8-gnpkQ<^3I)r4JLiLbz=h42wp)C}PJCUJ?Q z(PH;8IRTpyL&}NM$KAKQ${ep0NTXcFgq5=O^*&8E3~Xq>E>;?rwU%&BuqCG@galSt z$WCA^1R>5KK%)^sZFP+ci=OKOcLnu(x@qaF7WQntT1~HF%_Q3XLOWTXSn^Ul*=bMq zPE@1+AMA$+-LZpZ|2i1kupXUZYSx)+YX*CCF4mkg5X5hIOK)$3#WuPPsh#enlnvw{ zhC45Hb~fsU-r30#nqerR?}IAck%XQKJ8i?kBal70FBtzvaPUu473`L8ck1b>e2ukq zT^>Gn6tdEQ4B#wa6p#f>0Hy%bfEhqP-Ij+#d>U2wuhMVwUVx9NO1~GDNa;vqhaAmXPItC VR7pU+PtJeuVqf%gBCXz>@8yoJI|=y*nc<7 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 K9uk!5*#7}5DtKD} literal 7236 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 o*e+X*C_MW1Pf2V7se| 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 delta 1669 zcmb7ETWl0n7(QoaXR^D_OzmEK*|t+!+AgKrrIbpckk)MwNNmjpH<6TXhS>wG?xoC` z)}V%}FV<*+(^92;_KuGU*~UxE^1A)J2>|`nnh`R1lhGewuLb2L}?+4(&DfH_6XTx z8h4?%=ON%HOM7i4gKRbJ>jW@`jx+m$I~c%6{3f$UxD^muCLU zXlU0!a`(Vca%g0xSk95cmP2BWy)PuNy!xGx6J!rRv*l-l(hEDhoUD55VX4&!tZWfF zU$Co~P>J(8EX&6}m-b?H^%rSG+*JzzQNY0pxL#(tSj^j2Gf2V!5r8N_6HEIh+F`Gn zLyS|@$DzkvwfLX;l5#sJ*4QU%D?8uQ#9I6}@B??Uw@|NyqE3T%Bybmb)u0n#57jpZXq>xV8l4zJ-;8ynLgHGhmTC~!;+|9#U1^ZG zq-?UaDlbEo!==Yei^V+^ApnXJyl+A-8o9OFjx3$1(s!0+TUn%$} zNrBje>V{swfNqp>I&VEVCo%&qS%$CYKxzR#7ZxT+&{Zq#*ji032^bE0|gE3>rTN~xwaKmACwsrDf>tc<9 zjoZ=Nfck4&b6MP5OVy(ugYhxTR?c#(@Mi|ydVp1}9xzgzscL*m*>J3{cY$-%!0dSo_1cc9=yR;Vneu(UG5LhI=v_oTRwa}ynX3V zrMcsha=m$A>8K+kHF#nA?dj#|l^0h|TvPT}l*mn`?W)ptP3d@~U61WtSy)dzeN9O{ zuHOhomm}-Jen*2X#0Pg(cCxKcaAaV84;@wTZGY(aITvAHwH=l|LQ`>#-5Z?jfS1;4 z1ArN^5&#DPCIAkzVsh|MRn2D2f5djh8{g~xTbihC@W zkZMEm96eh|@Q1fVOuKB=3hf@|DA>9VZn?Z;{9T + From cb68e454bc96a7b8fd0ff60ae3d030debe69bb53 Mon Sep 17 00:00:00 2001 From: Pankaj J Patil Date: Tue, 24 Mar 2026 10:47:05 +0000 Subject: [PATCH 2/3] Update .env --- .env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.env b/.env index 494210b..5bfeba1 100644 --- a/.env +++ b/.env @@ -2,7 +2,7 @@ Secret_Key = 9f2a1b8c4d6e7f0123456789abcdef01 MYSQL_HOST=127.0.0.1 MYSQL_USER=root -MYSQL_PASSWORD=admin +MYSQL_PASSWORD=root MYSQL_DB=test DEFAULT_USERNAME=admin From 82bedc3117d84dbe0cbf91d3d326a752fedc8c1b Mon Sep 17 00:00:00 2001 From: Pankaj J Patil Date: Tue, 24 Mar 2026 10:49:06 +0000 Subject: [PATCH 3/3] Update activity.log --- activity.log | 95 ---------------------------------------------------- 1 file changed, 95 deletions(-) diff --git a/activity.log b/activity.log index dc6b2a6..e69de29 100644 --- a/activity.log +++ b/activity.log @@ -1,95 +0,0 @@ -Timestamp: 2026-03-24 12:53:58 | User: Unknown | Action: Login | Details: User admin logged in (static user) -Timestamp: 2026-03-24 12:54:01 | User: Unknown | Action: Check State | Details: User admin checked 'l' -Timestamp: 2026-03-24 12:54:01 | User: Unknown | Action: Check State | Details: User admin checked 'la' -Timestamp: 2026-03-24 12:54:01 | User: Unknown | Action: Check State | Details: User admin checked 'lax' -Timestamp: 2026-03-24 12:54:02 | User: Unknown | Action: Check State | Details: User admin checked 'laxm' -Timestamp: 2026-03-24 12:54:02 | User: Unknown | Action: Check State | Details: User admin checked 'laxmi' -Timestamp: 2026-03-24 12:54:08 | User: Unknown | Action: Edit State | Details: User admin edited '9' -Timestamp: 2026-03-24 12:54:39 | User: Unknown | Action: Add GST Release | Details: User added GST release -Timestamp: 2026-03-24 12:56:54 | User: Unknown | Action: Upload Excel File | Details: User admin Upload Excel File 'Aadi Shakti Construction_shamli_31.07.25.xlsx' -Timestamp: 2026-03-24 12:56:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' -Timestamp: 2026-03-24 12:56:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' -Timestamp: 2026-03-24 12:56:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' -Timestamp: 2026-03-24 12:56:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' -Timestamp: 2026-03-24 12:56:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' -Timestamp: 2026-03-24 12:56:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' -Timestamp: 2026-03-24 12:56:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' -Timestamp: 2026-03-24 12:56:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' -Timestamp: 2026-03-24 12:56:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' -Timestamp: 2026-03-24 12:56:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' -Timestamp: 2026-03-24 12:56:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' -Timestamp: 2026-03-24 12:56:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' -Timestamp: 2026-03-24 12:56:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' -Timestamp: 2026-03-24 12:56:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' -Timestamp: 2026-03-24 12:56:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' -Timestamp: 2026-03-24 12:56:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' -Timestamp: 2026-03-24 12:56:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' -Timestamp: 2026-03-24 12:56:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' -Timestamp: 2026-03-24 12:56:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' -Timestamp: 2026-03-24 12:56:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' -Timestamp: 2026-03-24 12:56:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' -Timestamp: 2026-03-24 12:56:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' -Timestamp: 2026-03-24 12:56:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' -Timestamp: 2026-03-24 12:56:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' -Timestamp: 2026-03-24 12:56:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' -Timestamp: 2026-03-24 12:57:01 | User: Unknown | Action: Search Contractor | Details: User admin searched contractor 'ad' -Timestamp: 2026-03-24 12:57:01 | User: Unknown | Action: Search Contractor | Details: User admin searched contractor 'ad' -Timestamp: 2026-03-24 12:57:03 | User: Unknown | Action: Search Contractor | Details: User admin searched contractor 'ad' -Timestamp: 2026-03-24 12:58:20 | User: Unknown | Action: Add GST Release | Details: User added GST release -Timestamp: 2026-03-24 12:58:26 | User: Unknown | Action: Search Contractor | Details: User admin searched contractor 'ad' -Timestamp: 2026-03-24 12:58:26 | User: Unknown | Action: Search Contractor | Details: User admin searched contractor 'ad' -Timestamp: 2026-03-24 12:58:28 | User: Unknown | Action: Search Contractor | Details: User admin searched contractor 'ad' -Timestamp: 2026-03-24 12:59:42 | User: Unknown | Action: Download PMC Report | Details: User admin Download PMC Report '59485' -Timestamp: 2026-03-24 13:02:31 | User: Unknown | Action: Download PMC Report | Details: User admin Download PMC Report '59485' -Timestamp: 2026-03-24 13:02:38 | User: Unknown | Action: Search Contractor | Details: User admin searched contractor 'a' -Timestamp: 2026-03-24 13:02:38 | User: Unknown | Action: Search Contractor | Details: User admin searched contractor 'ad' -Timestamp: 2026-03-24 13:02:39 | User: Unknown | Action: Search Contractor | Details: User admin searched contractor 'ad' -Timestamp: 2026-03-24 13:10:49 | User: Unknown | Action: Add Hold Type | Details: User admin adding '30%' -Timestamp: 2026-03-24 13:14:15 | User: Unknown | Action: Search Contractor | Details: User admin searched contractor 'a' -Timestamp: 2026-03-24 13:14:16 | User: Unknown | Action: Search Contractor | Details: User admin searched contractor 'ad' -Timestamp: 2026-03-24 13:14:17 | User: Unknown | Action: Search Contractor | Details: User admin searched contractor 'ad' -Timestamp: 2026-03-24 13:40:26 | User: Unknown | Action: Search Contractor | Details: User admin searched contractor 'a' -Timestamp: 2026-03-24 13:40:27 | User: Unknown | Action: Search Contractor | Details: User admin searched contractor 'a' -Timestamp: 2026-03-24 14:19:43 | User: Unknown | Action: Delete GSTRelease | Details: User admin deleted GSTRelease '1' -Timestamp: 2026-03-24 14:19:43 | User: Unknown | Action: Delete GST Release | Details: User deleted GST release -Timestamp: 2026-03-24 14:24:04 | User: Unknown | Action: Check State | Details: User admin checked 'a' -Timestamp: 2026-03-24 14:54:10 | User: Unknown | Action: Add Item | Details: User admin adding 'None' -Timestamp: 2026-03-24 14:54:10 | User: Unknown | Action: Add GST Release | Details: User added GST release -Timestamp: 2026-03-24 15:03:52 | User: Unknown | Action: Add GSTRelease | Details: User admin adding 'None' -Timestamp: 2026-03-24 15:03:52 | User: Unknown | Action: Add GST Release | Details: User added GST release -Timestamp: 2026-03-24 15:10:46 | User: Unknown | Action: Add GSTRelease | Details: User admin adding 'None' -Timestamp: 2026-03-24 15:10:46 | User: Unknown | Action: Add GST Release | Details: User added GST release -Timestamp: 2026-03-24 15:14:20 | User: Unknown | Action: Add GSTRelease | Details: User admin adding 'None' -Timestamp: 2026-03-24 15:14:20 | User: Unknown | Action: Add GST Release | Details: User added GST release -Timestamp: 2026-03-24 15:14:29 | User: Unknown | Action: Add GSTRelease | Details: User admin adding 'None' -Timestamp: 2026-03-24 15:14:29 | User: Unknown | Action: Add GST Release | Details: User added GST release -Timestamp: 2026-03-24 15:15:26 | User: Unknown | Action: Add GSTRelease | Details: User admin adding 'None' -Timestamp: 2026-03-24 15:15:26 | User: Unknown | Action: Add GST Release | Details: User added GST release -Timestamp: 2026-03-24 15:17:34 | User: Unknown | Action: Add GSTRelease | Details: User admin adding 'None' -Timestamp: 2026-03-24 15:17:34 | User: Unknown | Action: Add GST Release | Details: User added GST release -Timestamp: 2026-03-24 15:20:29 | User: Unknown | Action: Add GSTRelease | Details: User admin adding 'None' -Timestamp: 2026-03-24 15:20:29 | User: Unknown | Action: Add GST Release | Details: User added GST release -Timestamp: 2026-03-24 15:20:46 | User: Unknown | Action: Add GSTRelease | Details: User admin adding 'None' -Timestamp: 2026-03-24 15:20:46 | User: Unknown | Action: Add GST Release | Details: User added GST release -Timestamp: 2026-03-24 15:21:33 | User: Unknown | Action: Add GSTRelease | Details: User admin adding 'None' -Timestamp: 2026-03-24 15:21:33 | User: Unknown | Action: Add GST Release | Details: User added GST release -Timestamp: 2026-03-24 15:22:17 | User: Unknown | Action: Add GSTRelease | Details: User admin adding 'None' -Timestamp: 2026-03-24 15:22:17 | User: Unknown | Action: Add GST Release | Details: User added GST release -Timestamp: 2026-03-24 15:27:58 | User: Unknown | Action: Add GSTRelease | Details: User admin adding 'None' -Timestamp: 2026-03-24 15:27:58 | User: Unknown | Action: Add GST Release | Details: User added GST release -Timestamp: 2026-03-24 15:28:20 | User: Unknown | Action: Add GSTRelease | Details: User admin adding 'None' -Timestamp: 2026-03-24 15:28:20 | User: Unknown | Action: Add GST Release | Details: User added GST release -Timestamp: 2026-03-24 15:33:32 | User: Unknown | Action: Add GSTRelease | Details: User admin adding 'None' -Timestamp: 2026-03-24 15:33:32 | User: Unknown | Action: Add GST Release | Details: User added GST release -Timestamp: 2026-03-24 15:34:55 | User: Unknown | Action: Add GSTRelease | Details: User admin adding 'None' -Timestamp: 2026-03-24 15:34:55 | User: Unknown | Action: Add GST Release | Details: User added GST release -Timestamp: 2026-03-24 15:35:49 | User: Unknown | Action: Add GSTRelease | Details: User admin adding 'None' -Timestamp: 2026-03-24 15:35:49 | User: Unknown | Action: Add GST Release | Details: User added GST release -Timestamp: 2026-03-24 15:40:15 | User: Unknown | Action: Delete GSTRelease | Details: User admin deleted GSTRelease '12' -Timestamp: 2026-03-24 15:40:15 | User: Unknown | Action: Delete GST Release | Details: User deleted GST release with ID 12 -Timestamp: 2026-03-24 15:41:46 | User: Unknown | Action: Add GSTRelease | Details: User admin adding 'None' -Timestamp: 2026-03-24 15:41:46 | User: Unknown | Action: Add GST Release | Details: User added GST release -Timestamp: 2026-03-24 15:56:34 | User: Unknown | Action: Add GSTRelease | Details: User admin adding 'None' -Timestamp: 2026-03-24 15:56:34 | User: Unknown | Action: Add GST Release | Details: User added GST release -Timestamp: 2026-03-24 15:59:39 | User: Unknown | Action: Delete GSTRelease | Details: User admin deleted GSTRelease '15' -Timestamp: 2026-03-24 15:59:39 | User: Unknown | Action: Delete GST Release | Details: User deleted GST release