From e42e873456d1898a6fac2842e33fda4b4d71a8c5 Mon Sep 17 00:00:00 2001 From: retoor Date: Fri, 10 Jan 2025 22:53:10 +0100 Subject: [PATCH] first commit --- Makefile | 30 + NOTES.md | 41 + README.md | 66 + a.out | Bin 0 -> 147984 bytes app.js | 270 + box.c | 100 + footer.h | 99 + index.html | 56 + rlib.h | 8450 ++++++++++++++++++++++++++++++++ rsolve.h | 282 ++ solve | Bin 0 -> 183872 bytes solve.c | 277 ++ sudoku | Bin 0 -> 16952 bytes sudoku.c | 333 ++ sudoku.h | 252 + sudoku.html | 711 +++ sudoku.js | 850 ++++ sudoku.zip | Bin 0 -> 458845 bytes sudoku2.c | 28 + sudoku2.html | 83 + sudoku3.c | 189 + sudoku3.html | 83 + sudoku4.html | 31 + sudoku_gen1 | Bin 0 -> 194040 bytes sudoku_gen1.c | 574 +++ sudoku_n/.vscode/settings.json | 5 + sudoku_n/Makefile | 8 + sudoku_n/a.out | Bin 0 -> 142864 bytes sudoku_n/rlib.h | 8450 ++++++++++++++++++++++++++++++++ sudoku_n/sudoku,h | 92 + sudoku_n/sudoku.h | 6 + sudoku_n/sudoku3 | Bin 0 -> 167304 bytes sudoku_n/sudoku3.c | 31 + sudoku_n/sudoku_algorithm.h | 32 + sudoku_n/sudoku_format.h | 86 + sudoku_n/sudoku_generate.h | 38 + sudoku_n/sudoku_header.h | 92 + sudoku_n/sudoku_thread_test.c | 66 + test.c | 15 + test.h | 1 + web.c | 39 + 41 files changed, 21766 insertions(+) create mode 100644 Makefile create mode 100644 NOTES.md create mode 100644 README.md create mode 100755 a.out create mode 100644 app.js create mode 100644 box.c create mode 100644 footer.h create mode 100644 index.html create mode 100644 rlib.h create mode 100644 rsolve.h create mode 100755 solve create mode 100644 solve.c create mode 100755 sudoku create mode 100644 sudoku.c create mode 100644 sudoku.h create mode 100644 sudoku.html create mode 100644 sudoku.js create mode 100644 sudoku.zip create mode 100644 sudoku2.c create mode 100644 sudoku2.html create mode 100644 sudoku3.c create mode 100644 sudoku3.html create mode 100644 sudoku4.html create mode 100755 sudoku_gen1 create mode 100644 sudoku_gen1.c create mode 100644 sudoku_n/.vscode/settings.json create mode 100644 sudoku_n/Makefile create mode 100755 sudoku_n/a.out create mode 100644 sudoku_n/rlib.h create mode 100644 sudoku_n/sudoku,h create mode 100644 sudoku_n/sudoku.h create mode 100755 sudoku_n/sudoku3 create mode 100644 sudoku_n/sudoku3.c create mode 100644 sudoku_n/sudoku_algorithm.h create mode 100644 sudoku_n/sudoku_format.h create mode 100644 sudoku_n/sudoku_generate.h create mode 100644 sudoku_n/sudoku_header.h create mode 100644 sudoku_n/sudoku_thread_test.c create mode 100644 test.c create mode 100644 test.h create mode 100644 web.c diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..51d437d --- /dev/null +++ b/Makefile @@ -0,0 +1,30 @@ +all: build_and_run + +build_and_run: + gcc sudoku.c -o sudoku -Wall -Wextra + ./sudoku + +gen1: + gcc sudoku_gen1.c -o sudoku_gen1 -Wall -Wextra -Ofast + ./sudoku_gen1 + +solve: solve.c rlib.h + gcc solve.c -Ofast -o solve + $(MAKE) solve_auto + +solve_manual: + ./solve + +solve_auto: + ./solve auto + +coverage: + gcc -pg -fprofile-arcs -ftest-coverage -g -o sudoku sudoku2.c + ./sudoku + lcov --capture --directory . --output-file sudoku.coverage.info + genhtml sudoku.coverage.info --output-directory sudoku.coverage + @rm -f *.gcda 2>/dev/null + @rm -f *.gcno 2>/dev/null + @rm -f sudoku.coverage.info 2>/dev/null + @rm -f gmon.out 2>/dev/null + google-chrome sudoku.coverage/index.html diff --git a/NOTES.md b/NOTES.md new file mode 100644 index 0000000..c95cda0 --- /dev/null +++ b/NOTES.md @@ -0,0 +1,41 @@ +The difficulty of a Sudoku puzzle is determined by several factors beyond just how many numbers are initially provided. While a puzzle with fewer clues tends to be harder, the complexity really comes down to the logical strategies required to solve it. Here are the main factors that make a Sudoku puzzle challenging: + +1. Required Advanced Solving Techniques +Simple puzzles can be solved with basic methods like eliminating possibilities and filling in cells where only one number can fit. However, harder puzzles require more advanced strategies, such as: + +Naked pairs/triples: A situation where two (or three) cells in a row, column, or block can only contain the same two (or three) possible numbers, allowing elimination from other cells. +Hidden pairs/triples: Two (or three) numbers that are the only candidates for two (or three) cells in a region, even if there are other candidates in those cells. +X-Wing, Swordfish, and more: These are pattern-based techniques involving the placement of candidates across rows and columns, which allow for the elimination of possibilities in other areas. +Chains and loops: Advanced methods like “coloring” or "forcing chains," which involve following chains of numbers across multiple rows, columns, and grids to find contradictions or certainties. +The need for these more advanced techniques often separates easy puzzles from hard ones. + +2. Clue Distribution +It’s not just how many numbers are given, but where those numbers are placed. If the clues are evenly distributed across the grid, the puzzle tends to be easier because it gives solvers multiple ways to start filling in numbers. In contrast, if clues are clustered in one area or sparse in key rows/columns, it creates a bottleneck, forcing solvers to work through more complex deductions to make progress. + +3. Minimal Clues +A valid Sudoku puzzle has at least 17 clues, as puzzles with fewer than 17 numbers do not necessarily have a unique solution. Puzzles that approach this minimal clue count are generally more challenging because fewer numbers are available to help start solving, requiring deeper reasoning early in the process. + +4. Interaction Between Regions +In easier puzzles, the clues in one part of the grid can directly help solve other parts of the grid, creating a cascading effect that makes the solution more straightforward. Harder puzzles often present isolated regions where the interaction between rows, columns, and blocks is less obvious. This forces the solver to use cross-region techniques and more sophisticated logic to make progress. + +5. Symmetry +Many harder Sudoku puzzles exhibit symmetry, meaning the pattern of given clues looks the same if the grid is rotated or reflected. Symmetrical puzzles tend to be more challenging because their structure limits the number of easy initial steps, forcing solvers to employ more advanced strategies right from the start. + +6. Depth of Deduction +The deeper the reasoning chains a solver has to follow to fill in a cell, the harder the puzzle. For instance: + +In easy puzzles, you might be able to place a number by simple elimination or scanning a row or column. +In harder puzzles, you might need to explore multiple layers of possibilities, keeping track of candidate numbers in a larger set of cells and deducing how they affect each other. +7. Uniqueness of Solutions +A puzzle where it’s easier to guess numbers (and still find a solution) tends to be easier. Puzzles that are hard require logical deduction at every step and leave no room for guessing. Hard puzzles often include configurations where making an incorrect assumption leads to contradictions much later in the solving process, forcing you to backtrack. + +8. Human Solvability vs. Computer Solvability +Some puzzles may be solvable by a computer using brute force or trial and error, but for humans, they are hard because they require advanced logic at multiple points without obvious pathways to start. Human-solvable hard puzzles require specific advanced techniques that aren't immediately apparent. + +Summary of Factors: +Need for advanced techniques like X-Wing, Swordfish, or chains. +Sparse or unhelpful clue distribution (even with many clues). +Few starting clues (e.g., minimal 17-clue puzzles). +Symmetrical and isolated regions that limit early progress. +Complex deduction depth, requiring multiple steps to fill a single cell. +A combination of these factors contributes to making a Sudoku puzzle truly difficult. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..3b79af5 --- /dev/null +++ b/README.md @@ -0,0 +1,66 @@ +# Sudoku + +## Sudoku solver +NOTE: not all puzzles in source are valid! + +## Sudoku generator + + +This one is resolvable in 227 attempts: +``` +{9, 0, 0, 0, 0, 0, 0, 0, 6}, +{0, 8, 0, 0, 0, 0, 0, 5, 0}, +{0, 0, 7, 0, 0, 0, 4, 0, 0}, +{0, 0, 0, 6, 0, 3, 0, 0, 0}, +{7, 6, 4, 0, 5, 0, 0, 0, 0}, +{0, 0, 0, 1, 0, 4, 0, 0, 0}, +{0, 1, 6, 0, 0, 0, 3, 0, 0}, +{0, 7, 0, 0, 0, 0, 0, 2, 0}, +{8, 0, 0, 0, 0, 0, 0, 0, 1} +``` +// 227 attempts +``` +{9, 0, 0, 0, 0, 0, 0, 0, 6}, +{0, 8, 0, 0, 0, 0, 0, 5, 0}, +{0, 0, 7, 0, 0, 0, 4, 0, 0}, +{0, 0, 0, 6, 0, 3, 0, 0, 0}, +{7, 6, 4, 0, 5, 0, 0, 0, 0}, +{0, 0, 0, 1, 0, 4, 0, 0, 0}, +{0, 1, 6, 0, 0, 0, 3, 0, 0}, +{0, 7, 0, 0, 0, 0, 0, 2, 0}, +{8, 3, 0, 0, 0, 0, 0, 0, 1} +``` +// 320220 attempts +``` +Generation: 18/18 +155.34s +Solution: 220388352 +7 2 1 3 4 5 6 8 9 +4 6 8 1 9 7 2 5 3 +3 9 5 2 8 6 1 7 4 +2 5 3 4 6 9 7 1 8 +1 7 6 8 2 3 4 9 5 +9 8 4 5 7 1 3 2 6 +6 3 9 7 5 2 8 4 1 +5 4 7 6 1 8 9 3 2 +8 1 2 9 3 4 5 6 7 +``` + + +// WRONG +int grid[N][N] = { + {9, 0, 0, 0, 0, 0, 0, 0, 6}, + {0, 8, 0, 0, 0, 0, 0, 5, 0}, + {0, 0, 7, 0, 0, 0, 4, 0, 0}, + {0, 0, 0, 6, 0, 3, 0, 0, 0}, + {0, 0, 0, 0, 5, 0, 0, 0, 0}, + {0, 0, 0, 1, 0, 4, 0, 0, 0}, + {0, 0, 6, 0, 0, 0, 3, 0, 0}, + {0, 7, 0, 0, 0, 0, 0, 2, 0}, + {8, 0, 0, 0, 0, 0, 0, 0, 2} +}; +602.85s +Attempts: +1663211698 + +No solution exists \ No newline at end of file diff --git a/a.out b/a.out new file mode 100755 index 0000000000000000000000000000000000000000..26d2ed076d65b32bfac903988b818d10f50531f2 GIT binary patch literal 147984 zcmeEv34B!5+5QYL8c>{wMB_@trQm|Npdcs_J31<8TyO=ERj6!+8O0?S2%{OtsnHsX zOD&?cv|6Puh$s*cGjWd;HCn3?QSUe?5vim~&Hs7cbMC!oZe|ee*Vga%|3=9@=RNOv z&%2%d+;eXT4LzlU-|w@39epSI7%MqcK}vN(+3_88$mc8d_4jqf-yXjGd^-Tz3I9rU zs`uHXv)RuAjn@%R<|}3($8#SA_SsLHLq3@=->-OYm0~}Ag(}W`0R~I>2fq^e>pWk) zfEYfX{WSAQd6g>N=XqX#v7%!?&3x2N!CzIrf=u@F-YzO%<(xtl(tJ`~%vY@Q73+NV zvqiIEKW%-INB--t_33@~MH+wh)0=Oi&gXspTxIjwPnN;oxgSTy{h0E~biURHl_1{d zEm|-3(=P99pNodq%p@HbHwCvhfkg~H9GU~nf;GF z{Mcjq%$U~aC}DxwO7M?9b?TYJeXv^{VOov84wWiy(_>n9olg8mF8}JyHRs*=+cO%! zcwuex*(0xe;qK+cA>YhH9R5g8S0N`p0wLmvKDyrTtL)gl17Vlq-(~pMYu{V;d1L%* zQzi@_T{vJ4pZ!BFJHDF-UXurYULHON=Yb!P2YyH%_^!SYhfc3N{2Z4D|A0LBgYwk( z2lDW9e;)di^3Z=Q5B`Qc_>1zu%k$8gkq7^UJp7NzLuWxAI_KwsAD)N)pYy=S=b`gT z9{khu@cHXJ@K5s4{~{0li}Juf%>(~K9{R`T;io7Md}2N51$w3DR*HW z_!)Wp|Jyv}f=tf#XOBGiC+C4blLy{85B%Fa<@N*quD-o|b$>?yKYN_I9MPTv$^LU9 zqQr0X;NPR^_`c4jb06@#VU)GCOwpO7$qmx@%^o_w373zLjFrDLe32>BCrp|=-Zvvs zK6d&wzNw?9PMa}#{P^j<^6^(snmW!mV|?VQG0_RW8B?d1PnsG*ATn;!RDx$r8+*mH z=@H+gspBJ~Mvog;?wdZoynI?YNlhiKQKM!=MvuK>)YyqvjG8cd(q!L+^6}&OXY@GV z_?eR;Btp`oMva~^V|;l;Ax)V!j)jbl_{L72He>v_N#(vVWMq0YGIrwVa$j^RMz2@+ zCQO(doiWijW&D&W)2>8Z|a@&Ghl3#*CUgZ7hNKA55XJ37|o0Qeye|u~#8=+_Y%K2Z2YIU+$Y8 znMg54O^HUv&t&c^ps&%BHJPzs9;7Ca7vJc}v`M}xDs8%mgmN(wA4}~(=qaPAPO40D zje`z-lP7`Osbqi(j!c_8?dtL1tb8gdUnu7%ySSy1%o$x$VQ?K&yJ!vY8fNW%Y^w_cEQPu>-A=C=v_$Eyo8-dxVdf!zObV)QTH9M-@ z7a0q>qa)B7ac20&PMbP){MZP1oCHk|7%*zajIpDqPVf{93sPa^kE}(eMW@4aKnz6+ zF_cdKnQ(RaqzEJ&KbbTs)|BbKD`!kAm&jDcs7Fpw7MdGfTW=tl{MS*3{0_uT>y!iLrhb3OkNMgT9vVA(;@hHP@>F2tBV7Ibz8!rpBVx}#cbhZ` zL!koSn;N!<#CP<4pyPMkb|zRfz`UGO{k+I0L$N$=?EjCP)7ME9E1 zncC})IDgJMgNpimhp9lJz5bx#b$WfLKrbZN?W`Sd+Nj!1&M{@4sq-}(a6MI*6w81g zqjC9YG2rJJ@Kysp(tz9TKIhe()7n3~eJA`<8;GafUK2jrfZOdp;iC+A$>&Ngj&oH= zCH6AlP_^^xYrwUNC9S^!=e*til^SrCZU4dsoMqd;G6QbgfN2*Ra2VM6U1q>{a-crn zL<7FF0iSNbIVQJ%GY$AIHW1HB10FQs)dt-5Z6?Bz2+z*G-8;Iu;1Ad$VuQTBN z4S0hAA7H>64fyc}yvcwMG~mq!e2@XR4EPBKyv2ZXtZx5W4ftRi$fxcX*hZEzu73pv z{3IKQXQ2TfV!(?H_{j#m#DH@x&i?f>;2|4`XI}$;iUIF$z)v;cr3O4~z{3XoGy`5{ zz)v^e7aH(04ESXRe5e7RXuyXV@aYEpOangCfO8GU{#6?AG8>3zwE;idfY%uCa}4-A z1AeXnpKrj28}Nk&{Coqx$bes9z?T^C3k`Uk0q2^4{cAAbddo(V8V&d*HuC>H|4#$| zr-A>|!2bst_$s*HH{q%c1>r>Co!9-oaI7xUp{+4owYuPWk-n|pXRr8uZ3k_@-(ZhY zAMqzLCB3e#t!+Y$#5rV5uW{p?K&4l?aZa4lkGpYBn9>W}I44T!+ub-Poas4koP&XM zxf|z1DLuxGbApsU$BlDhnjYfDIZ;X<<;FQdO80c*oEW9Mxp7X2(jDA5Cqn5>-#PMf z0+e3o#yRmxuW{p?@T6C{aZYs7kGpYBaMBChI43sg+ub-PH0e2RoD-RJxf|yMCOyWD zbK;Ud$BlEsk{;s5IZ;U;<;FQdN%wT)oS3A$xp7WN(jDA5CnD)h|8(RpVSJq%=foqu z#*K5rkzVD-InhWz?#4O6NH1{XoLHo9cjKH;r02MCP9)OhZk!W{^cXkJi9`AvH_iz| zdWak6L?L~Y8|MTe-P4V8Vvz3U#yKHKcW~pJ2&6Y{b>!y+Aid6wbKsv|&Rcq_&PVv0eO0j8|Oegy~>Sq0G@u_jdS3g zUf{+#;7;G}#yQYV&vD}%V5iI7I0x40F>ag#>hw8ooCE3f5I4>NbowYa&Vh5fryJ*h zIo-{TbD*5=;Kn&XPH+0gk)H$O^g1`r0dabb8|Oecy~>Sq0Gxi@jdLL^y}*rgAe_G4 zjdK8;p5w&Z4m$HCzi&dY2lU4Fw(Xz^sqFZrp7{Bm_?e#gDW3R=p7^nzcpp#vU{8EM zPkeVzd>2oA2T%OF`fPc=_Qb#N#6R)G-}l7d^2A^B#Opor<(~LrPyA6&{2@>LK2Q8k zPyCmj_>G?UEKmF@PkgE;KEV^e)Du776F<`vKgAP2(Gx$`6Yt}RAMAxR(tI4 ziGSgVf8vS1?}@+ViNEHF*L&j2J@Lg^@gqM!E&j%(;rP06)%upQ^Fl|~9r;NTZoYRb9~$uB-{uvQqa*cy&UTdFFy z`fu1BWml`Rt+~j^GflosF=(}ftLiYN5gG?TIAJY|kjNNZ9N6c1zi)0`q(6eYqR^@q zKVo~=2Rb6+Urvco$R3)V8>oR~pg>3GBZ_?QuENx4aa}yLH4)kxUfH}yIKB#4J%Lr< zse>;I*p*rRtH7cahVJ5TTMxGiky;R`s`FO|ZV_sM7#@SVM|Z3bT#FFs2g>mTZ$Xg0 zsX?h{6jYi;{!u3Q8(m3PP$kwYn2^|{4*X%+Qt7xLmjV=ZppjAw=^smP( zetXXQd!HQMvMwBN46n4h<-nR$S2`rj6@d{rRHhfrI}i2n7$gK2cPbpz_lA9JSP5YDoeF(bQ?~k1A$&Ki$@ptP zqyX?N#TC+?^?@MZlmgX}4m!r+WXt}F6S})~vEt+-z_N%yiB!dBfcwI;E38kUM_zePpO^s}>FfXaz%Er_=$uHHP$*3WD++iErp$-opZS7qR8 ziPtYup$3YQ3a#cNQ&NTI6D2GOFMahD^>f_0BT8QaahCXAx_jW&Z&g*S_C*d4g8(Z| z)s)qK*f=q~L43ct1L{`TUxzFWOd@jhLl8!Ch)viMJe$JF;mz>&M%`+D`}elC8l=&+ zRfT|Sp8{aEayJEc4OwuSVf+)=1;+sCIqSe&YiP%{@LYO-_EETC_NRV_5J*TN{- z*nNTB1o4{rvOs;{gc4=UCK~gGK9IBtq?*I=H{fz*XWEw718DSAYSY>ayr<_wJPY$y=onjK5PNH9f=WPD|e5K1DwH>l11dj+j0q9j{Nt8l7;vf}vo$rKU zBa}^bJ7o`c%KmacL!ixH!Obfi>LW@0WQY2h+oJf@P+OYcniLn1;-TK+UvZGjP2?z$ zQC%(t%=H#@B1b%jZlx`{H`3-w&Xo1XFM%4X3)a?E2MUo4tj>6#t3l_}_AG1yNGqOh z`(7XTlyIX}k-LmB)w9ADOuVY~5Eojhun$RoK34{uYDh$);{GjS3zg&J!@tUmSz{`%@; zYxq!wzkwQ49s3J$ld+bKZEZ_gxYKdX0&l6u?~{>HdG6{Bdugl!NTG$J}y$1u==Vts=q zMbFk8lge8yR1fN#$beQW<=gv`qo>rDcJe9GRdt=RX;%qte^@`$Z&A#%;Gi=jN!Xtl3ftzKNV5sy|k4jID_EWwA%?Hj~;qO9ShvR|MB$%x) z?Mvz3dWn{Lh+Yxx;}UIK?hxH9!EB=Gv%S==^iUfc9R=Q&xMcpspzU8N>$NXDS_(h2 z_a#T2zV{_zRH6dg6?RmvVB6k)rq^KDs0$RQ3&!rJ*DJ5E9dBqbmJn#*NSBR+5v-TW z0ra9`#T4sGIN7ydn9bX3PJi+l+n;2uN>%=<=NpnBROr(kAd9zV*sR*mbdT*}d9uUu ztYwY?W+3RYJe~=vdV}Q~G1D_yJ}w{2yJWL`*5}*7@?`dUMokOGK5Vb$^MbLL0acCE zF>Es8F^jEKBCzT?u!=d*>ax6 zTAj-@2TOuun#*C?cBav6!~^@2DNp;7xyBSZit(VhzU@?z=mAR9)7X#21MfeZgT%28 zi9+Sc;d#|}1lVX-spiv3XY1S5W+D9~2Dmkq%cSv-^fPM9d@9u2YWB_5rr71x&z16E zzgl)a;bfATL(aEisSO*hGDXy3HBa7KiGTZqG0dwb-~_K8iT!~&B5LkEk-vR3nR~wb*Wfi zJPS}#Ds~J)+#?AmLxm8mKcY}`86WXjDIbZz$#`P``eG(%PgqO#JNV~HNp0{e29|ljIVRs z>|$%1lKq5jcGpQtvMbdTuAMhle!5M`ej4@cuTSN$*@{vn*{{));6eX>o-e!@1h z1}n*yq2tIU*()D!Q?j3i&3^V|4x830(KVh34f1{F8EUpo1NcZNw!-a$$D;EvY)Wc<{YOa8-NL2E}Mn_ z_P@Yp4?LX1W($v1l8wSVESF?c-`l2SKVh4#?WZJ*VIG!CvOE5|P04;5^=#uGa@g#f zW0YhMV;+`EvZe2CQ?j41%?{R*y@7dHF3FnT*`{Pa4Vw*In8Rj6k5)F@f_Ydj$#%$= z%s#SFRbly}U1ZTHeJj^r5`jk+a^+0ct?y?r5m?|tek~9lMMzl>G+`k|5JN4Q1Aw>g z_vB&aQXa-v($LB8HZS)tJ5Io%_u`_ z=mrK8fl3z=wHa9ZkkST^BHP;VX$CG72C(ZZOvqW8qAWgEw38moVmx6H=qg27+*atI z3g5{s+$Ruj*Qc!RZ?!wcQXiPLgKX$`O+7@uiyGw-Sc%7JIOc#&+&K67XCFz{dE($K z;DeZ2RV*iq$-qFs+}$?Wv*k8rt86{n8>e*>f_*}**X|;Z=#GMrk?qV@puC9v)0J24 zpOx)J9*}4NDDaE(xZQf;%FJ$A2cj>r+Dh2!iz8^s zRm;bz+ISgK=^IUwH*hwio-;Im1F5WP#{*RHC=P?%PSU`}VUqY8;wKA)I{oBoMOgXC z>1-I1fw6$KqeQKN%?YH%iVtG4(J%BaaOj9G~DzERvB?WNb3M-$@FwH^f}hOdQQ znz0MBv(R%lj{Yo!q}ny<&D38K^n2;*% zG+yuw0TO}p7dUO{83@(~uJ0(G5jcSf;uRYXwOganNOM}F^>2!o4Fk-mn6o#48`xl3 z15UbmbP`V1wg4(l`b;HjMEvcq!VhCJfyiNOg36=obyA?~HrGl?Dm9+69)1IRSF!cL zO~~IWG{$2a!;{vWKYTdOL%tDSnJ&32-q0I+@fMM46)MBrpWh%E`B#oMI>vwFzaQ>2~@OT2q|59*qw{URzny?@LHwK^f1)r`v zh_^do=Mv|R=z#F)gw$r7JMG%jW3>n2gz9|fKH;iRE01$YySd?Y6f_{zT7HW-g5ix- z8>FIxu|^=Hg-BT|h>W31D%3(gQ=!d#q^t2KF?_RNfw#rJ>d?l@ij5hI}YgULdu4{gk zhj&$>+hPvGE5%&qdda;_&MpFqaMsPkS%*BF^+JZ$@S$K=d61XO<83bUu&4!p0BAXU z;|lay$^$I=El%2Wjs8s8r5S*F-w0aH1e6nyMqlO0*ZF($MI_%A#~1DLx_nQ*sgiF+ zyL=^H3n8D z8y@#Jt2Qe~DzqMgutSoH{?^ONm}rqK!qfLkqMUBD_1ZZ&x3WF7Br+9zHHn`pdv}S9 zU@RV54{FkGWO^qMK_|gFB8Rz~;0mZ5_=ifOMM5(L#{l9yKwEj>c);+M@)r=%8Oe91 zdkyf=<$w=7hA}W$f|hKN*#}xURUJoFc|H|-1%gm`;H0c~UV`vE zrMfCy^%-Us!<&|J^I9VQ#^nqz75pt~(DjhkLJe!?87y!h-}_Wfg?|m{t||$W&Dw9;nAsmw7f;8g{TJv!e)( z^(R8FC>1V}YSgnT^ol?IHu+41q@MMR?&ZN50aY#Xr+;N2jR?l(>L}-Mte;b((VY1_ zz^Ova1MHa#h~^8$=EOuwBhJj>Po{^7z#)}%Bxu)PQ3x6`w=NjlOHBL@P6F5Y0Dg&3B1*^FSrDXYR&E2c0AaI;d0OIIDZe6h3nX0IlI<_ZQ%j^kXs|P81SN zd;aIFo74t}ndn}5YD+}75ndsJ9^ka1MQAR6xW?%D&qc-T?+%H11QtU&Ppg0vsvPH$ zhm?#G8O+=eTr9&tc;MV8nU<6&jrsd}7Fy>|)G}ju?3!?L=Qo)NgK5$aC->Qvcqe>; zaJ(Zr?CKlsbuIHPCg~+I3oq)15H7tIkU&OWzq zZyVy#)iCsu_^>*UepRarl5p{q^$QlR&i~`y1g^CG6xvhz$jsgd7d$wSr|foOX}By&lwy z6yQPReqg9^#-32O1PYZ7AO%~u#u)`DKRpE_OA#%$id`PgBKU)j_kaeR~Z!UC~uo%n0A3=N6b1@R)?>(&sImMKFChlc7% zxz5H@L2#f7F)2R^qZ^p6QwznGI@;wu(8=m4<04kJ!DnyaBoYf1Gto|=Ri2K=IO7dC zXRL-pje^2=6GICTBc{Bmh|W0y2r5u93&^tWlK<8S4oVb7f-kAX*Wkby*jz+5ucUgi z*lhT3v5BfI4IcOsHrL?v7Z%E@!D^iboq^*V)u9^!tpOC?C5Zh5dQ)Y^jlSUA(WqIK z6*nQokHG+|8rbu&ti%PuI_p(z4ccqH9IfD0yW#Vl)W?ieSp}}f3h=NREJClmc0c}& z7HcMLj{GoldK27+tL$8?Zn{=pEtFv72pih$LYpIda#`7?e8kG&uQ}mQ|0y4leO)5m zoS?l1aIFI|OK`F@UF&3NLKe7bTjo?dOVhQ-Il<^*cCh){{heTR_gt(xN77NNvitC( zm(#P%TIFmKam2;J6nyTV%YYSM<#`kFT7oO)ec@{??u9ldu&6S&1#k?` zicZDk1M7NAvG#;In6fSgNgF}h`d0P&+ugVVo#}jm&z|^UaNS~#dq7YPdVsed_UhD> zuVr9p^Yw2^ae(gtIOw|r49Hc;v57+9di!CjC|PN-TCseb2<(&ecac4teT#(+mG&Oe zRA`F`%*?x(2+sl`oCqww1DRxYSAupn2j1<>kU2~ct3`B_p4g{!5G&PCZu9t0Id&)mkfmCv1UFJwag7*ivYzs zi=LGPNzY2SdId95xS=NV?_&*cLMm_t3S{*R_!54f3?P@{tq=DNtUrh+#T3&dQfLyn z3q;rgWWA5M7@Qb_YXiljo8#Ei2-GC}UC_?O12-{HvDp{Vt7v!wA@Jk! zet+8Cu-0^}&0|g6&OHnPF<$M}qOJrU0oV^gr(oe`L{Rp%4 zO<3nn1e$KvyuXgXHcO{qvX2-$V)8MZC(C|lDspB4!?(o!zQi!BwW6LT z``uAwsO#@gmoe3`tBJM(48d%8aa~5HOTiWPC))`YoC|vD)jz&U+P_*Y*s9Y_tVa5DRE{1`6Zc=Iz&69s*@k zrPgx5z@Op7*+iUXM%5Ci#;qk)+1Pkp^O{y~+~l8BP>UXE+hK2ngW;t8jBcA~1|$@LB|c5j~R_@xXB; z!Ak9J{eYj|NObwZx^SR}A|BlZ;f_Knu(Om=^!FP9MJWWfK6_tz9~_QmhC#~;5N3zRaG?uFFoag-y?9wKNlcaY1p!En{fyFL zJ6K=34_5jr8hw!+kkXjh5i&KQ!Bh@Cq(9N~`{BhOWV?{P3aH+_t;D@~=nbkrYS#^5 z97||$ap^vCgGMlRiF$RBP+>_SgcGHGvGjr=yx>E?zV)$2;DA2`Nt6LWK-dK8Qb=!c zx9(Q3is{sNY(8nn=HYKiee5pvxLZB$;Uk=^<=a?dlV^BAzuq7O7zc(lm;*i8H>{7f zAX8T?Igny?>`VMj#qPylb}m>*S%@IDoH+-)vTRw-itO*i@D>`;`3@Q$c-@Rh{!DiT z4lb@Gk2l<0%zbb4X!+B;0PPH>(mknJkwMhe&hH<*F?~9 z2R0VgqNj->)+8outsC8&n4q~c`5dq+7^^`}2OIlePcWD9ru2jqzHJGm)R9SQy0?Kn zD+hK7>YHFYswwSNRo6ufNh0Md3<4+QAb{c==kM>}O7HOn(e1?2{%koDPsu`981>j( zzTNz|r_U|P>hUn$#PXfM3Evpci>J1WDisMrnx(zy}yel=gz!wwDdLS_L;Z?Ah1vo3WD|6AGgr&l~`E z>e>lF9`##sr%M}8vx@;dl*qHHENTR|)0Ew3s^Fb@T z`;Fb^t3D*FN$qQ^KHgXz!bGR&@=7+qp=Ru~kc>^ zhiw?Lsg|m_mYi!*8qHkb)}2`~0?n1^yOM!lN{j>Ft0k1O4v|@Vppb0fL?5q5UCv7j zR?xw%3;&@@7M-N5?-*y8jkUeMi?w_RurwL)`D9>zf+l?wW=BL`zFAt*lywakashx5 zN=q=64b16-TOjVKlVJ+u<&1~0?Ts6g)?=q@>8&=+Z+0SoDeHZ;$l%gENYh;YcU?$# z8^EtSF-u1c5S}?1k)7~3TqaKo>3bh{+QH7G>k&@Fg_k#PX~$H$6->|&8Wjw73+Ob%yLj#s zB3>z^P#=3rnvMhIu)k=Ol%S9UjX_l-BRwBHfX3|#@;H4`L2f3*IfoFR%}QgJ-Ag9- z!MT4?o-h2oVDp25V`%MF=fNQ*`{sst%~mNh)Bsf#I_=zkXejo)2HHv%?YsjUG7hW6 zsMd|#^wj4=cp(;k>Fy|yb=(2c*N0{OzscE8KAn9k`hQ^zV_UQ>%IsSnl>{02)mIk7>(HbOSBY(F zh_0Y?Mg;c+f&}5t;=H=CN8Mx;=Z?UDFRc!tWRc08LGdGb5k&2*l$t5W0agX?pf6k1 zH7r#p+m&zs_Bka4J*1I#J|9S@(rJSXUL3#n-T%Qlzy{ z69+1`6A(;U-0#H=dp>vw(Jof0i zcXdnzmw}m(@5dX7yUGwQo6vvMOd~e6GZW8wD$g9rF8^OL)8Wvl$4phTFY8 z?=h7)KTNf?HIJ$O@Nf=O>8)2D@e}WC;~MFYs#Zy{SZ;d%QNule<8hw)HO?{IgMa*2 z4HtoaJ%)?sGF+Kizi7CjxV_Rg-WZSZFk_K=HduCCax{e-{*cRfOR$?!$7(VZ<15v4 zpM)=h{74Jlt}K|J=zr9V@8JNG$Bd&KGyZL1UNfQ!yn(GmkBM&0Wun3rWoS{YZZA5z zZCy&pawtN~ar^?La3q#2s^V}B9f@j!2^qurX1u1C3%O5P$(sHyqZYP9id{2RP00*TcTpURK7YDJ5$9PRO~Dj zYgDm|Rjf(H#;I7div2>xEW}c=LHNtVQ&<2lLy$uirJA}2spi;)%#(_h;(;Vz8h7&G zR+c=CnmB#}sl@eY@iqjdr0->34BHeHe3u{)c zz<9n&ScflB%z>h!;GEr^X7eE>U)V!&F#g;2*J$(}hHjUlJd#U##6KH?_II?2O_^#vFV zfUKn=M6s^qoS{{G=t_PXWx|R{I6kBRIh$!M|2=@g0|cHp9dN9boYN`3Mi|#ebnjjT zqFXE->os1|nCQrox@^5--Xcob3nU<)%zJ*xuv&j_f@?_Ki|jce75e%JR4{oF)6TZr zZzLOEvqJq0*r(H*6)B>(+lM+fwI~%$EnkX z2l=oxcY?3f$CE3lUTvBEbOKwr6YB8Cww2n>@T&FBc^qI9lVCUtLZmX)Pt z()i*K5!#7%c8IA&v}G8{=pAGn+VP=nuv5PJHLV|OM)ve-dJBdN2;;EcdyHWafEX6^ zcSC!Lh~ZWG8Z0O; z=e`3>SOH6m??yk9K~z?4_<;@FLG)N2G4(Lf)yqUy`-U7m-1Lht+5L(4b%lPo_Ju|G z7H4EV5Hq|MP;LT#v%1Uz?2oxaP}z;P&?CzkXOoTw3vFM{y~lQLh4PX0Cb(lbslth0 zDGurbEiYo7Pf_P(2K#R$m(FDde?cnq?nKFxfz^z9gf9d~u2P*-_ULZwu->!;^WjA% zL&lkF^qkXh$J0p?VVmKPLP@Tm)-2t9iP0DN}O1qwv=4%#n4t_CIqga3b*XC4Ro+J>rMm z51g#+i`tCFs23mhO(s3Wu{oOTx zz=NZCv^IicuoQr2jJM-D)Y{}pjJT=+jH?!{l&)(xkXxW!m+&+XPbXNzku&7?{T;c9GM zvE%HX21FRGodf6LSR1FW5$9RIXnH^4*hTR}uKg{~}2iJOJlwE}@l_Hp{%G>}W zM46Id8p4*#YFo_uEJ;{SNLd^0IKm$>EZfA~J#A(3Z&7=o0k^qFDej;%QCh|>8xvQS zfe3PNzeD1wQsLX18%XWG6ofaYIYvP?G`ppcBGj11g^RwbidXCdlzKp%#QsvU>tbnk zWLP*BTjIcPLf$4WEzR8<`BoHznzcKYQIOP(q~>sn+F}U^mfFf?*fv-bCKCA9b)-vs zM@1X6)K?@k6&u}EXh6`p=qu8XDx%WeZsu%SCSM)U>taH}Tc36ka(Z8QaZ)(a!vLJC zP&3NoIX1mq#s+fM2x zQ#`q(-uDg09%CsS#fp-VEqls#{4H4(*f4XVltvzbjIFQ^tdCvkCn>7LVXc()2RGh} z@w?o3U&iBZyg%dD*l~mxaA2?9Z8YF{olU0EU;&z7oAk75lT=@P&p&czl&{cGq%0_STIuA0tQrZj3L=Bqq|v}^>Hsm;L`-VIrCA$-*8 zEa%)})47a|x83*v(Sh8}Pu4C%RP^}F@9EF#0-yLd)g8iBtGF;k^h7ObOuF`$7qK7OC1UvGi+*BqU>a9!{l_I41Qm zKEv_YOg=D6R(2K66qm5 zvQkhdqHh7Anxfh=WSX(xXEl<5`o}_c&RF7wN|rsbWxFvMEs1fmiY&M`1G@c&Vyr@Zl?4b|WYsyhKXM8U&Wm3^X9A zf$`6{H*fb9>HrkdhBYF+Sr6)a(=GI=Dtp-xk^(J?Gnwzngcy{LQj~QA)5XTjsOCiO z#z8aS2U+&Q149iFER&E4irvQ)vFR%`*uSYkY71Emi6ugoQR}NVOlNNzk3Jb6z9>HI zk)PvT)}irX^O2ItFn{_T!E!DS;nx=g%uKk zSBIleh|D*G_D3FkVvzlKBJd;R;Cwf@&sdrHaus?K}(57#N!1(?bZT19jrkquIrxC+F@?DXB`bI; zC70=-yyT)OCu)hn0!UG42XfM`F=_vTw9zjzt3O7%(94BFNZ-AOH`h={o%N@6vq@cL zs9GjG1!Gsq=t*TCD89l2kjiNeRp2;xzFZ|ZJdRfVf=YqCI?!HN-6RW${tCs(GM%^6 z_#+asnz|C1+^DHbU)0yu3|IH%3Oe2?GU$j%3u>(d`$Rrw5XODvLt0h3{z+(bX!;$+ zzj=FT);r2qVrpxYhnH@l6~1%}N!r&$LNS)>t6pDDc0Eqf*|=Mr5HA%3mgXqeP@DE9lJnJj6)8!%TCNlujC zAz=7j8bed)StX;$n{7qg?|ys7|6n^y{t_iWZ&++EKcSQ#D!x;g5*05-8F2M0@(6`G zr!Ipm8t>#$?fVqv6r`FD_Erz5e~utSlb&+#?bA>`cxUqUf#GONbv3hbx2Bofr?;;qx$Qf-fH^ zaoRyzmHUKO?H_k#Fh5-dC$#gFVAjw+Pu$Eio_T(0lA!N6)34d!UoH_?Ot75HqZA1`_cmxFnH$gcL6{R(nDs4_n!nK^LW3eo5z>#sxVjVha* zRkE}7Mz&NSu8F1sPap%yrviU+LigxUCJc(5%|bI+xQ0ABccvGN*X&Hhd0xq3ZzV9L zYNi(pkHauF-T>`x5hP9&k3{9dy z&2%vJhs~&4RjUiVo@O3Il5@4Pe;R*k?MC3oYa8(JG>$7u!I5=0PY3CJM75hKl+E{F zaX~JLpiPuV*Nc>f98F#XVeC|Jc<23y;wY9BJfwt8y986#^=1lZt;E3{V)!d>F~_7F zkT};wl<6`t>#Ihm(&Le20=tdjbHhMMXosJYh zU|gpQL@e7k^XXx(qcs#0QnNH3Ki@b^FymjVOdtM=Pxnrinf$6}2N-!2w2Jolh2}vF>FiN?D7XM83Dmy9J0SRjSrW!kVE$ z6f@J5HPcQ+crwBUL$aY5uXrUM#Y}5>U3}PcI9;22M^WFgsIS*_kL@ktWKiz*`_Emp zxg#cd9p!ir?_0bu6lQ{|YTa*~~928Th-Z-5vLnmD3Hf(Kp?2F-er)J6A*M z1JOrh>vwnq%f^DaVkk(4u;$^sgtK8BIX|-s_d`mnW%Wbd!N7Z9XhRgs7=g3UN(%)p znD;yB9i#bQ3vUPI77B4U#we0MeK*aap)aE}c*6q5;h}zkiY*>dMaO2Z7iIvsD&&qn=h($8l7wD{EbuVENU^@Ni+7?te0;6*CVeYNoZ8BCJv z{h&-S(ciHKR09ckMzqsGy+A1vuwIbchr3AXzg$@%aUT-75V*Pj*@mDV5fiCoF7rKjr!V595 zyBAu(voOjhn^&8n^$$Q4Lj&EsYXCJJQf=moI^x4O2!4BQ{QV6_+JGZ1T~BM{9XI`B z3^cQ~vDi%ImNpJ^5o0dm?toTRZ1BzMj2?A5;IdgTnF!J?%KP$PVhtyc zfEb*h4I?$^ni9hJ;(-ui8=_opjsYYu&^dC|xVP-i3}7XqJShyND0Ch{w3l zn_TFA3M%&QF;m&Qgx;TJ?^an6f^^BEGu*uE0L@kh#>M&tA2og+jx&bBGQ8+CgmYob z$83aj%j=FJZju7Cq>8vayy_xe+KvZSL90G6Y{9N_L=cjJI2KuVA|qU69VJJqokdsl zlC=3vpqWwKr3|=sL4G>_`By-MWT5T-U5!B&))8>FgKH1Q6$q)o@jUR64a5LM7{WG` zg#*UFLn`=yt5g;jB8XmB>XfwyTTmVT1qf#4 zIcd1M3ZNMFXu=&E{dvkMN-H$U{!e5ygF_PwOQ;A5&hMpzIDGBL$!OSR-%YQoy14H~ z1Yn5s_5NKKj8uljt)cM`!|`|3`1ws@*o#G5D}^_dRq9ubhMqRx1Nm4S-xfr1xa&&C zSU5QAzbe9O6PoHvapwp{wJ|YL<4C`Wui0rnK|@$}Qw#|@z_Yk-OBOmI%!wt#9W^^T z>d$a>6jW1|)f22$tuDr^>L-nKch)?bY{Hi_e~cy<;sg*|wS9kw05o~ndQq2EhjD~Q zlL=zjntc2QrAa76$)8tf%5dPeW#|uYSds{IcV$@OdczXe8xXX;0SJyatbbX{@F4<_ zp<4FJ@K!NK4jvg&#IR-fVwT9TB->z1_NNvD?q>*(9;5s%pz2yK*9g-T+4Dp?t(31Mnj+!W@pNfa{pWQrg zeO}0bLh!z_%OY|~Zt}LWhg{)tEZP-Z(8tqj#BOkXlhH;aGc#3}K%m=HISvonti-o@ z$wdv>PeXQ<yG|$ zUjI0TcH;Gqag3J?T=gLyDD@?D_#Tg`l~JJHdU)=7<@MPfV`!+!X+W@WsKz0iRb8`^YBRcXk5ns&Vb_CCuCt{w+pq#UHm=pw+loB9 zMd`#y?VC1g@5KF(<9l1GKDdbQ$Fx-6Vf#R&`xXI6*Fj6Sdwc0VB!(?rfg_!6+Kpod z3FY?NlFRN8e1p2E``a9Qs+1fZ0DS+4H}n2|x2e4Ts)_s(*Uo9>{h%gtB^DP%dCR%V zkPN)3HbJa+zHa9l4-&&x-pki)e-p`XS)!gxe<1b$r`k;3z1NRuCP(l6FEx`rk^SG$ zOuh_JzQ37#wvXdAO>W2f{ll!pYV9@E2*7Jr;8i$Q^anP#^O~u|u)U`CYP&(n*Iek{ z+rAZxZHqIKKmnWg6tTXiom`JA>wZj2^5pYctUn_Fu?nzxZo!cpPd{@3F>L+K z!jgfN8MFQR`>&0;BYSL*{>B~pF-Cl9V+RCpJCp#~#G6 z?RO$q&GporJmQYePKE3CX=NPd%^r`_-C-XVU6gKhM z)>n=Xy*jIif$Grfc)SV{c)afB)7?-1&?`5bs7X1XSFb-5$ge3y*^ zKfVyA@q#GsGs(3=vj9{Qzp@AXmnM%8HkfH-pc*g+ywp$Er%+ zxn5E|M9r7C;T$qYmWe$iho$U=8itL98b;MZji_hvu8`$>r>sXD)i^45>6*5kRH+N;V9z+=f$Xo=UTh70W& zvnE{t47_0`w^JLln>;f;&C~ZRf&q(KvzNL!ANu~Ku73tagWogk`}}|(r@>{~+G$OIO}Y+)8M7Vur(Ota=EHXdfAmL)piZn zGibIPbU9?iOzT3oN!KfET&%|QvePzdFW#15=1d4*d5br$Z0_K1^w-7t%|53vh#Oqa zFX8zctE|4+X&y$bQZ`C5)VEnhZf|F+KQbP@rHUW_>{K;nwLcYN>yL(Ym8T0BbXYKU z2T}}vyk)+^%DBB{o`E9#l(xZ;w!xroOWUBOHPgH$pYuaXzQriSL#RIVe3psOs_XYm zyU?w^2-?*b2u>IB+>@HSXAl5)eKmJ$*SF*D zx5TiytG`^hTZk@1*Tp*Mo>8NVSm+L~7UIYc`V-z+yp)KDsv*Zhb*P6qWgw#7O+rq* zJ%LM3szcAh;Lj?9^9^6S2nac-cch;~i;W3s0eh)3a{(cGI41NS?~F!d9ZX+YvD7E; z_!_0MDdFcy8{(no5~1h#=2RVai`0u)cb^Su;k1e2INK&)0BzDQ%9Wl)J;33}nc79K zQ6s@@Msdn3uvs=sRxW)Hu8ru$4^y8!&^+b|(X2JL%u#B7Evl=bT(!x{zaE%~m@gNA zTGi@so@Mf0aF_;sLu?<%VQ_V{-QME@PP@HF&~_LgI1ZC|TsurP0^ohH+5xg2Sl7;B zrV_(;nA-6oTZ8K`)HtJts12^e*eTLn)w#zVQRI6E^PU!*WLH}(z%&PEjKVs6f30eD zFOL%J*^->Rz$6HprOMLom1wPCsg%9=-Gfd>>@u@@mw&YTi8b`bgDCUVaik3F>L zV{rg0?{1BkbvO31?Mhn=8(^#RIK03AV-~A+#1@eBxt$PzLNYIjqOBeuwzI)!iwqm= zD(h6+TC#T=NxqCNZBM!pHO30F27Lb#mn<m+T`TOA`%7+6`$@gwa+_UG8v&|KcY1>Rh0JfQ?_KK{k58B!0Ok&veBPwfP zKh!qZy7XC(NE>8oG`}|G6d-J)8e6plfL`@z>+*I)^a8jNhu=C2R6`7*yiTW@|6JQ-NE7vG5Ox&XQk$9Kj8h9`YNPf4GXFMZA-l0L>r zhl;90ZIu;mZBZNm3(Wk4qyvB0n}~s`W{I7=kHiL``XQ}WrH%YZVrQw?LFiABw(Guv z`F9noQfU`ssEo9aRoYMLZc~7adqcK@T+TepE?PE-Q5W7oZUVxXA5IaC&o`|(b#Qv^g z{Eq#Cl5=-1N$E)ROVsT9I>4a_jkeM-aVjz=C=S%U#pDgtvxaK$BZ3c>KL5} z9E$Hq+7r&!YC3bP?z_!T&AF#g0Nn@9&!HWHC2sIQJ7^wL@!skZZ>l{3FFi3>@ik^(H~e(;0zzS95nyxP|MHS5J%WJ`OJf->bQ+`YCQ0K6j4wg z2VEcK0Un%;lC59M?ddGasowA_GGFq<^!RyERF?kws;*-zJ{y5!K0Jrilqf9_F^*AU zDCHh>sc^?cRbrDmH|*4XdGX(EZo0 zL4BIb7^hT+-ma{8TP;<|kSUG(XEC)5y$z+#LKRfXD~3{#%T`RS*#*iH~`CeYam~;q1QCkhd$*r)TjbhW}*O~qC23X>d>cf zx=)pz#xMod2hPirJ_zpP)TDh-Q7ui2H|82cofb@qE33Tnl(R!<`hl*BOqF6@Wd|__Qb9fahtJ^Na+sJz+(sp9 zKEV4b?YFw5Ewg!bFVV^)fj-G(a3^aHCU-2q@GVt7!=rNX;%Hx#%Nn32A(zm4y6d5j zREM^Rl0jzauWGWG^^+vp-WxV$#4gBGjt5`Z)=s6XLN%ppFn!g~G5mQp1pCIL)6 z@KvXDmBMHWqrNAGuQ#scmR?N`_P>SWkERjOa_Y;gy5pYTDBD`NhnhR8Q_ZhWkQ`LG z_}^P=5wF7eUVZZ!*cqW#d8|y2swwMnTgrNz{hgr(7BC3z?m@a##Vj=_KS>0RzZ?xQ zM;V8y!u5Mm$~;9d58AFBn3UN=At=krbzraNB}=zUS-8GUi7O*Co?3u(rN#Q)v>fc{ z8_1a#lSMagFt!ZZT~UHR)-ewN70o_*1*w^& zuXA%0%MzY(`C#CX3D5^*=DT&E8Q6>QL|`|0u#~cb%ryXX5P&*>k42@xrt!o>T!u8@ zB+x7no#hlE2jS`Micdzs&2K1AHiPfVBwIvk$6!{|gI>@+q|Nb^CDp3|XSBI+8|dBW zZ@`=5s14H3Fcp2q+mehA+Ffwtw4d{)o%kEQSH6+|XFxT0Zvys>vf)@V^Xic4DGMpC3qc7)7nfgi;=klV;>c{avRtTe+b(3^I;B122)Yu+k@MG}vL{oBvPQ9)cHCkt0_r;- zR3;w}owtJrA>`%3bzpo0kXwPMfj8LI=4X%?jjJT^-3Giy`geFvf~Yh z>t8Z*u@1i@wgDl0QV=No5hEoT+?b`)vff>A#t-7*=ZOXI4MGlKz-Ui1j*_OSlHeVJ zqG`jYQdZ|STAKcqvcg2u)xcYts}CUlO&uVl3QABUT%wL1X>L(^)P|35HA7|o4Etjp5yj?a&R8Xt$$4eP){&9@ z@V7TVOuThOq#OPYj_i!Theme5-$SxLACT4TN$o+gqRyxHQXL9DkjQx!y6wS|WN$d& zf5a-g*wbsBBd3f5Tzvu39V4j@_o85X{#bja zGBCKHTGSMyhslW2AW9Nrsf$fmvR#nwcpRgwik_4|yG}7oL&DlL_#l%q4X2!T0paZO znWE5q?HeY^1_vCmr&4XUNo^5`Wr`cE(8ZArxD|AJX*Og~7rD!qEalr?ta4~jf$kx zesHO?B(j@u*OlDm`bfdQi@P%PI7`6M64PxWtR;Y|da1m0iCs(Px@Q8)Agl}v3~cm< z05yOB79{wJ4X;saz;66%Hoof~5^K-6Csw~5%#H0d z*X}R{TczrB7jF6o=ROOdZ2uR#NwTMc!mRXzNL8f0ui_X6rOa+sxq$dM`bHsB)~Ps6 z36B_3g;NXJJT~blElR;qe4XNqqhd#onCwA(e`ZImi^__XzQ`_+Pq;=mjLmo9|0EDl z8}5-~37ExN*DUuFD7E481=+tD)H@h!AbZp(KQ4;o^wR(^SM<2biaKB9NXgqi->+0Y zOnKUEo@~vwLgr(U52C3 z%4c@0$vRKaXwdeQta-|6BXhg)A?-xS>CtyP9$j-GO-QbtI!^Qbf92<+cKbg+&oX~* zKkwh|zv1VFoFKqKrN=GfQAdW2bvym?@&Nsn;nwOJ-Kn8d9SG-U(}fIXJ+P~BcDI#P z(kH4~Fr(8vMtL?QYqSwDI&aO`4=iVvTaGlQ*#ji2-%-xw%;lv098IP*`Uanz!x|YN z+heV5h`mvb2lD94dg#dQXGbrP{7dXywrzIy*gke-2Kzsuoi}*OF|RjS)qS^1J8D9$ zmXH1=?F`u_I|ifbwQ|&qLE76e^kEPu5(Nu$+S#kVlkTy*g2bKEC#Y(rwvY0_3!G_^%SDzPXHh_8niD8j+s8yl& z{8kw2Flr^j&6;;X;y%!<|9PMp`)e2}V6<{^ALh>f2E*b*JXfOh1zm%`XijqSbI~AZ%Ev2s*sE=LL+;(5!y-vb=)n(dSV67v73@X>>n8w;?V4 zB{PQFaEJMBO}YTw;7meg#TVEMz>H+0Arax@H{$h^ji?_e9#V$BP*a|6jAo9JY&(!M zxz5#=i4DR?*;+6loCDy@ALhZI`yzuRC*O7L?GsggKG$to!-^-VW$ zz|nJj8^=@Qm>d4^xm%Bw%1u?XsaK_BwMeYPkL_r;hRzr=+x%JnG+SZYJ_ODv|uLh?F>al~;f$L*9HI46=b3H^%DO!)dEPk9v??$=wds1fO7ZbX-pw!o}m8`#nM%FFCLNSSV=AUe~C z)>l^Ah-z|{YvoYRU7mnOh^}gJ!zI~uu0_r4jD;o_s)ww}u9rKBp*B<@b(Hd-S1pt5 z$)c&BF>g()S`OpoiocOVhBYm!suS{e1u1cHrpO`1n&~d&2012KQ|3Y*l4FfE7rKyc zawM{*xufWbln2Xk%9>`ktSNsNewtjIzu_toaMflF2txuL;B0% z$eM*+9LQ4&Qt09wC5I$y3SFGVO0H@bXNb~IwTn~zweaI}aXyoSpEW*>lW*TjILqGR zf(P_Qxw9NGupZ-Blv|t_ zEeL@|mh{kmASmmzDeFQ-9Jlgrpx>rn#~X6)+ zoZWbHP@Msqs^e_sFQvY^=P$nSq z)~FtRFi{U0?3V(wv(pp~#<8mEGR{U7BN7`% zHB>7`7z@sQ*}=8v@J-bgF?*qyDhiW+tTExj^8W`2}rwW_ob zc<;v+n(ENd9bD09WD!lhg{*~Lem#|idVA*Hx*?D)?-RkWeWsZf*3L)^7u(`EtJh6> zz$k~E)AzaB=UO1_QcUR;j?E%%l(|}KMcgkL=0FT(-Rv+L&6knfk(EN16_-KrW+f<> z3T@^X)EdiL)Mwp56B%vB4W2kjitqMS;UrhIJA(S=@RT|%Y00r9X-#)w=fOTgja{@x z5Ot0SuzJDQ!i4phyc?jqj$~0AJPE^w zU9h&GU!uE{^HofldtuXj+MNWiT>1f4v=QwWVU#b)eaCF@zZ3Tqo$`v&K_rpvdb~?% zs6puMr=WQK;CVRH7&y;!^5hQ2J{vv#wnFv7&UpL#dml^hcM{TS~ek zT}n&XQ)=mM)093@lrC^66>CbDxs(PIl=~PYWQ$?w(Luq$SX?K@WPetiK zm(qa-rGMU`q_Y&I=gVz9ZPgloWe-PBJ1I)Rq0S#90^G?g>pPttegNP+F%c z&2cGxsq|FiQmRpu#0w^AN}nl8M>v$&4ABevyObIfrBhr=rx-l-(3CQY(#KcY(%q>k zeX+YE-2z2v>vhBt>3ChFZM!#rMexd{8x*B`97@wQr3YO~*C|SmyObVRltfPnP3dz* z>1>D6>6+5TE~N_;C3z^GCK^1Qq$z!&DDCJ_>Z>Ugx|B{(luniuk#0YOr!BWD={71# z%ck3U+D}ueFLLyBw4(IDwT_|?taI0Qt?%A@?cwaR&pzi~qL?nU^R)X{J5KirQwzm3 z*J6qjred3^pJIBqj1uQOEpsqkCQL0A(-{_1D`7gvW@@jPDr}~H4yI^f@+hYFuQKCw zh|7TABZ{?3_amvQqdVD5-_ijm?|x%?ZR}k&Ge>XdUt_Uy7dmGg~HTY zF%7er)(KO(&Gdj`x|b1-)1?lkWMPU_Out-dmhNg{YL2l=ce!FJvYDb36SsnYuU4fy zNijWcF%1`{=WM3Yim8XqwDX7^r#poyN-R&p0&;Njbd70GbK6l)LNL@DyFyd%{VZDZ(_uX6mk(6v9jy4yK;M)J`$| zkY|?eTw!X8wn~?znDXtG*-A0-IR5z!s&pqSriU!1KiD3>k8Cp?B2{&?$7XuvCp%7S zgy|H;G|gh#ElfE!(>sdk<@uC2myRDdmVP%@nA$6*b{5ke!gRXLv{Eru*-UYcJcS8U z2gOu7*Nju1Fx5p_aVk_yS2DtR`i$27Bu_6^syLmhn3h^hLxt%&n<-5(={D1?4yJj+ z)KM|@wV2uq(-52KOvUt}UAl`D6Ze+0g{hNbs-I()u7U0GM(vZV(j6gHb@XbRNpmoL zyh@esbj5V9#k5nHHrPyi6w?Ts>4iqS72G6DofXp*i|I~bnqf0NteBd7lsHGcKrwO4 zOcSOqis>Ya$tO(hZKi7!(~~w+HwV+v>s9H_P)s{==__4xju)mkBds`Hs+guQ!g=DK zCX}(@X<<53F)gr|dJ5BWn`t*?raJm`J5M+MV7I5a!gQ8mO0<}6XZu?Jc{bCximB0N z8s%U*LzucLrmu3$((MtZ!+7`r7xi>S{f%O}&Pz62x<6=TUE28j*O7Y1mU9%-I*Vzi zFx_u6?Nv-eY^F^Prb=NtS20bnnC=&*sW#ISis>0fI8SpNOv8k!r(*J0OxFohTbtL=`3Md zWHa?tOz}3;DhE@RFeNLdb1f!Km{M$}D8=+Mrn_vWpA}QMUAo5{Oy$DVPces(+}mUbmu9i=Pjm(g=t$W zD^AZVrVhpA!g<=$V8`hpVLD$iU1c#<2$R=ls#Z)a6w?X^(==fkpqRQ^Of!Wk-e#Js zm{=&L0S=~i!Zc7ZeKgCA(?DT5=&?#STrr)`SCd@2@9A!ojC8dtRGbDWrfQ4nWMR6^ zX6mAto+`EC^q_-jsW1&zOd~C(@7NyifVG)^BUN>DrOkAOgQ>4D4N*+L&ooQ7TbROa zruP)nhc;8JV&ZcP-AbZ1et}|o%3|6iOq*L;aoVAncG^t4>g`r=uP_Z&Ot}`*J;GFI zGi_8%PuNUL986P$X@p|xY%#4CrtUV=U5e>`o2ie3=_FwqrI_~4FypjBm_BJ?mF`Z( zG}UJE(=AgY*~aLb(RU`iCGbj9@ZbhC6`VLBFWm99oHwXvBZ9i{u~8dbV6is?~{=}KXG z#%5Zjn69^(wtr){f_1_)PBG22n5GF+p2;MSIbsh(b%#L=^6rpylwM*!Ubx09u2U?o z1mWspatT9q^o5LYq~aa9Y9UM$6w@1-W~90a(|chODalp&_6YSmfJtn?IeQYRNzR^K zrs9>M_!e4xk;1pa*rRY{kSv zjl~-sOcla(nPM7iF%1!>$u?8EVw%nf=V`WsX|OO|u9(6sri+9r(q>w&m~OC{Iy#tm zRUYHsbj9@I6@hWuZZxa8qO+Y=G8xBwJyMd^@DQ!-f@_B2y2|3pkz9FAuIdi+Rj#hF zbG71-9rJ0zL=S^tZ0Kq+T`5fQCX+K)*E7huqVh|wVuWj!;`-onvxIYm>$7GlA%4=8 zCM4C-IV4p59sbJB)jt=LddHS5#Z+Z6O=f$%QO0C)=4v`G(Q~e-{F1AM!j-MKhFM$# z*c{IU2XI+E@dKN$yUo{A_;M8A4^z!jZW6wx|G4Y1d^_%$qp%&GxB2!VP08QKw4#Qx z<|@8>ExxtFx54DA?(hVus-s_Igxl&1U)oW-Ntos;rYRQFJ;F4@WO7FBT%KZa)P~x* z8Yx_PimQ#q70%|h{*z6v>JAH4uFCCP>5g3e&I?gHw&W|OS1&W;RV=yMjg94ejpWQ# z4?9;>eu>o+!gZzMDz&&;O0JfeT-6;iRIX;*xw_#CJ674kRG^r8T1;0+uKJiv&RiWW zq|9@ysQi+v(}b%~aeaEJS;7z59P|I9?h;xptdu8!%(oNi314j)5$xDfr1+{WzKhu$ zzh`?KpR}+^HeZR&r1&V92#WhZHwbJCm{o9wf9ly^k zR>MBC@j7B=?lY@}206moM6J9Gh7Y4mt!smZP8&2f6Xbu0c33GA-k#8O7QXYVLBeVG zLM3gx#;aNB#YN87ZkQW9V1jptu+_ozFfzvXD7-plU|p%au_Kw3>VX)xrTzbAit0r& z2bH7zT6c)o6QJoKdh{0jCfR2?mda0G5u{-_c5cR#onR6R_tq^gJ!cAz7yZ_Z_nREs zm3CCCzY_sjzVzr!U$VcPyAW-T!oH6n&pL$DgA3R&0;x4DA}8-9{)^d(tfw4J4|~t? zoI@Bt=aB4A_!C;TGan;ATT)+@b`%@r9PhS?skjui#`Wi_R^F2aC+zsC^_qqg`gS3ZK|M2d%X)z zkTGve#goW%u;e0reS)ZIZ(R`e5ItsPE{G(9^_L5&JAA&WrYmi5G^6144fmhMogF_p zi-=>F@I{CcHf@Ey8RSQ0dT2Vgq$nv?{r5p5;wuW4)@0vQ|Km+GNd1@6I@=1NAJtxo z?RZ?UCe-6DZ6-C$hO792t09!Av(WTY8MXehpV1I^pd$r(SH8I_R$|uB)8UI(7aniD zGvaRA6S`th=@=0%;Wy)*ip{EA+QZJQ&2*HJ`+$m1+%GCV$9YhE8qRSz zabNu$B@Re zm-R$|IMYd`k;b&1C@h~%c#kD*)MIt>=}@C|4fHCiM&2&yJbmHaBb7@J(-uXv+^}mp zqbN)G)|eFK*P)N_!4!JS6$UYRB^bTf0p~HCm5>P(+>r@-*$+-iv>twB zf+Id#&4pEX+=QZ*gBhgsSmOi7$IYssEx383ZNooK>W&}PEMu2?n5Z_jj1i<*n~Li- za|+NB^A7F`c)b=17Wi%xiyXg6zU>rDKltVSsv6UgLV1(nqxxMkSEcGjw^8r+{}xA% z6D>W@n1`mc*7*djzxQ^8U~PI8mO!RPq*sn#pI$kALwZ#@&Zkp5;`=6i-;D1%zQ^JF zc6{HRUX_7gL`qFSZSKLw(S22E8_N&=Qkk}KSK5nsRPKdFJR%FCo!jV~`zn>m|HMzo z43hHar1w(K?|MD{RX4+d7snMhw!(7aZY>PP3!_d1_!@2;#u8Kwsb6Rc1Ay83s!vm4ktfRzF{tm6Ia;K>Y ztD94+=~_7(hk^53IDvB@E0*j68L`-ToQ3H4@?*Abr5G;fznZsA%(mz0dxK|N3fG~^ zb?Oq{$t_>X(2OWq*rD@97|&B(46posI4Y*P|EJlG_M6y?2I}mVKQ=TQ zjs{-sndHprec*8Ss=-cpMF1@Cj@so(>een2Z@TZU#F4KG2rmeD*t4v!hUohJ83s+5Ybn}iT z*DQ7AgEA3hYmmUxeJqVY2Fhadi*nbY~BCqnaeUV26|8?J@5mnvI%|t?s zmNJZtDo0{IFez3D@q*?EJSTw(6BiIkrvxOOVnU8$pmZR>8%rzGYA{h)iwsYP~J2$hJUz{4sJSwHN(A;2qwYXiZkl7(WCuU|E8uFIQe^3M^OA{V499L(?n;c zU~f-`dRJ;Js)^v#j&R{)dmP2-R_Dv6N+0GxQ~dSAxK`=y5vj3Q95^4Yc%TuD6VD8y zjnYM#QsHT!n2L5{&6hRmClQ+Jqbv%3BQ-q_Ibf%6j@#EqKMs$4)1z?Iv(uXD_et)! zBVbhG7dT3 zpM^j!RRPtzqWA(0S*NQ*-;11rW9}}qY(~BGAf)YKILA9(r|~;o zr}H~qyYV|+&vm~F(=L=r)yta#l0+su=%VwjN^{Nk5kfWL`lkrProL-fZUfBm{pRf2-{JtjNoaok3J3mHJcyyWdtN6rdKdmyzL6e=S3PK}I0Y;*E9rWhP6RDM#Z=5h zDVA@gJZto;H=b*Vq{FpD!fVo4%uS40IS^LmTe(Q|oVe$5wwmU&N{U%|3anIB(nT|( zOHusaUzM+a&Q(c?{r{}Wp|mvUxiwO%@_Ifv)R2Xe7U8(6!_}mbc&w`U94VppNSv_t z-a^x^^7Mx<*Ioiqd6LYpJ#gSp|BCXCSaoPcXmkYrQtbs_&qdp$I?F|zk+pqoC~F_$ zubDNhyRW1LJyi)fS^Upc!m!W&yOr<~!dc~sq2i?Z@mm6Xfd2Fu^kMZ+p)iO!eNh)< z_=z6Rdl3|YefV4cZI~5=3%H5Cz}RN|wE#5ae{f7Z>lnP#0si$`{pBFl>P+}@tzJr0 zo~h>72{=%BM(jPk3GC1pf6Yv&W!xpWE}@!?M`hvkpz6!>KUrTl9r*9oR~wW8acC{| zHIWaj`U*$ubJkbPO1`M9@|+2~st!6?n*&U@n3d5yv+;y6*un{(8?*9fRcVJ>k>}U= zYkI0+9>QFmg88m8+sbCI9%mMT%N8{yZL=sDGbBM$vKj8>)YoA8bka+lARpL!>?TRgD8(|9`GCmwfWyZ5)Sj%~a(X z;gQDCpAQb9N1TPDst#T0yK6kH@ZRW`1pp1C-#m7F6)x@z*T)0CnD}_!{k_%JVr8 zF7byrP)(%8|6~)Hus>K6v2GK2&Zlg7`r|KhrPX@+;)qU2wVobw1GHQvW^=dzsqUa%j5#^g6|K`fh9*}33)&OB3fZgJ;WZ@EmssVQ z4GlNI%W+WanS{Sozg3S!^22whe5e*6v1#B*HVM3iC!S$BAhtj)7dB9>I&_?T*sGIl-FRpM{?j<7#r zUyCWPf00EufawNNdMBRE;m%o=Cz7l?M3J?byP3XIxn|5nx}%BK z&qg9J|Cgb`{8Rk3%)5DsXD0)%JArcpc#?3|u0LJz+`{H-9OmkTO3&Y6mB5{WI6UfG zPjBk+-^yK|f;N!|q9+qUh*GL^+R7qKu#vxRoM3lHfdP<11Zk<^FR_UBp#47OhPvHz@VzbJNRn_WI8dtVlq5yGqfQF+7L$F{57-% zey^e3mVcrLl>;u7bKav)lIFLE9J)tPhR%h{{8c#7J4YVAom)X#O5rQDRBV2YBqooB z^a92!8uD{VMDr#_zaZ`-MhNR#twQ-t*1$f&1`Fch?@~K$frW&aW(N zs7LD8erce!r}x}vA6LBRjqSnOa(_g67=B?Qf-_&f9in2hDl3cXH5^8J^ZkWn3{_=Rs=jr>i@t_xNFwmkwN#~*A7NpGR%7VC@E=tXm60{+l?Unv;e6wa zRCR}$eaV`a#U4V;XkPpp2&A&SsgBg2fA{#*BQ>)&RsB>)$BiaJ-WGD5ohvL0x3s7@ zwbM|va&CjPQmx92AKnX^hTSHya`P9;THlpUsg4#=-J!IPRnD!5B9)UCYild+LMEvR zlyBw!;B8(01RXdt^~yUZDtM4)T#X^ToSEsKFjw~R<>$_B6?|&YH2%v4kHZP4iaRX* zq~l3uUkdk5HMQZkHq1N1)V6eL6HIMer}k7+8|GVJ@`m{eFcGI=Vn~8F%REf-UTPY6 zyknuI6T*-rS7XY1`@a~|fjo7jSe7?=d|e%F=8PazI-;O#Texh0+;e=g_TX_`C6%D5 z1Si@Ml*qJoXK+anTRotCevoXn&oj^zunoak#6f?`fYG4?jKX;I{)@dN0pqv-hqn-s zzY3mnO(U+@t+R{ydgEFi%zex!I zL>4Rl0Utmo{sl!>nqkf~6aQkGH#pL4_h)JD^4t)HtqJCj^5LHTQ7qA7XAo^Hi!K6& zH^UxX)jooLiVt8U-5;l$3AO(B5Ik%IhSKou#`=;tbr=MvT`gm=Fyl$aA*TPW`7TF8 zYn*J)fW|(>%k3+UcEf4-scHm>?kLgTpa-aK_$O!)5?W^F{SBJ$O;68PKEEBpIc30|0c2>~kC^W?hT$e-hh3gc_!73ulm86fzPig3{vHH+mhz`9 zC6@r8f__YW41?xM+J5P>cz3U|cu`q+<1tbC*IF`K!!*^=(}z>5u{X3#$DWh=lhw@l zX_w_y0hZq!rl#Y_&TL8S6Y3AxtRi1Kzk#on*!JTYP8yyPL~8Z4j~KZb?@D8EKpM~T zvc4mY8BePM%~xqmkgqT9Hq*F(G?IpyyXp?DyHP3m)V7DJ4Hvjn3*}o$XfYMJ*Z{7<1Oi>qHCzdfRhacR*M;Nd*{y;dcpQ=6o z7)Ftl3&r|Rn+<-6Wu4r2^!qn+^=z5K+Z*xViQ(3|ks@8u# zvLZjp(J+*MbOJ-fA>K21p_67FXv)(LVg5iv9;LEEcVz8iPDO2pE#=9yjG(^9VLH0E z!}M&JqQ5@*q=o^+tD_~C<5C90@S&k(MLFa_#XkhM*c$N5fu3xI9}B?iaC?L;9igpY*by_Vl=?A}yMcdKb5eAEXNcLWMMZQtY@x#4P|sA({Mn{-F{ykk^! zKmE>ctb65&wp`M!V+@j*oWxYDAf9TEmvbvcNv75EYR_D!uCvn3aOzqs-3q7fXIiwX z_I&TueXexfoHg_obR3TQf2oq7QDCrFjT#uWLbL*kbQ=3{Teu#}#W*Wt6FIhHpq20d zecEX2`qFgiXuC{SF8Fa0hf6Ybs9ZaVA2_?5ME79!Yr4a}zit1zZGYsSoFzB^lkdUa z6Ik8WhF5UWN zSWB-Tf5W|B!mH9#d^1<#7~Jo15I9;_y87LXgOHdXV9PAc4H~Poo;xe+?EB-GZ|tx1 z?W>$pHz($Y?LWn|!_H}Wmo{CX$>#qCJhQSd9XseN>(tK=kO=3CL3(xryKV7AOI6Di zSW`I@$Ai=Ayr=#Y6Fa^Me>|sR;QuLR>JBESO(1wEAY$2**hx+WB&x*| zm21JczC3L;qPjX_{?78WRXAD|G5;xa+x6(A*U@>Xa_<(blh`Y(o3~>ys7+f-d266& zw$@gSLcXe|U``iBD?-%0Z)x2w62FIy+^(hEu5B|P+a5eip@kvsVo-}1*v0S$=p6B} zT5IL_J>^UHX!wn8%r&(7#rSL1-0(kZtA1`!1Jm~SPR6^{2dDYHYU5sgf3R3p^OD&B zz{gLIglzk&fePO~JiuV`{To@Mw#b$KQq_2Lp&j@M_DiQsnLk*)FZ>T zht>7mK_kMxo^@zfRpaaaig6to;~YYB7Oi2P*{80+K#4AoCo)dZXUF4dxMN|vtzdLD zod%+hwZ{&79-RiFFUuUd6Fs7V9u~d~t%AF8__At_|6l7{`1MroTf8u6Mt2#_=uePK z#9oaoz6pUHaR5%^K{{f|xqsFXsna!d!?RPWYGQ7r4TWaK$K05OZ^w`0Ddvz7FtbM! z$7~0!n)V&yurfBiddi{n>hTBh6=Mvq$Y4exclGJfQL?Z91~sNE@Ix_bLV}+$Pyu=c z7{!Giu&JP`g<&J6zBFSvOi!1o&6YF|s>Kybtw8NDxZ$Pg@o+!6`KE!h#&Kda|%dh&4m5%|JsHwM8eNBof|w#Ts8qvEGUSC{cdXJ_Hjo<^W zDiW4os-jjPCsjV0IC4rEJfN71DL4@vLmxjDvFus81i^03h-K^fMBq48Bj0$a@YPW` zr~049jv{j&x`i~`cu>Pg^)YtUs==#CjXii36<>|gFh=`DaRv4Ua^ZY_t=hBhWDJSs zRhXBSuB$xvUe7xJX)og;HrEM>+pZahxn>+v|4JNMuHY-lclc^qE|pp$Ju3iPFmH)G z+mV~Ev505|<(7aN;hfMO0F(&-%#+4JoHTZ&{frrmni6CF)I*zhfFk6WIv z64Hg4D6$wp+&mWPfH#vV$DQV()qGHsxq$^U)l(2ZdM4U8(2jy|moEAEo z4fJaq$;;Z&b6Ly68}Ps#er(I1(x973Uxe-{i=VVD+Aw_YYzCcUN^bpxr#W|_CoarO z$Z{N~S4Fp9sirf*N1grY)m?Bc`L2Hkh-oayey_6SEnNTp2(=J|iAk+L9>)}sP%Kn_ zHCd$Rb!E=l)t=;)g5I9wU5;-Y)POa39x{(1-##Kr!|2=i;`c~ij2T#{&JtoN2 z09NYzg;N*eS-yF?3x0mYDY2^Mb*N>@XNS+$!)_^HT!y$;+d=y0pf>}ZN@$f5h-gPz%qeGM%w1Wg4`$wy-HLU-VvSIK zEPAOl;C=~CrD~zANq)uNON+tf#XP%c2(1LS$1!aX=7fG}( z%5}_&eCmDFK>h7izEdcJRTV6HRd6X#0YBheu9#nnam0UxTFT};a=I&fInW$JYbyqT z(GJfO_-ST@E|rq0t!OmELr<`xwEqjjb1Gti@SKS#gmG>t9{kgKW<2&_mGLj8Rn9r2 zs8LQ4H7ZQZiiuX#KEo42C{DVH8jD`4aERJV+-WKOa_q;k=1JoyecWRpMvmIW@eVWz zsH%|_iaSGbv*@MT9Jr@j+-Eqw8?hqF-su7BH*KDxOFcyS=a@79pa-<^0Cog@|NHZI z1pbb|-x2sb0)I!~?+E-Ifxi-gFfIIqW+k%~T#}vT9i(R$`3iCh&-Lm>#kqxgw;rY4 z^f^T(dP#0pPEw>cr8H}9?jU{Iocw~^!mN3@)3qLRv>pWoIa-g>Qv4f_KXAw2q&{rJ<5QZFzY&JqNM~h6&DlN?|@#Ys5mJZT;YPbW{S4QLR0C@OLevq-btQZfU7LJF7%X_LY_- z=ND!d_;PZSOA7L5C*^6y01}7hlw>U^)i1a}PZ33NZb^1-p%)E_wMqR04SS0sJ1?tn zZf*`)&B-b#%?;sy{`uzzMS5!^atpKb=4F*!h2~r8EAW;Miq!O>DE%P*A76CGm&rxm ztO7l^EH~Rnk=DKW^U%~Oz$IEicF}x2F)=T4imJbPQi%j@2hhi+m_pQucJT zE&8xeekoh#7nXt?%`i#ND9Ft!&6RX=^;xC9oFYA|*sF_;PJXk{KuhN7iF5S$q`BES zS;%Ogp?1C4P+?I3q={dT(j@TYmLSYY`Gs?iH`C^3XX}Z@bCF1KNfCAE#H^C+QhcT6 zlW02YiLfX_7-pK9B>JW$CA(B+c@q<}Q5IiGE~1r_Uy_^cr9P2_Z$&HXyn^FE+t(&c_RcFt1}qjLm`lY7$mra8MTJR78MUs`Pbxt%W@Z&;6)Y^x zFO^uCRvJdYkaj2VcSmAwQPErkGdr)OXkM-!m{W9;oZPY`DycTBN9imyO@ylu&AhOv zFmX|CNfCzNoLtmDwLG*MFAmU+`G4wo+L((koSEhg9bAi!)CTEV zItJ?8l0o{A9;HKh_~sFTz0uyakwt}ts1zDWbabyAG)Xn0j4sK_&Ygo!zfjLEC@Rgx zAd^<+Ey>bLa|?5H3T%!(dm)+za+Z?B|7jyo78+7>OG=7LBDJKvgrw{QRWxsInKzjW zi4?u)?unBZ7ISw(Hq|G6^5l%<-buanJ}D{sgt5_)JxWd6ak+(ay?KLhI*5*heH!s| zMkqCEL8@OWp5swH$5%p@*?GRgt8k#KlajP#oZXO{5_UW;{eaX_;^;^_UN|*UTqr{r zo@xJcVEzOB`-X6za8*~zfaTvWrJp{kDBCv=VY0^+cIL=QH1w1Zd@2m6S}vPZYl#}2 z=;W=6Kd}fSma6jOunSeEq!4?}a8s@<=ZlL%xoXG*EyP5F~xRbp@INxln=LO(ifGWAZgI-?`gk-2nw57boaBxpN9I?cmO%jn68}_szpNldbxGDb79Fn1^7gtf1lg)Ty0op5-u;-xdXXR5IG5KueYVV|lH$AJe|VaTZghS|2D7LT__%mXqfD{N z?3P8GraCD;6KqgAQ_$UvLHYE*LYNhwV-_$cAYZC{IjVd)lzP_eoMG8$s5oHZE{9UG zx!8#dd8kiUS4Q0qu!23=hA>hFGsq$o4}prL`w3X6C^L|F_s~3q!YYYBTGoiJNoQl@ zbO0x7sl3Vz_L$h=Bw0K2SSXk5qTM^zYC z0C1wC$_-(s=wJZ58Kz;#blC!yz5Dcy@7t$0NfNG_QaVartYBXpUsSkIE2cj#Thfpv z<78JH#D;Y)t9Z6jw#SvrVb1i#svH8+wha}I^pljKJCBx~LfI^2Ns_3fRFb0jkcB0P zOnQZ6VF)H<;I0f}r+|?!b8slQb_3d_mF?nQRvh@~I6H=k)Ur%chN0qM5+;Q%0Ye;z zUZLXv2qu{ev@Cbk@W7Xuxd34Afb#dI(km$QGPjpNm%+;&God3ObCTOfph*Ok2Ds@e zsZwBV0-#K*UA?3v4;>)yYPU5MCa>5K z@8W(-)kMT?%ws;8lL6cHPUyQdi%kRiJDDm=Hi7XpD6=lF9bncFxYbtgYMdro)$ zRi_zu)~KlDf4p%}3Q$tSNgT%mWpFA2dTJ?&1KloAkUa^??Rkj5Eq109$+17GoFIWWW576R&+mG@c zmy_kq>KU(*pnuBE9S##CPqDW>=@ix7ayQR;uKF|m&9j+suqPA67sqohppp5IJ3_}3 zxIA1Our0E(!(WbTPbM9qs!S#wYbYpA1$CXEJ1@6%TFP|P6qyQ79GZE*>C^g5@7)vAQUI75 zs+x9{O8^cDj(fV?z(o^E`2C?JN*5Pw**wVc*z8J&#yK@!uobL%LXOKEx@zGR z-1elVTq!ftUd`eI{tC&Qxq10GGt4V2D!#g;)a#qSplsoyz354pvl4=FwffY}`|d z)a2eH?&RVQ(-2xH9~!CU7iD|tR$e;(^~f3ABPU&pF2=ej{@0i2R}Jcst&Z|(yc|1Z?%=Fg`^_<6X=u3X%SqY3DA3l6E9_Y;voQ2|1di<@uR zxH*bDQ@CrNh1-xNdS3p#(%gbMN%{!1XxxUvJ#4s9)R>2wd7}6i>7@&@ijfyoo}}#a z7Gau!c0_lzX6Jer3YhoFcC)zZ9#I{8BS3?CG>G&M#JzC_jO}kva9~=pDd=3sv9A9A-{y23VCi7{2{kOu7zB=8vc;mAooKahHN5vBmAQ^t^ZB%ha3$#74mY(GRPH> zYa#E0+zk2UZSaSD<#zZ(-nJJ0*tTB04*rlA-2s2d?svi;vKewM(h5Bbd9@P}M| z5BwqL+zWp^EReb${*b5N2Y<*TkY$kX+z)@q4G+K{a>ax2hs=Bk{*dQA4F6b7i+u$C zkl#X1g?xPj{2}K*3V+DMkeeaBkHH`EWymJTn8)FdXKpGX2SB#m2!F_VkY$kHL9T^7 z{|Wd*UJtn+vJtWgGV4kB<8hiBAO}Ex2{{#V>{IZEyc=>YWa`uKhx{0FKjibzz#noV z9zp4N3hEtl0OWIc24^bd{n*uC2H6=;blnBn6C3$ofqV+`0OUt_)Iw{oX(!{^Y#nkk z9_|?hnYO*z$b-D|wPs^AWa;b8#zx4_*zvyyvOS&~I1ITAGOB~79fM4OOs;J<#zD@8 zEP%WNay8^3$c>Qm@qo)7$Tg6MAwPkPI#tsm-he;kTF7yb(Qm>ZaxUa*NP4T;M#wYX zfNK=R$OOpG@S4AIkc-}jKYfQ>4H>l${*XH$_dxy!@-XCuAHcsO zUZw(>0Gae5{2^O?1b@hlALFr7$g%%wHa0>2glDJfARqs%*=U5k_+YaU+ey>T`l8uL zfgB2%0ofMs04j!j>EG~&`~h+kv_ap&A94%iWXPuPQSXr7{D5`?d9V@f z2J+n>(QY8O{e*S{Ir3+;n=a`8kOLsUft(6i^9%eTPyH4CkP{#`L#~9}54j7n3DSV< zc!s78!!N`RfNc03{*a^pK>i{7A4UElw;e(g?W-GWIM@I|&b;ra(@?@6t?$ye`Tx zypW$m-U@jue)i}&$VSM0klAew;|OFuWP2Uy#u!FF$ZKNZ4;gkc{2^oU+aI?={s{RT zq}BockV%k7AXh@R?}~Cm_Jh>$3yqT@J3x9N{{?v~WXx&shrGO_VH|)wqmyB@#P#ch z&W4cy*`o{mAX}Va7)u~i&oqn&A?IU{#vVx8_i+TWx|?BiIa|}-KHD%xK}Pp5i~`8< z=O7)@Lp}!?j$dFn067Y8mu`tgwd)d)4&)=rNCz?v4_PmPoZkoOKrZf!bRhqLJPdhT zf0U~S;(tC~B?$Ot@a*As7wii3O$G97Xtem*1*QXd0<$eEBEAh%ouf5?il z@Q3^tWCSjp7mkBJy_(Sf(!&s{zQzpS5axLU;$aC?_ihjr!AS2=t-zo5i z+y|KsnR6-pA=_UDf5^R4;SZU11>z2Q8{}cgHJOGH)eGY|WCCQ%S?CXt&q5YMK0X`$ z0rDfrO^|(Z&>tXghirs=b}sruf~I|q-#JZzJf#x;kdq;cA=g6IKsG~ef*f!I{2?bo zHbVBQf`6i>4ZjiokeA&Af5`2S#q_-f{*X){U>eLwsmZ+-y&q<;whkTV~F zKjex>;olqW0&)PP_89yje}gQ8yz(jdLw^1|+CAi?7trn@Yax$8j(-vTvk&qKIRvt7 z3;GS@YcHeUK=ykD{RZ-xt?-9D2zdaq>o)j9PJ-;x7vtxv@Q3^YG7~av2mB!)*a?5g zMX$jh^268R4_USg{*Xs%;oncw5_ZEMawB9WWUDve57`g$F34?=uRtDs6aJ86_P`(V zR>&^>F+RSHr;H(gft&?NpY}>=CDw0#J_?i&BhoPo@(KHpkD+0TNnO?g&&4~ z=F(=PgA*UeF!R$d)=dV^1u)aU+{P1tUkaS#VdB$md>rsh;Fto~`OmQN0^n1CPj=$r zW7&Yq54;k1sSCf-!Z!jx0DPAV-)iA|fUj8AY@|8yC3gCUfjvtpY zUx1(NCPW-vj*H6X1t|Ke#%yKmB^$jOx&M z0`QJEhQ`MMfA0i%0r1thRty!N)xa;T35{6XxV z0&xEc@NvNJzcsXf0r1QqgMNj zYK3zT@cAx$o`oj>Pr$YODi?l@g^vS%EAY`yd>O;szYBoB3_Rrc2mA-%i=6)9YJlPK zANUxoAuM*`C06=-fIkR4--W9VPX331e+PWI3twRQN1Yy z(H1@q_#?nWrC$KN5%|?E|2)foHSpngg&v23ORG0q*%YP5>6~IHKe;D{%z$d!= z)c{KIiNbmIKfoWrdBPr_@36+_1mMf>X*Slm{A;ZA#{vHx_yHIGzJ(V6fBxQP<8Bvz ztA(!y-Un+v54i9^FO z40dv;W~}MZ-3px6szwCnv!BW**=&YQ#AD6IkIrc0S`52S`U05@EWIo`1Mx$+kuaI zw%PEx@B#}z2z(vzD_r;`7Oq8U+WWw7ci}f$xDNcH=R%h+75Et7FFD&-i%s0XXiS*} z{L2?HW;@$yixO_6gf9nv!As4?JXiWTR{HCK-vC^9_JtOwaYrEk?S#LKbx@c8Etda5 z;H_S1Hga6}Gz-_FQ9j_I;;#dr3jBGO|3=F{75I0+hdA+4hPi#s0^Vk8=sE3j;C+CX zJN?5KS^VpPuK}Lx!ZR&=JMd3{2kXB&d=3J?d0Vsburq$6SGOo{+2S?|BE_&}TU@X0 zXg2P3)zNKM9d!qO3toHphzq~R!bbr=9c#%ix$sREo&)?@tTBf=udD=qUTw3n*Hy;d zRv8}z{tfU@ee8AMUjwgm`PW+hhk)OPHR;D)ZS;Ptjkb)zwfdfB<2f`i{C?n@fuHTfRq~v_2wbGU41B4p4!u?##sTkGhkoS3r&)M9 z@XWoKD%Krx7&A^wta5Z<+q1z37#(T}iP-p(= ze3-&nm_GsdO~85S$Xx$Wry9n`0e=wq2&ex-+rI$#t`qRD2L3tlRHwhHV&>ln z+yGAN0M=Zk#RGgU=m^yw;8h0#`YH5OHb1bpfPIf+%Qsxj4aqm+6r3kN#XIhtv4fs` zy8~f#@7@vj1&2YjvzpJCw}fIkHs z#jyLJW9@b~@CQ$T`+=_mzRT$!Zm*q2;J)#&UvR(GiC@LZ^O|=Y@JYa3ZE#F=i`6a5 zJuL=s7}+iZc0Sxcecj0;cHz(1d}Xj}_gk~k$JyshKApQB^R0(n=idY77AD{8Hs5a8 zy#c$=f~C91wrhmlHMoy^fwLW$>GrbA(Gi2u)9{n{fs~1I|#dVxDS0IJL-QCoiy#~a3kpaqC4<7 z;O$x%Mt|oRZ^rFx9_m&7!|u#hhA|>ozGN;!d}Xj3(E88q*28XMgyBB7nCZsY>F$Qz z*pm$7o?!K`+OCI2*zJH_?_l+MmR+wMPuH|JqYc9oq#WTtD?W-_D(oJ?{q}2|>4wi| z11je%;H_eCe<}!1iyQ2EUj@5Gv4(MbFuMw6N9k>XU41*lc-v{$;&nD4ybkznr{Mja zuKd_@tVZBRfhRd}$32SJ&bVG{kNdPvJligB3h)lVvz&PNR5qaWGk{+T{Fn<@0i$>n z1MkzpFm^ffZ`S8?b~)F=uI^OaUv=@Q0ZE5$Gw|-G8AeYh51kV`+Z+dA(-V6WesXct zTX{VO{3!6%F1*~ryP!aGv8N&3iL2#aKIaYreiQJIop^Yi<(~;W{dB`u%Uf*YL5#}} zyzm_C;c(%fTlg{H=k+u~u1$8qg2Qs)d9M7;wDLCu_-^1gx$x^OJQMi&@uBf0z#l#V zei!f#y+ZrH0(>R#8dv)E+Ta1;M}Ti4e7Jc({c$UQ$H*Uhh_<@wR}DfsT)N;-*CdQV zPMpS=IrbQn3Y)8w4dW8nTXhhgZly5``2E27{mtezV~by{Hnbf0wY{+)0q(Z{W$X_~ zTaQ0GfX6t`yK4Q)po*k=ejPR&`x(YlIJV3An3ab^zz6roUXU>0Rvvz^^3bv?_SBpo zdd%+*{4C(1`oSpRS70wyt}A`}zEckHdx3XxmZ8NdeDbFJuLOSQV8iGe=FDHbmA?mp zKRLuO5_KouU8e$a`GLQjX@tB!Jp}v!@KJEL%CCkY_NP5-+I0K?lM@fO*Bxj_$A!QL zIdR8*|53na0mrG;=2uJ1%%21N3gDs66DxtAGQ%)Vb;T#ziqC_<+hhTE#V6W|&+EVq z;Q7wDTJ5Jh@YHO>nC`+STR836TMB%f3m?h2 z4qXoLM}a@&#LV<*JMM$*27V!MbZNT|9D5i1 zz|(-A@5Br3^dm4i$poI`#KY}%@;Kn@fyX=XEZaXF_+!8)g*(!3agjCF<^lh7PU!rt z0)F5G_y*wr0-o$@1LtrX(2?YB;NQ+QjQ_NBq)+#{4!7h?Qa_$shi_RldW(cLIOQRlc28`J&Fj-uA08cXr`REIa}DdnGuZxbR0T zd>ruEUc)%U)dt#IZJ+@7%=w0KwhKSq!dH`jS?KxJM&OHpU+65Ky7kKO+XH+(@ZX$x z`1f}CfiGBS7^TiO(&9>PAUb@a&c!v)Qv5JVD||7}6V!%sT3H+^u<5)q_`ICjSO)N- z6X3b^))m7qtQgh-Z@&s{$W=!ptU780KCCkI zoHsTOc>uo5lxwiSo|r# zU$_bTFJ1nVEdLDPKVctjDE?yLUhJ1$;_@%G{A+;MVgGEXYo1NO{lJ&I%C8p5seE<7 z({D9G-tTP$z5;m2>t77;HNbCh@n36~ANU`@UF%0J`dRtU08aaSFLsqL&BBX;r`;ZW zjMI^34e(;%?>f_`bL9@s0=JRpVAFZ65%Qk=KH$~BX+N0N$6CCmP6WjJf76E-8gL)G zm&z1{jXrNt|Hdau2~E@00dD8==M`RT*EB5W@F$`{dE$~@eHY1dG91SWPHluf5lU!S z(k!CGO)ZqdBYIsDqM?vJje)4kUqc5ce5Ny`@imQN2!-U#uQy?QblHnoF%eYhQvQZ@7>8a8esf$bznJO|vhQvQeaVwxlmo7nve5Rb+<9St5%?E*DuNa=pk+BDagI6M0Z% zqexyfMiyc*H>Hm*GDT#n$PAIQL>7x&F0w}CdXbw%ZWmc6@}S5@ks9WN^obRzi%b!j zDl$XlERn?`my4_sso4Jd--yPrpvGZgMi?Q^e>Hq@qs+~>JqLCETlsec{*J)^+Y$KU z7f^5$zslaq+cGOr*$&YoAYYZehd!6w9~bSUsbKEzj!W-^`~0%WYc~L4v0sS zdAg}z#r7REbKY(0AHhMe{L|VrrF-y_aGpYAI|6@R5WP0ht=}qoUG(O>wpR41qDNx< z*=y=ARXn?uTH7yr{W7J`5&bu!uMxdD52yW6l+R58`d>tUFo5Tn=x0q;{APaIAh5(U zE7P5BN6{Y?J!T$Yz?ui^J87eis2VZ*46TV%{FiKDGi|OC+8B%HWR9m2pBzqqp-{?L#HBAB0C29_l~z zIV$#N>`>o7Q$mYE`c&T3fOI=TPjNmf_I!O0pE$9fCH8Vzr1cZ~0k0`y-Y0^?F=AgV z_U85A6tOS-r?US@32lzp*97FJMC{XcDZ^BhhdwLCev{bCWujIi_7&7Y@Gd zE56fbk=WOWy&320#QxrW%I+Q|w0p#Ulh~Wrptr`%)UX z@VQ0_?Gv$Y46vtl35rjlG$?aY5RL(a;uHIz3YeMyXz0oQC*i+K;+ZJ+sba57x&y@i z#!r-j_ov|SQn8;U_U8DUCH6fID0|+gg2M%(UmzWk*WaMOUi5oKpQYTiTZMnQ@SE#E z_lkYqm&%a$f8g*@wm)54CF7nsH+fq0>qQ@jc+qEz@N{ZW-&ZQ3)r$V^0R2AE$J4-$ zPp;U1Bl^qe#DNdrBZd53^w0djYE7EE*4m@uzqC>5FI7T2OZ4xH-fUO>M1S><%FxtL z5Pi%~O3!-$a5zKsH%UJEo-6eEqW|!SvgbVkI9ww7ZNDk~l}cz;qK|7*iagQZCHflC z-z54CqCe|*r7-ndME_)fewXMk_`_|#U-WxKUnBf}(Pti2icO;bP4rQ6qSz|!xiuE< zsGYy@A7#k*@Nsyy=r52N*(Jg=QuH^9p6}NKyHxbmd^L{qsMzO<{yWk0{dr)EMSrZN z$_UMS=yN^v)E{f4J)fl1+TE-_UCWrR&f~G7e@OJZWxiy#=O;y9Cweq9{=6*ueF6G6 zM87{k{~`1gpMxV+KF12rzeV3`l+v5=X%zhu(Qgy`qoVhWR`z`F3|Q;divNamrRRHQ z(0361Aen&hy)x)^(O))B+4DUz=o3W$3@@nT9xrtC83H}euOx0L3V%kjzLPdf=24Pe z?IP2Do{DpvG7mZ5&S3lYTG=NmKVr@z*!*?|+n=Tdu4m4Lo@Vt;Qtu|uBDU{ntqYs_ z8tB_$-nik{FrL?$_5LWzhtXX7xk%+l!l7+|J?Y!X{QOQKdV=*Pt1Y*S{i=sVC&l|r z^y|)33KOPhW{JP)C1r1p+rNqamxW4C*A?_>i42qdcT?4OepVHSr-=UgYNa>%yRu&C zoPYa>{lBFFUL;_u=x;7i3R6EZ1W&fueurI;xC7e)Wr2&ItIr}nDo*NDBG&b4<${}DexWY44CXT6X*M7`L*aGz2R z7wjZlSW^6puTuHv`)t5^h<-vprOy|8dY;#u8;FX<_z?P8A@uZ2FQq$P+Rr#4s|aDg z4tm|0pd3FBJ;izZFDjoXCVwtPCUv^o6R=*oThgs5RCYeG|3vg%XDY>YqW?JM{%V8N0yNRBj=Wd5_pu5CDE~m5~gy;Db zWmqfrzly$fhEgmN{ZY|>ApPhW(YK1C6`4-jgVKIPtwlpm`QIPVue(4`?e-$+pbv;c zPtgxOUzMw;=m!YTE5c*;i!ow$j@TodEzo_|e2wVG%J_CfxE>OHlT6Hi6aBNI|LAF@Fx%CuqF*9$HqQ&YSTD{F@o@i$d2XI)){C=4=wjbi`tLx&`ied>ODXu>H#odN z^moX3Vve^NqTh3qvX|=DE*Jd~Sty+?{5hf@zey>2tKw-s(eIUxctGrF{|}wlHp}&b z4Aa_etQRAPp!XAyeMz1omT83cI0kUizbfOuIS+qI?7JRTB=-x~&Jg?`hS2+=r|~&e z=1c1(K$k{Qy2pQh75nW0=gqKoYF^PVU>uHxp7KAfM3w7iq3k63gH$Mz0| z9Ih3fQ)VbdTWKc`ihlBQN`JQKp9{gW3wo-T%>nbAeZuouv?55<72oHgU-hv1zDEh| z57EaAR`${@wFp!$)l15g%5a3(cM-j(NGYxmeIo1Si$kP}{pV|y@=+<*Waw!g7Le-9$u4O&$3k1Yrz3@!9Q4uVabRQM{ z06EcpBK*&=UcNZQYtZYC@8;oqA?&{t{#Ms3OMWL04)2z6^1dXcFBPK0V!ue{6=pnt z6n&3Jl_9^o0*A+-Zx`N43*1-MroF1)G#QwO3x5aEUpHI@Ku)XLS*#Z$hv+T#D`h}3 z<1$ zrfp^(adwEeguh1m?;OEC68@-wb&?-L@OY%1?4PaTY1ZS(qMy)T>F*Q%GerO8IHfS_ ztB2?Zr78Qjl+b!ZPvb^SKz|t~_T#0XlZ8J`^vj-BipxbmR`hda-qKg}GgvQQ9HJzI z{ubeBE9ssiJ`afg#tW3fEZ1YAALCQ{d1C*Z=yxnqid@mZ4Ly}NA|U=Bu)P>L1ieQj zSbIAvJi4q$NjSBbQ&l_Z_|X4X+O@!1R+Z-!A2_LqgSHlkg=@t=D4fpRdu3)KCCr^^KwRvz&p!8T?ml}T_TJ|{rgb`s(J`XZT3^tnAk$!ME2IseZM7z)(k88v+K7*~ zN<>SdqnK2RX-oV4ul>4n(0VrHjfV~{X5hi->iJT0G#8CKF2Y?@kOP7s|G-m z!&el)_cmd0uTH>s760mo1plG(|FPn~mKe0C`Q%oS~Xr{d8Y1wSr@JEHiO-xA;w#cx*JYo7BF#cx&o`S%N8 z@A-!M%%= z{)s;oLYuG46#t7ug6nj;J&OPN&Cv@7Z*~j%AmSoz_uGoUPaWr8#ZM{z_zl9j zRGfY{hU9;@229iQvlZXei96>h{(4R1zovXHQv5zI0RMh0F6R~h&8r2sc)dsQ9r~c- z6*}Mr#h*MZ^e3cnHyN&mu4d_`z{&r=pyU5fDE&Pj6$a`q-93ye(?;>I(*My70{%en z{p|+y-&Fd~tO?;|O8;ZUe?|iZ|E?(Rz34pY=Tn`y{8Hd>t?NFoVjS!7Rk>w)wN3GV zzejL;-|4Ci_}rxQFV?(er?xZ(PI7xz`(yt3ZA!mQ9mAWH{+)_HsDA8iir>MwerXi< zZh$|ee0INAh`*wB9##A$y1xE`;*TqS!4?5NtoReassG>V$n!@`uSAXF1skkK&SiYF zds_3Zo3ze_8_;i4`a5qFLjEmgT<+a~{yL?1@kWDsxg9u-_kqrMuOuAnrcZR9`z$E`+chA(Mfof$pBeQV zwk|lP^l#Ms=a-fKgNnaN*B4(?{Pz@JUJ~G#;(x6C|FdIXk1G9Li{kJeSNg9i{bQYR zeGmAI(lm<~{+!6|;`a;sYQ1@;;;+;7pydOvQ2e=H7ef9$U0hzQ_%V$m{QC#McPqZ6 z4*L_z|B&Jr>OR16#owa%qiUd*rzML2^sfq`+4YLzuT%d#R6g%fJUJqOu_qH?e^5<^FXMbD1AD6;CzM00m{_|<2f9@%{*H@CyDgO312%u{19#Q<{F~NUd zhUdPlc>XEDHH^7aj4RV-0fC>cKNm2**?ln<#vfPyzXY88(#(I$`x53)-hKAz`CPsM z|Lc_h!t13oU)Mf)#lNI+M7QJJSn*e0(WYNk{GU|MRow0baO$Vib?zqRf0xof{XqfD zem}{$5;cm?D*Z#c;biaIKf?Uabz4-=EwA{p(l6X6OimiFYr?$T+RL2xK|l6ou;>63 z<#aggg>HZYpBHhIbd>vYOeeOcQ31+9<`8cB}@g%{?-Gkni(^L3i zoW?%L^I*+KX_>FNVUE*^{a`vCuc1ogn+IjtA}w&TaD)!wtoq*k7B1#?xI8MRN!gp* z?r^R&PDt*}Z6mBVcd095u-239=Uyx5ycBb8DO&5z&AK6gx4Y$e?thGvAspXrySQeTjKP5OfemmTobVL z;zAB6ZZ_3861k>kaaN~PH%>gRN!n8E9E@C(wdE_EHPqHJ z4kiUnVv=P`h3`kBIAt>-Me%90+R!zgfFcU=aO83rZ5j0OfE0&2(?wjc_J}a!B1k5q zKqoejR_A;Xm41>(%W;O&!R2`7a6GAuutxZJZ>~c3+lE(DHKzY`pr1}AQQl~WO;aex z*)se?)k0-5HN@sue^q0xft5z}m32))d=>M-y1O#VAuUFQ2hv_Te&7BXkv_!q? z!cWS){*uILRDZ)rp&M)=IEy}nQs65N3&#oc878RAmLj<92qI0QRbQ-)`>4RzH4)vJ zkb766G6yTU&Z9{bkOXo!2+E*0>lX8P(A(;Y>6k;`zN>d0+Uxfo-s8RVd#*pc^U#6a z7~lTG*ZRFzdbxY$o~xbTfAGkzod^AqefzH2yWkgg?mD;^HFCcgrPSHTL*soog_tn% zJPb;=i1?Z=U$Ot-fnB@(EdHJr1~Mv3oTZM#%PC0b5v#8s1?eDxI!0;GPok@Xl|$J8 zDtJqQXf@0uT=t_BenNzwV=(X-tSB@uaWTo`WeQ($jvyUHtrk6X1rd(_hdgoQIiGv( zgQAFX^fU@j+r=a+5Rs#N8T~@6rip3s1*d#WUSR?ul+kz+`f`*m35Pu&pl@jSBEfJqFpF$>CvQ3CB4CNYE@ z6i_obkbbBJFb?9hYGiKSO;f1iQiag`K(uK%S!-c3QcUJboEGuXNQlOh7Lh-&a0m&9 z*Foe2V*V!Wtza9D)!A2;z0! z90v(x>E&NmF?eAj7DZZGM(zehMG6E7fhjm+Fmf5KB5hO~cV))jvE5;AeuCyFdA3M~ z-p5Q#CornW-CAUMXM8+;1#1E)gP6I9)PmUzNlk-6s{vD@K2lkz2BgxMEH)j?fEhxx z8ims`nspc+HIhv_%}Z~!xx|qh3)Gb6VX>v>!0Qm4e3a*KG;p2EKDRl6Q$nJw)e*#) zT{UBNH=!PlBd9u(Wz4g9NJ@s)&Xa5rOgQerSCg}_24vEGnJq4&BDo|OcL3+j_8Avo z2!(KIkwnqNg;5NxChhQ(pd6vI>oz)0QILi6ofULV=IydM4r-z==4#j!eG+ENh>>w$!a>8V5fk9* z+O04lIZzc(G0Ij!o zidp2@XI&bk8S`k-AwA_O=d_B9N0)kTTts1kVdrD=ZLsl{#}yw%A&x>dg`jLW2s+Nc zNQ0#ahKhJHjuPmN#Lc$S(8P<6AX9cj1kCnyw$u|VYgoGIr+P9`AhrT_`sxwciLk>(x&lTiGLqK(4be*2M&M5iKY}r5 z*m=l@VK6DDIW5q+b7X)M5&lA4i zB$Nbc0G0_OMWYpI$2>4B%oL}#Rk$UY!PU^{I@+K*q(Pe1mRi-(VR=!m%MJ5l1Ph?~ zK%QxYl#ClCDR{@uITdIRQ}iQ165&NZc!LPhg!~~1GzCXE&9=&w;|WE$7AuSnL9GSJ z}X9s@Wfc4f?p)Zc+l33WS`aALQ(&Dn%J( zkSvE-mR2WQgkz{u)yeeeQHtYY0PMbO6fW0@2r*HjRB@N|0T}}M4`^z}36-V{Yshrq zR9ZduesPSvp2dwd2l1=!&&^@wkS!xSAxDd4jW)#Jv5{9~Dow}!R258g7lR{@&`b-r zBABr+SfsQO7A}ETEyN!1uPGI_)6D$>!ChVs6cH_Ft8tQxkerNF)FhszDX5U3!t{Ab1bc@Q>soQN8qnsY zXJ3nsK$k^eJXT#PYPhs%6H~)LLrfkmtTc{=3HB>|fmju#NPLrQC2FhwL{~LqQH* zmKG*%`z}hs(rqaVsSGxsdHrk3*@=a)0q!BPXUVc8Db@@Y9$D*!oqE`FrN~x*)4pH=I+5FOXo!6KV3J6>a51;k%H6tm-1W z$wVxu+VDw`2Ia_kbstBfE|iZHotAH{DX*l9rfjg(60$SwIUsKyz(aW7FDS<$?=343 zX_93j`}Zme3>_9s`{+ns2iUM*oQ`>E30tEb0!n9>*X6Uaz+nTEM4lGiuHQ`%!F;%W z6)zhDFgwroLk@~^k=7`cD{>wLdvc)~?47L>V4X1nevyaOQbDG3%*#>qd<7Q+?6%}% ziWa=`r-?4$uCNQ$@Kr2G&g95oIk#g=CDE&nz;3YOL2{(&qFEW`9I`mA3{Uiw#9b*u z8DfHhvTQpM>I}9d8k>@32q~_o6Ia3MU&Bu{^$F2!1w#^5oY3;CB}`2#RhZ=8d2@la zSp9@NB!L=q>xxIlIt9I*(q9)zF_x4A}3W86YRtT-agSv3(um9$cg9EbpkDc0Ua}p0w2| zX%Ekun2n{D^yIR@BM4Rr7ACpJa*D?n2tLwFB#JJt9u`R^!IGq?BRO5Al$P!_3>`+m zPFoD39=D3OA&Fus#s&^Q$-uU^?tgNw*i;A3q{uAfiHf*4Td$g+8y;QVJvTf+ZiO9E zvPu;>jX_MdoxPBGwAF%k&ZSSXUCzy;8@f`~O&1@oV)u+D2U$m(fd~n{l(Qgh-;}Kp zXz4MK8)CZ{6VRG1t-`X^HK*w@%n$#y+G~$zeJ%#yT?E639%Hq#PYCD@G+ zXy>j2m(c41OwO~>8?2>h!f}bsdA@@rsGuF<<`<89d6Wc1s8^GubUpUAJzVw{;r93f zsj%xIQN~xYLQrSCRoRP1@c8upz-Rz&_Dy)ms{>NQuF+I5j=@Z-BgJt&ytBahioFZ* z|0wZ#ougM#^z|fn&hv$tm3WP;_0iW>DvaJAdlCM(`rEa>mHPT+MQ`to7;tH)KK(8q zeXP7tzE=O*dm#qU`;5)@?RQnJoH0TzyY=Zk)o1Wq_tt+q55UUHwB8w7cKaUy$E!@$ z`0cy^E9rN3=tF%Z*;)N_2*ih8lcOP9`*!|-m3H0$(bA_Ye|q1Ne#_tL+wb>V`3Tp- zS(I8Dot5;u6P*oU-|c(=E01fvZvPc_@52Sj)apNm_m=2m<&1XN+V774BcP@FyQmUA zcK(5tc3uM2Cz*BY-vf-AF#c`^U+6Q#|2op|=BGRVzl)pA`ZF^^ZRPP7Hfz)0BFM+e z`|!0{|L)hweJhPltF5d5K&So#THnga|I+?vI`!@EY^?m)LF!%o>GtO@ajV&X`<)Fd zUs6})tFHY1TI<{V+u!?H`Rs*l1~cui?(aMG?f25Gy#1%z6}s(zqf`IH{W4xF|IPlu zLD`u87}xLM;w=2HZm0TP<4xZXK3#hIZsm_q_oa>ccHYS5|6~3CLS52bYu|oH?i{VJ zufwtb09mE~HjjS@jCyMI?Yxmq|1AA~wwf5KUDvn%p8>LF{p#$W=gM=1>-X^fVe@0{8%FN#boJ+UNd5CV6*^zt{{Yt?eQW># literal 0 HcmV?d00001 diff --git a/app.js b/app.js new file mode 100644 index 0000000..ed3e7ab --- /dev/null +++ b/app.js @@ -0,0 +1,270 @@ +class Grid2 { + + columns = [] + data = [] + + constructor(data){ + this.data = data + if(this.data.length){ + this.columns = Object.keys(this.data[0]); + } + this.columns = ['puzzle']; + } + createRow(record){ + const el = document.createElement('div'); + el.classList.add('row'); + this.columns.forEach((column)=>{ + const col = document.createElement('pre'); + col.classList.add('col'); + col.textContent = record[column]; + el.appendChild(col); + }) + return el; + } + render(el){ + this.data.forEach((record)=>{ + const row = this.createRow(record); + el.appendChild(row); + }) + } + +} + +class Grid { + + constructor(data){ + this.cols = 5 + this.data = data ? data : [] + this.sort = data.sort + this.styleElement = null + } + get(index){ + return this.data[index] ? this.data[index] : null + } + insert(record){ + this.data.push(record) + } + renderStyle(container){ + const el = document.createElement('style'); + el.textContent = ` + .rgrid { + font-size:16px; + display: 'grid'; + grid-template-columns: repeat(${this.cols}, 1fr); + grid-template-rows: auto; + gap: 0px; + border-radius: 5px; + clear: both; + color: #efefef; + /*aspect-ratio: 1/1;*/ + } + .rgrid-item { + width:relative; + padding: 10px; + /*aspect-ratio: 1/1*/; + text-align: left; + float: left; + background-color: #000; + + } + .rgrid->pre { + width: 100%; + } + ` + container.appendChild(el) + return el + } + render(container){ + if(this.styleElement == null){ + this.styleElement = this.renderStyle(container) + + } + + const el = document.createElement('div') + el.classList.add('rgrid'); + this.data.forEach((record)=>{ + const cell = this.createCell(record); + el.appendChild(cell); + }) + + for(let i =0; i< container.children.length; i++){ + if(container.children[i] != this.styleElement){ + + container.children[i].remove() + }; + } + + + container.appendChild(el) + + return el + } + createCell(record){ + const el = document.createElement('div'); + el.classList.add('rgrid-item'); + const pre = this.createPre(record); + el.appendChild(pre); + // el.textContent = record; + return el; + } + createPre(content){ + const el = document.createElement('pre'); + el.textContent = content; + return el; + } + +} + +const getPuzzleNode = (str, readOnly, size, darkMode) => { + darkMode = true + const sudoku = document.createElement('my-sudoku') + sudoku.setAttribute('puzzle', str ? str : 'generate') + if(readOnly) + sudoku.setAttribute('read-only', 'true') + sudoku.classList.add('sudoku') + if(darkMode){ + sudoku.classList.add('sudoku-dark') + } + return sudoku +} + +const renderPuzzleFromString = (str, readOnly, size, darkMode) => { + darkMode = true + const sudoku = document.createElement('my-sudoku') + sudoku.setAttribute('puzzle', str ? str : 'generate') + if(readOnly) + sudoku.setAttribute('read-only', 'true') + sudoku.classList.add('sudoku') + if(darkMode){ + sudoku.classList.add('sudoku-dark') + } + document.body.appendChild(sudoku); + const id = generateIdByPosition(sudoku); + sudoku.id = id + return sudoku +} + +class App { + container = null + constructor(){ + } + async renderProcessList(container){ + + const processes = await this.getProcessList(); + // processes.forEach(process=>{ + // renderPuzzleFromString(process.puzzle,false,13,true) + // }) + + const grid = new Grid(processes.map(process=>{ + return [process.puzzle , + "duration: " +process.duration.toString(), + "initial: "+process.result_initial_count.toString(), + "steps: "," "+process.steps.toString(), + "steps total: "," "+process.steps_total.toString(), + "solved:" + process.solved_count.toString() + ].join('\n') + })); + grid.render(container); + } + + async renderStatistics(container){ + const statistics = await this.statistics; + const column_one = `longest_running: ${statistics.longest_running} +solved_total: ${statistics.solved_total} +start: ${statistics.start} +steps_per_puzzle: ${statistics.steps_per_puzzle} +steps_total: ${statistics.steps_total} +time_winner: ${statistics.time_winner}` + const column_two = statistics.puzzle_winner + + const column_three = statistics.solution_winner + + const data = [column_one,column_two,column_three] + const grid = new Grid(data) + grid.render(container) + + } + get statistics() { + return fetch('/json/statistics/').then(response=>{ + return response.json(); + }).then(data=>{ + console.debug(data) + return data + }) + } + async getProcessList() { + return fetch('/json/processes') + .then(response => { + if (!response.ok) { + throw new Error('Network response was not ok'); + } + return response.json(); + }) + .then(data => { + console.log(data); + return data; + }) + .catch(error => { + console.error('There was a problem with the fetch operation:', error); + }); + + } + +} + +const asyncAnimationFrame = async(callback)=>{ + return new Promise((resolve)=>{ + requestAnimationFrame(()=>{ + resolve(callback()); + }) + }) +} + + +let app; + +document.addEventListener('DOMContentLoaded',(e)=>{ + app = new App(); + const refreshProcesList = async() =>{ + setInterval(async()=>{ + await asyncAnimationFrame(async ()=>{ + const processes = await app.getProcessList(); + + newNodes = processes.map(process=>{ + return getPuzzleNode(process.puzzle,false,13,true) + }) + let hasChildren = document.body.childNodes[0].length ? true : false + let count = 0; + newNodes.forEach(node=>{ + document.body.appendChild(node) + count++; + + + }) + if(hasChildren) + for(let i = 0; i < count; i++){ + document.body.childNodes[0].remove() + + } + }) + },1000); + } + + //refreshProcesList(); + setInterval(async()=>{ + const el = document.getElementById('statistics'); + asyncAnimationFrame(async ()=>{ + + await app.renderStatistics(el); + }); + },200); + setInterval(async ()=>{ + const el = document.getElementById('details') + + asyncAnimationFrame(async ()=>{ + await app.renderProcessList(el); + }) + + },200); + console.info("KAAR\n"); +}) \ No newline at end of file diff --git a/box.c b/box.c new file mode 100644 index 0000000..87d8d10 --- /dev/null +++ b/box.c @@ -0,0 +1,100 @@ +#include "sudoku.h" + + +static char * gridchars = "abcdefghijklmnopqrstuvwxyz"; + +int * get_box(char c){ + + + unsigned static int result[N]; + unsigned int index = 0; + unsigned int offset = strchr(gridchars,c) - gridchars; + offset = offset * N / 3; + for(unsigned int i = offset; i < offset + N/3;i++){ + result[index] = i; + index++; + } + for(unsigned int i = offset + N; i < offset + N + N/3;i++){ + result[index] = i; + index++; + } + for(unsigned int i = offset + N + N; i < offset + N + N + N/3;i++){ + result[index] = i; + index++; + } + return result; +} +int * grid_to_array(int grid[N][N]){ + static int result[N*N]; + int index = 0; + for(uint row = 0; row < N; row++){ + for(uint col = 0; col < N; col++){ + result[index] = grid[row][col]; + index++; + } + } + return result; +} + +char get_box_char(int row, int col){ + unsigned int index = 0; + unsigned int cell_index = row * N + col; + int char_index = cell_index / N; + + while(true){ + char c = gridchars[index]; + int * numbers = get_box(c); + for(int i = 0; i < N; i++){ + if(numbers[i] == cell_index){ + return c; + } + } + index++; + } + return 0; +} + +int * get_box_values(int grid[N][N],char c){ + int * box = get_box(c); + static unsigned int values[N]; + int * array = grid_to_array(grid); + //printf("HIERR\n"); + for(unsigned int i = 0; i < N; i++){ + printf("FROM ARRAY: %d\n", box[i]); + values[i] = array[box[i]]; + } + return values; +} + +void print_box(int * box){ + unsigned int cols = 0; + for(int i = 0; i < N; i++){ + printf("%d", box[i]); + cols++; + if(cols == N / 3){ + printf("\n"); + cols = 0; + } + } +} + +int main(){ + int grid[N][N]; // = grid_new(); + memset(grid,0,N*N*sizeof(int)); + int * box = get_box('d'); + for(int i = 0; i < N; i++){ + printf("%d\n",box[i]); + } + grid[4][2] = 9; + int * box_values = get_box_values(grid,'d'); + print_box(box_values); + + int row = 4; + int col = 0; + grid[row][col] = 8; + print_grid(grid,false); + + printf("%c",get_box_char(row,col)); + return 0; + +} diff --git a/footer.h b/footer.h new file mode 100644 index 0000000..8b5e9c4 --- /dev/null +++ b/footer.h @@ -0,0 +1,99 @@ +#ifndef FOOTER_H +#define FOOTER_H +#include +#include +#include +#include +#include +#include +#include + +static pthread_mutex_t footer_mutex; + +static nsecs_t footer_time_start = 0; + +char footer_prefix[1024] = {0}; +char footer_suffix[1024] = {0}; + +static void footer_get_terminal_size(int *rows, int *cols) { + struct winsize w; + + // Use ioctl to get the terminal size + if (ioctl(STDOUT_FILENO, TIOCGWINSZ, &w) == -1) { + perror("ioctl"); + } else { + *rows = w.ws_row; + *cols = w.ws_col; + } +} +void footer_get_cursor_position(int *rows, int *cols) { + // Save the current terminal settings + struct termios term, term_saved; + tcgetattr(STDIN_FILENO, &term); + term_saved = term; + + // Put terminal in raw mode (disable canonical input and echoing) + term.c_lflag &= ~(ICANON | ECHO); + tcsetattr(STDIN_FILENO, TCSANOW, &term); + + // Request cursor position with ANSI code: ESC [ 6 n + printf("\033[6n"); + fflush(stdout); + + // Read the response: ESC [ rows ; cols R + char buf[32]; + long unsigned int i = 0; + char c = 0; + while (c != 'R' && i < sizeof(buf) - 1) { + __attribute_maybe_unused__ ssize_t bytes_read = read(STDIN_FILENO, &c, 1); + buf[i++] = c; + } + buf[i] = '\0'; + + // Parse the response + if (sscanf(buf, "\033[%d;%dR", rows, cols) != 2) { + *rows = *cols = -1; // In case of parsing error + } + + // Restore the original terminal settings + tcsetattr(STDIN_FILENO, TCSANOW, &term_saved); +} + +void _footer_set(unsigned int row, unsigned int col_count, char * text,unsigned int original_row,unsigned int original_col) { + char content[2048] = {0}; + char line[1024]; + memset(line,' ',sizeof(line) - 1); + char cursor_set_string[2048] = {0}; + sprintf(cursor_set_string,"\e[%d;%dH",row,0); + sprintf(content,"%s%s%s\033[%u;%uH",cursor_set_string,text,line,original_row,original_col); + content[col_count + strlen(cursor_set_string) + 1] = 0; + printf(content); +} +void footer_printf(const char *format, ...) { + if(footer_time_start == 0) + { + // Quick, for the threads come a default value + footer_time_start = 1; + pthread_mutex_init(&footer_mutex,NULL); + footer_time_start = nsecs(); + } + pthread_mutex_lock(&footer_mutex); + nsecs_t time_elapsed = nsecs() - footer_time_start; + int original_row = 0; + int original_col = 0; + int row_count = 0; + int col_count = 0; + footer_get_cursor_position(&original_row, &original_col); + footer_get_terminal_size(&row_count, &col_count); + char text[1024] = {0}; + char full_text[4096] = {0}; + va_list args; + va_start(args, format); + vsprintf(text, format, args); + va_end(args); + sprintf(full_text,"\r%s - %s%s%s", format_time(time_elapsed), footer_prefix, text, footer_suffix); + + _footer_set(row_count,col_count,full_text,original_row,original_col); + pthread_mutex_unlock(&footer_mutex); +} +#endif \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..02b5de8 --- /dev/null +++ b/index.html @@ -0,0 +1,56 @@ + + + + + + + + + Loading... + + + + \ No newline at end of file diff --git a/rlib.h b/rlib.h new file mode 100644 index 0000000..4387b52 --- /dev/null +++ b/rlib.h @@ -0,0 +1,8450 @@ +// RETOOR - Dec 5 2024 +// MIT License +// =========== + +// Copyright (c) 2024 Retoor + +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +#ifndef RLIB_H +#define RLIB_H +// BEGIN OF RLIB + +/* + * Line below will be filtered by rmerge + + \ No newline at end of file diff --git a/sudoku.js b/sudoku.js new file mode 100644 index 0000000..24fbe91 --- /dev/null +++ b/sudoku.js @@ -0,0 +1,850 @@ + + + +function randInt(min, max) { + min = Math.ceil(min); + max = Math.floor(max); + return Math.floor(Math.random() * (max - min + 1)) + min; +} + +function cssRuleExists(match){ + for(let i = 0; i < document.styleSheets.length; i++){ + let styleSheet = document.styleSheets[i] + let rules = styleSheet.cssRules + for(let j = 0; j < rules.length; j++){ + let rule = rules[j] + if(rule.selectorText && rule.selectorText == match){ + return true; + } + } + } + return false +} + +class EventHandler { + constructor() { + this.events = {}; + this.eventCount = 0; + this.suppresEvents = false; + this.debugEvents = false; + } + on(event, listener) { + if (!this.events[event]) { + this.events[event] = { name:name, listeners: [],callCount: 0}; + } + this.events[event].listeners.push(listener); + } + off(event, listenerToRemove) { + if (!this.events[event]) return; + this.events[event].listeners = this.events[event].listeners.filter(listener => listener !== listenerToRemove); + } + emit(event, data) { + if (!this.events[event]) return []; + if (this.suppresEvents) return []; + this.eventCount++; + const returnValue = this.events[event].listeners.map(listener =>{ + var returnValue = listener(data) + if(returnValue == undefined) + return null + return returnValue + }); + this.events[event].callCount++; + if(this.debugEvents){ + console.debug('debugEvent',{event:event, arg:data, callCount: this.events[event].callCount, number:this.eventCount, returnValues:returnValue}) + } + return returnValue + } + suppres(fn) { + const originallySuppressed = this.suppresEvents + this.suppresEvents = true + fn(this) + this.suppresEvents = originallySuppressed + return originallySuppressed + } +} + + +class Col extends EventHandler { + id = 0 + values = [] + initial = false + _marked = false + row = null + index = 0 + valid = true + _selected = false + _value = 0 + _isValidXy() { + if (!this._value) + return true; + return this.row.puzzle.fields.filter(field => { + return ( + field.index == this.index && field.value == this._value + || + field.row.index == this.row.index && field.value == this._value) + + }).filter(field => field != this).length == 0 + } + mark() { + this.marked = true + } + unmark() { + this.marked = false + } + select() { + this.selected = true + } + unselect() { + this.selected = false + } + _isValidBox() { + if (!this._value) + return true; + let startRow = this.row.index - this.row.index % (this.row.puzzle.size / 3); + let startCol = this.index - this.index % (this.row.puzzle.size / 3); + for (let i = 0; i < this.row.puzzle.size / 3; i++) { + for (let j = 0; j < this.row.puzzle.size / 3; j++) { + const field = this.row.puzzle.get(i + startRow, j + startCol); + if (field != this && field.value == this._value) { + return false; + } + } + } + return true + } + validate() { + if (!this.row.puzzle.initalized) { + return this.valid; + } + if (this.initial) { + this.valid = true + return this.valid + } + if (!this.value && !this.valid) { + this.valid = true + this.emit('update', this) + return this.valid + } + let oldValue = this.valid + this.valid = this._isValidXy() && this._isValidBox(); + if (oldValue != this.valid) { + this.emit('update', this) + } + return this.valid + } + set value(val) { + if (this.initial) + return; + const digit = Number(val) + const validDigit = digit >= 0 && digit <= 9; + let update = validDigit && digit != this.value + if (update) { + this._value = Number(digit) + this.validate() + this.emit('update', this); + } + } + get value() { + return this._value + } + get selected() { + return this._selected + } + set selected(val) { + if (val != this._selected) { + this._selected = val + if(this.row.puzzle.initalized) + this.emit('update', this); + } + } + get marked() { + return this._marked + } + set marked(val){ + if(val != this._marked){ + this._marked = val + if(this.row.puzzle.initalized){ + this.emit('update',this) + } + } + } + constructor(row) { + super() + this.row = row + this.index = this.row.cols.length + this.id = this.row.puzzle.rows.length * this.row.puzzle.size + this.index; + this.initial = false + this.selected = false + this._value = 0; + this.marked = false + this.valid = true + } + update() { + this.emit('update',this) + } + toggleSelected() { + this.selected = !this.selected + } + toggleMarked() { + this.marked = !this.marked + } + get data() { + return { + values: this.values, + value: this.value, + index: this.index, + id: this.id, + row: this.row.index, + col: this.index, + valid: this.valid, + initial: this.initial, + selected: this.selected, + marked: this.marked + } + } + toString() { + return String(this.value) + } + toText() { + return this.toString().replace("0", " "); + } +} +class Row extends EventHandler { + cols = [] + puzzle = null + index = 0 + initialized = false + constructor(puzzle) { + super() + this.puzzle = puzzle + this.cols = [] + this.index = this.puzzle.rows.length + const me = this + this.initialized = false + for (let i = 0; i < puzzle.size; i++) { + const col = new Col(this); + this.cols.push(col); + col.on('update', (field) => { + me.emit('update', field) + }) + } + this.initialized = true + } + get data() { + return { + cols: this.cols.map(col => col.data), + index: this.index + } + } + toText() { + let result = '' + for (let col of this.cols) { + result += col.toText(); + } + return result + } + toString() { + return this.toText().replaceAll(" ", "0"); + } +} + +class Puzzle extends EventHandler { + rows = [] + size = 0 + hash = 0 + states = [] + parsing = false + _initialized = false + initalized = false + _fields = null + constructor(arg) { + super() + this.debugEvents = true; + this.initalized = false + this.rows = [] + if (isNaN(arg)) { + // load session + } else { + this.size = Number(arg) + } + for (let i = 0; i < this.size; i++) { + const row = new Row(this); + this.rows.push(row); + row.on('update', (field) => { + this.onFieldUpdate(field) + }) + } + this._initialized = true + this.initalized = true + this.commitState() + } + validate() { + return this.valid; + } + _onEventHandler(){ + this.eventCount++; + } + makeInvalid() { + if (!app.valid) { + let invalid = this.invalid; + return invalid[invalid.length - 1]; + } + this.rows.forEach(row => { + row.cols.forEach(col => { + if (col.value) { + let modify = null; + if (col.index == this.size) { + modify = this.get(row.index, col.index - 2); + } else { + modify = this.get(row.index, col.index + 1); + } + modify.value = col.value + // last one is invalid + return modify.index > col.index ? modify : col; + } + col.valid = false + }) + }) + this.get(0, 0).value = 1; + this.get(0, 1).value = 1; + return this.get(0, 1); + } + reset() { + this._initialized = false + this.initalized == false; + this.parsing = true + this.fields.forEach(field => { + field.initial = false + field.selected = false + field.marked = false + field.value = 0 + }) + this.hash = 0 + this.states = [] + this.parsing = false + this.initalized = true + this._initialized = true + this.commitState() + } + get valid() { + return this.invalid.length == 0 + } + get invalid() { + this.emit('validating',this) + const result = this.fields.filter(field => !field.validate()) + this.emit('validated',this) + return result + } + get selected() { + return this.fields.filter(field => field.selected) + } + get marked(){ + return this.fields.filter(field=>field.marked) + } + loadString(content) { + this.emit('parsing', this) + this.reset() + this.parsing = true + this.initalized = false; + this._initialized = false; + + const regex = /\d/g; + const matches = [...content.matchAll(regex)] + let index = 0; + const max = this.size * this.size; + matches.forEach(match => { + const digit = Number(match[0]); + let field = this.fields[index] + field.value = digit; + field.initial = digit != 0 + index++; + }); + this._initialized = true; + this.parsing = false + this.deselect(); + this.initalized = true; + this.suppres(()=>{ + this.fields.forEach((field)=>{ + field.update() + }) + }) + this.commitState() + this.emit('parsed', this) + this.emit('update',this) + } + get state() { + return this.getData(true) + } + get previousState() { + if (this.states.length == 0) + return null; + return this.states.at(this.states.length - 1) + } + get stateChanged() { + if (!this._initialized) + return false + return !this.previousState || this.state != this.previousState + } + + commitState() { + if (!this.initalized) + return false; + this.hash = this._generateHash() + if (this.stateChanged) { + this.states.push(this.state) + this.emit('commitState', this) + return true + } + return false + } + onFieldUpdate(field) { + if (!this.initalized) + return false; + if (!this._initialized) + return; + this.validate(); + this.commitState(); + this.emit('update', this) + } + + get data() { + return this.getData(true) + } + + popState() { + let prevState = this.previousState + if (!prevState) + { + this.deselect() + return null + }while (prevState && prevState.hash == this.state.hash) + prevState = this.states.pop() + if (!prevState) + { + this.deselect() + return null + } + this.applyState(prevState) + this.emit('popState', this) + return prevState + } + applyState(newState) { + + this._initialized = false + newState.fields.forEach(stateField => { + let field = this.get(stateField.row, stateField.col) + field.selected = stateField.selected + field.values = stateField.values + field.value = stateField.value + field.initial = stateField.initial + field.validate() + }) + this._initialized = true + this.emit('stateApplied', this) + this.emit('update', this) + } + getData(withHash = false) { + let result = { + fields: this.fields.map(field => field.data), + size: this.size, + valid: this.valid + } + if (withHash) { + result['hash'] = this._generateHash() + } + return result; + } + get(row, col) { + if (!this.initalized) + return null; + if (!this.rows.length) + return null; + if (!this.rows[row]) + return null; + return this.rows[row].cols[col]; + } + get fields() { + if (this._fields == null) { + this._fields = [] + for (let row of this.rows) { + for (let col of row.cols) { + this._fields.push(col) + } + } + } + return this._fields + } + _generateHash() { + var result = 0; + JSON.stringify(this.getData(false)).split('').map(char => { + return char.charCodeAt(0) - '0'.charCodeAt(0) + }).forEach(num => { + result += 26 + result = result + num + }) + return result + } + get text() { + let result = '' + for (let row of this.rows) { + result += row.toText() + "\n" + } + result = result.slice(0, result.length - 1) + return result + } + get initialFields() { + return this.fields.filter(field => field.initial) + } + get json() { + return JSON.stringify(this.data) + } + get zeroedText() { + return this.text.replaceAll(" ", "0") + } + get string() { + return this.toString() + } + toString() { + return this.text.replaceAll("\n","").replaceAll(" ", "0") + } + get humanFormat() { + return ' ' + this.text.replaceAll(" ", "0").split("").join(" ") + } + getRandomField() { + const emptyFields = this.empty; + return emptyFields[randInt(0, emptyFields.length - 1)] + } + update(callback) { + this.commitState() + this.intalized = false + callback(this); + this.intalized = true + this.validate() + this.commitState() + this.intalized = false + if(this.valid) + this.deselect() + this.intalized = true + this.emit('update', this) + } + get empty() { + return this.fields.filter(field => field.value == 0) + } + getRandomEmptyField() { + let field = this.getRandomField() + if (!field) + return null + return field + } + deselect() { + this.fields.forEach(field => field.selected = false) + } + generate() { + this.reset() + this.initalized = false + for (let i = 0; i < 17; i++) { + this.fillRandomField() + } + this.deselect() + this.initalized = true + this.commitState() + this.emit('update',this) + } + fillRandomField() { + let field = this.getRandomEmptyField() + if (!field) + return + this.deselect() + field.selected = true + let number = 0 + number++; + + while (number <= 9) { + field.value = randInt(1, 9) + field.update() + if (this.validate()) { + field.initial = true + return field + } + number++; + } + return false; + } + +} + +class PuzzleManager { + constructor(size) { + this.size = size + this.puzzles = [] + this._activePuzzle = null + } + + addPuzzle(puzzle){ + this.puzzles.push(puzzle) + } + get active(){ + return this.activePuzzle + } + set activePuzzle(puzzle){ + this._activePuzzle = puzzle + } + get activePuzzle(){ + return this._activePuzzle + } +} + +const puzzleManager = new PuzzleManager(9) + +class Sudoku extends HTMLElement { + styleSheet = ` + .sudoku { + font-size: 13px; + color:#222; + display: grid; + grid-template-columns: repeat(9, 1fr); + grid-template-rows: auto; + gap: 0px; + user-select: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + background-color: #e5e5e5; + border-radius: 5px; + aspect-ratio: 1/1; + } + .sudoku-field-initial { + color: #777; + } + .sudoku-field-selected { + background-color: lightgreen; + } + .soduku-field-marked { + background-color: blue; + } + .sudoku-field-invalid { + color: red; + } + .sudoku-field { + border: 1px solid #ccc; + text-align: center; + padding: 2px; + aspect-ratio: 1/1; + }` + set fieldSize(val) { + this._fieldSize = val ? Number(val) : null + this.fieldElements.forEach(field => { + field.style.fontSize = this._fieldSize ? this._fieldSize.toString() +'px' : '' + }) + } + get fieldSize(){ + return this._fieldSize + } + get eventCount() { + return this.puzzle.eventCount + } + get puzzleContent(){ + return this.puzzle.humanFormat + } + set puzzleContent(val) { + if (val == "generate") { + this.puzzle.generate() + } else if (val) { + this.puzzle.loadString(val) + } else { + this.puzzle.reset() + } + } + connectedCallback() { + this.puzzleContent = this.getAttribute('puzzle') ? this.getAttribute('puzzle') : null + this._fieldSize = null + this.fieldSize = this.getAttribute('size') ? this.getAttribute('size') : null + this.readOnly = this.getAttribute('read-only') ? true : false + this.attachShadow({ mode: 'open' }); + this.shadowRoot.appendChild(this.styleElement) + this.shadowRoot.appendChild(this.puzzleDiv) + } + toString(){ + return this.puzzleContent + } + set active(val){ + this._active = val + if(this._active) + this.manager.activePuzzle =this + } + get active(){ + return this._active + } + set readOnly(val){ + this._readOnly = val ? true : false + } + get readOnly(){ + return this._readOnly + } + constructor() { + super(); + this._readOnly = false; + this._active = false + this.fieldElements = [] + this.puzzle = new Puzzle(9) + this.fields = [] + this.styleElement = document.createElement('style'); + this.styleElement.textContent = this.styleSheet + this.puzzleDiv = document.createElement('div') + this.puzzleDiv.classList.add('sudoku'); + this._bind() + this.manager.addPuzzle(this) + } + get manager() { + return puzzleManager + } + _bind(){ + this._bindFields() + this._bindEvents() + this._sync() + } + _bindFields(){ + const me = this + this.puzzle.rows.forEach((row) => { + row.cols.forEach((field) => { + const fieldElement = document.createElement('div'); + fieldElement.classList.add('sudoku-field'); + fieldElement.field = field + field.on('update', (field) => { + me._sync() + }) + fieldElement.addEventListener('click', (e) => { + if(!me.readOnly) + field.toggleSelected() + }) + fieldElement.addEventListener('contextmenu',(e)=>{ + e.preventDefault() + field.row.puzzle.update(()=>{ + field.selected = false + field.value = 0 + }) + }) + this.fields.push(field) + this.fieldElements.push(fieldElement) + this.puzzleDiv.appendChild(fieldElement); + }); + }); + } + _bindEvents(){ + const me = this + this.puzzle.on('update', () => { + me._sync() + }); + this.puzzleDiv.addEventListener('mouseenter', (e) => { + me.active = true + }) + this.puzzleDiv.addEventListener('mouseexit', (e) => { + me.active = false + }) + document.addEventListener('keydown', (e) => { + if(me.readOnly) + return + if (!puzzleManager.active) + return + const puzzle = puzzleManager.active.puzzle + if (e.key == 'u') { + puzzle.popState(); + } else if (e.key == 'd') { + puzzle.update((target) => { + puzzle.selected.forEach(field => { + field.value = 0 + }); + }) + } else if (e.key == 'a') { + puzzle.autoSolve() + } else if (e.key == 'r') { + puzzle.fillRandomField(); + } else if (!isNaN(e.key)) { + puzzle.update((target) => { + puzzle.selected.forEach(field => { + field.value = Number(e.key) + }) + }); + } else if(e.key == 'm'){ + let fields = []; + puzzle.update((target) => { + target.selected.forEach(field => { + field.selected = false; + fields.push(field) + }); + }); + puzzle.update((target)=>{ + fields.forEach((field)=>{ + field.toggleMarked(); + }) + }); + puzzle.emit('update',puzzle); + } + }) + } + autoSolve() { + const me = this + window.requestAnimationFrame(() => { + if (me.fillRandomField()) { + if (me.empty.length) + return me.autoSolve() + } + }) + } + get(row, col){ + return this.puzzle.get(row,col) + } + _syncField(fieldElement) { + const field = fieldElement.field + fieldElement.classList.remove('sudoku-field-selected') + fieldElement.classList.remove('sudoku-field-empty') + fieldElement.classList.remove('sudoku-field-invalid') + fieldElement.classList.remove('sudoku-field-initial') + fieldElement.classList.remove('sudoku-field-marked') + console.info('Removed marked class'); + fieldElement.innerHTML = field.value ? field.value.toString() : ' ' + + if (field.selected) { + fieldElement.classList.add('sudoku-field-selected') + window.selected = field.field + } + if (!field.valid) { + fieldElement.classList.add('sudoku-field-invalid') + } + if (!field.value) { + fieldElement.classList.add('sudoku-field-empty') + } + if(field.initial){ + fieldElement.classList.add('sudoku-field-initial') + } + if(field.marked){ + fieldElement.classList.add('sudoku-field-marked') + console.info("added marked lcass") + } + + } + _sync() { + this.fieldElements.forEach(fieldElement => { + this._syncField(fieldElement); + }) + } + +} +customElements.define("my-sudoku", Sudoku); + +function generateIdByPosition(element) { + // Get the parent element + const parent = element.parentNode; + + // Get the index of the element within its parent + const index = Array.prototype.indexOf.call(parent.children, element); + + // Generate a unique ID using the tag name and index + const generatedId = `${element.tagName.toLowerCase()}-${index}`; + + // Assign the generated ID to the element + element.id = generatedId.replace('div-', 'session-key-'); + + return element.id; +} + diff --git a/sudoku.zip b/sudoku.zip new file mode 100644 index 0000000000000000000000000000000000000000..3e124308626a1453410b27e5711d1fad85c77374 GIT binary patch literal 458845 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 z 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%0A$nNJ7O;OM-l;+n$HyUd=;xjTvOMD)Y4mAqlMdGJ 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�}A(|(?fT-)P(F8JCdo8~w?F0B5h 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

j;3}Hrf?~9C^<*apvCIW#h35%H}bv6&bBuf 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�=p^Dd_7q={Kg))8Ka>Eb^1QP-)T(6{Fho2gYora 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 sBkPC5{=L`zorSs&{cGn7$hzJ6{tI; + + + + + + + + + +

+Refresh the page for different theme. The widgets are in two colors and multiple sizes available.
+
+These keyboard shortcuts are available for active puzzle widget:
+  - `d` for deleting last filled field.
+  - `a` for auto resolving.
+  - `u` for unlimited undo's.
+  - `r` for a tip.
+
+Developer notes:
+ - Widget size is defined by font size on the .soduku css class or as html 
+   attribute to the component.
+ - You can use an existing puzzle by setting the puzzle attribute on a component. 
+   It must contain at least 81 digits to be valid.
+
+ + + + Small generated puzzle + + + Default generated puzzle + + + Default empty puzzle + + + + \ No newline at end of file diff --git a/sudoku3.c b/sudoku3.c new file mode 100644 index 0000000..aaf74f7 --- /dev/null +++ b/sudoku3.c @@ -0,0 +1,189 @@ +#include "rlib.h" +#include +#include +#include + +typedef struct field_t { + unsigned int value; + unsigned int selected; + unsigned int initial; + unsigned int column; + unsigned int row; + unsigned int index; + unsigned char box; +} field_t; + +field_t * new_field(){ + field_t * field = (field_t *)calloc(1,sizeof(field_t)); + return field; +} + +typedef struct row_t { + unsigned int index; + field_t * columns; + unsigned int column_count; +} row_t; + +row_t * new_row(unsigned int size) { + row_t * row = (row_t *)calloc(1, sizeof(row)); + row->columns = calloc(size,sizeof(field_t)); + row->index = 0; + return row; +} + +typedef struct grid_t { + unsigned int size; + unsigned int row_count; + unsigned int field_count; + row_t * rows; + field_t * fields; + field_t * (*get)(struct grid_t * grid, unsigned int row, unsigned int col); + field_t * (*get_empty_field)(struct grid_t * grid); +} grid_t; + +field_t * grid_get(grid_t * grid, unsigned int row, unsigned int col){ + return &grid->rows[row].columns[col]; +} +field_t * grid_get_empty_field(grid_t * grid){ + for(int i = 0; i < grid->size * grid->size; i++){ + printf("AT:%d\n",i); + printf("V:%d\n",grid->fields[i].value); + printf("V2:%d\n",grid->rows[i].columns[i].value); + printf("V2:%d\n",grid->get(grid,i,i)->value); + if(grid->fields[i].value == 0) + return &grid->fields[i]; + } + return NULL; +} + +char get_box_letter(grid_t * grid, unsigned int row, unsigned int col){ + //char box_letter = 65 + (row)*grid->size / grid->size / 3 + row; // (row*grid->size+col)+(grid->size / 3);// + grid->size % (grid->size / 3)); + char box_letter = 65 + ((row % (grid->size / 3))) + grid->size % (grid->size / 3);// (row-1)*grid->size+(col-1)+(row-1)+(col-1); + //(65 + row * (grid->size / 3) % (grid->size / 3)+col); /// (grid->size / 3)); + return box_letter; +} + + +grid_t * new_grid(unsigned int size){ + grid_t * grid = (grid_t *)calloc(1,sizeof(grid_t)); + grid->get = grid_get; + grid->get_empty_field = grid_get_empty_field; + grid->size = size; + grid->row_count = 0; + grid->rows = (row_t *)calloc(size, sizeof(row_t)); + grid->fields = (field_t *)calloc(size*size, sizeof(field_t)); + for(unsigned int irow = 0; irow < size; irow++){ + row_t * row = new_row(size); + row->index = grid->row_count; + row->column_count = size; + grid->row_count++; + grid->rows[row->index] = *row; + for(unsigned int icol = 0; icol < size; icol++){ + unsigned int field_index = irow * size + icol; + field_t * field = new_field(); + field->column = icol; + field->row = irow; + field->index = field_index; + field->box = get_box_letter(grid, irow, icol); + row->columns[icol] = *field; + grid->fields[field_index] = *field; + grid->field_count++; + } + } + return grid; +} + +char * field_to_string_human(field_t * field){ + static char result[4] = {0}; + result[0] = 0; + sprintf(result,"%d, ",field->value); + return sbuf(result); +} + +char * field_to_string(field_t * field){ + static char result[4] = {0}; + result[0] = 0; + sprintf(result,"%d",field->value); + return sbuf(result); +} +char * row_to_string(row_t * row,char * field_string_fn(field_t * field)){ + static char result[100] = {0}; + result[0] = 0; + for(unsigned int i = 0; i < row->column_count; i++){ + strcat(result, field_string_fn(&row->columns[i])); + } + return sbuf(result); +} +char * row_to_string_human(row_t * row,char * field_string_fn(field_t * field)){ + static char result[100] = {0}; + result[0] = 0; + for(unsigned int i = 0; i < row->column_count; i++){ + strcat(result, field_string_fn(&row->columns[i])); + } + strcat(result, "\n"); + return sbuf(result); +} +char * row_to_string_c(row_t * row){ + static char result[1000] = {0}; + result[0] = 0; + strcat(result,"{"); + for(int i = 0; i < row->column_count; i++){ + strcat(result, field_to_string_human(&row->columns[i])); + } + result[strlen(result)-2] = 0; + strcat(result,"},\n"); + return sbuf(result); +} + +char * grid_to_string(grid_t * grid, char * row_to_string_fn(row_t * row,char * (field_t *)), char * field_string_fn(field_t * field)){ + static char result[1000] = {0}; + result[0] = 0; + for(unsigned int irow = 0; irow < grid->size; irow++){ + row_t row = grid->rows[irow]; + row.column_count++; + strcat(result,row_to_string_fn(&row,field_string_fn)); + } + result[strlen(result)-1] = 0; + return sbuf(result); +} +char * grid_to_string_c(grid_t * grid){ + char result[1000] = {0}; + result[0] = 0; + strcat(result,"{\n"); + for(int i = 0; i < grid->size; i++){ + strcat(result," "); + strcat(result,row_to_string_c(&grid->rows[i])); + + } + result[strlen(result)-2] = 0; + strcat(result,"\n}"); + return sbuf(result); +} +char * grid_to_string_human(grid_t * grid){ + return sbuf(grid_to_string(grid, row_to_string_human, field_to_string_human)); +} + + +int main(){ + + grid_t * grid = new_grid(9); + printf("%d \n",grid->rows[3].index); + printf("%d \n",grid->fields[30].index); + printf("%d \n",grid->rows[6].columns[6].index); + field_t * f = grid->get(grid, 0,3); + printf("%d \n", f->index); + //for(int i = 0; i < grid->size*grid->size;i++){ +// printf("%c",grid->fields[i].box); +// } + grid->get(grid,5,5)->value = 3; + grid->get(grid,0,0)->value = 1; + printf("**%d**\n",grid->get(grid,5,5)->index); + printf("^^%d^^\n",grid->get(grid,5,5)->value); + printf("$$%d$$\n", grid->fields[0].index); + printf("!!%d!!\n", grid->get_empty_field(grid)->index); + printf("<%s>\n",grid_to_string(grid,row_to_string,field_to_string)); + printf("<%s>\n",grid_to_string_human(grid)); + printf("<%s>\n",grid_to_string_c(grid)); + + return 0; +} diff --git a/sudoku3.html b/sudoku3.html new file mode 100644 index 0000000..b0fc184 --- /dev/null +++ b/sudoku3.html @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sudoku4.html b/sudoku4.html new file mode 100644 index 0000000..90e0291 --- /dev/null +++ b/sudoku4.html @@ -0,0 +1,31 @@ + + + + + + + + + + +
+
+ + + + + + \ No newline at end of file diff --git a/sudoku_gen1 b/sudoku_gen1 new file mode 100755 index 0000000000000000000000000000000000000000..b6cc689a459c6b6399a01b20c9f1619c6c7556b4 GIT binary patch literal 194040 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%0AnT7{eLqd5^B6qXx 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
P`>LZR};f# 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 +#include +#include +#include +#include "footer.h" + +unsigned long long global_m_lock_count = 0; +pthread_mutex_t * global_m_lock = NULL; + +#define WITH_MUTEX(src,update_footer) \ + if(global_m_lock == NULL){ \ + global_m_lock = malloc(sizeof(pthread_mutex_t)); \ + pthread_mutex_init(global_m_lock, NULL); \ + } \ + pthread_mutex_lock(global_m_lock); \ + global_m_lock_count++; \ + if(update_footer) { \ + footer_printf("l:%s:%d (%lld)",__func__,__LINE__,global_m_lock_count); \ + } \ + src \ + if(update_footer) { \ + footer_printf("u:%s:%d (%lld)",__func__,__LINE__,global_m_lock_count); \ + } \ + pthread_mutex_unlock(global_m_lock); + + +typedef struct thread_data_t { + int puzzle[N][N]; + int solution[N][N]; + pthread_t thread; + unsigned long long steps; + unsigned long long steps_total; + uint complexity; + uint result_complexity; + uint solved_count; + uint initial_count_minimum; + uint initial_count_maximum; + uint result_initial_count; + uint id; + pthread_mutex_t lock; + bool is_done; + nsecs_t start; + nsecs_t finish; + nsecs_t duration; +} thread_data_t; + +thread_data_t * thread_data_create(){ + thread_data_t * data = malloc(sizeof(thread_data_t)); + memset(data,0,sizeof(thread_data_t)); + return data; +} +void thread_data_free(thread_data_t * data){ + + free(data); +} + + + +int * grid_with_minimal_complexity(thread_data_t * tdata){ + int * grid = grid_new(); + int * grid_game = NULL; + while(true){ + tdata->result_initial_count = rand_int(tdata->initial_count_minimum,tdata->initial_count_maximum); + + grid_set_random_free_cells(grid,tdata->result_initial_count); + //print_grid(grid,false); + grid_game = grid_copy(grid); + //footer_printf("Solving: %ld", tdata->result_initial_count); + + tdata->start = nsecs(); + //tdata->steps = 0; + tdata->result_complexity = rsolve(grid,&tdata->steps); + tdata->steps_total += tdata->steps; + tdata->steps = 0; + tdata->solved_count++; + if(tdata->result_complexity == 0){ + //print_grid(grid,true); + //exit(5); + //footer_printf("thread %d failed validation",tdata->id); + }else{ + + //footer_printf("thread %d solved: %d",tdata->id, tdata->result_complexity); + } + //if(tdata->solution) + // free(tdata->solution); + + + + WITH_MUTEX({ + memcpy(tdata->solution,grid,N*N*sizeof(int)); + memcpy(tdata->puzzle,grid_game,N*N*sizeof(int)); + + },false); + if(tdata->result_complexity >= tdata->complexity){ + break; + }else{ + free(grid_game); + grid_reset(grid); + } + } + return grid_game; +} + +void * generate_game(void * arg){ + thread_data_t * tdata = (thread_data_t *)arg; + tick(); + //unsigned int * result_complexity = (int *)calloc(sizeof(int),1); + //unsigned int * result_initial_count = (int *)calloc(sizeof(int),1); + //rr_disable_stdout(); + + int * puzzle = grid_with_minimal_complexity(tdata); + + //if(tdata->puzzle){ + //free(tdata->puzzle); + + //} + WITH_MUTEX({ + tdata->finish = nsecs(); + tdata->duration = tdata->finish - tdata->start; + tdata->is_done = true; + },false); + return NULL; +} + +void thread_data_to_json_object(rjson_t * json ,thread_data_t * data){ + rjson_object_start(json); + rjson_kv_int(json,"id",data->id); + rjson_kv_int(json,"solved_count",data->solved_count); + rjson_kv_number(json,"steps_total",data->steps_total + data->steps); + rjson_kv_number(json,"steps",data->steps); + rjson_kv_number(json,"result_initial_count",data->result_initial_count); + rjson_kv_duration(json,"start",data->start); + rjson_kv_duration(json,"finish",data->finish); + rjson_kv_duration(json,"duration",nsecs() - data->start); + rjson_kv_string(json,"puzzle",grid_to_string(data->puzzle)); + rjson_kv_string(json,"solution",grid_to_string(data->solution)); + rjson_object_close(json); +} +char * thread_data_to_json(thread_data_t * data, int runner_count){ + rjson_t * json = rjson(); + rjson_array_start(json); + for(int i = 0; i < runner_count; i++){ + thread_data_to_json_object(json,&data[i]); + } + rjson_array_close(json); + + char * content = strdup(json->content); + rjson_free(json); + return content; + +} + +char * thread_data_to_string(thread_data_t * data){ + static char result[4096]; + memset(result,0,sizeof(result)); + sprintf(result,"id:%d\tcomplexity: %u\t total solved: %d \tsteps total: %s\tsteps current: %s\tinitc: %d\ttime: %s", + data->id, + data->result_complexity, + data->solved_count, + rtempc(rformat_number(data->steps_total + data->steps)), + rtempc(rformat_number(data->steps)), + data->result_initial_count, + format_time(nsecs() - data->start) + ); + return result; +} + +char * runner_status_to_string(thread_data_t * runners, unsigned int runner_count){ + static char result[1024*1024]; + memset(result,0,sizeof(result)); + + for(uint i = 0; i < runner_count; i++){ + strcat(result,thread_data_to_string(&runners[i])); + strcat(result,"\n"); + } + return result; + +} + +typedef struct serve_arguments_t { + thread_data_t * runners; + unsigned int runner_count; + int port; + nsecs_t time_winner; + int puzzle_winner[N][N]; + int solution_winner[N][N]; + char start_timestamp[30]; +} serve_arguments_t; + + +serve_arguments_t serve_arguments; + +void get_totals(thread_data_t * runners, unsigned int runner_count, ulong * steps_total, ulong * solved_total,nsecs_t * longest_running){ + *steps_total = 0; + *solved_total = 0; + *longest_running = 0; + nsecs_t end_time = nsecs(); + for(unsigned int i = 0; i < runner_count; i++){ + *steps_total += runners[i].steps_total + runners[i].steps; + *solved_total += runners[i].solved_count; + nsecs_t duration = runners[i].start ? end_time - runners[i].start : 0; + if(duration > *longest_running){ + *longest_running = duration; + } + } +} + +void http_response(rhttp_request_t * r, char * content){ + char headers[strlen(content) + 1000]; + sprintf(headers,"HTTP/1.1 200 OK\r\n" + "Content-Length:%ld\r\n" + "Content-Type: text/html\r\n" + "Connection: close\r\n\r\n%s", + strlen(content),content); + rhttp_send_drain(r->c,headers,0); + close(r->c); +} + + + +int request_handler_json_processes(rhttp_request_t*r){ + if(!strncmp(r->path,"/json/processes",strlen("/json/processes"))){ + WITH_MUTEX({ + char * content = thread_data_to_json(serve_arguments.runners,serve_arguments.runner_count); // runner_status_to_string(serve_arguments.runners,serve_arguments.runner_count); + http_response(r,content); + + free(content); + },false); + return 1; + } + return 0; +} + +char * statistics_to_json_object(serve_arguments_t * args, rjson_t * json ,thread_data_t * data){ + ulong steps_total = 0; + ulong solved_total = 0; + nsecs_t longest_running = 0; + get_totals(args->runners, args->runner_count, &steps_total, &solved_total, &longest_running); + + rjson_object_start(json); + rjson_kv_string(json,"start",args->start_timestamp); + rjson_kv_number(json,"steps_total",steps_total); + rjson_kv_number(json,"solved_total",solved_total); + rjson_kv_number(json,"steps_per_puzzle",solved_total != 0 ? steps_total / (solved_total + args->runner_count) : 0); + rjson_kv_string(json,"longest_running",format_time(longest_running)); + rjson_kv_string(json,"time_winner",format_time(args->time_winner)); + rjson_kv_string(json,"puzzle_winner",grid_to_string(args->puzzle_winner)); + rjson_kv_string(json,"solution_winner",grid_to_string(args->solution_winner)); + rjson_object_close(json); + return json; +} + +int request_handler_json_statistics(rhttp_request_t *r ){ + serve_arguments_t args = *(serve_arguments_t *)r->context; + if(!strncmp(r->path, "/json/statistics",strlen("/json/statistics"))){ + rjson_t * json = rjson(); + statistics_to_json_object(&args,json,args.runners); + char * content = strdup(json->content); + rjson_free(json); + http_response(r,content); + free(content); + return 1; + } + return 0; +} +int request_handler_root(rhttp_request_t *r){ + serve_arguments_t args = *(serve_arguments_t *)r->context; + if(!strcmp(r->path,"/")){ + WITH_MUTEX({ + char * content = runner_status_to_string(args.runners,args.runner_count); + ulong steps_total = 0; + ulong solved_total = 0; + nsecs_t longest_running = 0; + get_totals(args.runners, args.runner_count, &steps_total, &solved_total, &longest_running); + char html[1024*1024*2] = {0}; + sprintf(html, "" + "
"
+				"%s"
+				"Started: %s\n"
+				"\n"
+				"Steps total: %s\n"
+				"Solved total: %s\n"
+				"Steps per puzzle: %s\n"
+				"Longest running: %s\n"
+				"Generation time hardest puzzle: %s\n"
+				"\n"
+				"Hardest puzzle:\n"
+				"%s\n"
+				"Solution:\n"
+				"%s\n"
+				"
" + "", + content, + args.start_timestamp, + rtempc(rformat_number(steps_total)), + rtempc(rformat_number(solved_total)), + rtempc(rformat_number(solved_total != 0 ? steps_total / (solved_total + args.runner_count) : 0)), + rtempc(format_time(longest_running)), + rtempc(format_time(args.time_winner)), + rtempc(grid_to_string(args.puzzle_winner)), + rtempc(grid_to_string(args.solution_winner)) + ); + char response[1024*1024*3]; + memset(response,0,sizeof(response)); + sprintf(response,"HTTP/1.1 200 OK\r\n" + "Content-Length: %zu\r\n" + "Content-Type: text/html\r\n" + "Connection: close:\r\n\r\n", + strlen(html)); + rhttp_send_drain(r->c, response,0); + rhttp_send_drain(r->c, html,0); + },true); + return 1; + } + return 0; +} + +int request_handler_empty(rhttp_request_t * r){ + if(!strncmp(r->path,"/empty",strlen("/empty"))){ + int grid[N][N]; + memset(grid,0,N*N*sizeof(int)); + char * content = grid_to_string(grid); + char response[1024]; + response[0] = 0; + sprintf( + response, + "HTTP/1.1 200 OK\r\nContent-Length:%zu\r\nConnection: close\r\n\r\n", + strlen(content) + ); + rhttp_send_drain(r->c,response,0); + rhttp_send_drain(r->c,content,0); + return 1; + } + return 0; +} + +int request_handler_404(rhttp_request_t *r){ + char content[] = "HTTP/1.1 404 Document not found\r\nContent-Length:3\r\nConnection:close\r\n\r\n404"; + rhttp_send_drain(r->c,content,0); + return 1; +} + +int request_handler(rhttp_request_t * r){ + rhttp_request_handler_t request_handlers[] ={ + request_handler_root, + request_handler_empty, + request_handler_json_processes, + request_handler_json_statistics, + rhttp_file_request_handler, + request_handler_404, + NULL + }; + int i = -1; + while(request_handlers[++i]) + if(request_handlers[i](r)) + return 1; + return 0; +} + + +void * serve_thread(void *arg){ + serve_arguments_t * arguments = (serve_arguments_t *)arg; + + rhttp_serve("0.0.0.0",arguments->port,1024,1,1,request_handler,(void *)arguments); + return NULL; +} + +void generate_games(unsigned int game_count, unsigned int timeout, unsigned int complexity){ + pthread_t thread_serve; + + + thread_data_t runners[game_count]; + serve_arguments.runners = runners; + serve_arguments.runner_count = game_count; + serve_arguments.port = 9999; + serve_arguments.time_winner = 0; + strcpy(serve_arguments.start_timestamp,rstrtimestamp()); + memset(serve_arguments.solution_winner,0,sizeof(serve_arguments.solution_winner)); + memset(serve_arguments.puzzle_winner,0,sizeof(serve_arguments.puzzle_winner)); + + pthread_create(&thread_serve,0,serve_thread,(void *)&serve_arguments); + //pthread_mutex_t lock; + //pthread_mutex_init(&lock,NULL); + for(unsigned int i = 0; i < game_count; i++){ + runners[i].initial_count_maximum = 30; + runners[i].initial_count_minimum = 1; + runners[i].complexity = complexity; + runners[i].is_done = false; + runners[i].id = i; + memset(runners[i].solution,0,N*N*sizeof(int)); + memset(runners[i].puzzle,0,N*N*sizeof(int)); + runners[i].solved_count = 0; + runners[i].duration = 0; + runners[i].steps = 0; + runners[i].steps_total = 0; + //runners[i].lock = lock; + pthread_create(&runners[i].thread,NULL,generate_game,(void *)(&runners[i])); + } + unsigned int highest_complexity = complexity; + for(unsigned int i = 0; i < timeout; i++){ + sleep(1); + WITH_MUTEX({ + footer_printf("main"); + //pthread_mutex_lock(&lock); + for(unsigned int ithread = 0; ithread < game_count; ithread++){ + if(runners[ithread].is_done){ + pthread_join(runners[ithread].thread,NULL); + + if(runners[ithread].result_complexity > highest_complexity){ + highest_complexity = runners[ithread].result_complexity; + for(uint j = 0; j < game_count; j++){ + runners[j].complexity = highest_complexity; + + } + + printf("\r\n"); + print_grid(runners[ithread].puzzle,true); + printf("\n"); + print_grid(runners[ithread].solution,false); + + + memcpy(serve_arguments.puzzle_winner,runners[ithread].puzzle,N*N*sizeof(int)); + memcpy(serve_arguments.solution_winner,runners[ithread].solution,N*N*sizeof(int)); + serve_arguments.time_winner = runners[ithread].duration; + + + printf("Thread %d is done (%s)\n",ithread,format_time(runners[ithread].duration)); + printf("Complexity: %ld\n",runners[ithread].result_complexity); + printf("Initial values: %ld\n",runners[ithread].result_initial_count); + + } + runners[ithread].is_done = false; + //free(runners[ithread].puzzle); + //runners[ithread].puzzle = NULL; + //free(runners[ithread].solution); + //runners[ithread].solution = NULL; + pthread_create(&runners[ithread].thread,NULL,generate_game,(void *)(&runners[ithread])); + + } + } + + //pthread_mutex_unlock(&lock); + },true); + } + + for(unsigned int i = 0; i < game_count; i++){ + + pthread_cancel(runners[i].thread); + + } + pthread_testcancel(); +} + +int main() { + setbuf(stdout,NULL); + + srand(time(NULL)); + // setbuf(stdout,0); + int cores = sysconf(_SC_NPROCESSORS_ONLN); + int threads = cores * 4 - 1; + sprintf(footer_prefix, "Cores: %d - Threads: %d - ", cores,threads); + // Highest: 1481563980 + generate_games(threads ,13371337,1); + exit(0); + +/* +0 0 9 0 0 0 0 0 0 +0 0 0 0 0 0 3 0 0 +6 0 1 5 0 2 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 8 0 0 0 +9 0 4 7 0 0 0 0 5 +0 0 7 8 0 0 0 0 0 +0 0 8 0 0 0 0 0 0 +0 4 0 0 3 0 0 6 2 + +Attempts: +213212476 + + +*/ +/* +0 0 0 0 0 0 0 0 0 +0 0 0 5 0 0 0 0 0 +0 0 0 7 0 2 0 0 0 +0 0 0 0 0 1 0 0 0 +0 0 4 0 0 0 0 9 3 +0 0 0 0 0 8 0 0 0 +0 0 0 4 0 5 0 0 0 +0 0 0 0 0 0 0 0 2 +0 0 8 3 0 0 0 0 5 +Thread 2 is done (459.04s) +Complexity: 125004041 +Initial values: 14 +*/ +/* +0 0 0 0 0 0 0 0 0 +0 8 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 6 5 0 +0 0 4 0 0 0 9 0 0 +0 0 0 2 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 4 0 0 9 1 +0 0 0 0 6 5 0 0 0 +Thread 2 is done (1528.38s) +Complexity: 748250144 +Initial values: 11 +*/ +/*0 3 0 0 0 0 0 0 0 +0 0 5 0 0 0 0 0 0 +0 0 0 0 0 0 1 0 0 +0 0 0 0 0 0 0 4 0 +0 0 0 0 9 0 0 0 0 +0 0 9 0 3 0 0 0 0 +0 0 0 0 0 6 0 0 0 +0 0 4 0 0 0 0 7 0 +0 6 7 0 0 4 0 2 0 +Thread 0 is done (2635.64s) +Complexity: 1481563980 +Initial values: 14*/ +/* +GROOTSTE! +Complexity: 774858414 +0 0 0 4 0 0 9 0 0 +0 0 0 0 0 0 0 0 0 +0 2 0 5 0 8 0 0 0 +5 0 2 0 0 0 0 0 3 +0 0 0 0 0 0 0 0 0 +0 7 0 0 0 0 0 0 0 +0 9 0 0 0 0 4 3 0 +2 0 0 0 5 7 0 6 0 +0 0 7 1 0 0 2 0 0 +Generated in: 1393.95s +*/ +/* +ONEINDIG? +0 2 0 0 0 0 0 0 0 +0 0 4 0 0 0 0 0 0 +6 0 1 8 0 0 0 0 0 +3 0 6 0 0 0 8 0 0 +0 0 0 0 3 0 2 4 0 +0 4 0 1 0 2 5 0 0 +7 0 0 2 0 0 1 6 8 +0 3 0 0 0 0 7 2 4 +8 0 0 0 0 6 0 0 5 +*/ + +/* +0 0 0 0 3 7 0 0 0 +0 0 8 0 0 2 5 0 3 +0 2 0 8 4 0 0 0 0 +0 0 6 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 7 +0 0 0 2 0 0 0 6 0 +0 0 0 0 0 0 6 0 5 +0 0 0 6 8 0 0 4 0 +4 0 0 1 0 0 0 0 0 +*/ + __attribute_maybe_unused__ int grid_empty[N][N] = { + {0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0} + }; + +} diff --git a/sudoku_n/.vscode/settings.json b/sudoku_n/.vscode/settings.json new file mode 100644 index 0000000..ad42b43 --- /dev/null +++ b/sudoku_n/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "files.associations": { + "sudoku.h": "c" + } +} \ No newline at end of file diff --git a/sudoku_n/Makefile b/sudoku_n/Makefile new file mode 100644 index 0000000..e5ce957 --- /dev/null +++ b/sudoku_n/Makefile @@ -0,0 +1,8 @@ + +all: build run + +build: + gcc sudoku3.c -o sudoku3 -Ofast -Werror -Wall -Wextra + +run: + ./sudoku3 diff --git a/sudoku_n/a.out b/sudoku_n/a.out new file mode 100755 index 0000000000000000000000000000000000000000..454655919599c0b6f0a310aa49c17e5b1f3b8e11 GIT binary patch literal 142864 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
fhK@mvV*)t9ma+;j6RL6M`!iwk2 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 z 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 _t^_N60{z4F6bf9QqZ|~LmxEh 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 +*/ + +#ifndef RTYPES_H +#define RTYPES_H +#ifdef _POSIX_C_SOURCE +#define _POSIX_C_SOURCE_TEMP _POSIX_C_SOURCE +#undef _POSIX_C_SOURCE +#endif +#ifndef _POSIX_C_SOURCE +#undef _POSIX_C_SOURCE +#define _POSIX_C_SOURCE 200112L +#endif +#include +#include // uint +#include +#include // ulong +#ifndef ulonglong +#define ulonglong unsigned long long +#endif +#ifndef uint +typedef unsigned int uint; +#endif +#ifndef byte +typedef unsigned char byte; +#endif +#ifdef _POSIX_C_SOURCE_TEMP +#undef _POSIX_C_SOURCE +#define _POSIX_C_SOURCE _POSIX_C_SOURCE_TEMP +#undef _POSIX_C_SOURCE_TEMP +#else +#undef _POSIX_C_SOURCE +#endif +#endif + +#ifndef NSOCK_H +#define NSOCK_H +#ifndef RMALLOC_H +#define RMALLOC_H +#ifndef RMALLOC_OVERRIDE +#define RMALLOC_OVERRIDE 1 +#endif +#ifdef _POSIX_C_SOURCE +#define _POSIX_C_SOURCE_TEMP _POSIX_C_SOURCE +#undef _POSIX_C_SOURCE +#endif +#ifndef _POSIX_C_SOURCE +#undef _POSIX_C_SOURCE +#define _POSIX_C_SOURCE 200112L +#endif +#ifndef ulonglong +#define ulonglong unsigned long long +#endif +#include +#include +#include +#include +#ifndef RTEMP_H +#define RTEMP_H +#include +#ifndef RTEMPC_SLOT_COUNT +#define RTEMPC_SLOT_COUNT 20 +#endif +#ifndef RTEMPC_SLOT_SIZE +#define RTEMPC_SLOT_SIZE 1024 * 64 * 128 +#endif + +bool _rtempc_initialized = 0; +pthread_mutex_t _rtempc_thread_lock; +bool rtempc_use_mutex = true; +byte _current_rtempc_slot = 1; +char _rtempc_buffer[RTEMPC_SLOT_COUNT][RTEMPC_SLOT_SIZE]; +char *rtempc(char *data) { + + if (rtempc_use_mutex) { + if (!_rtempc_initialized) { + _rtempc_initialized = true; + pthread_mutex_init(&_rtempc_thread_lock, NULL); + } + + pthread_mutex_lock(&_rtempc_thread_lock); + } + + uint current_rtempc_slot = _current_rtempc_slot; + _rtempc_buffer[current_rtempc_slot][0] = 0; + strcpy(_rtempc_buffer[current_rtempc_slot], data); + _current_rtempc_slot++; + if (_current_rtempc_slot == RTEMPC_SLOT_COUNT) { + _current_rtempc_slot = 0; + } + if (rtempc_use_mutex) + pthread_mutex_unlock(&_rtempc_thread_lock); + return _rtempc_buffer[current_rtempc_slot]; +} + +#define sstring(_pname, _psize) \ + static char _##_pname[_psize]; \ + _##_pname[0] = 0; \ + char *_pname = _##_pname; + +#define string(_pname, _psize) \ + char _##_pname[_psize]; \ + _##_pname[0] = 0; \ + char *_pname = _##_pname; + +#define sreset(_pname, _psize) _pname = _##_pname; + +#define sbuf(val) rtempc(val) +#endif +#ifdef _POSIX_C_SOURCE_TEMP +#undef _POSIX_C_SOURCE +#define _POSIX_C_SOURCE _POSIX_C_SOURCE_TEMP +#undef _POSIX_C_SOURCE_TEMP +#else +#undef _POSIX_C_SOURCE +#endif +ulonglong rmalloc_count = 0; +ulonglong rmalloc_alloc_count = 0; +ulonglong rmalloc_free_count = 0; +ulonglong rmalloc_total_bytes_allocated = 0; + +void *_rmalloc_prev_realloc_obj = NULL; +size_t _rmalloc_prev_realloc_obj_size = 0; + +void *rmalloc(size_t size) { + void *result; + while (!(result = malloc(size))) { + fprintf(stderr, "Warning: malloc failed, trying again.\n"); + } + rmalloc_count++; + rmalloc_alloc_count++; + rmalloc_total_bytes_allocated += size; + return result; +} +void *rcalloc(size_t count, size_t size) { + void *result; + while (!(result = calloc(count, size))) { + fprintf(stderr, "Warning: calloc failed, trying again.\n"); + } + rmalloc_alloc_count++; + rmalloc_count++; + rmalloc_total_bytes_allocated += count * size; + return result; +} +void *rrealloc(void *obj, size_t size) { + if (!obj) { + rmalloc_count++; + } + + rmalloc_alloc_count++; + if (obj == _rmalloc_prev_realloc_obj) { + rmalloc_total_bytes_allocated += size - _rmalloc_prev_realloc_obj_size; + _rmalloc_prev_realloc_obj_size = size - _rmalloc_prev_realloc_obj_size; + + } else { + _rmalloc_prev_realloc_obj_size = size; + } + void *result; + while (!(result = realloc(obj, size))) { + fprintf(stderr, "Warning: realloc failed, trying again.\n"); + } + _rmalloc_prev_realloc_obj = result; + + return result; +} + +char *rstrdup(const char *s) { + if (!s) + return NULL; + + char *result; + size_t size = strlen(s) + 1; + + result = rmalloc(size); + memcpy(result, s, size); + rmalloc_total_bytes_allocated += size; + return result; +} +void *rfree(void *obj) { + rmalloc_count--; + rmalloc_free_count++; + free(obj); + return NULL; +} + +#if RMALLOC_OVERRIDE +#define malloc rmalloc +#define calloc rcalloc +#define realloc rrealloc +#define free rfree +#define strdup rstrdup +#endif + +char *rmalloc_lld_format(ulonglong num) { + + char res[100]; + res[0] = 0; + sprintf(res, "%'lld", num); + char *resp = res; + while (*resp) { + if (*resp == ',') + *resp = '.'; + resp++; + } + return sbuf(res); +} + +char *rmalloc_bytes_format(int factor, ulonglong num) { + char *sizes[] = {"B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"}; + if (num > 1024) { + return rmalloc_bytes_format(factor + 1, num / 1024); + } + char res[100]; + sprintf(res, "%s %s", rmalloc_lld_format(num), sizes[factor]); + return sbuf(res); +} + +char *rmalloc_stats() { + static char res[200]; + res[0] = 0; + // int original_locale = localeconv(); + setlocale(LC_NUMERIC, "en_US.UTF-8"); + sprintf(res, "Memory usage: %s, %s (re)allocated, %s unqiue free'd, %s in use.", rmalloc_bytes_format(0, rmalloc_total_bytes_allocated), + rmalloc_lld_format(rmalloc_alloc_count), rmalloc_lld_format(rmalloc_free_count), + + rmalloc_lld_format(rmalloc_count)); + // setlocale(LC_NUMERIC, original_locale); + + setlocale(LC_NUMERIC, ""); + return res; +} + +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifndef RLIB_RIO +#define RLIB_RIO +#include +#include +#include +#include +#include +#include +#include +#include +#ifndef RSTRING_LIST_H +#define RSTRING_LIST_H +#include +#include +#include + +typedef struct rstring_list_t { + unsigned int size; + unsigned int count; + char **strings; +} rstring_list_t; + +rstring_list_t *rstring_list_new() { + rstring_list_t *rsl = (rstring_list_t *)malloc(sizeof(rstring_list_t)); + memset(rsl, 0, sizeof(rstring_list_t)); + return rsl; +} + +void rstring_list_free(rstring_list_t *rsl) { + for (unsigned int i = 0; i < rsl->size; i++) { + free(rsl->strings[i]); + } + if (rsl->strings) + free(rsl->strings); + free(rsl); + rsl = NULL; +} + +void rstring_list_add(rstring_list_t *rsl, char *str) { + if (rsl->count == rsl->size) { + rsl->size++; + + rsl->strings = (char **)realloc(rsl->strings, sizeof(char *) * rsl->size); + } + rsl->strings[rsl->count] = strdup(str); + rsl->count++; +} +bool rstring_list_contains(rstring_list_t *rsl, char *str) { + for (unsigned int i = 0; i < rsl->count; i++) { + if (!strcmp(rsl->strings[i], str)) + return true; + } + return false; +} + +#endif + +bool rfile_exists(char *path) { + struct stat s; + return !stat(path, &s); +} + +void rjoin_path(char *p1, char *p2, char *output) { + output[0] = 0; + strcpy(output, p1); + + if (output[strlen(output) - 1] != '/') { + char slash[] = "/"; + strcat(output, slash); + } + if (p2[0] == '/') { + p2++; + } + strcat(output, p2); +} + +int risprivatedir(const char *path) { + struct stat statbuf; + + if (stat(path, &statbuf) != 0) { + perror("stat"); + return -1; + } + + if (!S_ISDIR(statbuf.st_mode)) { + return -2; + } + + if ((statbuf.st_mode & (S_IRWXU | S_IRWXG | S_IRWXO)) == S_IRWXU) { + return 1; // Private (owner has all permissions, others have none) + } + + return 0; +} +bool risdir(const char *path) { return !risprivatedir(path); } + +void rforfile(char *path, void callback(char *)) { + if (!rfile_exists(path)) + return; + DIR *dir = opendir(path); + struct dirent *d; + while ((d = readdir(dir)) != NULL) { + if (!d) + break; + + if ((d->d_name[0] == '.' && strlen(d->d_name) == 1) || d->d_name[1] == '.') { + continue; + } + char full_path[4096]; + rjoin_path(path, d->d_name, full_path); + + if (risdir(full_path)) { + callback(full_path); + rforfile(full_path, callback); + } else { + callback(full_path); + } + } + closedir(dir); +} + +bool rfd_wait(int fd, int ms) { + + fd_set read_fds; + struct timeval timeout; + + FD_ZERO(&read_fds); + FD_SET(fd, &read_fds); + + timeout.tv_sec = 0; + timeout.tv_usec = 1000 * ms; + + int ret = select(fd + 1, &read_fds, NULL, NULL, &timeout); + return ret > 0 && FD_ISSET(fd, &read_fds); +} + +bool rfd_wait_forever(int fd) { + while ((!rfd_wait(fd, 10))) { + } + return true; +} + +size_t rfile_size(char *path) { + struct stat s; + stat(path, &s); + return s.st_size; +} + +size_t rfile_readb(char *path, void *data, size_t size) { + FILE *fd = fopen(path, "r"); + if (!fd) { + return 0; + } + size_t bytes_read = fread(data, sizeof(char), size, fd); + + fclose(fd); + ((char *)data)[bytes_read] = 0; + return bytes_read; +} + +#endif + +int *nsock_socks = NULL; +int *nsock_readable = NULL; +void **nsock_data = NULL; +int nsock_server_fd = 0; +int nsock_max_socket_fd = 0; + +typedef enum nsock_type_t { NSOCK_NONE = 0, NSOCK_SERVER, NSOCK_CLIENT, NSOCK_UPSTREAM } nsock_type_t; + +typedef struct nsock_it { + int fd; + int *upstreams; + bool connected; + bool downstream; + unsigned int upstream_count; + nsock_type_t type; +} nsock_t; + +nsock_t **nsocks = NULL; +int nsocks_count = 0; + +void (*nsock_on_connect)(int fd) = NULL; +void (*nsock_on_data)(int fd) = NULL; +void (*nsock_on_close)(int fd) = NULL; +void nsock_on_before_data(int fd); + +nsock_t *nsock_get(int fd) { + if (nsock_socks[fd] == 0) { + return NULL; + } + if (fd >= nsocks_count || nsocks[fd] == NULL) { + if (fd >= nsocks_count) { + nsocks_count = fd + 1; + nsocks = (nsock_t **)realloc(nsocks, sizeof(nsock_t *) * sizeof(nsock_t) * (nsocks_count)); + nsocks[fd] = (nsock_t *)calloc(1, sizeof(nsock_t)); + } + nsocks[fd]->upstreams = NULL; + nsocks[fd]->fd = fd; + nsocks[fd]->connected = false; + nsocks[fd]->downstream = false; + nsocks[fd]->upstream_count = 0; + nsocks[fd]->type = NSOCK_CLIENT; + return nsocks[fd]; + } + return nsocks[fd]; +} + +void nsock_close(int fd) { + if (nsock_on_close) + nsock_on_close(fd); + nsock_t *sock = nsock_get(fd); + if (sock && sock->connected) { + sock->connected = false; + for (unsigned int i = 0; i < sock->upstream_count; i++) { + nsock_t *upstream = nsock_get(sock->upstreams[i]); + if (upstream->connected) + nsock_close(sock->upstreams[i]); + sock->upstreams[i] = 0; + } + if (sock->upstream_count) { + free(sock->upstreams); + } + sock->upstream_count = 0; + } + nsock_socks[fd] = 0; + close(fd); +} + +nsock_t *nsock_create(int fd, nsock_type_t type) { + if (fd <= 0) + return NULL; + nsock_socks[fd] = fd; + nsock_t *sock = nsock_get(fd); + sock->connected = true; + sock->downstream = false; + sock->type = type; + return sock; +} + +int *nsock_init(int socket_count) { + if (nsock_socks) { + return nsock_socks; + } + nsock_socks = (int *)calloc(1, sizeof(int) * sizeof(int *) * socket_count + 1); + if (nsock_data) { + free(nsock_data); + nsock_data = NULL; + } + nsock_data = (void **)malloc(sizeof(void **) * socket_count + 1); + nsock_socks[socket_count] = -1; + return nsock_socks; +} + +void nsock_free() { + if (nsock_socks) + free(nsock_socks); + if (nsock_readable) + free(nsock_readable); + nsock_server_fd = 0; + nsock_max_socket_fd = 0; + if (nsock_data) { + exit(1); + } +} + +void nsock_add_upstream(int source, int target, bool downstream) { + if (!nsock_socks[target]) + return; + if (!nsock_socks[source]) + return; + nsock_t *sock = nsock_get(source); + nsock_t *sock_target = nsock_get(target); + sock_target->type = NSOCK_UPSTREAM; + sock->upstreams = (int *)realloc(sock->upstreams, sizeof(int) * (sock->upstream_count + 1)); + sock->downstream = downstream; + sock->upstreams[sock->upstream_count] = target; + sock->upstream_count++; +} + +void *nsock_get_data(int socket) { return nsock_data[socket]; } +void nsock_set_data(int socket, void *data) { nsock_data[socket] = data; } + +int nsock_connect(const char *host, unsigned int port) { + char port_str[10] = {0}; + sprintf(port_str, "%d", port); + int status; + int socket_fd = 0; + struct addrinfo hints; + struct addrinfo *res; + struct addrinfo *p; + if ((socket_fd = socket(AF_INET, SOCK_STREAM, 0)) < 0) { + return false; + } + memset(&hints, 0, sizeof(hints)); + hints.ai_family = AF_INET; + hints.ai_socktype = SOCK_STREAM; + if ((status = getaddrinfo(host, port_str, &hints, &res)) != 0) { + return 0; + } + for (p = res; p != NULL; p = p->ai_next) { + if ((socket_fd = socket(p->ai_family, p->ai_socktype, p->ai_protocol)) == -1) { + continue; + } + if (connect(socket_fd, p->ai_addr, p->ai_addrlen) == -1) { + close(socket_fd); + continue; + } + break; + } + if (p == NULL) { + freeaddrinfo(res); + return 0; + } + freeaddrinfo(res); + if (socket_fd) { + if (nsock_socks == NULL) { + nsock_init(2048); + } + nsock_socks[socket_fd] = socket_fd; + nsock_t *sock = nsock_create(socket_fd, NSOCK_CLIENT); + sock->connected = true; + } + return socket_fd; +} + +void nsock_listen(int port) { + int server_fd; + struct sockaddr_in address; + if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) { + perror("Socket failed"); + exit(EXIT_FAILURE); + } + int opt = 1; + if (setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt))) { + perror("setsockopt failed"); + close(server_fd); + exit(EXIT_FAILURE); + } + address.sin_family = AF_INET; + address.sin_addr.s_addr = INADDR_ANY; + address.sin_port = htons(port); + if (bind(server_fd, (struct sockaddr *)&address, sizeof(address)) < 0) { + perror("Bind failed"); + close(server_fd); + exit(EXIT_FAILURE); + } + if (listen(server_fd, 8096) < 0) { + perror("Listen failed"); + close(server_fd); + exit(EXIT_FAILURE); + } + nsock_server_fd = server_fd; +} + +int *nsock_select(suseconds_t timeout) { + struct timeval tv; + tv.tv_sec = 0; + tv.tv_usec = timeout; + int server_fd = nsock_server_fd; + fd_set rfds; + FD_ZERO(&rfds); + FD_SET(server_fd, &rfds); + int *socks = nsock_socks; + fd_set efds; + FD_ZERO(&efds); + nsock_max_socket_fd = server_fd; + for (int i = 0; socks[i] != -1; i++) { + if (i == server_fd) + continue; + ; + if (!socks[i]) + continue; + if (socks[i] > nsock_max_socket_fd) { + nsock_max_socket_fd = socks[i]; + } + FD_SET(socks[i], &rfds); + FD_SET(socks[i], &efds); + } + int activity = select(nsock_max_socket_fd + 1, &rfds, NULL, &efds, timeout == 0 ? NULL : &tv); + if ((activity < 0) && (errno != EINTR)) { + perror("Select error\n"); + return NULL; + } else if (activity == 0) { + return NULL; + } + if (FD_ISSET(server_fd, &rfds)) { + struct sockaddr_in address; + int addrlen = sizeof(address); + address.sin_family = AF_INET; + address.sin_addr.s_addr = INADDR_ANY; + int new_socket = 0; + if ((new_socket = accept(server_fd, (struct sockaddr *)&address, (socklen_t *)&addrlen)) < 0) { + perror("Accept failed"); + } else { + nsock_socks[new_socket] = new_socket; + nsock_create(new_socket, NSOCK_CLIENT); + if (nsock_on_connect) + nsock_on_connect(new_socket); + if (new_socket > nsock_max_socket_fd) + nsock_max_socket_fd = new_socket; + } + } + if (nsock_readable) { + free(nsock_readable); + } + nsock_readable = (int *)calloc(1, sizeof(int *) + sizeof(int) * (nsock_max_socket_fd + 2)); + nsock_readable[nsock_max_socket_fd + 1] = -1; + nsock_readable[0] = 0; + int readable_count = 0; + for (int i = 0; i < nsock_max_socket_fd + 1; i++) { + nsock_t *sock = nsock_get(i); + if (!sock) + continue; + if (FD_ISSET(i, &efds)) { + nsock_close(nsock_socks[i]); + nsock_socks[i] = 0; + nsock_readable[i] = 0; + } else if (FD_ISSET(i, &rfds) && i != server_fd) { + nsock_readable[i] = i; + readable_count++; + nsock_on_before_data(i); + } else { + nsock_readable[i] = 0; + sock->connected = false; + } + } + return nsock_readable; +} + +unsigned char *nsock_read(int fd, int length) { + if (!nsock_socks[fd]) + return NULL; + unsigned char *buffer = (unsigned char *)malloc(length + 1); + int bytes_read = read(fd, buffer, length); + if (bytes_read <= 0) { + nsock_close(fd); + return NULL; + } + buffer[bytes_read] = 0; + return buffer; +} + +unsigned char *nsock_read_all(int fd, int length) { + if (!nsock_socks[fd]) + return NULL; + unsigned char *buffer = (unsigned char *)malloc(length + 1); + int bytes_read = 0; + while (bytes_read < length) { + int bytes_chunk = read(fd, buffer + bytes_read, length - bytes_read); + if (bytes_chunk <= 0) { + nsock_close(fd); + return NULL; + } + bytes_read += bytes_chunk; + } + buffer[bytes_read] = 0; + return buffer; +} + +int nsock_write_all(int fd, unsigned char *data, int length) { + if (!nsock_socks[fd]) + return 0; + int bytes_written = 0; + while (bytes_written < length) { + int bytes_chunk = write(fd, data + bytes_written, length - bytes_written); + if (bytes_chunk <= 0) { + nsock_close(fd); + return 0; + } + bytes_written += bytes_chunk; + } + return bytes_written; +} + +int nsock_execute_upstream(int source, size_t buffer_size) { + int result = 0; + nsock_t *sock = nsock_get(source); + unsigned char data[buffer_size]; + memset(data, 0, buffer_size); + int bytes_read = read(source, data, buffer_size); + if (bytes_read <= 0) { + nsock_close(source); + return 0; + } + bool downstreamed = false; + for (unsigned int i = 0; i < sock->upstream_count; i++) { + if (!nsock_socks[sock->upstreams[i]]) + continue; + int bytes_sent = nsock_write_all(sock->upstreams[i], data, bytes_read); + if (bytes_sent <= 0) { + nsock_close(sock->upstreams[i]); + continue; + } + if (sock->downstream && downstreamed == false) { + downstreamed = true; + unsigned char data[4096]; + memset(data, 0, 4096); + int bytes_read = read(sock->upstreams[i], data, 4096); + if (bytes_read <= 0) { + nsock_close(source); + return 0; + } + int bytes_sent = nsock_write_all(sock->fd, data, bytes_read); + if (bytes_sent <= 0) { + nsock_close(sock->upstreams[i]); + return 0; + } + } + result++; + } + return result; +} + +void nsock_on_before_data(int fd) { + if (!nsock_socks[fd]) + return; + nsock_t *sock = nsock_get(fd); + if (sock->upstream_count) { + int upstreamed_to_count = nsock_execute_upstream(fd, 4096); + if (!upstreamed_to_count) { + nsock_close(fd); + } + return; + } else if (sock->type == NSOCK_UPSTREAM) { + while (rfd_wait(sock->fd, 0)) { + unsigned char *data = nsock_read(fd, 4096); + (void)data; + } + } + if (nsock_on_data) + nsock_on_data(fd); +} + +void nsock(int port, void (*on_connect)(int fd), void (*on_data)(int fd), void (*on_close)(int fd)) { + nsock_init(2048); + nsock_listen(port); + nsock_on_connect = on_connect; + nsock_on_data = on_data; + nsock_on_close = on_close; + int serve_in_terminal = nsock_on_connect == NULL && nsock_on_data == NULL && nsock_on_close == NULL; + while (1) { + int *readable = nsock_select(0); + if (!serve_in_terminal) + continue; + if (!readable) + continue; + for (int i = 0; readable[i] != -1; i++) { + if (!readable[i]) + continue; + char buffer[1024] = {0}; + int bytes_read = read(readable[i], buffer, 1); + buffer[bytes_read] = 0; + if (bytes_read <= 0) { + nsock_close(readable[i]); + continue; + } + if (write(readable[i], buffer, bytes_read) <= 0) { + nsock_close(readable[i]); + continue; + } + } + } +} +#endif + +#ifndef UUID_H +#define UUID_H +#include +#include +#include +#include + +typedef struct { + unsigned char bytes[16]; +} UUID; + +void generate_random_bytes(unsigned char *bytes, size_t len) { + for (size_t i = 0; i < len; i++) { + bytes[i] = rand() % 256; + } +} + +UUID generate_uuid4(void) { + UUID uuid; + + generate_random_bytes(uuid.bytes, 16); + + uuid.bytes[6] &= 0x0f; + uuid.bytes[6] |= 0x40; + + uuid.bytes[8] &= 0x3f; + uuid.bytes[8] |= 0x80; + + return uuid; +} + +void uuid_to_string(UUID uuid, char *str) { + sprintf(str, "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x", uuid.bytes[0], uuid.bytes[1], uuid.bytes[2], + uuid.bytes[3], uuid.bytes[4], uuid.bytes[5], uuid.bytes[6], uuid.bytes[7], uuid.bytes[8], uuid.bytes[9], uuid.bytes[10], + uuid.bytes[11], uuid.bytes[12], uuid.bytes[13], uuid.bytes[14], uuid.bytes[15]); +} + +char *uuid4() { + srand(time(NULL)); + UUID uuid = generate_uuid4(); + char str[37]; + uuid_to_string(uuid, str); + return sbuf(str); +} +#endif +#ifndef RNET_H +#define RNET_H +#ifdef _POSIX_C_SOURCE +#define _POSIX_C_SOURCE_TEMP _POSIX_C_SOURCE +#undef _POSIX_C_SOURCE +#endif +#ifndef _POSIX_C_SOURCE +#undef _POSIX_C_SOURCE +#define _POSIX_C_SOURCE 200112L +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#ifdef _POSIX_C_SOURCE_TEMP +#undef _POSIX_C_SOURCE +#define _POSIX_C_SOURCE _POSIX_C_SOURCE_TEMP +#undef _POSIX_C_SOURCE_TEMP +#else +#undef _POSIX_C_SOURCE +#endif +#define NET_SOCKET_MAX_CONNECTIONS 50000 + +typedef struct rnet_socket_t { + int fd; + char name[50]; + void *data; + size_t bytes_received; + size_t bytes_sent; + bool connected; + void (*on_read)(struct rnet_socket_t *); + void (*on_close)(struct rnet_socket_t *); + void (*on_connect)(struct rnet_socket_t *); +} rnet_socket_t; + +typedef struct rnet_select_result_t { + int server_fd; + rnet_socket_t **sockets; + unsigned int socket_count; +} rnet_select_result_t; + +typedef struct rnet_server_t { + int socket_fd; + rnet_socket_t **sockets; + unsigned int socket_count; + unsigned int port; + unsigned int backlog; + rnet_select_result_t *select_result; + int max_fd; + void (*on_connect)(rnet_socket_t *socket); + void (*on_close)(rnet_socket_t *socket); + void (*on_read)(rnet_socket_t *socket); +} rnet_server_t; + +void rnet_select_result_free(rnet_select_result_t *result); +int net_socket_accept(int server_fd); +int net_socket_connect(const char *, unsigned int); +int net_socket_init(); +rnet_server_t *net_socket_serve(unsigned int port, unsigned int backlog); +rnet_select_result_t *net_socket_select(rnet_server_t *server); +rnet_socket_t *net_socket_wait(rnet_socket_t *socket_fd); +bool net_set_non_blocking(int sock); +bool net_socket_bind(int sock, unsigned int port); +bool net_socket_listen(int sock, unsigned int backlog); +char *net_socket_name(int sock); +size_t net_socket_write(rnet_socket_t *, unsigned char *, size_t); +rnet_socket_t *get_net_socket_by_fd(int); +unsigned char *net_socket_read(rnet_socket_t *, unsigned int buff_size); +void _net_socket_close(int sock); +void net_socket_close(rnet_socket_t *sock); + +rnet_server_t *rnet_server_new(int socket_fd, unsigned int port, unsigned int backlog) { + rnet_server_t *server = malloc(sizeof(rnet_server_t)); + server->socket_fd = socket_fd; + server->sockets = NULL; + server->socket_count = 0; + server->port = port; + server->backlog = backlog; + server->max_fd = -1; + server->select_result = NULL; + server->on_connect = NULL; + server->on_close = NULL; + server->on_read = NULL; + return server; +} + +rnet_server_t *rnet_server_add_socket(rnet_server_t *server, rnet_socket_t *sock) { + server->sockets = realloc(server->sockets, sizeof(rnet_socket_t *) * (server->socket_count + 1)); + server->sockets[server->socket_count] = sock; + server->socket_count++; + sock->on_read = server->on_read; + sock->on_connect = server->on_connect; + sock->on_close = server->on_close; + sock->connected = true; + return server; +} + +rnet_socket_t sockets[NET_SOCKET_MAX_CONNECTIONS] = {0}; +unsigned long sockets_connected = 0; +int net_socket_max_fd = 0; +unsigned long sockets_total = 0; +unsigned long sockets_disconnected = 0; +unsigned long sockets_concurrent_record = 0; +unsigned long sockets_errors = 0; + +bool net_set_non_blocking(int sock) { + int flags = fcntl(sock, F_GETFL, 0); + if (flags < 0) { + perror("fcntl"); + return false; + } + + if (fcntl(sock, F_SETFL, flags | O_NONBLOCK) < 0) { + perror("fcntl"); + return false; + } + + return true; +} + +int net_socket_init() { + int socket_fd = -1; + memset(sockets, 0, sizeof(sockets)); + int opt = 1; + if ((socket_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) { + perror("Socket failed.\n"); + return false; + } + if (setsockopt(socket_fd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt))) { + perror("Setsockopt failed.\n"); + close(socket_fd); + return false; + } + net_set_non_blocking(socket_fd); + return socket_fd; +} + +char *net_socket_name(int fd) { + rnet_socket_t *rnet_socket = get_net_socket_by_fd(fd); + if (rnet_socket) { + return rnet_socket->name; + ; + } + + // If socket disconnected or is no client from server + return NULL; +} + +bool net_socket_bind(int socket_fd, unsigned int port) { + struct sockaddr_in address; + + address.sin_family = AF_INET; // IPv4 + address.sin_addr.s_addr = INADDR_ANY; // Bind to any available address + address.sin_port = htons(port); // Convert port to network byte order + + if (bind(socket_fd, (struct sockaddr *)&address, sizeof(address)) < 0) { + perror("Bind failed"); + close(socket_fd); + return false; + } + return true; +} + +int net_socket_connect(const char *host, unsigned int port) { + char port_str[10] = {0}; + sprintf(port_str, "%d", port); + int status; + int socket_fd = -1; + struct addrinfo hints; + struct addrinfo *res; + struct addrinfo *p; + if ((socket_fd = socket(AF_INET, SOCK_STREAM, 0)) < 0) { + return false; + } + + memset(&hints, 0, sizeof(hints)); + hints.ai_family = AF_INET; + hints.ai_socktype = SOCK_STREAM; + + if ((status = getaddrinfo(host, port_str, &hints, &res)) != 0) { + return -1; + } + + for (p = res; p != NULL; p = p->ai_next) { + if ((socket_fd = socket(p->ai_family, p->ai_socktype, p->ai_protocol)) == -1) { + continue; + } + + if (connect(socket_fd, p->ai_addr, p->ai_addrlen) == -1) { + close(socket_fd); + continue; + } + + break; + } + + if (p == NULL) { + freeaddrinfo(res); + return -1; + } + + freeaddrinfo(res); + return socket_fd; +} + +bool net_socket_listen(int socket_fd, unsigned int backlog) { + if (listen(socket_fd, backlog) < 0) { // '3' is the backlog size + perror("Listen failed"); + close(socket_fd); + return false; + } + return true; +} + +rnet_server_t *net_socket_serve(unsigned int port, unsigned int backlog) { + signal(SIGPIPE, SIG_IGN); + int socket_fd = net_socket_init(); + net_socket_bind(socket_fd, port); + net_socket_listen(socket_fd, backlog); + return rnet_server_new(socket_fd, port, backlog); +} + +int net_socket_accept(int net_socket_server_fd) { + struct sockaddr_in address; + int addrlen = sizeof(address); + int new_socket = -1; + if ((new_socket = accept(net_socket_server_fd, (struct sockaddr *)&address, (socklen_t *)&addrlen)) < 0) { + close(new_socket); + return -1; + } else { + + return new_socket; + } +} +/* +static void net_socket_stats(WrenVM *vm) +{ + + wrenSetSlotNewList(vm, 0); + + wrenSetSlotString(vm, 1, "sockets_total"); + wrenInsertInList(vm, 0, -1, 1); + + wrenSetSlotDouble(vm, 1, (double)sockets_total); + wrenInsertInList(vm, 0, -1, 1); + + wrenSetSlotString(vm, 1, "sockets_concurrent_record"); + wrenInsertInList(vm, 0, -1, 1); + + wrenSetSlotDouble(vm, 1, (double)sockets_concurrent_record); + wrenInsertInList(vm, 0, -1, 1); + + wrenSetSlotString(vm, 1, "sockets_connected"); + wrenInsertInList(vm, 0, -1, 1); + + wrenSetSlotDouble(vm, 1, (double)sockets_connected); + wrenInsertInList(vm, 0, -1, 1); + + wrenSetSlotString(vm, 1, "sockets_disconnected"); + wrenInsertInList(vm, 0, -1, 1); + + wrenSetSlotDouble(vm, 1, (double)sockets_disconnected); + wrenInsertInList(vm, 0, -1, 1); +}*/ + +size_t net_socket_write(rnet_socket_t *sock, unsigned char *message, size_t size) { + ssize_t sent_total = 0; + ssize_t sent = 0; + ssize_t to_send = size; + while ((sent = send(sock->fd, message, to_send, 0))) { + if (sent == -1) { + sockets_errors++; + net_socket_close(sock); + break; + } + if (sent == 0) { + printf("EDGE CASE?\n"); + exit(1); + sockets_errors++; + net_socket_close(sock); + break; + } + sent_total += sent; + if (sent_total == to_send) + break; + } + return sent_total; +} + +unsigned char *net_socket_read(rnet_socket_t *sock, unsigned int buff_size) { + if (buff_size > 1024 * 1024 + 1) { + perror("Buffer too big. Maximum is 1024*1024.\n"); + exit(1); + } + static unsigned char buffer[1024 * 1024]; + buffer[0] = 0; + ssize_t received = recv(sock->fd, buffer, buff_size, 0); + if (received <= 0) { + buffer[0] = 0; + net_socket_close(sock); + if (received < 0) { + sockets_errors++; + return NULL; + } + } + buffer[received + 1] = 0; + sock->bytes_received = received; + return buffer; +} + +rnet_socket_t *net_socket_wait(rnet_socket_t *sock) { + if (!sock) + return NULL; + if (sock->fd == -1) + return NULL; + fd_set read_fds; + FD_ZERO(&read_fds); + FD_SET(sock->fd, &read_fds); + + int max_socket_fd = sock->fd; + int activity = select(max_socket_fd + 1, &read_fds, NULL, NULL, NULL); + if ((activity < 0) && (errno != EINTR)) { + // perror("Select error"); + net_socket_close(sock); + return NULL; + } + if (FD_ISSET(sock->fd, &read_fds)) { + return sock; + } + + return NULL; +} + +void rnet_safe_str(char *str, size_t length) { + if (!str || !length || !*str) + return; + for (unsigned int i = 0; i < length; i++) { + if (str[i] < 32 || str[i] > 126) + if (str[i] != 0) + str[i] = '.'; + } + str[length] = 0; +} + +rnet_select_result_t *rnet_new_socket_select_result(int socket_fd) { + rnet_select_result_t *result = (rnet_select_result_t *)malloc(sizeof(rnet_select_result_t)); + memset(result, 0, sizeof(rnet_select_result_t)); + result->server_fd = socket_fd; + result->socket_count = 0; + result->sockets = NULL; + return result; +} + +void rnet_select_result_add(rnet_select_result_t *result, rnet_socket_t *sock) { + result->sockets = realloc(result->sockets, sizeof(rnet_socket_t *) * (result->socket_count + 1)); + result->sockets[result->socket_count] = sock; + result->socket_count++; +} +void rnet_select_result_free(rnet_select_result_t *result) { free(result); } +rnet_select_result_t *net_socket_select(rnet_server_t *server) { + fd_set read_fds; + FD_ZERO(&read_fds); + FD_SET(server->socket_fd, &read_fds); + + server->max_fd = server->socket_fd; + int socket_fd = -1; + for (unsigned int i = 0; i < server->socket_count; i++) { + socket_fd = server->sockets[i]->fd; + if (!server->sockets[i]->connected) { + continue; + } + if (socket_fd > 0) { + FD_SET(socket_fd, &read_fds); + if (socket_fd > server->max_fd) { + server->max_fd = socket_fd; + } + } + } + int new_socket = -1; + struct sockaddr_in address; + int addrlen = sizeof(struct sockaddr_in); + int activity = select(server->max_fd + 1, &read_fds, NULL, NULL, NULL); + if ((activity < 0) && (errno != EINTR)) { + perror("Select error\n"); + return NULL; + } + if (FD_ISSET(server->socket_fd, &read_fds)) { + if ((new_socket = accept(server->socket_fd, (struct sockaddr *)&address, (socklen_t *)&addrlen)) < 0) { + perror("Accept failed\n"); + return NULL; + } + + // net_set_non_blocking(new_socket); + char name[50] = {0}; + sprintf(name, "fd:%.4d:ip:%12s:port:%.6d", new_socket, inet_ntoa(address.sin_addr), ntohs(address.sin_port)); + rnet_socket_t *sock_obj = NULL; + for (unsigned int i = 0; i < server->socket_count; i++) { + if (server->sockets && server->sockets[i]->fd == -1) { + sock_obj = server->sockets[i]; + } + } + if (!sock_obj) { + sock_obj = (rnet_socket_t *)malloc(sizeof(rnet_socket_t)); + rnet_server_add_socket(server, sock_obj); + } + sock_obj->fd = new_socket; + strcpy(sock_obj->name, name); + sockets_connected++; + sockets_total++; + sockets_concurrent_record = sockets_connected > sockets_concurrent_record ? sockets_connected : sockets_concurrent_record; + if (new_socket > net_socket_max_fd) { + net_socket_max_fd = new_socket; + } + sock_obj->connected = true; + sock_obj->on_connect(sock_obj); + } + rnet_select_result_t *result = rnet_new_socket_select_result(server->socket_fd); + unsigned int readable_count = 0; + for (unsigned int i = 0; i < server->socket_count; i++) { + if (server->sockets[i]->fd == -1) + continue; + if (FD_ISSET(server->sockets[i]->fd, &read_fds)) { + rnet_select_result_add(result, server->sockets[i]); + readable_count++; + if (server->sockets[i]->on_read) { + server->sockets[i]->on_read(server->sockets[i]); + } + } + } + if (server->select_result) { + rnet_select_result_free(server->select_result); + server->select_result = NULL; + } + if (readable_count == 0) + rnet_select_result_free(result); + return readable_count ? result : NULL; +} + +rnet_socket_t *get_net_socket_by_fd(int sock) { + for (int i = 0; i < net_socket_max_fd; i++) { + if (sockets[i].fd == sock) { + return &sockets[i]; + } + } + return NULL; +} + +void _net_socket_close(int sock) { + if (sock > 0) { + sockets_connected--; + sockets_disconnected++; + if (sock > 0) { + if (close(sock) == -1) { + perror("Error closing socket.\n"); + } + } + } +} + +void net_socket_close(rnet_socket_t *sock) { + sock->connected = false; + if (sock->on_close) + sock->on_close(sock); + _net_socket_close(sock->fd); + sock->fd = -1; +} +#undef _POSIX_C_SOURCE +#endif + +#include +#ifndef RLIB_RARGS_H +#define RLIB_RARGS_H +#include +#include +#include + +bool rargs_isset(int argc, char *argv[], char *key) { + + for (int i = 0; i < argc; i++) { + if (!strcmp(argv[i], key)) { + return true; + } + } + return false; +} + +char *rargs_get_option_string(int argc, char *argv[], char *key, const char *def) { + + for (int i = 0; i < argc; i++) { + if (!strcmp(argv[i], key)) { + if (i < argc - 1) { + return argv[i + 1]; + } + } + } + return (char *)def; +} + +int rargs_get_option_int(int argc, char *argv[], char *key, int def) { + + for (int i = 0; i < argc; i++) { + if (!strcmp(argv[i], key)) { + if (i < argc - 1) { + return atoi(argv[i + 1]); + } + } + } + return def; +} + +bool rargs_get_option_bool(int argc, char *argv[], char *key, bool def) { + + for (int i = 0; i < argc; i++) { + if (!strcmp(argv[i], key)) { + if (i < argc - 1) { + if (!strcmp(argv[i + 1], "false")) + return false; + if (!strcmp(argv[i + 1], "0")) + return false; + return true; + } + } + } + + return def; +} +#endif +#ifndef RCAT_H +#define RCAT_H +#include +#include + +void rcat(char *filename) { + FILE *f = fopen(filename, "rb"); + if (!f) { + printf("rcat: couldn't open \"%s\" for read.\n", filename); + return; + } + unsigned char c; + while ((c = fgetc(f)) && !feof(f)) { + printf("%c", c); + } + fclose(f); + fflush(stdout); +} + +int rcat_main(int argc, char *argv[]) { + if (argc < 2) { + printf("Usage: [filename]\n"); + return 1; + } + rcat(argv[1]); + return 0; +} + +#endif + +#ifndef RLIZA_H +#define RLIZA_H +#ifndef RBUFFER_H +#define RBUFFER_H +#include +#include +#include +#include +#include +typedef struct rbuffer_t { + unsigned char *data; + unsigned char *_data; + size_t size; + size_t pos; + bool eof; +} rbuffer_t; + +rbuffer_t *rbuffer_new(unsigned char *data, size_t size); +void rbuffer_free(rbuffer_t *rfb); +void rbuffer_reset(rbuffer_t *rfb); +void rbuffer_write(rbuffer_t *rfb, const unsigned char *data, size_t size); +size_t rbuffer_push(rbuffer_t *rfb, unsigned char); +unsigned char rbuffer_pop(rbuffer_t *rfb); +unsigned char *rbuffer_expect(rbuffer_t *rfb, char *options, char *ignore); +void rbuffer_set(rbuffer_t *rfb, const unsigned char *data, size_t size); + +void rbuffer_set(rbuffer_t *rfb, const unsigned char *data, size_t size) { + if (rfb->_data) { + free(rfb->_data); + rfb->_data = NULL; + rfb->data = NULL; + rfb->eof = true; + } + if (size) { + rfb->_data = (unsigned char *)malloc(size); + memcpy(rfb->_data, data, size); + rfb->data = rfb->_data; + rfb->eof = false; + } + rfb->size = size; + rfb->pos = 0; +} + +rbuffer_t *rbuffer_new(unsigned char *data, size_t size) { + rbuffer_t *rfb = (rbuffer_t *)malloc(sizeof(rbuffer_t)); + if (size) { + rfb->_data = (unsigned char *)malloc(size); + memcpy(rfb->_data, data, size); + rfb->eof = false; + } else { + rfb->_data = NULL; + rfb->eof = true; + } + rfb->size = size; + rfb->pos = 0; + rfb->data = rfb->_data; + return rfb; +} +void rbuffer_free(rbuffer_t *rfb) { + if (rfb->_data) + free(rfb->_data); + free(rfb); +} + +size_t rbuffer_push(rbuffer_t *rfb, unsigned char c) { + if (rfb->pos < rfb->size) { + rfb->_data[rfb->pos++] = c; + return 1; + } + rfb->_data = realloc(rfb->_data, rfb->size ? rfb->size + 1 : rfb->size + 2); + rfb->_data[rfb->pos++] = c; + rfb->size++; + return rfb->pos; +} +void rbuffer_write(rbuffer_t *rfb, const unsigned char *data, size_t size) { + unsigned char *data_ptr = (unsigned char *)data; + for (size_t i = 0; i < size; i++) { + rbuffer_push(rfb, data_ptr[i]); + } +} + +unsigned char rbuffer_peek(rbuffer_t *rfb) { + unsigned char result = EOF; + if (rfb->pos != rfb->size) { + result = rfb->_data[rfb->pos]; + return result; + } + rfb->eof = true; + return EOF; +} +unsigned char rbuffer_pop(rbuffer_t *rfb) { + unsigned char result = EOF; + if (rfb->pos <= rfb->size) { + result = rfb->_data[rfb->pos]; + rfb->pos++; + rfb->data++; + if (rfb->pos == rfb->size) { + rfb->eof = true; + } + return result; + } + rfb->eof = true; + return result; +} +void rbuffer_reset(rbuffer_t *rfb) { + rfb->data = rfb->_data; + rfb->pos = 0; +} + +unsigned char ustrncmp(const unsigned char *s1, const unsigned char *s2, size_t n) { + return strncmp((char *)s1, (char *)s2, n); + while (n && *s1 == *s2) { + n--; + s1++; + s2++; + } + return *s1 != *s2; +} +size_t ustrlen(const unsigned char *s) { return strlen((char *)s); } + +unsigned char *rbuffer_to_string(rbuffer_t *rfb) { + unsigned char *result = rfb->_data; + rfb->_data = NULL; + rfb->data = NULL; + rbuffer_free(rfb); + return result; +} + +unsigned char *rbuffer_match_option(rbuffer_t *rfb, char *options) { + char *option = NULL; + char options_cpy[1024] = {0}; + strcpy(options_cpy, options); + char *memory = options_cpy; + while ((option = strtok_r(option == NULL ? memory : NULL, "|", &memory)) != NULL) { + + size_t option_length = strlen(option); + if (option_length > rfb->size - rfb->pos) { + continue; + } + if (!strcmp(option, "\\d") && *rfb->data >= '0' && *rfb->data <= '9') { + return rfb->data; + } + if (rfb->size - rfb->pos >= 5 && !strcmp(option, "\\b") && + ((!ustrncmp(rfb->data, (unsigned char *)"true", 4) || !ustrncmp(rfb->data, (unsigned char *)"false", 5)))) { + return rfb->data; + } + if (!ustrncmp(rfb->data, (unsigned char *)option, option_length)) { + return rfb->data; + } + } + return NULL; +} + +unsigned char *rbuffer_expect(rbuffer_t *rfb, char *options, char *ignore) { + while (rfb->pos < rfb->size) { + if (rbuffer_match_option(rfb, options) != NULL) { + return rfb->data; + } + if (rbuffer_match_option(rfb, ignore)) { + printf("SKIP:%s\n", rfb->data); + rbuffer_pop(rfb); + continue; + } + break; + } + return NULL; +} +unsigned char *rbuffer_consume(rbuffer_t *rfb, char *options, char *ignore) { + unsigned char *result = NULL; + if ((result = rbuffer_expect(rfb, options, ignore)) != NULL) { + rbuffer_pop(rfb); + } + return result; +} +#endif +#ifndef RSTRING_H +#define RSTRING_H +#ifndef RMATH_H +#define RMATH_H +#include + +#ifndef ceil +double ceil(double x) { + if (x == (double)(long long)x) { + return x; + } else if (x > 0.0) { + return (double)(long long)x + 1.0; + } else { + return (double)(long long)x; + } +} +#endif + +#ifndef floor +double floor(double x) { + if (x >= 0.0) { + return (double)(long long)x; + } else { + double result = (double)(long long)x; + return (result == x) ? result : result - 1.0; + } +} +#endif + +#ifndef modf +double modf(double x, double *iptr) { + double int_part = (x >= 0.0) ? floor(x) : ceil(x); + *iptr = int_part; + return x - int_part; +} +#endif +#endif +#include +#include +#include +#include +#include +#include + +char *rstrtimestamp() { + time_t current_time; + time(¤t_time); + struct tm *local_time = localtime(¤t_time); + static char time_string[100]; + time_string[0] = 0; + strftime(time_string, sizeof(time_string), "%Y-%m-%d %H:%M:%S", local_time); + return time_string; +} + +ulonglong _r_generate_key_current = 0; + +char *_rcat_int_int(int a, int b) { + static char res[20]; + res[0] = 0; + sprintf(res, "%d%d", a, b); + return res; +} +char *_rcat_int_double(int a, double b) { + static char res[20]; + res[0] = 0; + sprintf(res, "%d%f", a, b); + return res; +} + +char *_rcat_charp_int(char *a, int b) { + char res[20]; + sprintf(res, "%c", b); + return strcat(a, res); +} + +char *_rcat_charp_double(char *a, double b) { + char res[20]; + sprintf(res, "%f", b); + return strcat(a, res); +} + +char *_rcat_charp_charp(char *a, char *b) { + ; + return strcat(a, b); +} +char *_rcat_charp_char(char *a, char b) { + char extra[] = {b, 0}; + return strcat(a, extra); +} +char *_rcat_charp_bool(char *a, bool *b) { + if (b) { + return strcat(a, "true"); + } else { + return strcat(a, "false"); + } +} + +#define rcat(x, y) \ + _Generic((x), \ + int: _Generic((y), int: _rcat_int_int, double: _rcat_int_double, char *: _rcat_charp_charp), \ + char *: _Generic((y), \ + int: _rcat_charp_int, \ + double: _rcat_charp_double, \ + char *: _rcat_charp_charp, \ + char: _rcat_charp_char, \ + bool: _rcat_charp_bool))((x), (y)) + +char *rgenerate_key() { + _r_generate_key_current++; + static char key[100]; + key[0] = 0; + sprintf(key, "%lld", _r_generate_key_current); + return key; +} + +char *rformat_number(long long lnumber) { + static char formatted[1024]; + + char number[1024] = {0}; + sprintf(number, "%lld", lnumber); + + int len = strlen(number); + int commas_needed = (len - 1) / 3; + int new_len = len + commas_needed; + + formatted[new_len] = '\0'; + + int i = len - 1; + int j = new_len - 1; + int count = 0; + + while (i >= 0) { + if (count == 3) { + formatted[j--] = '.'; + count = 0; + } + formatted[j--] = number[i--]; + count++; + } + if (lnumber < 0) + formatted[j--] = '-'; + return formatted; +} + +bool rstrextractdouble(char *str, double *d1) { + for (size_t i = 0; i < strlen(str); i++) { + if (isdigit(str[i])) { + str += i; + sscanf(str, "%lf", d1); + return true; + } + } + return false; +} + +void rstrstripslashes(const char *content, char *result) { + size_t content_length = strlen((char *)content); + unsigned int index = 0; + for (unsigned int i = 0; i < content_length; i++) { + char c = content[i]; + if (c == '\\') { + i++; + c = content[i]; + if (c == 'r') { + c = '\r'; + } else if (c == 't') { + c = '\t'; + } else if (c == 'b') { + c = '\b'; + } else if (c == 'n') { + c = '\n'; + } else if (c == 'f') { + c = '\f'; + } else if (c == '\\') { + // No need tbh + c = '\\'; + i++; + } + } + result[index] = c; + index++; + } + result[index] = 0; +} + +int rstrstartswith(const char *s1, const char *s2) { + if (s1 == NULL) + return s2 == NULL; + if (s1 == s2 || s2 == NULL || *s2 == 0) + return true; + size_t len_s2 = strlen(s2); + size_t len_s1 = strlen(s1); + if (len_s2 > len_s1) + return false; + return !strncmp(s1, s2, len_s2); +} + +bool rstrendswith(const char *s1, const char *s2) { + if (s1 == NULL) + return s2 == NULL; + if (s1 == s2 || s2 == NULL || *s2 == 0) + return true; + size_t len_s2 = strlen(s2); + size_t len_s1 = strlen(s1); + if (len_s2 > len_s1) { + return false; + } + s1 += len_s1 - len_s2; + return !strncmp(s1, s2, len_s2); +} + +void rstraddslashes(const char *content, char *result) { + size_t content_length = strlen((char *)content); + unsigned int index = 0; + for (unsigned int i = 0; i < content_length; i++) { + if (content[i] == '\r') { + result[index] = '\\'; + index++; + result[index] = 'r'; + index++; + continue; + } else if (content[i] == '\t') { + result[index] = '\\'; + index++; + result[index] = 't'; + index++; + continue; + } else if (content[i] == '\n') { + result[index] = '\\'; + index++; + result[index] = 'n'; + index++; + continue; + } else if (content[i] == '\\') { + result[index] = '\\'; + index++; + result[index] = '\\'; + index++; + continue; + } else if (content[i] == '\b') { + result[index] = '\\'; + index++; + result[index] = 'b'; + index++; + continue; + } else if (content[i] == '\f') { + result[index] = '\\'; + index++; + result[index] = 'f'; + index++; + continue; + } else if (content[i] == '"') { + result[index] = '\\'; + index++; + result[index] = '"'; + index++; + continue; + } + result[index] = content[i]; + index++; + result[index] = 0; + } +} + +int rstrip_whitespace(char *input, char *output) { + output[0] = 0; + int count = 0; + size_t len = strlen(input); + for (size_t i = 0; i < len; i++) { + if (input[i] == '\t' || input[i] == ' ' || input[i] == '\n') { + continue; + } + count = i; + size_t j; + for (j = 0; j < len - count; j++) { + output[j] = input[j + count]; + } + output[j] = '\0'; + break; + } + return count; +} + +/* + * Converts "pony" to \"pony\". Addslashes does not + * Converts "pony\npony" to "pony\n" + * "pony" + */ +void rstrtocstring(const char *input, char *output) { + int index = 0; + char clean_input[strlen(input) * 2]; + char *iptr = clean_input; + rstraddslashes(input, clean_input); + output[index] = '"'; + index++; + while (*iptr) { + if (*iptr == '"') { + output[index] = '\\'; + output++; + } else if (*iptr == '\\' && *(iptr + 1) == 'n') { + output[index] = '\\'; + output++; + output[index] = 'n'; + output++; + output[index] = '"'; + output++; + output[index] = '\n'; + output++; + output[index] = '"'; + output++; + iptr++; + iptr++; + continue; + } + output[index] = *iptr; + index++; + iptr++; + } + if (output[index - 1] == '"' && output[index - 2] == '\n') { + output[index - 1] = 0; + } else if (output[index - 1] != '"') { + output[index] = '"'; + output[index + 1] = 0; + } +} + +size_t rstrtokline(char *input, char *output, size_t offset, bool strip_nl) { + + size_t len = strlen(input); + output[0] = 0; + size_t new_offset = 0; + size_t j; + size_t index = 0; + + for (j = offset; j < len + offset; j++) { + if (input[j] == 0) { + index++; + break; + } + index = j - offset; + output[index] = input[j]; + + if (output[index] == '\n') { + index++; + break; + } + } + output[index] = 0; + + new_offset = index + offset; + + if (strip_nl) { + if (output[index - 1] == '\n') { + output[index - 1] = 0; + } + } + return new_offset; +} + +void rstrjoin(char **lines, size_t count, char *glue, char *output) { + output[0] = 0; + for (size_t i = 0; i < count; i++) { + strcat(output, lines[i]); + if (i != count - 1) + strcat(output, glue); + } +} + +int rstrsplit(char *input, char **lines) { + int index = 0; + size_t offset = 0; + char line[1024]; + while ((offset = rstrtokline(input, line, offset, false)) && *line) { + if (!*line) { + break; + } + lines[index] = (char *)malloc(strlen(line) + 1); + strcpy(lines[index], line); + index++; + } + return index; +} + +bool rstartswithnumber(char *str) { return isdigit(str[0]); } + +void rstrmove2(char *str, unsigned int start, size_t length, unsigned int new_pos) { + size_t str_len = strlen(str); + char new_str[str_len + 1]; + memset(new_str, 0, str_len); + if (start < new_pos) { + strncat(new_str, str + length, str_len - length - start); + new_str[new_pos] = 0; + strncat(new_str, str + start, length); + strcat(new_str, str + strlen(new_str)); + memset(str, 0, str_len); + strcpy(str, new_str); + } else { + strncat(new_str, str + start, length); + strncat(new_str, str, start); + strncat(new_str, str + start + length, str_len - start); + memset(str, 0, str_len); + strcpy(str, new_str); + } + new_str[str_len] = 0; +} + +void rstrmove(char *str, unsigned int start, size_t length, unsigned int new_pos) { + size_t str_len = strlen(str); + if (start >= str_len || new_pos >= str_len || start + length > str_len) { + return; + } + char temp[length + 1]; + strncpy(temp, str + start, length); + temp[length] = 0; + if (start < new_pos) { + memmove(str + start, str + start + length, new_pos - start); + strncpy(str + new_pos - length + 1, temp, length); + } else { + memmove(str + new_pos + length, str + new_pos, start - new_pos); + strncpy(str + new_pos, temp, length); + } +} + +int cmp_line(const void *left, const void *right) { + char *l = *(char **)left; + char *r = *(char **)right; + + char lstripped[strlen(l) + 1]; + rstrip_whitespace(l, lstripped); + char rstripped[strlen(r) + 1]; + rstrip_whitespace(r, rstripped); + + double d1, d2; + bool found_d1 = rstrextractdouble(lstripped, &d1); + bool found_d2 = rstrextractdouble(rstripped, &d2); + + if (found_d1 && found_d2) { + double frac_part1; + double int_part1; + frac_part1 = modf(d1, &int_part1); + double frac_part2; + double int_part2; + frac_part2 = modf(d2, &int_part2); + if (d1 == d2) { + return strcmp(lstripped, rstripped); + } else if (frac_part1 && frac_part2) { + return d1 > d2; + } else if (frac_part1 && !frac_part2) { + return 1; + } else if (frac_part2 && !frac_part1) { + return -1; + } else if (!frac_part1 && !frac_part2) { + return d1 > d2; + } + } + return 0; +} + +int rstrsort(char *input, char *output) { + char **lines = (char **)malloc(strlen(input) * 10); + int line_count = rstrsplit(input, lines); + qsort(lines, line_count, sizeof(char *), cmp_line); + rstrjoin(lines, line_count, "", output); + for (int i = 0; i < line_count; i++) { + free(lines[i]); + } + free(lines); + return line_count; +} + +#endif + +#include +#include +#include +#include +#include +#include + +typedef enum rliza_type_t { + RLIZA_STRING = 's', + RLIZA_BOOLEAN = 'b', + RLIZA_NUMBER = 'n', + RLIZA_OBJECT = 'o', + RLIZA_ARRAY = 'a', + RLIZA_NULL = 0, + RLIZA_KEY = 'k', + RLIZA_INTEGER = 'i' +} rliza_type_t; + +typedef struct rliza_t { + rliza_type_t type; + struct rliza_t *value; + char *key; + union { + char *string; + bool boolean; + double number; + struct rliza_t **map; + long long integer; + } content; + unsigned int count; + char *(*get_string)(struct rliza_t *, char *); + long long (*get_integer)(struct rliza_t *, char *); + double (*get_number)(struct rliza_t *, char *); + bool (*get_boolean)(struct rliza_t *, char *); + struct rliza_t *(*get_array)(struct rliza_t *, char *); + struct rliza_t *(*get_object)(struct rliza_t *, char *); + void (*set_string)(struct rliza_t *, char *, char *); + void (*set_integer)(struct rliza_t *, char *, long long); + void (*set_number)(struct rliza_t *, char *, double); + void (*set_boolean)(struct rliza_t *, char *, bool); + void (*set_array)(struct rliza_t *self, char *key, struct rliza_t *array); + void (*set_object)(struct rliza_t *self, char *key, struct rliza_t *object); +} rliza_t; + +void rliza_free(rliza_t *rliza) { + if (rliza->key) { + free(rliza->key); + rliza->key = NULL; + } + if (rliza->value) { + rliza_free(rliza->value); + rliza->value = NULL; + } + // if (rliza->content.array) { + // printf("JAAAA\n"); + // } + // if (rliza->content.object) { + // rliza_free(rliza->content.object); + // rliza->content.object = NULL; + //} + if (rliza->type == RLIZA_STRING) { + if (rliza->content.string) { + free(rliza->content.string); + rliza->content.string = NULL; + // else if (rliza->type == RLIZA_NUMBER) { + // printf("STDring freed\n"); + } + } else if (rliza->type == RLIZA_OBJECT || rliza->type == RLIZA_ARRAY) { + + if (rliza->content.map) { + for (unsigned int i = 0; i < rliza->count; i++) { + rliza_free(rliza->content.map[i]); + } + free(rliza->content.map); + } + } + // free(rliza->content.array); + //} + + free(rliza); +} + +rliza_t *rliza_new(rliza_type_t type); +rliza_t *rliza_new_string(char *string); +rliza_t *rliza_new_null(); +rliza_t *rliza_new_boolean(bool value); +rliza_t *rliza_new_number(double value); +rliza_t *rliza_new_integer(long long value); +rliza_t *rliza_new_key_value(char *key, rliza_t *value); +rliza_t *rliza_new_key_string(char *key, char *string); +rliza_t *rliza_new_key_bool(char *key, bool value); +rliza_t *rliza_new_key_number(char *key, double value); +void rliza_push(rliza_t *self, rliza_t *obj); +void rliza_push_object(rliza_t *self, rliza_t *object); +void rliza_set_object(rliza_t *self, char *key, rliza_t *object); +void rliza_set_string(rliza_t *self, char *key, char *string); +void rliza_set_boolean(rliza_t *self, char *key, bool value); +void rliza_set_number(rliza_t *self, char *key, double value); +void rliza_set_integer(rliza_t *self, char *key, long long value); +char *rliza_get_string(rliza_t *self, char *key); +long long rliza_get_integer(rliza_t *self, char *key); +double rliza_get_number(rliza_t *self, char *key); +bool rliza_get_boolean(rliza_t *self, char *key); +rliza_t *rliza_get_array(rliza_t *self, char *key); +rliza_t *rliza_get_object(rliza_t *self, char *key); +void rliza_set_array(rliza_t *self, char *key, rliza_t *array); + +char *rliza_dumps(rliza_t *rliza); +rliza_t *rliza_loads(char **content); +rliza_t *_rliza_loads(char **content); + +char *rliza_get_string(rliza_t *self, char *key) { + for (unsigned int i = 0; i < self->count; i++) { + if (self->content.map[i]->key != NULL && strcmp(self->content.map[i]->key, key) == 0) { + if (self->content.map[i]->type == RLIZA_STRING || self->content.map[i]->type == RLIZA_NULL) { + return self->content.map[i]->content.string; + } + } + } + return NULL; +} +long long rliza_get_integer(rliza_t *self, char *key) { + for (unsigned int i = 0; i < self->count; i++) { + if (self->content.map[i]->key != NULL && strcmp(self->content.map[i]->key, key) == 0) { + if (self->content.map[i]->type == RLIZA_INTEGER || self->content.map[i]->type == RLIZA_NULL) { + return self->content.map[i]->content.integer; + } + } + } + return 0; +} + +double rliza_get_number(rliza_t *self, char *key) { + for (unsigned int i = 0; i < self->count; i++) { + if (self->content.map[i]->key != NULL && strcmp(self->content.map[i]->key, key) == 0) { + if (self->content.map[i]->type == RLIZA_NUMBER || self->content.map[i]->type == RLIZA_NULL) { + return self->content.map[i]->content.number; + } + } + } + return 0; +} + +bool rliza_get_boolean(rliza_t *self, char *key) { + for (unsigned int i = 0; i < self->count; i++) { + if (self->content.map[i]->key != NULL && strcmp(self->content.map[i]->key, key) == 0) { + if (self->content.map[i]->type == RLIZA_BOOLEAN || self->content.map[i]->type == RLIZA_NULL) { + return self->content.map[i]->content.boolean; + } + } + } + return false; +} + +rliza_t *rliza_get_object(rliza_t *self, char *key) { + for (unsigned int i = 0; i < self->count; i++) { + if (self->content.map[i]->key != NULL && strcmp(self->content.map[i]->key, key) == 0) { + return self->content.map[i]; + } + } + return NULL; +} + +rliza_t *rliza_get_array(rliza_t *self, char *key) { + for (unsigned int i = 0; i < self->count; i++) { + if (self->content.map[i]->key != NULL && strcmp(self->content.map[i]->key, key) == 0) { + if (self->content.map[i]->type == RLIZA_ARRAY || self->content.map[i]->type == RLIZA_NULL) { + return self->content.map[i]; + } + } + } + return NULL; +} + +rliza_t *rliza_new_null() { + rliza_t *rliza = rliza_new(RLIZA_NULL); + return rliza; +} +rliza_t *rliza_new_string(char *string) { + rliza_t *rliza = rliza_new(RLIZA_STRING); + if (string == NULL) { + rliza->type = RLIZA_NULL; + rliza->content.string = NULL; + return rliza; + } else { + rliza->content.string = strdup(string); + } + return rliza; +} +rliza_t *rliza_new_boolean(bool value) { + rliza_t *rliza = rliza_new(RLIZA_BOOLEAN); + rliza->content.boolean = value; + return rliza; +} + +rliza_t *rliza_new_number(double value) { + rliza_t *rliza = rliza_new(RLIZA_NUMBER); + rliza->content.number = value; + return rliza; +} + +rliza_t *rliza_new_integer(long long value) { + rliza_t *rliza = rliza_new(RLIZA_INTEGER); + rliza->content.integer = value; + return rliza; +} +rliza_t *rliza_new_key_array(char *key) { + rliza_t *rliza = rliza_new(RLIZA_ARRAY); + rliza->key = strdup(key); + return rliza; +} + +rliza_t *rliza_new_key_value(char *key, rliza_t *value) { + rliza_t *rliza = rliza_new(RLIZA_OBJECT); + if (key) { + rliza->key = strdup(key); + } + rliza->value = value; + return rliza; +} + +rliza_t *rliza_new_key_string(char *key, char *string) { + rliza_t *rliza = rliza_new_key_value(key, rliza_new_string(string)); + return rliza; +} +rliza_t *rliza_new_key_bool(char *key, bool value) { + rliza_t *rliza = rliza_new_key_value(key, rliza_new_boolean(value)); + return rliza; +} +rliza_t *rliza_new_key_number(char *key, double value) { + rliza_t *rliza = rliza_new_key_value(key, rliza_new_number(value)); + return rliza; +} + +void rliza_set_null(rliza_t *self, char *key) { + rliza_t *obj = rliza_get_object(self, key); + if (!obj) { + obj = rliza_new_null(); + obj->key = strdup(key); + rliza_push_object(self, obj); + } + if (obj->type == RLIZA_OBJECT) { + + rliza_free(obj->value); + obj->value = NULL; + } else if (obj->type == RLIZA_STRING) { + if (obj->content.string) + free(obj->content.string); + obj->content.string = NULL; + } else if (obj->type == RLIZA_ARRAY) { + for (unsigned int i = 0; i < obj->count; i++) { + rliza_free(obj->content.map[i]); + } + } else if (obj->type == RLIZA_NUMBER) { + obj->content.number = 0; + } else if (obj->type == RLIZA_INTEGER) { + obj->content.integer = 0; + } + obj->type = RLIZA_NULL; +} + +rliza_t *rliza_duplicate(rliza_t *rliza) { + if (!rliza) + return NULL; + char *str = rliza_dumps(rliza); + char *strp = str; + rliza_t *obj = rliza_loads(&strp); + free(str); + return obj; +} + +rliza_t *rliza_new_object(rliza_t *obj) { + rliza_t *rliza = rliza_new(RLIZA_OBJECT); + rliza->value = obj; + return rliza; +} +void rliza_set_object(rliza_t *self, char *key, rliza_t *value) { + rliza_t *obj = rliza_duplicate(value); + obj->key = strdup(key); + obj->type = RLIZA_OBJECT; + rliza_push(self, obj); +} + +void rliza_set_string(rliza_t *self, char *key, char *string) { + rliza_t *obj = rliza_get_object(self, key); + + if (!obj) { + obj = rliza_new_string(string); + obj->key = strdup(key); + obj->type = RLIZA_STRING; + rliza_push_object(self, obj); + } else { + obj->content.string = strdup(string); + } +} + +void rliza_set_array(rliza_t *self, char *key, rliza_t *array) { + rliza_t *obj = rliza_get_object(self, key); + if (obj) + rliza_free(obj); + if (array->key) { + free(array->key); + array->key = strdup(key); + } + rliza_push_object(self, array); +} + +void rliza_set_number(rliza_t *self, char *key, double value) { + rliza_t *obj = rliza_get_object(self, key); + if (!obj) { + obj = rliza_new_number(value); + obj->key = strdup(key); + obj->type = RLIZA_NUMBER; + rliza_push_object(self, obj); + } else { + obj->content.number = value; + } +} + +void rliza_push_object(rliza_t *self, rliza_t *object) { + self->content.map = realloc(self->content.map, (sizeof(rliza_t **)) * (self->count + 1)); + self->content.map[self->count] = object; + self->count++; +} +void rliza_set_integer(rliza_t *self, char *key, long long value) { + rliza_t *obj = rliza_get_object(self, key); + if (!obj) { + obj = rliza_new_integer(value); + obj->key = strdup(key); + obj->type = RLIZA_INTEGER; + rliza_push_object(self, obj); + } else { + obj->content.integer = value; + } +} + +void rliza_set_boolean(rliza_t *self, char *key, bool value) { + rliza_t *obj = rliza_get_object(self, key); + if (!obj) { + obj = rliza_new_boolean(value); + obj->key = strdup(key); + obj->type = RLIZA_BOOLEAN; + + rliza_push_object(self, obj); + } else { + obj->content.boolean = value; + } +} + +rliza_t *rliza_new(rliza_type_t type) { + rliza_t *rliza = (rliza_t *)calloc(1, sizeof(rliza_t)); + rliza->type = type; + rliza->get_boolean = rliza_get_boolean; + rliza->get_integer = rliza_get_integer; + rliza->get_number = rliza_get_number; + rliza->get_string = rliza_get_string; + rliza->get_array = rliza_get_array; + rliza->get_object = rliza_get_object; + rliza->set_string = rliza_set_string; + rliza->set_number = rliza_set_number; + rliza->set_boolean = rliza_set_boolean; + rliza->set_integer = rliza_set_integer; + rliza->set_array = rliza_set_array; + rliza->set_object = rliza_set_object; + + return rliza; +} + +void *rliza_coalesce(void *result, void *default_value) { + if (result == NULL) + return default_value; + return result; +} + +char *rliza_seek_string(char **content, char **options) { + + while (**content == ' ' || **content == '\n' || **content == '\t' || **content == '\r') { + (*content)++; + } + if (**content == 0) { + return NULL; + } + + char *option = NULL; + unsigned int option_index = 0; + + while (true) { + option = options[option_index]; + if (option == NULL) + break; + option_index++; + if (option[0] == 'd') { + if (**content >= '0' && **content <= '9') { + return (char *)*content; + } + } else if (!strncmp(option, *content, strlen(option))) { + return (char *)*content; + } + } + return *content; +} + +char *rliza_extract_quotes(char **content) { + rbuffer_t *buffer = rbuffer_new(NULL, 0); + assert(**content == '"'); + char previous = 0; + while (true) { + + (*content)++; + if (!**content) { + rbuffer_free(buffer); + return NULL; + } + + if (**content == '"' && previous != '\\') { + break; + } + rbuffer_push(buffer, **content); + previous = **content; + } + assert(**content == '"'); + (*content)++; + rbuffer_push(buffer, 0); + char *result = (char *)rbuffer_to_string(buffer); + return result; +} + +rliza_t *_rliza_loads(char **content) { + static char *seek_for1[] = {"[", "{", "\"", "d", "true", "false", "null", NULL}; + char *token = (char *)rliza_seek_string(content, seek_for1); + if (!token) + return NULL; + rliza_t *rliza = rliza_new(RLIZA_NULL); + if (**content == '"') { + char *extracted = rliza_extract_quotes(content); + if (!extracted) { + rliza_free(rliza); + return NULL; + } + // char *extracted_with_slashes = (char *)malloc(strlen((char *)extracted) * 2 + 1); + // rstraddslashes(extracted, extracted_with_slashes); + rliza->type = RLIZA_STRING; + rliza->content.string = extracted; // extracted_with_slashes; // extracted_without_slashes; + // free(extracted); + return rliza; + } else if (**content == '{') { + rliza->type = RLIZA_OBJECT; + (*content)++; + char *result = NULL; + static char *seek_for2[] = {"\"", ",", "}", NULL}; + while ((result = (char *)rliza_seek_string(content, seek_for2)) != NULL && *result) { + + if (!**content) { + rliza_free(rliza); + return NULL; + } + if (**content == ',') { + (*content)++; + if (!**content) { + rliza_free(rliza); + return NULL; + } + continue; + } + char *key = NULL; + if (**content == '"') { + key = rliza_extract_quotes((char **)content); + if (!key || !*key) { + rliza_free(rliza); + return NULL; + } + char *escaped_key = (char *)malloc(strlen((char *)key) * 2 + 1); + rstrstripslashes((char *)key, escaped_key); + static char *seek_for3[] = {":", NULL}; + char *devider = rliza_seek_string(content, seek_for3); + + if (!devider || !*devider) { + free(escaped_key); + free(key); + rliza_free(rliza); + return NULL; + } + (*content)++; + if (!**content) { + free(key); + free(escaped_key); + rliza_free(rliza); + return NULL; + } + rliza_t *value = _rliza_loads(content); + if (!value) { + free(key); + free(escaped_key); + rliza_free(rliza); + return NULL; + } + if (value->key) + free(value->key); + value->key = escaped_key; + free(key); + rliza_push_object(rliza, value); + } else if (**content == '}') { + break; + } else { + // Parse error + rliza_free(rliza); + return NULL; + } + }; + if ((**content != '}')) { + rliza_free(rliza); + return NULL; + } + (*content)++; + return rliza; + } else if (**content == '[') { + rliza->type = RLIZA_ARRAY; + (*content)++; + char *result; + static char *seek_for4[] = {"[", "{", "\"", "d", ",", "]", "null", "true", "false", NULL}; + while ((result = (char *)rliza_seek_string(content, seek_for4)) != NULL && *result) { + if (**content == ',') { + (*content)++; + + } else if (**content == ']') { + break; + } + rliza_t *obj = _rliza_loads(content); + if (!obj) { + rliza_free(rliza); + return NULL; + } + rliza_push(rliza, obj); + if (!**content) { + rliza_free(rliza); + return NULL; + } + } + if (**content != ']') { + rliza_free(rliza); + return NULL; + } + (*content)++; + return rliza; + } else if (**content >= '0' && **content <= '9') { + char *ptr = *content; + bool is_decimal = false; + + while (**content) { + if (**content == '.') { + is_decimal = true; + } else if (!isdigit(**content)) { + break; + } + (*content)++; + } + if (*(*content - 1) == '.') { + rliza_free(rliza); + return NULL; + } + if (!**content) { + rliza_free(rliza); + return NULL; + } + if (is_decimal) { + rliza->type = RLIZA_NUMBER; + rliza->content.number = strtod(ptr, NULL); + } else { + rliza->type = RLIZA_INTEGER; + rliza->content.integer = strtoll(ptr, NULL, 10); + } + return rliza; + } else if (!strncmp(*content, "true", 4)) { + rliza->type = RLIZA_BOOLEAN; + rliza->content.boolean = true; + *content += 4; + + return rliza; + } else if (!strncmp(*content, "false", 5)) { + rliza->type = RLIZA_BOOLEAN; + rliza->content.boolean = false; + *content += 5; + + return rliza; + } else if (!strncmp(*content, "null", 4)) { + rliza->type = RLIZA_NULL; + *content += 4; + + return rliza; + } + // Parsing error + rliza_free(rliza); + return NULL; +} +rliza_t *rliza_loads(char **content) { + if (!content || !**content) { + return NULL; + } + char *original_content = *content; + rliza_t *result = _rliza_loads(content); + if (!result) { + *content = original_content; + } + return result; +} + +char *rliza_dumps(rliza_t *rliza) { + size_t size = 4096; + char *content = (char *)calloc(size, sizeof(char)); + content[0] = 0; + if (rliza->type == RLIZA_INTEGER) { + if (rliza->key) { + sprintf(content, "\"%s\":%lld", rliza->key, rliza->content.integer); + } else { + sprintf(content, "%lld", rliza->content.integer); + } + } else if (rliza->type == RLIZA_STRING) { + + // char *escaped_string = (char *)calloc(strlen((char *)rliza->content.string) * 2 + 1024,sizeof(char)); + char *escaped_string = rliza->content.string; + // rstrstripslashes((char *)rliza->content.string, escaped_string); + size_t min_size = strlen((char *)escaped_string) + (rliza->key ? strlen(rliza->key) : 0) + 1024; + if (size < min_size) { + size = min_size + 1; + content = realloc(content, size); + } + if (rliza->key) { + char *escaped_key = (char *)malloc(strlen((char *)rliza->key) * 2 + 20); + rstrstripslashes((char *)rliza->key, escaped_key); + if (strlen(content) > size) { + size = size + strlen(escaped_string) + 20; + content = realloc(content, size); + } + sprintf(content, "\"%s\":\"%s\"", escaped_key, escaped_string); + free(escaped_key); + } else { + size = size + strlen(escaped_string) + 20; + content = realloc(content, size); + sprintf(content, "\"%s\"", escaped_string); + } + // free(escaped_string); + } else if (rliza->type == RLIZA_NUMBER) { + if (rliza->key) { + sprintf(content, "\"%s\":%f", rliza->key, rliza->content.number); + } else { + sprintf(content, "%f", rliza->content.number); + } + int last_zero = 0; + bool beyond_dot = false; + for (size_t i = 0; i < strlen(content); i++) { + if (content[i] == '.') { + beyond_dot = true; + } else if (beyond_dot == true) { + if (content[i - 1] != '.') { + if (content[i] == '0') { + if (!last_zero) + last_zero = i; + } else { + last_zero = 0; + } + } + } + } + if (last_zero != 0) { + content[last_zero] = 0; + } + } else if (rliza->type == RLIZA_BOOLEAN) { + if (rliza->key) { + sprintf(content, "\"%s\":%s", rliza->key, rliza->content.boolean ? "true" : "false"); + } else { + sprintf(content, "%s", rliza->content.boolean ? "true" : "false"); + } + } else if (rliza->type == RLIZA_OBJECT) { + + strcat(content, "{"); + if (rliza->key) { + strcat(content, "\""); + strcat(content, rliza->key); + strcat(content, "\":{"); + } + // bool add_braces = false; + for (unsigned i = 0; i < rliza->count; i++) { + char *content_chunk = rliza_dumps(rliza->content.map[i]); + char *content_chunk_stripped = content_chunk; + if (*content_chunk_stripped == '{') { + content_chunk_stripped++; + content_chunk_stripped[strlen(content_chunk_stripped) - 1] = 0; + } + if (strlen(content_chunk_stripped) + strlen(content) > size) { + size += strlen(content_chunk_stripped) + 20; + content = realloc(content, size); + } + strcat(content, content_chunk_stripped); + free(content_chunk); + + strcat(content, ","); + } + if (content[strlen(content) - 1] == ',') { + content[strlen(content) - 1] = '\0'; + + if (rliza->key) { + strcat(content, "}"); + } + } + strcat(content, "}"); + } else if (rliza->type == RLIZA_ARRAY) { + if (rliza->key) { + char *escaped_key = (char *)malloc(strlen((char *)rliza->key) * 2 + 1); + rstraddslashes((char *)rliza->key, escaped_key); + if (strlen(escaped_key) > size) { + size = strlen(escaped_key) + 10; + content = realloc(content, size); + } + sprintf(content, "\"%s\":[", escaped_key); + free(escaped_key); + } else + strcpy(content, "["); + for (unsigned i = 0; i < rliza->count; i++) { + char *content_chunk = rliza_dumps(rliza->content.map[i]); + char *content_chunk_stripped = content_chunk; + if (*content_chunk_stripped == '{') { + // content_chunk_stripped++; + // content_chunk_stripped[strlen(content_chunk_stripped) - 1] = 0; + } + if (strlen(content_chunk_stripped) + strlen(content) > size) { + size += strlen(content_chunk_stripped) + 20; + content = realloc(content, size); + } + strcat(content, content_chunk_stripped); + free(content_chunk); + strcat(content, ","); + } + if (content[strlen(content) - 1] != '[') + content[strlen(content) - 1] = 0; + strcat(content, "]"); + } else if (rliza->type == RLIZA_NULL) { + + if (rliza->key) { + char *escaped_key = (char *)malloc(strlen((char *)rliza->key) * 2 + 1); + rstraddslashes((char *)rliza->key, escaped_key); + sprintf(content, "\"%s\":null", escaped_key); + free(escaped_key); + } else + strcpy(content, "null"); + } + return content; +} + +void rliza_dumpss(rliza_t *rliza) { + char *output = rliza_dumps(rliza); + printf("%s\n", output); + free(output); +} + +void rliza_push(rliza_t *self, rliza_t *obj) { rliza_push_object(self, obj); } + +int rliza_validate(char *json_content) { + if (!json_content || !*json_content) { + return false; + } + char *json_contentp = json_content; + rliza_t *to_object = _rliza_loads(&json_contentp); + if (to_object) { + rliza_free(to_object); + return json_contentp - json_content; + } + return false; +} + +#endif + +#ifndef RCOV_H +#define RCOV_H +#include +#include +#include +#include +#ifndef RBENCH_H +#define RBENCH_H + +#ifndef RPRINT_H +#define RPRINT_H + +#ifndef RLIB_TIME +#define RLIB_TIME + +#ifndef _POSIX_C_SOURCE_199309L + +#define _POSIX_C_SOURCE_199309L +#endif +#include +#include +#undef _POSIX_C_SOURCE_199309L +#include +#include +#include +#include +#ifndef CLOCK_MONOTONIC +#define CLOCK_MONOTONIC 1 +#endif + +typedef uint64_t nsecs_t; +void nsleep(nsecs_t nanoseconds); + +void tick() { nsleep(1); } + +typedef unsigned long long msecs_t; + +nsecs_t nsecs() { + unsigned int lo, hi; + __asm__ volatile("rdtsc" : "=a"(lo), "=d"(hi)); + return ((uint64_t)hi << 32) | lo; +} + +msecs_t rnsecs_to_msecs(nsecs_t nsecs) { return nsecs / 1000 / 1000; } + +nsecs_t rmsecs_to_nsecs(msecs_t msecs) { return msecs * 1000 * 1000; } + +msecs_t usecs() { + struct timeval tv; + gettimeofday(&tv, NULL); + return (long long)(tv.tv_sec) * 1000000 + (long long)(tv.tv_usec); +} + +msecs_t msecs() { + struct timeval tv; + gettimeofday(&tv, NULL); + return (long long)(tv.tv_sec) * 1000 + (tv.tv_usec / 1000); +} +char *msecs_strs(msecs_t ms) { + static char str[22]; + str[0] = 0; + sprintf(str, "%f", ms * 0.001); + for (int i = strlen(str); i > 0; i--) { + if (str[i] > '0') + break; + str[i] = 0; + } + return str; +} +char *msecs_strms(msecs_t ms) { + static char str[22]; + str[0] = 0; + sprintf(str, "%lld", ms); + return str; +} +char *msecs_str(long long ms) { + static char result[30]; + result[0] = 0; + if (ms > 999) { + char *s = msecs_strs(ms); + sprintf(result, "%ss", s); + } else { + char *s = msecs_strms(ms); + sprintf(result, "%sMs", s); + } + return result; +} + +void nsleep(nsecs_t nanoseconds) { + long seconds = 0; + int factor = 0; + while (nanoseconds > 1000000000) { + factor++; + nanoseconds = nanoseconds / 10; + } + if (factor) { + seconds = 1; + factor--; + while (factor) { + seconds = seconds * 10; + factor--; + } + } + + struct timespec req = {seconds, nanoseconds}; + struct timespec rem; + + nanosleep(&req, &rem); +} + +void ssleep(double s) { + long nanoseconds = (long)(1000000000 * s); + + // long seconds = 0; + + // struct timespec req = {seconds, nanoseconds}; + // struct timespec rem; + + nsleep(nanoseconds); +} +void msleep(long miliseonds) { + long nanoseconds = miliseonds * 1000000; + nsleep(nanoseconds); +} + +char *format_time(int64_t nanoseconds) { + char output[1024]; + size_t output_size = sizeof(output); + output[0] = 0; + if (nanoseconds < 1000) { + // Less than 1 microsecond + snprintf(output, output_size, "%ldns", nanoseconds); + } else if (nanoseconds < 1000000) { + // Less than 1 millisecond + double us = nanoseconds / 1000.0; + snprintf(output, output_size, "%.2fµs", us); + } else if (nanoseconds < 1000000000) { + // Less than 1 second + double ms = nanoseconds / 1000000.0; + snprintf(output, output_size, "%.2fms", ms); + } else { + // 1 second or more + double s = nanoseconds / 1000000000.0; + if (s > 60 * 60) { + s = s / 60 / 60; + snprintf(output, output_size, "%.2fh", s); + } else if (s > 60) { + s = s / 60; + snprintf(output, output_size, "%.2fm", s); + } else { + snprintf(output, output_size, "%.2fs", s); + } + } + return sbuf(output); +} + +#endif + +#include +#include +#include +#include +#include + +long rpline_number = 0; +nsecs_t rprtime = 0; + +int8_t _env_rdisable_colors = -1; +bool _rprint_enable_colors = true; + +bool rprint_is_color_enabled() { + if (_env_rdisable_colors == -1) { + _env_rdisable_colors = getenv("RDISABLE_COLORS") != NULL; + } + if (_env_rdisable_colors) { + _rprint_enable_colors = false; + } + return _rprint_enable_colors; +} + +void rprint_disable_colors() { _rprint_enable_colors = false; } +void rprint_enable_colors() { _rprint_enable_colors = true; } +void rprint_toggle_colors() { _rprint_enable_colors = !_rprint_enable_colors; } + +void rclear() { printf("\033[2J"); } + +void rprintpf(FILE *f, const char *prefix, const char *format, va_list args) { + char *pprefix = (char *)prefix; + char *pformat = (char *)format; + bool reset_color = false; + bool press_any_key = false; + char new_format[4096]; + bool enable_color = rprint_is_color_enabled(); + memset(new_format, 0, 4096); + int new_format_length = 0; + char temp[1000]; + memset(temp, 0, 1000); + if (enable_color && pprefix[0]) { + strcat(new_format, pprefix); + new_format_length += strlen(pprefix); + reset_color = true; + } + while (true) { + if (pformat[0] == '\\' && pformat[1] == 'i') { + strcat(new_format, "\e[3m"); + new_format_length += strlen("\e[3m"); + reset_color = true; + pformat++; + pformat++; + } else if (pformat[0] == '\\' && pformat[1] == 'u') { + strcat(new_format, "\e[4m"); + new_format_length += strlen("\e[4m"); + reset_color = true; + pformat++; + pformat++; + } else if (pformat[0] == '\\' && pformat[1] == 'b') { + strcat(new_format, "\e[1m"); + new_format_length += strlen("\e[1m"); + reset_color = true; + pformat++; + pformat++; + } else if (pformat[0] == '\\' && pformat[1] == 'C') { + press_any_key = true; + rpline_number++; + pformat++; + pformat++; + reset_color = false; + } else if (pformat[0] == '\\' && pformat[1] == 'k') { + press_any_key = true; + rpline_number++; + pformat++; + pformat++; + } else if (pformat[0] == '\\' && pformat[1] == 'c') { + rpline_number++; + strcat(new_format, "\e[2J\e[H"); + new_format_length += strlen("\e[2J\e[H"); + pformat++; + pformat++; + } else if (pformat[0] == '\\' && pformat[1] == 'L') { + rpline_number++; + temp[0] = 0; + sprintf(temp, "%ld", rpline_number); + strcat(new_format, temp); + new_format_length += strlen(temp); + pformat++; + pformat++; + } else if (pformat[0] == '\\' && pformat[1] == 'l') { + rpline_number++; + temp[0] = 0; + sprintf(temp, "%.5ld", rpline_number); + strcat(new_format, temp); + new_format_length += strlen(temp); + pformat++; + pformat++; + } else if (pformat[0] == '\\' && pformat[1] == 'T') { + nsecs_t nsecs_now = nsecs(); + nsecs_t end = rprtime ? nsecs_now - rprtime : 0; + temp[0] = 0; + sprintf(temp, "%s", format_time(end)); + strcat(new_format, temp); + new_format_length += strlen(temp); + rprtime = nsecs_now; + pformat++; + pformat++; + } else if (pformat[0] == '\\' && pformat[1] == 't') { + rprtime = nsecs(); + pformat++; + pformat++; + } else { + new_format[new_format_length] = *pformat; + new_format_length++; + if (!*pformat) + break; + + // printf("%c",*pformat); + pformat++; + } + } + if (reset_color) { + strcat(new_format, "\e[0m"); + new_format_length += strlen("\e[0m"); + } + + new_format[new_format_length] = 0; + vfprintf(f, new_format, args); + + fflush(stdout); + if (press_any_key) { + nsecs_t s = nsecs(); + fgetc(stdin); + rprtime += nsecs() - s; + } +} + +void rprintp(const char *format, ...) { + va_list args; + va_start(args, format); + rprintpf(stdout, "", format, args); + va_end(args); +} + +void rprintf(FILE *f, const char *format, ...) { + va_list args; + va_start(args, format); + rprintpf(f, "", format, args); + va_end(args); +} +void rprint(const char *format, ...) { + va_list args; + va_start(args, format); + rprintpf(stdout, "", format, args); + va_end(args); +} +#define printf rprint + +// Print line +void rprintlf(FILE *f, const char *format, ...) { + va_list args; + va_start(args, format); + rprintpf(f, "\\l", format, args); + va_end(args); +} +void rprintl(const char *format, ...) { + va_list args; + va_start(args, format); + rprintpf(stdout, "\\l", format, args); + va_end(args); +} + +// Black +void rprintkf(FILE *f, const char *format, ...) { + va_list args; + va_start(args, format); + rprintpf(f, "\e[30m", format, args); + va_end(args); +} +void rprintk(const char *format, ...) { + va_list args; + va_start(args, format); + rprintpf(stdout, "\e[30m", format, args); + va_end(args); +} + +// Red +void rprintrf(FILE *f, const char *format, ...) { + va_list args; + va_start(args, format); + rprintpf(f, "\e[31m", format, args); + va_end(args); +} +void rprintr(const char *format, ...) { + va_list args; + va_start(args, format); + rprintpf(stdout, "\e[31m", format, args); + va_end(args); +} + +// Green +void rprintgf(FILE *f, const char *format, ...) { + va_list args; + va_start(args, format); + rprintpf(f, "\e[32m", format, args); + va_end(args); +} +void rprintg(const char *format, ...) { + va_list args; + va_start(args, format); + rprintpf(stdout, "\e[32m", format, args); + va_end(args); +} + +// Yellow +void rprintyf(FILE *f, const char *format, ...) { + va_list args; + va_start(args, format); + rprintpf(f, "\e[33m", format, args); + va_end(args); +} +void rprinty(const char *format, ...) { + va_list args; + va_start(args, format); + rprintpf(stdout, "\e[33m", format, args); + va_end(args); +} + +// Blue +void rprintbf(FILE *f, const char *format, ...) { + va_list args; + va_start(args, format); + rprintpf(f, "\e[34m", format, args); + va_end(args); +} + +void rprintb(const char *format, ...) { + va_list args; + va_start(args, format); + rprintpf(stdout, "\e[34m", format, args); + va_end(args); +} + +// Magenta +void rprintmf(FILE *f, const char *format, ...) { + va_list args; + va_start(args, format); + rprintpf(f, "\e[35m", format, args); + va_end(args); +} +void rprintm(const char *format, ...) { + va_list args; + va_start(args, format); + rprintpf(stdout, "\e[35m", format, args); + va_end(args); +} + +// Cyan +void rprintcf(FILE *f, const char *format, ...) { + va_list args; + va_start(args, format); + rprintpf(f, "\e[36m", format, args); + va_end(args); +} +void rprintc(const char *format, ...) { + va_list args; + va_start(args, format); + rprintpf(stdout, "\e[36m", format, args); + va_end(args); +} + +// White +void rprintwf(FILE *f, const char *format, ...) { + va_list args; + va_start(args, format); + rprintpf(f, "\e[37m", format, args); + va_end(args); +} +void rprintw(const char *format, ...) { + va_list args; + va_start(args, format); + rprintpf(stdout, "\e[37m", format, args); + va_end(args); +} +#endif +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef RLIB_TERMINAL_H +#define RLIB_TERMINAL_H + +#include +#include +#include +#include +#ifndef RTEST_H +#define RTEST_H +#ifndef REMO_H +#define REMO_H +#include +#include +#include +#include + +typedef struct { + const char *str; + const char *description; +} remo_t; + +remo_t remo[] = { + {"\U0001F600", "Grinning Face"}, // 😀 + {"\U0001F601", "Beaming Face with Smiling Eyes"}, // 😁 + {"\U0001F602", "Face with Tears of Joy"}, // 😂 + {"\U0001F923", "Rolling on the Floor Laughing"}, // 🤣 + {"\U0001F603", "Grinning Face with Big Eyes"}, // 😃 + {"\U0001F604", "Grinning Face with Smiling Eyes"}, // 😄 + {"\U0001F609", "Winking Face"}, // 😉 + {"\U0001F60A", "Smiling Face with Smiling Eyes"}, // 😊 + {"\U0001F60D", "Smiling Face with Heart-Eyes"}, // 😍 + {"\U0001F618", "Face Blowing a Kiss"}, // 😘 + {"\U0001F617", "Kissing Face"}, // 😗 + {"\U0001F61A", "Kissing Face with Closed Eyes"}, // 😚 + {"\U0001F642", "Slightly Smiling Face"}, // 🙂 + {"\U0001F643", "Upside-Down Face"}, // 🙃 + {"\U0001F970", "Smiling Face with Hearts"}, // 🥰 + {"\U0001F60B", "Face Savoring Food"}, // 😋 + {"\U0001F61B", "Face with Tongue"}, // 😛 + {"\U0001F61C", "Winking Face with Tongue"}, // 😜 + {"\U0001F92A", "Zany Face"}, // 🤪 + {"\U0001F929", "Star-Struck"}, // 🤩 + {"\U0001F631", "Face Screaming in Fear"}, // 😱 + {"\U0001F62D", "Loudly Crying Face"}, // 😭 + {"\U0001F624", "Face with Steam From Nose"}, // 😤 + {"\U0001F620", "Angry Face"}, // 😠 + {"\U0001F621", "Pouting Face"}, // 😡 + {"\U0001F47B", "Ghost"}, // 👻 + {"\U0001F480", "Skull"}, // 💀 + {"\U0001F4A9", "Pile of Poo"}, // 💩 + {"\U0001F47D", "Alien"}, // 👽 + // Geometric Shapes + {"\U000025A0", "Black Square"}, // ■ + {"\U000025B2", "Upward Triangle"}, // ▲ + {"\U000025CF", "Black Circle"}, // ● + {"\U000025CB", "White Circle"}, // ○ + {"\U00002B1B", "Large Black Square"}, // ⬛ + {"\U00002B1C", "Large White Square"}, // ⬜ + + // Mathematical Symbols + {"\U00002200", "For All"}, // ∀ + {"\U00002203", "Exists"}, // ∃ + {"\U00002205", "Empty Set"}, // ∅ + {"\U00002207", "Nabla"}, // ∇ + {"\U0000220F", "N-Ary Product"}, // ∏ + {"\U00002212", "Minus Sign"}, // − + {"\U0000221E", "Infinity"}, // ∞ + + // Arrows + {"\U00002190", "Left Arrow"}, // ← + {"\U00002191", "Up Arrow"}, // ↑ + {"\U00002192", "Right Arrow"}, // → + {"\U00002193", "Down Arrow"}, // ↓ + {"\U00002195", "Up Down Arrow"}, // ↕ + {"\U00002197", "Up Right Arrow"}, // ↗ + {"\U00002198", "Down Right Arrow"}, // ↘ + {"\U000027A1", "Black Right Arrow"}, // ➡️ + + // Dingbats + {"\U00002714", "Check Mark"}, // ✔️ + {"\U00002716", "Heavy Multiplication X"}, // ✖️ + {"\U00002728", "Sparkles"}, // ✨ + {"\U00002757", "Exclamation Mark"}, // ❗ + {"\U0000274C", "Cross Mark"}, // ❌ + {"\U00002795", "Heavy Plus Sign"}, // ➕ + + // Miscellaneous Symbols + {"\U00002600", "Sun"}, // ☀️ + {"\U00002614", "Umbrella with Rain Drops"}, // ☔ + {"\U00002620", "Skull and Crossbones"}, // ☠️ + {"\U000026A0", "Warning Sign"}, // ⚠️ + {"\U000026BD", "Soccer Ball"}, // ⚽ + {"\U000026C4", "Snowman"}, // ⛄ + + // Stars and Asterisks + {"\U00002733", "Eight Pointed Black Star"}, // ✳️ + {"\U00002734", "Eight Spoked Asterisk"}, // ✴️ + {"\U00002B50", "White Star"}, // ⭐ + {"\U0001F31F", "Glowing Star"}, // 🌟 + {"\U00002728", "Sparkles"}, // ✨ + // Animals and Nature + {"\U0001F98A", "Fox"}, // 🦊 + {"\U0001F415", "Dog"}, // 🐕 + {"\U0001F431", "Cat Face"}, // 🐱 + {"\U0001F435", "Monkey Face"}, // 🐵 + {"\U0001F408", "Black Cat"}, // 🐈 + {"\U0001F98C", "Deer"}, // 🦌 + {"\U0001F344", "Mushroom"}, // 🍄 + {"\U0001F333", "Tree"}, // 🌳 + + // Weather and Space Symbols + {"\U0001F308", "Rainbow"}, // 🌈 + {"\U0001F320", "Shooting Star"}, // 🌠 + {"\U00002600", "Sun"}, // ☀️ + {"\U00002601", "Cloud"}, // ☁️ + {"\U000026A1", "High Voltage"}, // ⚡ + {"\U0001F525", "Fire"}, // 🔥 + {"\U000026C4", "Snowman"}, // ⛄ + {"\U0001F30A", "Water Wave"}, // 🌊 + + // Transport and Map Symbols + {"\U0001F68C", "Bus"}, // 🚌 + {"\U0001F697", "Car"}, // 🚗 + {"\U0001F6B2", "Bicycle"}, // 🚲 + {"\U0001F6A2", "Ship"}, // 🚢 + {"\U0001F681", "Helicopter"}, // 🚁 + {"\U0001F680", "Rocket"}, // 🚀 + {"\U0001F6EB", "Airplane"}, // 🛫 + + // Currency Symbols + {"\U00000024", "Dollar Sign"}, // $ + {"\U000000A3", "Pound Sign"}, // £ + {"\U000000A5", "Yen Sign"}, // ¥ + {"\U000020AC", "Euro Sign"}, // € + {"\U0001F4B5", "Dollar Banknote"}, // 💵 + {"\U0001F4B4", "Yen Banknote"}, // 💴 + + // Card Suits + {"\U00002660", "Black Spade Suit"}, // ♠️ + {"\U00002663", "Black Club Suit"}, // ♣️ + {"\U00002665", "Black Heart Suit"}, // ♥️ + {"\U00002666", "Black Diamond Suit"}, // ♦️ + {"\U0001F0CF", "Joker Card"}, // 🃏 + + // Office Supplies and Objects + {"\U0001F4DA", "Books"}, // 📚 + {"\U0001F4D7", "Green Book"}, // 📗 + {"\U0001F4C8", "Chart with Upwards Trend"}, // 📈 + {"\U0001F4C9", "Chart with Downwards Trend"}, // 📉 + {"\U0001F4B0", "Money Bag"}, // 💰 + {"\U0001F4B8", "Money with Wings"}, // 💸 + {"\U0001F4E6", "Package"}, // 📦 + + // Miscellaneous Symbols + {"\U00002757", "Exclamation Mark"}, // ❗ + {"\U00002714", "Check Mark"}, // ✔️ + {"\U0000274C", "Cross Mark"}, // ❌ + {"\U00002705", "Check Mark Button"}, // ✅ + {"\U00002B50", "White Star"}, // ⭐ + {"\U0001F31F", "Glowing Star"}, // 🌟 + {"\U0001F4A1", "Light Bulb"}, // 💡 + {"\U0001F4A3", "Bomb"}, // 💣 + {"\U0001F4A9", "Pile of Poo"}, // 💩 + // Musical Symbols + {"\U0001F3B5", "Musical Note"}, // 🎵 + {"\U0001F3B6", "Multiple Musical Notes"}, // 🎶 + {"\U0001F3BC", "Musical Score"}, // 🎼 + {"\U0001F399", "Studio Microphone"}, // 🎙️ + {"\U0001F3A4", "Microphone"}, // 🎤 + + // Food and Drink + {"\U0001F35F", "Cheese Wedge"}, // 🧀 + {"\U0001F355", "Slice of Pizza"}, // 🍕 + {"\U0001F32D", "Taco"}, // 🌮 + {"\U0001F37D", "Beer Mug"}, // 🍻 + {"\U0001F96B", "Cup with Straw"}, // 🥤 + {"\U0001F32E", "Hot Pepper"}, // 🌶️ + {"\U0001F95A", "Potato"}, // 🥔 + + // Zodiac Signs + {"\U00002600", "Aries"}, // ♈ + {"\U00002601", "Taurus"}, // ♉ + {"\U00002602", "Gemini"}, // ♊ + {"\U00002603", "Cancer"}, // ♋ + {"\U00002604", "Leo"}, // ♌ + {"\U00002605", "Virgo"}, // ♍ + {"\U00002606", "Libra"}, // ♎ + {"\U00002607", "Scorpio"}, // ♏ + {"\U00002608", "Sagittarius"}, // ♐ + {"\U00002609", "Capricorn"}, // ♑ + {"\U0000260A", "Aquarius"}, // ♒ + {"\U0000260B", "Pisces"}, // ♓ + + // Miscellaneous Shapes + {"\U0001F4C8", "Chart Increasing"}, // 📈 + {"\U0001F4C9", "Chart Decreasing"}, // 📉 + {"\U0001F4CA", "Bar Chart"}, // 📊 + {"\U0001F7E6", "Orange Circle"}, // 🟠 + {"\U0001F7E7", "Yellow Circle"}, // 🟡 + {"\U0001F7E8", "Green Circle"}, // 🟢 + {"\U0001F7E9", "Blue Circle"}, // 🔵 + {"\U0001F7EA", "Purple Circle"}, // 🟣 + + // Flags + {"\U0001F1E6\U0001F1E9", "Flag of France"}, // 🇫🇷 + {"\U0001F1E8\U0001F1E6", "Flag of Germany"}, // 🇩🇪 + {"\U0001F1FA\U0001F1F8", "Flag of United States"}, // 🇺🇸 + {"\U0001F1E7\U0001F1F7", "Flag of Canada"}, // 🇨🇦 + {"\U0001F1EE\U0001F1F2", "Flag of Italy"}, // 🇮🇹 + {"\U0001F1F8\U0001F1EC", "Flag of Australia"}, // 🇦🇺 + {"\U0001F1F3\U0001F1F4", "Flag of Spain"}, // 🇪🇸 + + // Additional Miscellaneous Symbols + {"\U0001F4A5", "Collision"}, // 💥 + {"\U0001F4A6", "Sweat Droplets"}, // 💦 + {"\U0001F4A8", "Dashing Away"}, // 💨 + {"\U0001F50B", "Battery"}, // 🔋 + {"\U0001F4BB", "Laptop Computer"}, // 💻 + {"\U0001F4DE", "Telephone"}, // 📞 + {"\U0001F4E7", "Incoming Envelope"}, // 📧 +}; +size_t remo_count = sizeof(remo) / sizeof(remo[0]); + +void rstrtolower(const char *input, char *output) { + while (*input) { + *output = tolower(*input); + input++; + output++; + } + *output = 0; +} +bool rstrinstr(const char *haystack, const char *needle) { + char lower1[strlen(haystack) + 1]; + char lower2[strlen(needle) + 1]; + rstrtolower(haystack, lower1); + rstrtolower(needle, lower2); + return strstr(lower1, lower2) ? true : false; +} + +void remo_print() { + + for (size_t i = 0; i < remo_count; i++) { + printf("%s - %s\n", remo[i].str, remo[i].description); + } +} + +const char *remo_get(char *name) { + for (size_t i = 0; i < remo_count; i++) { + if (rstrinstr(remo[i].description, name)) { + return remo[i].str; + } + } + return NULL; +} + +#endif +#include +#include +#include +#define debug(fmt, ...) printf("%s:%d: " fmt, __FILE__, __LINE__, __VA_ARGS__); + +char *rcurrent_banner; +int rassert_count = 0; +unsigned short rtest_is_first = 1; +unsigned int rtest_fail_count = 0; + +int rtest_end(char *content) { + // Returns application exit code. 0 == success + printf("%s", content); + printf("\n@assertions: %d\n", rassert_count); + printf("@memory: %s%s\n", rmalloc_stats(), rmalloc_count == 0 ? remo_get("rainbow") : "fire"); + + if (rmalloc_count != 0) { + printf("MEMORY ERROR %s\n", remo_get("cross mark")); + return rtest_fail_count > 0; + } + return rtest_fail_count > 0; +} + +void rtest_test_banner(char *content, char *file) { + if (rtest_is_first == 1) { + char delimiter[] = "."; + char *d = delimiter; + char f[2048]; + strcpy(f, file); + printf("%s tests", strtok(f, d)); + rtest_is_first = 0; + setvbuf(stdout, NULL, _IONBF, 0); + } + printf("\n - %s ", content); +} + +bool rtest_test_true_silent(char *expr, int res, int line) { + rassert_count++; + if (res) { + return true; + } + rprintrf(stderr, "\nERROR on line %d: %s", line, expr); + rtest_fail_count++; + return false; +} + +bool rtest_test_true(char *expr, int res, int line) { + rassert_count++; + if (res) { + fprintf(stdout, "%s", remo_get("Slightly Smiling Face")); + return true; + } + rprintrf(stderr, "\nERROR %s on line %d: %s\n", remo_get("skull"), line, expr); + rtest_fail_count++; + return false; +} +bool rtest_test_false_silent(char *expr, int res, int line) { return rtest_test_true_silent(expr, !res, line); } +bool rtest_test_false(char *expr, int res, int line) { return rtest_test_true(expr, !res, line); } +void rtest_test_skip(char *expr, int line) { rprintgf(stderr, "\n @skip(%s) on line %d\n", expr, line); } +void rtest_test_assert(char *expr, int res, int line) { + if (rtest_test_true(expr, res, line)) { + return; + } + rtest_end(""); + exit(40); +} + +#define rtest_banner(content) \ + rcurrent_banner = content; \ + rtest_test_banner(content, __FILE__); +#define rtest_true(expr) rtest_test_true(#expr, expr, __LINE__); +#define rtest_assert(expr) \ + { \ + int __valid = expr ? 1 : 0; \ + rtest_test_true(#expr, __valid, __LINE__); \ + }; \ + ; + +#define rassert(expr) \ + { \ + int __valid = expr ? 1 : 0; \ + rtest_test_true(#expr, __valid, __LINE__); \ + }; \ + ; +#define rtest_asserts(expr) \ + { \ + int __valid = expr ? 1 : 0; \ + rtest_test_true_silent(#expr, __valid, __LINE__); \ + }; +#define rasserts(expr) \ + { \ + int __valid = expr ? 1 : 0; \ + rtest_test_true_silent(#expr, __valid, __LINE__); \ + }; +#define rtest_false(expr) \ + rprintf(" [%s]\t%s\t\n", expr == 0 ? "OK" : "NOK", #expr); \ + assert_count++; \ + assert(#expr); +#define rtest_skip(expr) rtest_test_skip(#expr, __LINE__); + +FILE *rtest_create_file(char *path, char *content) { + FILE *fd = fopen(path, "wb"); + + char c; + int index = 0; + + while ((c = content[index]) != 0) { + fputc(c, fd); + index++; + } + fclose(fd); + fd = fopen(path, "rb"); + return fd; +} + +void rtest_delete_file(char *path) { unlink(path); } +#endif + +char *rfcaptured = NULL; + +void rfcapture(FILE *f, char *buff, size_t size) { + rfcaptured = buff; + setvbuf(f, rfcaptured, _IOFBF, size); +} +void rfstopcapture(FILE *f) { setvbuf(f, 0, _IOFBF, 0); } + +bool _r_disable_stdout_toggle = false; + +FILE *_r_original_stdout = NULL; + +bool rr_enable_stdout() { + if (_r_disable_stdout_toggle) + return false; + if (!_r_original_stdout) { + stdout = fopen("/dev/null", "rb"); + return false; + } + if (_r_original_stdout && _r_original_stdout != stdout) { + fclose(stdout); + } + stdout = _r_original_stdout; + return true; +} +bool rr_disable_stdout() { + if (_r_disable_stdout_toggle) { + return false; + } + if (_r_original_stdout == NULL) { + _r_original_stdout = stdout; + } + if (stdout == _r_original_stdout) { + stdout = fopen("/dev/null", "rb"); + return true; + } + return false; +} +bool rr_toggle_stdout() { + if (!_r_original_stdout) { + rr_disable_stdout(); + return true; + } else if (stdout != _r_original_stdout) { + rr_enable_stdout(); + return true; + } else { + rr_disable_stdout(); + return true; + } +} + +typedef struct rprogressbar_t { + unsigned long current_value; + unsigned long min_value; + unsigned long max_value; + unsigned int length; + bool changed; + double percentage; + unsigned int width; + unsigned long draws; + FILE *fout; +} rprogressbar_t; + +rprogressbar_t *rprogressbar_new(long min_value, long max_value, unsigned int width, FILE *fout) { + rprogressbar_t *pbar = (rprogressbar_t *)malloc(sizeof(rprogressbar_t)); + pbar->min_value = min_value; + pbar->max_value = max_value; + pbar->current_value = min_value; + pbar->width = width; + pbar->draws = 0; + pbar->length = 0; + pbar->changed = false; + pbar->fout = fout ? fout : stdout; + return pbar; +} + +void rprogressbar_free(rprogressbar_t *pbar) { free(pbar); } + +void rprogressbar_draw(rprogressbar_t *pbar) { + if (!pbar->changed) { + return; + } else { + pbar->changed = false; + } + pbar->draws++; + char draws_text[22]; + draws_text[0] = 0; + sprintf(draws_text, "%ld", pbar->draws); + char *draws_textp = draws_text; + // bool draws_text_len = strlen(draws_text); + char bar_begin_char = ' '; + char bar_progress_char = ' '; + char bar_empty_char = ' '; + char bar_end_char = ' '; + char content[4096] = {0}; + char bar_content[1024]; + char buff[2048] = {0}; + bar_content[0] = '\r'; + bar_content[1] = bar_begin_char; + unsigned int index = 2; + for (unsigned long i = 0; i < pbar->length; i++) { + if (*draws_textp) { + bar_content[index] = *draws_textp; + draws_textp++; + } else { + bar_content[index] = bar_progress_char; + } + index++; + } + char infix[] = "\033[0m"; + for (unsigned long i = 0; i < strlen(infix); i++) { + bar_content[index] = infix[i]; + index++; + } + for (unsigned long i = 0; i < pbar->width - pbar->length; i++) { + bar_content[index] = bar_empty_char; + index++; + } + bar_content[index] = bar_end_char; + bar_content[index + 1] = '\0'; + sprintf(buff, "\033[43m%s\033[0m \033[33m%.2f%%\033[0m ", bar_content, pbar->percentage * 100); + strcat(content, buff); + if (pbar->width == pbar->length) { + strcat(content, "\r"); + for (unsigned long i = 0; i < pbar->width + 10; i++) { + strcat(content, " "); + } + strcat(content, "\r"); + } + fprintf(pbar->fout, "%s", content); + fflush(pbar->fout); +} + +bool rprogressbar_update(rprogressbar_t *pbar, unsigned long value) { + if (value == pbar->current_value) { + return false; + } + pbar->current_value = value; + pbar->percentage = (double)pbar->current_value / (double)(pbar->max_value - pbar->min_value); + unsigned long new_length = (unsigned long)(pbar->percentage * pbar->width); + pbar->changed = new_length != pbar->length; + if (pbar->changed) { + pbar->length = new_length; + rprogressbar_draw(pbar); + return true; + } + return false; +} + +size_t rreadline(char *data, size_t len, bool strip_ln) { + __attribute__((unused)) char *unused = fgets(data, len, stdin); + size_t length = strlen(data); + if (length && strip_ln) + data[length - 1] = 0; + return length; +} + +void rlib_test_progressbar() { + rtest_banner("Progress bar"); + rprogressbar_t *pbar = rprogressbar_new(0, 1000, 10, stderr); + rprogressbar_draw(pbar); + // No draws executed, nothing to show + rassert(pbar->draws == 0); + rprogressbar_update(pbar, 500); + rassert(pbar->percentage == 0.5); + rprogressbar_update(pbar, 500); + rprogressbar_update(pbar, 501); + rprogressbar_update(pbar, 502); + // Should only have drawn one time since value did change, but percentage + // did not + rassert(pbar->draws == 1); + // Changed is false because update function calls draw + rassert(pbar->changed == false); + rprogressbar_update(pbar, 777); + rassert(pbar->percentage == 0.777); + rprogressbar_update(pbar, 1000); + rassert(pbar->percentage == 1); +} + +#endif + +#define RBENCH(times, action) \ + { \ + unsigned long utimes = (unsigned long)times; \ + nsecs_t start = nsecs(); \ + for (unsigned long i = 0; i < utimes; i++) { \ + { \ + action; \ + } \ + } \ + nsecs_t end = nsecs(); \ + printf("%s\n", format_time(end - start)); \ + } + +#define RBENCHP(times, action) \ + { \ + printf("\n"); \ + nsecs_t start = nsecs(); \ + unsigned int prev_percentage = 0; \ + unsigned long utimes = (unsigned long)times; \ + for (unsigned long i = 0; i < utimes; i++) { \ + unsigned int percentage = ((long double)i / (long double)times) * 100; \ + int percentage_changed = percentage != prev_percentage; \ + __attribute__((unused)) int first = i == 0; \ + __attribute__((unused)) int last = i == utimes - 1; \ + { action; }; \ + if (percentage_changed) { \ + printf("\r%d%%", percentage); \ + fflush(stdout); \ + \ + prev_percentage = percentage; \ + } \ + } \ + nsecs_t end = nsecs(); \ + printf("\r%s\n", format_time(end - start)); \ + } + +struct rbench_t; + +typedef struct rbench_function_t { +#ifdef __cplusplus + void (*call)(); +#else + void(*call); +#endif + char name[256]; + char group[256]; + void *arg; + void *data; + bool first; + bool last; + int argc; + unsigned long times_executed; + + nsecs_t average_execution_time; + nsecs_t total_execution_time; +} rbench_function_t; + +typedef struct rbench_t { + unsigned int function_count; + rbench_function_t functions[100]; + rbench_function_t *current; + rprogressbar_t *progress_bar; + bool show_progress; + int winner; + bool stdout; + unsigned long times; + bool silent; + nsecs_t execution_time; +#ifdef __cplusplus + void (*add_function)(struct rbench_t *r, const char *name, const char *group, void (*)()); +#else + void (*add_function)(struct rbench_t *r, const char *name, const char *group, void *); +#endif + void (*rbench_reset)(struct rbench_t *r); + struct rbench_t *(*execute)(struct rbench_t *r, long times); + struct rbench_t *(*execute1)(struct rbench_t *r, long times, void *arg1); + struct rbench_t *(*execute2)(struct rbench_t *r, long times, void *arg1, void *arg2); + struct rbench_t *(*execute3)(struct rbench_t *r, long times, void *arg1, void *arg2, void *arg3); + +} rbench_t; + +FILE *_rbench_stdout = NULL; +FILE *_rbench_stdnull = NULL; + +void rbench_toggle_stdout(rbench_t *r) { + if (!r->stdout) { + if (_rbench_stdout == NULL) { + _rbench_stdout = stdout; + } + if (_rbench_stdnull == NULL) { + _rbench_stdnull = fopen("/dev/null", "wb"); + } + if (stdout == _rbench_stdout) { + stdout = _rbench_stdnull; + } else { + stdout = _rbench_stdout; + } + } +} +void rbench_restore_stdout(rbench_t *r) { + if (r->stdout) + return; + if (_rbench_stdout) { + stdout = _rbench_stdout; + } + if (_rbench_stdnull) { + fclose(_rbench_stdnull); + _rbench_stdnull = NULL; + } +} + +rbench_t *rbench_new(); + +rbench_t *_rbench = NULL; +rbench_function_t *rbf; +rbench_t *rbench() { + if (_rbench == NULL) { + _rbench = rbench_new(); + } + return _rbench; +} + +typedef void *(*rbench_call)(); +typedef void *(*rbench_call1)(void *); +typedef void *(*rbench_call2)(void *, void *); +typedef void *(*rbench_call3)(void *, void *, void *); + +#ifdef __cplusplus +void rbench_add_function(rbench_t *rp, const char *name, const char *group, void (*call)()) { +#else +void rbench_add_function(rbench_t *rp, const char *name, const char *group, void *call) { +#endif + rbench_function_t *f = &rp->functions[rp->function_count]; + rp->function_count++; + f->average_execution_time = 0; + f->total_execution_time = 0; + f->times_executed = 0; + f->call = call; + strcpy(f->name, name); + strcpy(f->group, group); +} + +void rbench_reset_function(rbench_function_t *f) { + f->average_execution_time = 0; + f->times_executed = 0; + f->total_execution_time = 0; +} + +void rbench_reset(rbench_t *rp) { + for (unsigned int i = 0; i < rp->function_count; i++) { + rbench_reset_function(&rp->functions[i]); + } +} +int rbench_get_winner_index(rbench_t *r) { + int winner = 0; + nsecs_t time = 0; + for (unsigned int i = 0; i < r->function_count; i++) { + if (time == 0 || r->functions[i].total_execution_time < time) { + winner = i; + time = r->functions[i].total_execution_time; + } + } + return winner; +} +bool rbench_was_last_function(rbench_t *r) { + for (unsigned int i = 0; i < r->function_count; i++) { + if (i == r->function_count - 1 && r->current == &r->functions[i]) + return true; + } + return false; +} + +rbench_function_t *rbench_execute_prepare(rbench_t *r, int findex, long times, int argc) { + rbench_toggle_stdout(r); + if (findex == 0) { + r->execution_time = 0; + } + rbench_function_t *rf = &r->functions[findex]; + rf->argc = argc; + rbf = rf; + r->current = rf; + if (r->show_progress) + r->progress_bar = rprogressbar_new(0, times, 20, stderr); + r->times = times; + // printf(" %s:%s gets executed for %ld times with %d + // arguments.\n",rf->group, rf->name, times,argc); + rbench_reset_function(rf); + + return rf; +} +void rbench_execute_finish(rbench_t *r) { + rbench_toggle_stdout(r); + if (r->progress_bar) { + free(r->progress_bar); + r->progress_bar = NULL; + } + r->current->average_execution_time = r->current->total_execution_time / r->current->times_executed; + ; + // printf(" %s:%s finished executing in + // %s\n",r->current->group,r->current->name, + // format_time(r->current->total_execution_time)); + // rbench_show_results_function(r->current); + if (rbench_was_last_function(r)) { + rbench_restore_stdout(r); + unsigned int winner_index = rbench_get_winner_index(r); + r->winner = winner_index + 1; + if (!r->silent) + rprintgf(stderr, "Benchmark results:\n"); + nsecs_t total_time = 0; + + for (unsigned int i = 0; i < r->function_count; i++) { + rbf = &r->functions[i]; + total_time += rbf->total_execution_time; + bool is_winner = winner_index == i; + if (is_winner) { + if (!r->silent) + rprintyf(stderr, " > %s:%s:%s\n", format_time(rbf->total_execution_time), rbf->group, rbf->name); + } else { + if (!r->silent) + rprintbf(stderr, " %s:%s:%s\n", format_time(rbf->total_execution_time), rbf->group, rbf->name); + } + } + if (!r->silent) + rprintgf(stderr, "Total execution time: %s\n", format_time(total_time)); + } + rbench_restore_stdout(r); + rbf = NULL; + r->current = NULL; +} +struct rbench_t *rbench_execute(rbench_t *r, long times) { + + for (unsigned int i = 0; i < r->function_count; i++) { + + rbench_function_t *f = rbench_execute_prepare(r, i, times, 0); + rbench_call c = (rbench_call)f->call; + nsecs_t start = nsecs(); + f->first = true; + c(); + f->first = false; + f->last = false; + f->times_executed++; + for (int j = 1; j < times; j++) { + c(); + f->times_executed++; + f->last = f->times_executed == r->times - 1; + if (r->progress_bar) { + rprogressbar_update(r->progress_bar, f->times_executed); + } + } + f->total_execution_time = nsecs() - start; + r->execution_time += f->total_execution_time; + rbench_execute_finish(r); + } + return r; +} + +struct rbench_t *rbench_execute1(rbench_t *r, long times, void *arg1) { + + for (unsigned int i = 0; i < r->function_count; i++) { + rbench_function_t *f = rbench_execute_prepare(r, i, times, 1); + rbench_call1 c = (rbench_call1)f->call; + nsecs_t start = nsecs(); + f->first = true; + c(arg1); + f->first = false; + f->last = false; + f->times_executed++; + for (int j = 1; j < times; j++) { + c(arg1); + f->times_executed++; + f->last = f->times_executed == r->times - 1; + if (r->progress_bar) { + rprogressbar_update(r->progress_bar, f->times_executed); + } + } + f->total_execution_time = nsecs() - start; + r->execution_time += f->total_execution_time; + rbench_execute_finish(r); + } + return r; +} + +struct rbench_t *rbench_execute2(rbench_t *r, long times, void *arg1, void *arg2) { + + for (unsigned int i = 0; i < r->function_count; i++) { + rbench_function_t *f = rbench_execute_prepare(r, i, times, 2); + rbench_call2 c = (rbench_call2)f->call; + nsecs_t start = nsecs(); + f->first = true; + c(arg1, arg2); + f->first = false; + f->last = false; + f->times_executed++; + for (int j = 1; j < times; j++) { + c(arg1, arg2); + f->times_executed++; + f->last = f->times_executed == r->times - 1; + if (r->progress_bar) { + rprogressbar_update(r->progress_bar, f->times_executed); + } + } + f->total_execution_time = nsecs() - start; + r->execution_time += f->total_execution_time; + rbench_execute_finish(r); + } + return r; +} + +struct rbench_t *rbench_execute3(rbench_t *r, long times, void *arg1, void *arg2, void *arg3) { + + for (unsigned int i = 0; i < r->function_count; i++) { + rbench_function_t *f = rbench_execute_prepare(r, i, times, 3); + + rbench_call3 c = (rbench_call3)f->call; + nsecs_t start = nsecs(); + f->first = true; + c(arg1, arg2, arg3); + f->first = false; + f->last = false; + f->times_executed++; + for (int j = 1; j < times; j++) { + c(arg1, arg2, arg3); + f->times_executed++; + f->last = f->times_executed == r->times - 1; + if (r->progress_bar) { + rprogressbar_update(r->progress_bar, f->times_executed); + } + } + f->total_execution_time = nsecs() - start; + rbench_execute_finish(r); + } + return r; +} + +rbench_t *rbench_new() { + + rbench_t *r = (rbench_t *)malloc(sizeof(rbench_t)); + memset(r, 0, sizeof(rbench_t)); + r->add_function = rbench_add_function; + r->rbench_reset = rbench_reset; + r->execute1 = rbench_execute1; + r->execute2 = rbench_execute2; + r->execute3 = rbench_execute3; + r->execute = rbench_execute; + r->stdout = true; + r->silent = false; + r->winner = 0; + r->show_progress = true; + return r; +} +void rbench_free(rbench_t *r) { free(r); } + +#endif +bool check_lcov() { + char buffer[1024 * 64]; + FILE *fp; + fp = popen("lcov --help", "r"); + if (fp == NULL) { + return false; + } + if (fgets(buffer, sizeof(buffer), fp) == NULL) { + return false; + } + pclose(fp); + return strstr(buffer, "lcov: not found") ? false : true; +} + +int rcov_main(int argc, char *argv[]) { + if (argc < 2) { + printf("Usage: [source.c]\n"); + return 1; + } + char argstr[4096] = {0}; + for (int i = 2; i < argc; i++) { + strcat(argstr, argv[i]); + strcat(argstr, " "); + } + if (!check_lcov()) { + + printf("lcov is not installed. Please execute `sudo apt install lcov`.\n"); + return 1; + } + char *source_file = argv[1]; + char *commands[] = {"rm -f *.gcda 2>/dev/null", + "rm -f *.gcno 2>/dev/null", + "rm -f %s.coverage.info 2>/dev/null", + "gcc -pg -fprofile-arcs -ftest-coverage -g -o %s_coverage.o %s", + "./%s_coverage.o", + "lcov --capture --directory . --output-file %s.coverage.info", + "genhtml %s.coverage.info --output-directory /tmp/%s.coverage", + "rm -f *.gcda 2>/dev/null", + "rm -f *.gcno 2>/dev/null", + "rm -f %s.coverage.info 2>/dev/null", //"cat gmon.out", + + "gprof %s_coverage.o gmon.out > output.rcov_analysis", + + "rm -f gmon.out", + "cat output.rcov_analysis", + "rm output.rcov_analysis", + "rm -f %s_coverage.o", + + "google-chrome /tmp/%s.coverage/index.html"}; + uint command_count = sizeof(commands) / sizeof(commands[0]); + RBENCH(1,{ + for (uint i = 0; i < command_count; i++) { + char *formatted_command = sbuf(""); + sprintf(formatted_command, commands[i], source_file, source_file); + // printf("%s\n", formatted_command); + if (formatted_command[0] == '.' && formatted_command[1] == '/') { + strcat(formatted_command, " "); + strcat(formatted_command, argstr); + } + + if (system(formatted_command)) { + printf("`%s` returned non-zero code.\n", formatted_command); + } + }); + } + return 0; +} +#endif + +#ifndef RHTTP_H +#define RHTTP_H +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define BUFF_SIZE 8096 +#define RHTTP_MAX_CONNECTIONS 100 + +int rhttp_opt_error = 1; +int rhttp_opt_warn = 1; +int rhttp_opt_info = 1; +int rhttp_opt_port = 8080; +int rhttp_opt_debug = 0; +int rhttp_opt_request_logging = 0; +int rhttp_sock = 0; +int rhttp_opt_buffered = 0; +int rhttp_c = 0; +int rhttp_c_mutex_initialized = 0; +pthread_mutex_t rhttp_c_mutex; +char rhttp_opt_host[1024] = "0.0.0.0"; +unsigned int rhttp_connections_handled = 0; + +typedef struct rhttp_header_t { + char *name; + char *value; + struct rhttp_header_t *next; +} rhttp_header_t; + +typedef struct rhttp_request_t { + int c; + int closed; + bool keep_alive; + nsecs_t start; + char *raw; + char *line; + char *body; + char *method; + char *path; + char *version; + void *context; + unsigned int bytes_received; + rhttp_header_t *headers; +} rhttp_request_t; + +char *rhttp_current_timestamp() { + time_t current_time; + time(¤t_time); + struct tm *local_time = localtime(¤t_time); + static char time_string[100]; + time_string[0] = 0; + strftime(time_string, sizeof(time_string), "%Y-%m-%d %H:%M:%S", local_time); + + return time_string; +} + +void rhttp_logs(const char *prefix, const char *level, const char *format, va_list args) { + char buf[strlen(format) + BUFSIZ + 1]; + buf[0] = 0; + sprintf(buf, "%s%s %s %s\e[0m", prefix, rhttp_current_timestamp(), level, format); + vfprintf(stdout, buf, args); +} +void rhttp_log_info(const char *format, ...) { + if (!rhttp_opt_info) + return; + va_list args; + va_start(args, format); + rhttp_logs("\e[32m", "INFO ", format, args); + va_end(args); +} +void rhttp_log_debug(const char *format, ...) { + if (!rhttp_opt_debug) + return; + va_list args; + va_start(args, format); + if (rhttp_opt_debug) + rhttp_logs("\e[33m", "DEBUG", format, args); + + va_end(args); +} +void rhttp_log_warn(const char *format, ...) { + if (!rhttp_opt_warn) + return; + va_list args; + va_start(args, format); + rhttp_logs("\e[34m", "WARN ", format, args); + + va_end(args); +} +void rhttp_log_error(const char *format, ...) { + if (!rhttp_opt_error) + return; + va_list args; + va_start(args, format); + rhttp_logs("\e[35m", "ERROR", format, args); + + va_end(args); +} + +void http_request_init(rhttp_request_t *r) { + r->raw = NULL; + r->line = NULL; + r->body = NULL; + r->method = NULL; + r->path = NULL; + r->version = NULL; + r->start = 0; + r->headers = NULL; + r->bytes_received = 0; + r->closed = 0; +} + +void rhttp_free_header(rhttp_header_t *h) { + if (!h) + return; + rhttp_header_t *next = h->next; + free(h->name); + free(h->value); + free(h); + if (next) + rhttp_free_header(next); +} +void rhttp_rhttp_free_headers(rhttp_request_t *r) { + if (!r->headers) + return; + rhttp_free_header(r->headers); + r->headers = NULL; +} + +rhttp_header_t *rhttp_parse_headers(rhttp_request_t *s) { + int first = 1; + char *body = strdup(s->body); + char *body_original = body; + while (body && *body) { + char *line = __strtok_r(first ? body : NULL, "\r\n", &body); + if (!line) + break; + rhttp_header_t *h = (rhttp_header_t *)malloc(sizeof(rhttp_header_t)); + h->name = NULL; + h->value = NULL; + h->next = NULL; + char *name = __strtok_r(line, ": ", &line); + first = 0; + if (!name) { + rhttp_free_header(h); + break; + } + h->name = strdup(name); + char *value = __strtok_r(NULL, "\r\n", &line); + if (!value) { + rhttp_free_header(h); + break; + } + h->value = value ? strdup(value + 1) : strdup(""); + h->next = s->headers; + s->headers = h; + } + free(body_original); + return s->headers; +} + +void rhttp_free_request(rhttp_request_t *r) { + if (r->raw) { + free(r->raw); + free(r->body); + free(r->method); + free(r->path); + free(r->version); + rhttp_rhttp_free_headers(r); + } + free(r); +} + +long rhttp_header_get_long(rhttp_request_t *r, const char *name) { + rhttp_header_t *h = r->headers; + while (h) { + if (!strcmp(h->name, name)) + return strtol(h->value, NULL, 10); + h = h->next; + } + return -1; +} +char *rhttp_header_get_string(rhttp_request_t *r, const char *name) { + rhttp_header_t *h = r->headers; + while (h) { + if (!strcmp(h->name, name)) + return h->value && *h->value ? h->value : NULL; + h = h->next; + } + return NULL; +} + +void rhttp_print_header(rhttp_header_t *h) { rhttp_log_debug("Header: <%s> \"%s\"\n", h->name, h->value); } +void rhttp_print_headers(rhttp_header_t *h) { + while (h) { + rhttp_print_header(h); + h = h->next; + } +} +void rhttp_print_request_line(rhttp_request_t *r) { rhttp_log_info("%s %s %s\n", r->method, r->path, r->version); } +void rhttp_print_request(rhttp_request_t *r) { + rhttp_print_request_line(r); + if (rhttp_opt_debug) + rhttp_print_headers(r->headers); +} +void rhttp_close(rhttp_request_t *r) { + if (!r) + return; + if (!r->closed) + close(r->c); + rhttp_free_request(r); +} +rhttp_request_t *rhttp_parse_request(int s) { + rhttp_request_t *request = (rhttp_request_t *)malloc(sizeof(rhttp_request_t)); + http_request_init(request); + char buf[BUFF_SIZE] = {0}; + request->c = s; + int breceived = 0; + while (!rstrendswith(buf, "\r\n\r\n")) { + int chunk_size = read(s, buf + breceived, 1); + if (chunk_size <= 0) { + close(request->c); + request->closed = 1; + return request; + } + breceived += chunk_size; + } + if (breceived <= 0) { + close(request->c); + request->closed = 1; + return request; + } + buf[breceived] = '\0'; + char *original_buf = buf; + + char *b = original_buf; + request->raw = strdup(b); + b = original_buf; + char *line = strtok(b, "\r\n"); + b = original_buf; + char *body = b + strlen(line) + 2; + request->body = strdup(body); + b = original_buf; + char *method = strtok(b, " "); + char *path = strtok(NULL, " "); + char *version = strtok(NULL, " "); + request->bytes_received = breceived; + request->line = line; + request->start = nsecs(); + request->method = strdup(method); + request->path = strdup(path); + request->version = strdup(version); + request->headers = NULL; + request->keep_alive = false; + if (rhttp_parse_headers(request)) { + char *keep_alive_string = rhttp_header_get_string(request, "Connection"); + if (keep_alive_string && !strcmp(keep_alive_string, "keep-alive")) { + request->keep_alive = 1; + } + } + return request; +} + +void rhttp_close_server() { + close(rhttp_sock); + close(rhttp_c); + printf("Connections handled: %d\n", rhttp_connections_handled); + printf("Gracefully closed\n"); + exit(0); +} + +size_t rhttp_send_drain(int s, void *tsend, size_t to_send_len) { + if (to_send_len == 0 && *(unsigned char *)tsend) { + to_send_len = strlen(tsend); + } + unsigned char *to_send = (unsigned char *)malloc(to_send_len); + unsigned char *to_send_original = to_send; + + memcpy(to_send, tsend, to_send_len); + // to_send[to_send_len] = '\0'; + long bytes_sent = 0; + long bytes_sent_total = 0; + while (1) { + bytes_sent = send(s, to_send + bytes_sent_total, to_send_len - bytes_sent_total, 0); + if (bytes_sent <= 0) { + bytes_sent_total = 0; + break; + } + bytes_sent_total += bytes_sent; + + if (bytes_sent_total == (long)to_send_len) { + break; + } else if (!bytes_sent) { + bytes_sent_total = 0; + // error + break; + } else { + rhttp_log_info("Extra send of %d/%d bytes.\n", bytes_sent_total, to_send_len); + } + } + + free(to_send_original); + return bytes_sent_total; +} + +typedef int (*rhttp_request_handler_t)(rhttp_request_t *r); + +void rhttp_serve(const char *host, int port, int backlog, int request_logging, int request_debug, rhttp_request_handler_t handler, + void *context) { + signal(SIGPIPE, SIG_IGN); + rhttp_sock = socket(AF_INET, SOCK_STREAM, 0); + struct sockaddr_in addr; + addr.sin_family = AF_INET; + addr.sin_port = htons(port); + addr.sin_addr.s_addr = inet_addr(host ? host : "0.0.0.0"); + rhttp_opt_debug = request_debug; + rhttp_opt_request_logging = request_logging; + int opt = 1; + setsockopt(rhttp_sock, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt)); + if (bind(rhttp_sock, (struct sockaddr *)&addr, sizeof(addr)) < 0) { + printf("Binding error\n"); + exit(1); + } + listen(rhttp_sock, backlog); + while (1) { + struct sockaddr_in client_addr; + int addrlen = sizeof(client_addr); + + rhttp_c = accept(rhttp_sock, (struct sockaddr *)&client_addr, (socklen_t *)&addrlen); + + rhttp_connections_handled++; + while (true) { + rhttp_request_t *r = rhttp_parse_request(rhttp_c); + r->context = context; + if (!r->closed) { + if (!handler(r) && !r->closed) { + rhttp_close(r); + } + } + if (!r->keep_alive && !r->closed) { + rhttp_close(r); + } else if (r->keep_alive && !r->closed) { + } + if (r->closed) { + break; + } + rhttp_free_request(r); + } + } +} + +unsigned int rhttp_calculate_number_char_count(unsigned int number) { + unsigned int width = 1; + unsigned int tcounter = number; + while (tcounter / 10 >= 1) { + tcounter = tcounter / 10; + width++; + } + return width; +} + +int rhttp_file_response(rhttp_request_t *r, char *path) { + if (!*path) + return 0; + FILE *f = fopen(path, "rb"); + if (f == NULL) + return 0; + size_t file_size = rfile_size(path); + char response[1024] = {0}; + char content_type_header[100] = {0}; + char *ext = strstr(path, "."); + char *text_extensions = ".h,.c,.html"; + if (strstr(text_extensions, ext)) { + sprintf(content_type_header, "Content-Type: %s\r\n", "text/html"); + } + sprintf(response, "HTTP/1.1 200 OK\r\n%sContent-Length:%ld\r\n\r\n", content_type_header, file_size); + if (!rhttp_send_drain(r->c, response, 0)) { + rhttp_log_error("Error sending file: %s\n", path); + } + size_t bytes = 0; + size_t bytes_sent = 0; + unsigned char file_buff[1024]; + while ((bytes = fread(file_buff, sizeof(char), sizeof(file_buff), f))) { + if (!rhttp_send_drain(r->c, file_buff, bytes)) { + rhttp_log_error("Error sending file during chunking: %s\n", path); + } + bytes_sent += bytes; + } + if (bytes_sent != file_size) { + rhttp_send_drain(r->c, file_buff, file_size - bytes_sent); + } + close(r->c); + fclose(f); + return 1; +}; + +int rhttp_file_request_handler(rhttp_request_t *r) { + char *path = r->path; + while (*path == '/' || *path == '.') + path++; + if (strstr(path, "..")) { + return 0; + } + return rhttp_file_response(r, path); +}; + +unsigned int counter = 100000000; +int rhttp_counter_request_handler(rhttp_request_t *r) { + if (!strncmp(r->path, "/counter", strlen("/counter"))) { + counter++; + unsigned int width = rhttp_calculate_number_char_count(counter); + char to_send2[1024] = {0}; + sprintf(to_send2, + "HTTP/1.1 200 OK\r\nContent-Length: %d\r\nConnection: " + "close\r\n\r\n%d", + width, counter); + rhttp_send_drain(r->c, to_send2, 0); + close(r->c); + return 1; + } + return 0; +} +int rhttp_root_request_handler(rhttp_request_t *r) { + if (!strcmp(r->path, "/")) { + char to_send[1024] = {0}; + sprintf(to_send, "HTTP/1.1 200 OK\r\nContent-Length: 3\r\nConnection: " + "close\r\n\r\nOk!"); + rhttp_send_drain(r->c, to_send, 0); + close(r->c); + return 1; + } + return 0; +} +int rhttp_error_404_handler(rhttp_request_t *r) { + char to_send[1024] = {0}; + sprintf(to_send, "HTTP/1.1 404 Document not found\r\nContent-Length: " + "0\r\nConnection: close\r\n\r\n"); + rhttp_send_drain(r->c, to_send, 0); + close(r->c); + return 1; +} + +int rhttp_default_request_handler(rhttp_request_t *r) { + if (rhttp_opt_debug || rhttp_opt_request_logging) + rhttp_print_request(r); + if (rhttp_counter_request_handler(r)) { + // Counter handler + rhttp_log_info("Counter handler found for: %s\n", r->path); + + } else if (rhttp_root_request_handler(r)) { + // Root handler + rhttp_log_info("Root handler found for: %s\n", r->path); + } else if (rhttp_file_request_handler(r)) { + rhttp_log_info("File %s sent\n", r->path); + } else if (rhttp_error_404_handler(r)) { + rhttp_log_warn("Error 404 for: %s\n", r->path); + // Error handler + } else { + rhttp_log_warn("No handler found for: %s\n", r->path); + close(rhttp_c); + } + return 0; +} + +int rhttp_main(int argc, char *argv[]) { + setvbuf(stdout, NULL, _IOLBF, BUFSIZ); + int opt; + while ((opt = getopt(argc, argv, "p:drh:bewi")) != -1) { + switch (opt) { + case 'i': + rhttp_opt_info = 1; + rhttp_opt_warn = 1; + rhttp_opt_error = 1; + break; + case 'e': + rhttp_opt_error = 1; + rhttp_opt_warn = 0; + rhttp_opt_info = 0; + break; + case 'w': + rhttp_opt_warn = 1; + rhttp_opt_error = 1; + rhttp_opt_info = 0; + break; + case 'p': + rhttp_opt_port = atoi(optarg); + break; + case 'b': + rhttp_opt_buffered = 1; + printf("Logging is buffered. Output may be incomplete.\n"); + break; + case 'h': + strcpy(rhttp_opt_host, optarg); + break; + case 'd': + printf("Debug enabled\n"); + rhttp_opt_debug = 1; + rhttp_opt_warn = 1; + rhttp_opt_info = 1; + rhttp_opt_error = 1; + break; + case 'r': + printf("Request logging enabled\n"); + rhttp_opt_request_logging = 1; + break; + default: + printf("Usage: %s [-p port] [-h host] [-b]\n", argv[0]); + return 1; + } + } + + printf("Starting server on: %s:%d\n", rhttp_opt_host, rhttp_opt_port); + if (rhttp_opt_buffered) + setvbuf(stdout, NULL, _IOFBF, BUFSIZ); + + rhttp_serve(rhttp_opt_host, rhttp_opt_port, 1024, rhttp_opt_request_logging, rhttp_opt_debug, rhttp_default_request_handler, NULL); + + return 0; +} + +/* CLIENT CODE */ + +typedef struct rhttp_client_request_t { + char *host; + int port; + char *path; + bool is_done; + char *request; + char *response; + pthread_t thread; + int bytes_received; +} rhttp_client_request_t; + +rhttp_client_request_t *rhttp_create_request(const char *host, int port, const char *path) { + rhttp_client_request_t *r = (rhttp_client_request_t *)malloc(sizeof(rhttp_client_request_t)); + char request_line[4096] = {0}; + sprintf(request_line, + "GET %s HTTP/1.1\r\n" + "Host: localhost:8000\r\n" + "Connection: close\r\n" + "Accept: */*\r\n" + "User-Agent: mhttpc\r\n" + "Accept-Language: en-US,en;q=0.5\r\n" + "Accept-Encoding: gzip, deflate\r\n" + "\r\n", + path); + r->request = strdup(request_line); + r->host = strdup(host); + r->port = port; + r->path = strdup(path); + r->is_done = false; + r->response = NULL; + r->bytes_received = 0; + return r; +} + +int rhttp_execute_request(rhttp_client_request_t *r) { + int s = socket(AF_INET, SOCK_STREAM, 0); + struct sockaddr_in addr; + + addr.sin_family = AF_INET; + addr.sin_port = htons(r->port); + addr.sin_addr.s_addr = inet_addr(r->host); + + if (connect(s, (struct sockaddr *)&addr, sizeof(addr)) < 0) { + return 0; + } + + send(s, r->request, strlen(r->request), 0); + char buf[1024 * 1024] = {0}; + int ret = recv(s, buf, 1024 * 1024, 0); + if (ret > 0) { + r->response = strdup(buf); + } + + close(s); + return ret; +} +void rhttp_reset_request(rhttp_client_request_t *r) { + free(r->response); + r->is_done = false; + r->response = NULL; + r->bytes_received = 0; +} +void rhttp_free_client_request(rhttp_client_request_t *r) { + if (r->request) + free(r->request); + if (r->response) + free(r->response); + if (r->host) + free(r->host); + if (r->path) + free(r->path); + free(r); +} + +void rhttp_client_bench(int workers, int times, const char *host, int port, const char *path) { + rhttp_client_request_t *requests[workers]; + while (times > 0) { + + for (int i = 0; i < workers && times; i++) { + requests[i] = rhttp_create_request(host, port, path); + rhttp_execute_request(requests[i]); + times--; + } + } +} +char *rhttp_client_get(const char *host, int port, const char *path) { + if (!rhttp_c_mutex_initialized) { + rhttp_c_mutex_initialized = 1; + pthread_mutex_init(&rhttp_c_mutex, NULL); + } + char http_response[1024 * 1024]; + http_response[0] = 0; + rhttp_client_request_t *r = rhttp_create_request(host, port, path); + unsigned int reconnects = 0; + unsigned int reconnects_max = 100000; + while (!rhttp_execute_request(r)) { + reconnects++; + tick(); + if (reconnects == reconnects_max) { + fprintf(stderr, "Maxium reconnects exceeded for %s:%d\n", host, port); + rhttp_free_client_request(r); + return NULL; + } + } + r->is_done = true; + char *body = r->response ? strstr(r->response, "\r\n\r\n") : NULL; + pthread_mutex_lock(&rhttp_c_mutex); + if (body) { + strcpy(http_response, body + 4); + } else { + strcpy(http_response, r->response); + } + rhttp_free_client_request(r); + char *result = sbuf(http_response); + pthread_mutex_unlock(&rhttp_c_mutex); + return result; +} +/*END CLIENT CODE */ +#endif + +#ifndef RJSON_H +#define RJSON_H + +typedef struct rjson_t { + char *content; + size_t length; + size_t size; +} rjson_t; + +rjson_t *rjson() { + rjson_t *json = rmalloc(sizeof(rjson_t)); + json->size = 1024; + json->length = 0; + json->content = (char *)rmalloc(json->size); + json->content[0] = 0; + return json; +} + +void rjson_write(rjson_t *rjs, char *content) { + size_t len = strlen(content); + while (rjs->size < rjs->length + len + 1) { + rjs->content = realloc(rjs->content, rjs->size + 1024); + rjs->size += 1024; + } + strcat(rjs->content, content); + rjs->length += len; +} + +void rjson_object_start(rjson_t *rjs) { + if (rstrendswith(rjs->content, "}")) + rjson_write(rjs, ","); + rjson_write(rjs, "{"); +} +void rjson_object_close(rjson_t *rjs) { + if (rstrendswith(rjs->content, ",")) { + rjs->content[rjs->length - 1] = 0; + rjs->length--; + } + rjson_write(rjs, "}"); +} +void rjson_array_start(rjson_t *rjs) { + if (rjs->length && (rstrendswith(rjs->content, "}") || rstrendswith(rjs->content, "]"))) + rjson_write(rjs, ","); + rjson_write(rjs, "["); +} +void rjson_array_close(rjson_t *rjs) { + if (rstrendswith(rjs->content, ",")) { + rjs->content[rjs->length - 1] = 0; + rjs->length--; + } + rjson_write(rjs, "]"); +} + +void rjson_kv_string(rjson_t *rjs, char *key, char *value) { + if (rjs->length && !rstrendswith(rjs->content, "{") && !rstrendswith(rjs->content, "[")) { + rjson_write(rjs, ","); + } + rjson_write(rjs, "\""); + rjson_write(rjs, key); + rjson_write(rjs, "\":\""); + char *value_str = (char *)rmalloc(strlen(value) + 4096); + rstraddslashes(value, value_str); + rjson_write(rjs, value_str); + free(value_str); + rjson_write(rjs, "\""); +} + +void rjson_kv_int(rjson_t *rjs, char *key, ulonglong value) { + if (rjs->length && !rstrendswith(rjs->content, "{") && !rstrendswith(rjs->content, "[")) { + rjson_write(rjs, ","); + } + rjson_write(rjs, "\""); + rjson_write(rjs, key); + rjson_write(rjs, "\":"); + char value_str[100] = {0}; + sprintf(value_str, "%lld", value); + rjson_write(rjs, value_str); +} +void rjson_kv_number(rjson_t *rjs, char *key, ulonglong value) { + if (rjs->length && !rstrendswith(rjs->content, "{") && !rstrendswith(rjs->content, "[")) { + rjson_write(rjs, ","); + } + rjson_write(rjs, "\""); + rjson_write(rjs, key); + rjson_write(rjs, "\":"); + rjson_write(rjs, "\""); + + rjson_write(rjs, sbuf(rformat_number(value))); + rjson_write(rjs, "\""); +} + +void rjson_kv_bool(rjson_t *rjs, char *key, int value) { + if (rjs->length && !rstrendswith(rjs->content, "{") && !rstrendswith(rjs->content, "[")) { + rjson_write(rjs, ","); + } + rjson_write(rjs, "\""); + rjson_write(rjs, key); + rjson_write(rjs, "\":"); + rjson_write(rjs, value > 0 ? "true" : "false"); +} + +void rjson_kv_duration(rjson_t *rjs, char *key, nsecs_t value) { + if (rjs->length && !rstrendswith(rjs->content, "{") && !rstrendswith(rjs->content, "[")) { + rjson_write(rjs, ","); + } + rjson_write(rjs, "\""); + rjson_write(rjs, key); + rjson_write(rjs, "\":"); + rjson_write(rjs, "\""); + + rjson_write(rjs, sbuf(format_time(value))); + rjson_write(rjs, "\""); +} +void rjson_free(rjson_t *rsj) { + free(rsj->content); + free(rsj); +} + +void rjson_key(rjson_t *rsj, char *key) { + rjson_write(rsj, "\""); + rjson_write(rsj, key); + rjson_write(rsj, "\":"); +} +#endif +#ifndef RAUTOCOMPLETE_H +#define RAUTOCOMPLETE_H +#define R4_DEBUG +#ifndef RREX4_H +#define RREX4_H +#include +#include +#include +#include +#include +#include + +#define R4_DEBUG_a + +#ifdef R4_DEBUG +static int _r4_debug = 1; +#else +static int _r4_debug = 0; +#endif + +static char *_format_function_name(const char *name) { + static char result[100]; + result[0] = 0; + + char *new_name = (char *)name; + new_name += 11; + if (new_name[0] == '_') + new_name += 1; + if (strlen(new_name) == 0) { + return " -"; + } + strcpy(result, new_name); + return result; +} + +#define DEBUG_VALIDATE_FUNCTION \ + if (_r4_debug || r4->debug) \ + printf("DEBUG: %s %s <%s> \"%s\"\n", _format_function_name(__func__), r4->valid ? "valid" : "INVALID", r4->expr, r4->str); + +struct r4_t; + +void r4_enable_debug() { _r4_debug = true; } +void r4_disable_debug() { _r4_debug = false; } + +typedef bool (*r4_function)(struct r4_t *); + +typedef struct r4_t { + bool debug; + bool valid; + bool in_block; + bool is_greedy; + bool in_range; + unsigned int backtracking; + unsigned int loop_count; + unsigned int in_group; + unsigned int match_count; + unsigned int validation_count; + unsigned int start; + unsigned int end; + unsigned int length; + bool (*functions[254])(struct r4_t *); + bool (*slash_functions[254])(struct r4_t *); + char *_str; + char *_expr; + char *match; + char *str; + char *expr; + char *str_previous; + char *expr_previous; + char **matches; +} r4_t; + +static bool v4_initiated = false; +typedef bool (*v4_function_map)(r4_t *); +v4_function_map v4_function_map_global[256]; +v4_function_map v4_function_map_slash[256]; +v4_function_map v4_function_map_block[256]; + +void r4_free_matches(r4_t *r) { + if (!r) + return; + if (r->match) { + free(r->match); + r->match = NULL; + } + if (!r->match_count) { + return; + } + for (unsigned i = 0; i < r->match_count; i++) { + free(r->matches[i]); + } + free(r->matches); + r->match_count = 0; + r->matches = NULL; +} + +void r4_free(r4_t *r) { + if (!r) + return; + r4_free_matches(r); + free(r); +} + +static bool r4_backtrack(r4_t *r4); +static bool r4_validate(r4_t *r4); +static void r4_match_add(r4_t *r4, char *extracted); + +static bool r4_validate_literal(r4_t *r4) { + DEBUG_VALIDATE_FUNCTION + if (!r4->valid) + return false; + if (*r4->str != *r4->expr) { + r4->valid = false; + } else { + r4->str++; + } + r4->expr++; + if (r4->in_block || r4->in_range || !r4->is_greedy) { + return r4->valid; + } + return r4_validate(r4); +} +static bool r4_validate_question_mark(r4_t *r4) { + DEBUG_VALIDATE_FUNCTION + r4->valid = true; + r4->expr++; + return r4_validate(r4); +} + +static bool r4_validate_plus(r4_t *r4) { + DEBUG_VALIDATE_FUNCTION + r4->expr++; + if (r4->valid == false) { + return r4_validate(r4); + } + char *expr_left = r4->expr_previous; + char *expr_right = r4->expr; + char *str = r4->str; + char *return_expr = NULL; + if (*expr_right == ')') { + return_expr = expr_right; + expr_right++; + } + r4->is_greedy = false; + r4->expr = expr_left; + while (r4->valid) { + if (*expr_right) { + r4->expr = expr_right; + r4->is_greedy = true; + if (r4_backtrack(r4)) { + + if (return_expr) { + r4->str = str; + r4->expr = return_expr; + } + return r4_validate(r4); + } else { + r4->is_greedy = false; + } + } + r4->valid = true; + r4->expr = expr_left; + r4->str = str; + r4_validate(r4); + str = r4->str; + } + r4->is_greedy = true; + r4->valid = true; + r4->expr = return_expr ? return_expr : expr_right; + return r4_validate(r4); +} + +static bool r4_validate_dollar(r4_t *r4) { + DEBUG_VALIDATE_FUNCTION + r4->expr++; + r4->valid = *r4->str == 0; + return r4_validate(r4); +} + +static bool r4_validate_roof(r4_t *r4) { + DEBUG_VALIDATE_FUNCTION + if (r4->str != r4->_str) { + return false; + } + r4->expr++; + return r4_validate(r4); +} + +static bool r4_validate_dot(r4_t *r4) { + DEBUG_VALIDATE_FUNCTION + if (*r4->str == 0) { + return false; + } + r4->expr++; + r4->valid = *r4->str != '\n'; + r4->str++; + + if (r4->in_block || r4->in_range || !r4->is_greedy) { + return r4->valid; + } + return r4_validate(r4); +} + +static bool r4_validate_asterisk(r4_t *r4) { + DEBUG_VALIDATE_FUNCTION + r4->expr++; + if (r4->valid == false) { + r4->valid = true; + return r4->valid; + // return r4_validate(r4); + } + char *expr_left = r4->expr_previous; + char *expr_right = r4->expr; + char *str = r4->str; + char *return_expr = NULL; + if (*expr_right == ')') { + return_expr = expr_right; + expr_right++; + } + r4->is_greedy = false; + r4->expr = expr_left; + while (r4->valid) { + if (*expr_right) { + r4->expr = expr_right; + r4->is_greedy = true; + if (r4_backtrack(r4)) { + + if (return_expr) { + r4->str = str; + r4->expr = return_expr; + } + return r4_validate(r4); + } else { + r4->is_greedy = false; + } + } + r4->valid = true; + r4->expr = expr_left; + r4->str = str; + r4_validate(r4); + str = r4->str; + } + r4->is_greedy = true; + r4->valid = true; + r4->expr = return_expr ? return_expr : expr_right; + return r4_validate(r4); +} + +static bool r4_validate_pipe(r4_t *r4) { + DEBUG_VALIDATE_FUNCTION + r4->expr++; + if (r4->valid == true) { + return true; + } else { + r4->valid = true; + } + return r4_validate(r4); +} + +static bool r4_validate_digit(r4_t *r4) { + DEBUG_VALIDATE_FUNCTION + if (!isdigit(*r4->str)) { + r4->valid = false; + } else { + r4->str++; + } + r4->expr++; + if (r4->in_block || r4->in_range || !r4->is_greedy) { + return r4->valid; + } + return r4_validate(r4); +} +static bool r4_validate_not_digit(r4_t *r4) { + DEBUG_VALIDATE_FUNCTION + if (isdigit(*r4->str)) { + r4->valid = false; + } else { + r4->str++; + } + r4->expr++; + + if (r4->in_block || r4->in_range || !r4->is_greedy) { + return r4->valid; + } + return r4_validate(r4); +} +static bool r4_validate_word(r4_t *r4) { + DEBUG_VALIDATE_FUNCTION + if (!isalpha(*r4->str)) { + r4->valid = false; + } else { + r4->str++; + } + r4->expr++; + + if (r4->in_block || r4->in_range || !r4->is_greedy) { + return r4->valid; + } + return r4_validate(r4); +} +static bool r4_validate_not_word(r4_t *r4) { + DEBUG_VALIDATE_FUNCTION + if (isalpha(*r4->str)) { + r4->valid = false; + } else { + r4->str++; + } + r4->expr++; + + if (r4->in_block || r4->in_range || !r4->is_greedy) { + return r4->valid; + } + return r4_validate(r4); +} + +static bool r4_isrange(char *s) { + if (!isalnum(*s)) { + return false; + } + if (*(s + 1) != '-') { + return false; + } + return isalnum(*(s + 2)); +} + +static bool r4_validate_block_open(r4_t *r4) { + DEBUG_VALIDATE_FUNCTION + if (r4->valid == false) { + return false; + } + char *expr_self = r4->expr; + r4->expr++; + bool reversed = *r4->expr == '^'; + if (reversed) { + r4->expr++; + } + + bool valid_once = false; + r4->in_block = true; + while (*r4->expr != ']') { + r4->valid = true; + if (r4_isrange(r4->expr)) { + char s = *r4->expr; + char e = *(r4->expr + 2); + r4->expr += 2; + if (s > e) { + char tempc = s; + s = e; + e = tempc; + } + if (*r4->str >= s && *r4->str <= e) { + if (!reversed) { + r4->str++; + } + valid_once = true; + break; + } else { + r4->expr++; + } + } else if (r4_validate(r4)) { + valid_once = true; + if (reversed) + r4->str--; + break; + } + } + char *expr_end = strchr(r4->expr, ']'); + + r4->expr = expr_end ? expr_end : r4->expr; + r4->in_block = false; + r4->valid = expr_end && (!reversed ? valid_once : !valid_once); + r4->expr++; + r4->expr_previous = expr_self; + + if (r4->in_range || !r4->is_greedy) { + return r4->valid; + } + return r4_validate(r4); +} + +static bool r4_validate_whitespace(r4_t *r4) { + DEBUG_VALIDATE_FUNCTION + r4->valid = strchr("\r\t \n", *r4->str) != NULL; + r4->expr++; + if (r4->valid) { + r4->str++; + } + if (r4->in_range || r4->in_block || !r4->is_greedy) { + return r4->valid; + } + return r4_validate(r4); +} +static bool r4_validate_not_whitespace(r4_t *r4) { + DEBUG_VALIDATE_FUNCTION + r4->valid = strchr("\r\t \n", *r4->str) == NULL; + r4->expr++; + if (r4->valid) { + r4->str++; + } + if (r4->in_range || r4->in_block || !r4->is_greedy) { + return r4->valid; + } + return r4_validate(r4); +} + +static bool r4_validate_range(r4_t *r4) { + DEBUG_VALIDATE_FUNCTION; + if (r4->valid == false) { + r4->expr++; + return false; + } + char *previous = r4->expr_previous; + r4->in_range = true; + r4->expr++; + unsigned int start = 0; + while (isdigit(*r4->expr)) { + start = 10 * start; + start += *r4->expr - '0'; + r4->expr++; + } + if (start != 0) + start--; + + unsigned int end = 0; + bool variable_end_range = false; + if (*r4->expr == ',') { + r4->expr++; + if (!isdigit(*r4->expr)) { + variable_end_range = true; + } + } + while (isdigit(*r4->expr)) { + end = end * 10; + end += *r4->expr - '0'; + r4->expr++; + } + r4->expr++; + + bool valid = true; + char *expr_right = r4->expr; + for (unsigned int i = 0; i < start; i++) { + r4->expr = previous; + valid = r4_validate(r4); + if (!*r4->str) + break; + if (!valid) { + break; + } + } + r4->expr = expr_right; + r4->in_range = false; + if (!r4->valid) + return false; + return r4_validate(r4); + + for (unsigned int i = start; i < end; i++) { + r4->expr = previous; + valid = r4_validate(r4); + if (!valid) { + break; + } + } + + while (variable_end_range) { + r4->in_range = false; + valid = r4_validate(r4); + r4->in_range = true; + if (valid) { + break; + } + r4->in_range = true; + valid = r4_validate(r4); + r4->in_range = false; + if (!valid) { + break; + } + } + r4->valid = valid; + + return r4_validate(r4); +} + +static bool r4_validate_group_close(r4_t *r4) { + DEBUG_VALIDATE_FUNCTION + return r4->valid; +} + +static bool r4_validate_group_open(r4_t *r4) { + DEBUG_VALIDATE_FUNCTION + char *expr_previous = r4->expr_previous; + r4->expr++; + bool save_match = r4->in_group == 0; + r4->in_group++; + char *str_extract_start = r4->str; + bool valid = r4_validate(r4); + + if (!valid || *r4->expr != ')') { + // this is a valid case if not everything between () matches + r4->in_group--; + if (save_match == false) { + r4->valid = true; + } + + // Not direct return? Not sure + return r4_validate(r4); + } + // if(save_match){ + // r4->match_count++; + // } + if (save_match) { + char *str_extract_end = r4->str; + unsigned int extracted_length = str_extract_end - str_extract_start; + // strlen(str_extract_start) - strlen(str_extract_end); + char *str_extracted = (char *)calloc(sizeof(char), extracted_length + 1); + strncpy(str_extracted, str_extract_start, extracted_length); + r4_match_add(r4, str_extracted); + } + assert(*r4->expr == ')'); + r4->expr++; + r4->in_group--; + r4->expr_previous = expr_previous; + return r4_validate(r4); +} + +static bool r4_validate_slash(r4_t *r4) { + DEBUG_VALIDATE_FUNCTION + // The handling code for handling slashes is implemented in r4_validate + char *expr_previous = r4->expr_previous; + r4->expr++; + r4_function f = v4_function_map_slash[(int)*r4->expr]; + r4->expr_previous = expr_previous; + return f(r4); +} + +static void r4_match_add(r4_t *r4, char *extracted) { + r4->matches = (char **)realloc(r4->matches, (r4->match_count + 1) * sizeof(char *)); + r4->matches[r4->match_count] = extracted; + r4->match_count++; +} + +static bool r4_validate_word_boundary_start(r4_t *r4) { + DEBUG_VALIDATE_FUNCTION + r4->expr++; + if (!r4->valid) { + return r4->valid; + } + r4->valid = isalpha(*r4->str) && (r4->str == r4->_str || !isalpha(*(r4->str - 1))); + if (r4->in_range || r4->in_block || !r4->is_greedy) { + return r4->valid; + } + return r4_validate(r4); +} +static bool r4_validate_word_boundary_end(r4_t *r4) { + DEBUG_VALIDATE_FUNCTION + r4->expr++; + if (!r4->valid) { + return r4->valid; + } + r4->valid = isalpha(*r4->str) && (*(r4->str + 1) == 0 || !isalpha(*(r4->str + 1))); + if (r4->in_range || r4->in_block || !r4->is_greedy) { + return r4->valid; + } + return r4_validate(r4); +} + +static void v4_init_function_maps() { + if (v4_initiated) + return; + v4_initiated = true; + for (__uint8_t i = 0; i < 255; i++) { + v4_function_map_global[i] = r4_validate_literal; + v4_function_map_slash[i] = r4_validate_literal; + v4_function_map_block[i] = r4_validate_literal; + } + v4_function_map_global['*'] = r4_validate_asterisk; + v4_function_map_global['?'] = r4_validate_question_mark; + v4_function_map_global['+'] = r4_validate_plus; + v4_function_map_global['$'] = r4_validate_dollar; + v4_function_map_global['^'] = r4_validate_roof; + v4_function_map_global['.'] = r4_validate_dot; + v4_function_map_global['|'] = r4_validate_pipe; + v4_function_map_global['\\'] = r4_validate_slash; + v4_function_map_global['['] = r4_validate_block_open; + v4_function_map_global['{'] = r4_validate_range; + v4_function_map_global['('] = r4_validate_group_open; + v4_function_map_global[')'] = r4_validate_group_close; + v4_function_map_slash['b'] = r4_validate_word_boundary_start; + v4_function_map_slash['B'] = r4_validate_word_boundary_end; + v4_function_map_slash['d'] = r4_validate_digit; + v4_function_map_slash['w'] = r4_validate_word; + v4_function_map_slash['D'] = r4_validate_not_digit; + v4_function_map_slash['W'] = r4_validate_not_word; + v4_function_map_slash['s'] = r4_validate_whitespace; + v4_function_map_slash['S'] = r4_validate_not_whitespace; + v4_function_map_block['\\'] = r4_validate_slash; + + v4_function_map_block['{'] = r4_validate_range; +} + +void r4_init(r4_t *r4) { + v4_init_function_maps(); + if (r4 == NULL) + return; + r4->debug = _r4_debug; + r4->valid = true; + r4->validation_count = 0; + r4->match_count = 0; + r4->start = 0; + r4->end = 0; + r4->length = 0; + r4->matches = NULL; +} + +static bool r4_looks_behind(char c) { return strchr("?*+{", c) != NULL; } + +r4_t *r4_new() { + r4_t *r4 = (r4_t *)malloc(sizeof(r4_t)); + + r4_init(r4); + + return r4; +} + +static bool r4_pipe_next(r4_t *r4) { + char *expr = r4->expr; + while (*expr) { + if (*expr == '|') { + r4->expr = expr + 1; + r4->valid = true; + return true; + } + expr++; + } + return false; +} + +static bool r4_backtrack(r4_t *r4) { + if (_r4_debug) + printf("\033[36mDEBUG: backtrack start (%d)\n", r4->backtracking); + r4->backtracking++; + char *str = r4->str; + char *expr = r4->expr; + bool result = r4_validate(r4); + r4->backtracking--; + if (result == false) { + r4->expr = expr; + r4->str = str; + } + if (_r4_debug) + printf("DEBUG: backtrack end (%d) result: %d %s\n", r4->backtracking, result, r4->backtracking == 0 ? "\033[0m" : ""); + return result; +} + +static bool r4_validate(r4_t *r4) { + DEBUG_VALIDATE_FUNCTION + r4->validation_count++; + char c_val = *r4->expr; + if (c_val == 0) { + return r4->valid; + } + if (!r4_looks_behind(c_val)) { + r4->expr_previous = r4->expr; + } else if (r4->expr == r4->_expr) { + // Regex may not start with a look behind ufnction + return false; + } + + if (!r4->valid && !r4_looks_behind(*r4->expr)) { + if (!r4_pipe_next(r4)) { + return false; + } + } + r4_function f; + if (r4->in_block) { + f = v4_function_map_block[(int)c_val]; + } else { + f = v4_function_map_global[(int)c_val]; + } + + r4->valid = f(r4); + return r4->valid; +} + +char *r4_get_match(r4_t *r) { + char *match = (char *)malloc(r->length + 1); + strncpy(match, r->_str + r->start, r->length); + match[r->length] = 0; + return match; +} + +static bool r4_search(r4_t *r) { + bool valid = true; + char *str_next = r->str; + while (*r->str) { + if (!(valid = r4_validate(r))) { + // Move next until we find a match + if (!r->backtracking) { + r->start++; + } + str_next++; + r->str = str_next; + r->expr = r->_expr; + r->valid = true; + } else { + /// HIGH DOUBT + if (!r->backtracking) { + // r->start = 0; + } + break; + } + } + r->valid = valid; + if (r->valid) { + r->end = strlen(r->_str) - strlen(r->str); + r->length = r->end - r->start; + r->match = r4_get_match(r); + } + return r->valid; +} + +r4_t *r4(const char *str, const char *expr) { + r4_t *r = r4_new(); + r->_str = (char *)str; + r->_expr = (char *)expr; + r->match = NULL; + r->str = r->_str; + r->expr = r->_expr; + r->str_previous = r->_str; + r->expr_previous = r->expr; + r->in_block = false; + r->is_greedy = true; + r->in_group = 0; + r->loop_count = 0; + r->backtracking = 0; + r->in_range = false; + r4_search(r); + return r; +} + +r4_t *r4_next(r4_t *r, char *expr) { + if (expr) { + r->_expr = expr; + } + r->backtracking = 0; + r->expr = r->_expr; + r->is_greedy = true; + r->in_block = false; + r->in_range = false; + r->in_group = false; + r4_free_matches(r); + r4_search(r); + return r; +} + +bool r4_match(char *str, char *expr) { + r4_t *r = r4(str, expr); + bool result = r->valid; + r4_free(r); + return result; +} +#endif +#define rautocomplete_new rstring_list_new +#define rautocomplete_free rstring_list_free +#define rautocomplete_add rstring_list_add +#define rautocomplete_find rstring_list_find +#define rautocomplete_t rstring_list_t +#define rautocomplete_contains rstring_list_contains + +char *r4_escape(char *content) { + size_t size = strlen(content) * 2 + 1; + char *escaped = (char *)calloc(size, sizeof(char)); + char *espr = escaped; + char *to_escape = "?*+()[]{}^$\\"; + *espr = '('; + espr++; + while (*content) { + if (strchr(to_escape, *content)) { + *espr = '\\'; + espr++; + } + *espr = *content; + espr++; + content++; + } + *espr = '.'; + espr++; + *espr = '+'; + espr++; + *espr = ')'; + espr++; + *espr = 0; + return escaped; +} + +char *rautocomplete_find(rstring_list_t *list, char *expr) { + if (!list->count) + return NULL; + if (!expr || !strlen(expr)) + return NULL; + + char *escaped = r4_escape(expr); + + for (unsigned int i = list->count - 1; i == 0; i--) { + char *match; + r4_t *r = r4(list->strings[i], escaped); + if (r->valid && r->match_count == 1) { + match = strdup(r->matches[0]); + } + r4_free(r); + if (match) { + + free(escaped); + return match; + } + } + free(escaped); + return NULL; +} +#endif +#ifndef RKEYTABLE_H +#define RKEYTABLE_H +/* + DERIVED FROM HASH TABLE K&R + */ +#include +#include +#include +#include + +typedef struct rnklist { + struct rnklist *next; + struct rnklist *last; + char *name; + char *defn; +} rnklist; + +static rnklist *rkeytab = NULL; + +rnklist *rlkget(char *s) { + rnklist *np; + for (np = rkeytab; np != NULL; np = np->next) + if (strcmp(s, np->name) == 0) + return np; // Found + return NULL; // Not found +} + +char *rkget(char *s) { + rnklist *np = rlkget(s); + return np ? np->defn : NULL; +} + +rnklist *rkset(char *name, char *defn) { + rnklist *np; + if ((np = (rlkget(name))) == NULL) { // Not found + np = (rnklist *)malloc(sizeof(rnklist)); + np->name = strdup(name); + np->next = NULL; + np->last = NULL; + + if (defn) { + np->defn = strdup(defn); + } else { + np->defn = NULL; + } + + if (rkeytab == NULL) { + rkeytab = np; + rkeytab->last = np; + } else { + if (rkeytab->last) + rkeytab->last->next = np; + + rkeytab->last = np; + } + } else { + if (np->defn) + free((void *)np->defn); + if (defn) { + np->defn = strdup(defn); + } else { + np->defn = NULL; + } + } + return np; +} +#endif + +#ifndef RHASHTABLE_H +#define RHASHTABLE_H +/* + ORIGINAL SOURCE IS FROM K&R + */ + +#include +#include +#include + +#define HASHSIZE 101 + +// Structure for the table entries +typedef struct rnlist { + struct rnlist *next; + char *name; + char *defn; +} rnlist; + +// Hash table array +static rnlist *rhashtab[HASHSIZE]; + +// Hash function +unsigned rhash(char *s) { + unsigned hashval; + for (hashval = 0; *s != '\0'; s++) + hashval = *s + 31 * hashval; + return hashval % HASHSIZE; +} + +rnlist *rlget(char *s) { + rnlist *np; + for (np = rhashtab[rhash(s)]; np != NULL; np = np->next) + if (strcmp(s, np->name) == 0) + return np; // Found + return NULL; // Not found +} + +// Lookup function +char *rget(char *s) { + rnlist *np = rlget(s); + return np ? np->defn : NULL; +} + +// Install function (adds a name and definition to the table) +struct rnlist *rset(char *name, char *defn) { + struct rnlist *np = NULL; + unsigned hashval; + + if ((rlget(name)) == NULL) { // Not found + np = (struct rnlist *)malloc(sizeof(*np)); + if (np == NULL || (np->name = strdup(name)) == NULL) + return NULL; + hashval = rhash(name); + np->next = rhashtab[hashval]; + rhashtab[hashval] = np; + } else { + if (np->defn) + free((void *)np->defn); + np->defn = NULL; + } + if ((np->defn = strdup(defn)) == NULL) + return NULL; + return np; +} +#endif + +#ifndef RREX3_H +#define RREX3_H +#include +#include +#include +#include +#include +#include +#include +#ifndef RREX3_DEBUG +#define RREX3_DEBUG 0 +#endif + +struct rrex3_t; + +typedef void (*rrex3_function)(struct rrex3_t *); + +typedef struct rrex3_t { + void (*functions[254])(struct rrex3_t *); + void (*slash_functions[254])(struct rrex3_t *); + bool valid; + int match_count; + int match_capacity; + char **matches; + bool exit; + char *__expr; + char *__str; + char *_expr; + char *_str; + char *expr; + char *str; + char *compiled; + bool inside_brackets; + bool inside_parentheses; + bool pattern_error; + bool match_from_start; + char bytecode; + rrex3_function function; + struct { + void (*function)(struct rrex3_t *); + char *expr; + char *str; + char bytecode; + } previous; + struct { + void (*function)(struct rrex3_t *); + char *expr; + char *str; + char bytecode; + } failed; +} rrex3_t; + +static bool isdigitrange(char *s) { + if (!isdigit(*s)) { + return false; + } + if (*(s + 1) != '-') { + return false; + } + return isdigit(*(s + 2)); +} + +static bool isalpharange(char *s) { + if (!isalpha(*s)) { + return false; + } + if (*(s + 1) != '-') { + return false; + } + return isalpha(*(s + 2)); +} + +void rrex3_free_matches(rrex3_t *rrex3) { + if (!rrex3->matches) + return; + for (int i = 0; i < rrex3->match_count; i++) { + free(rrex3->matches[i]); + } + free(rrex3->matches); + rrex3->matches = NULL; + rrex3->match_count = 0; + rrex3->match_capacity = 0; +} + +void rrex3_free(rrex3_t *rrex3) { + if (!rrex3) + return; + if (rrex3->compiled) { + free(rrex3->compiled); + rrex3->compiled = NULL; + } + rrex3_free_matches(rrex3); + free(rrex3); + rrex3 = NULL; +} +static bool rrex3_move(rrex3_t *, bool); +static void rrex3_set_previous(rrex3_t *); +inline static void rrex3_cmp_asterisk(rrex3_t *); +void rrex3_cmp_literal_range(rrex3_t *rrex3) { +#if RREX3_DEBUG == 1 + printf("Range check: %c:%c:%d\n", *rrex3->expr, *rrex3->str, rrex3->valid); +#endif + rrex3_set_previous(rrex3); + + char start = *rrex3->expr; + rrex3->expr++; + rrex3->expr++; + char end = *rrex3->expr; + if (*rrex3->str >= start && *rrex3->str <= end) { + rrex3->str++; + rrex3->valid = true; + } else { + rrex3->valid = false; + } + rrex3->expr++; +} + +bool rrex3_is_function(char chr) { + if (chr == ']' || chr == ')' || chr == '\\' || chr == '?' || chr == '+' || chr == '*') + return true; + return false; +} + +inline static void rrex3_cmp_literal(rrex3_t *rrex3) { + rrex3_set_previous(rrex3); + + if (rrex3->inside_brackets) { + if (isalpharange(rrex3->expr) || isdigitrange(rrex3->expr)) { + rrex3_cmp_literal_range(rrex3); + return; + } + } +#if RREX3_DEBUG == 1 + printf("Literal check: %c:%c:%d\n", *rrex3->expr, *rrex3->str, rrex3->valid); + +#endif + if (*rrex3->expr == 0 && !*rrex3->str) { + printf("ERROR, EMPTY CHECK\n"); + // exit(1); + } + if (rrex3->valid == false) { + rrex3->expr++; + return; + } + + if (*rrex3->expr == *rrex3->str) { + rrex3->expr++; + rrex3->str++; + rrex3->valid = true; + // if(*rrex3->expr &&rrex3->functions[(int)*rrex3->expr] == + // rrex3_cmp_literal && !rrex3->inside_brackets && + //! rrex3_is_function(*rrex3->expr)){ rrex3_cmp_literal(rrex3); + // if(rrex3->valid == false){ + // rrex3->expr--; + // rrex3->valid = true; + // } + // } + return; + } + rrex3->expr++; + rrex3->valid = false; +} + +inline static void rrex3_cmp_dot(rrex3_t *rrex3) { +#if RREX3_DEBUG == 1 + printf("Dot check (any char): %c:%c:%d\n", *rrex3->expr, *rrex3->str, rrex3->valid); +#endif + rrex3_set_previous(rrex3); + rrex3->expr++; + if (!rrex3->valid) { + return; + } + if (*rrex3->str && *rrex3->str != '\n') { + rrex3->str++; + if (*rrex3->expr && *rrex3->expr == '.') { + rrex3_cmp_dot(rrex3); + return; + } /*else if(*rrex3->expr && (*rrex3->expr == '*' || *rrex3->expr == + '+')){ char * next = strchr(rrex3->str,*(rrex3->expr + 1)); char * + space = strchr(rrex3->str,'\n'); if(next && (!space || space > next)){ + rrex3->str = next; + } + }*/ + } else { + rrex3->valid = false; + } +} + +inline static void rrex3_cmp_question_mark(rrex3_t *rrex3) { +#if RREX3_DEBUG == 1 + printf("Question mark check: %c:%c:%d\n", *rrex3->expr, *rrex3->str, rrex3->valid); +#endif + rrex3_set_previous(rrex3); + + if (rrex3->valid == false) + rrex3->valid = true; + rrex3->expr++; +} + +inline static void rrex3_cmp_whitespace(rrex3_t *rrex3) { +#if RREX3_DEBUG == 1 + printf("Whitespace check: %c:%c:%d\n", *rrex3->expr, *rrex3->str, rrex3->valid); +#endif + rrex3_set_previous(rrex3); + + char c = *rrex3->expr; + rrex3->valid = c == ' ' || c == '\n' || c == '\t'; + if (rrex3->valid) { + rrex3->str++; + } + rrex3->expr++; +} + +inline static void rrex3_cmp_whitespace_upper(rrex3_t *rrex3) { +#if RREX3_DEBUG == 1 + printf("Non whitespace check: %c:%c:%d\n", *rrex3->expr, *rrex3->str, rrex3->valid); +#endif + rrex3_set_previous(rrex3); + + char c = *rrex3->expr; + rrex3->valid = !(c == ' ' || c == '\n' || c == '\t'); + if (rrex3->valid) { + rrex3->str++; + } + rrex3->expr++; +} + +inline static void rrex3_cmp_plus2(rrex3_t *rrex3) { +#if RREX3_DEBUG == 1 + printf("Plus check: %c:%c:%d\n", *rrex3->expr, *rrex3->str, rrex3->valid); +#endif + rrex3_set_previous(rrex3); + + if (rrex3->valid) { + rrex3->str--; + } else { + return; + } + char *original_expr = rrex3->expr; + char *next = original_expr + 1; + char *loop_expr = rrex3->previous.expr - 1; + if (*loop_expr == '+') { + rrex3->valid = false; + rrex3->pattern_error = true; + rrex3->expr++; + return; + } + bool success_next = false; + bool success_next_once = false; + bool success_current = false; + char *next_next = NULL; + char *next_str = rrex3->str; + while (*rrex3->str) { + // Check if next matches + char *original_str = rrex3->str; + rrex3->expr = next; + rrex3->valid = true; + if (rrex3_move(rrex3, false)) { + success_next = true; + next_next = rrex3->expr; + next_str = rrex3->str; + success_next_once = true; + } else { + success_next = false; + } + if (success_next_once && !success_next) { + break; + } + // Check if current matches + rrex3->str = original_str; + rrex3->expr = loop_expr; + rrex3->valid = true; + if (!*rrex3->str || !rrex3_move(rrex3, false)) { + success_current = false; + } else { + success_current = true; + if (!success_next) { + next_next = rrex3->expr + 1; // +1 is the * itself + next_str = rrex3->str; + } + } + if (success_next && !success_current) { + break; + } + } + if (!next_next) + rrex3->expr = next; + else { + rrex3->expr = next_next; + } + rrex3->str = next_str; + rrex3->valid = true; +} + +inline static void rrex3_cmp_plus(rrex3_t *rrex3) { +#if RREX3_DEBUG == 1 + rprintg("Asterisk start check: %c:%c:%d\n", *rrex3->expr, *rrex3->str, rrex3->valid); +#endif + if (!rrex3->valid) { + rrex3->expr++; + return; + } + + char *left = rrex3->previous.expr; + // printf("%s\n",rrex3->str); + char *right = rrex3->expr + 1; + if (*right == ')') { + right++; + } + int right_valid = 0; + bool right_valid_once = false; + char *expr = right; + char *right_str = rrex3->str; + ; + char *right_expr = NULL; + char *str = rrex3->str; + bool first_time = true; + bool left_valid = true; + char *str_prev = NULL; + bool valid_from_start = true; + ; + while (*rrex3->str) { + if (!left_valid && !right_valid) { + break; + } + if (right_valid && !left_valid) { + str = right_str; + break; + } + + rrex3->expr = right; + rrex3->str = str; +#if RREX3_DEBUG == 1 + printf("r"); +#endif + if (*rrex3->str && rrex3_move(rrex3, false)) { + right_valid++; + right_str = rrex3->str; + expr = rrex3->expr; + if (!right_valid_once) { + right_expr = rrex3->expr; + right_valid_once = true; + } + } else { + right_valid = 0; + } + if (first_time) { + first_time = false; + valid_from_start = right_valid; + } + + if (right_valid && !valid_from_start && right_valid > 0) { + expr = right_expr - 1; + ; + if (*(right - 1) == ')') { + expr = right - 1; + } + break; + } + + if ((!right_valid && right_valid_once)) { + expr = right_expr; + if (*(right - 1) == ')') { + str = str_prev; + expr = right - 1; + } + break; + } + + str_prev = str; + rrex3->valid = true; + rrex3->str = str; + rrex3->expr = left; +#if RREX3_DEBUG == 1 + printf("l"); +#endif + if (rrex3_move(rrex3, false)) { + left_valid = true; + + str = rrex3->str; + } else { + left_valid = false; + } + } + + rrex3->expr = expr; + rrex3->str = str; + rrex3->valid = true; + +#if RREX3_DEBUG == 1 + rprintg("Asterisk end check: %c:%c:%d\n", *rrex3->expr, *rrex3->str, rrex3->valid); +#endif +} + +inline static void rrex3_cmp_asterisk(rrex3_t *rrex3) { +#if RREX3_DEBUG == 1 + rprintg("Asterisk start check: %c:%c:%d\n", *rrex3->expr, *rrex3->str, rrex3->valid); +#endif + if (!rrex3->valid) { + rrex3->valid = true; + rrex3->expr++; + return; + } + + rrex3->str = rrex3->previous.str; + char *left = rrex3->previous.expr; + // printf("%s\n",rrex3->str); + char *right = rrex3->expr + 1; + if (*right == ')') { + right++; + } + int right_valid = 0; + bool right_valid_once = false; + char *expr = right; + char *right_str = rrex3->str; + ; + char *right_expr = NULL; + char *str = rrex3->str; + bool first_time = true; + bool left_valid = true; + char *str_prev = NULL; + bool valid_from_start = true; + ; + while (*rrex3->str) { + if (!left_valid && !right_valid) { + break; + } + if (right_valid && !left_valid) { + str = right_str; + break; + } + + rrex3->expr = right; + rrex3->str = str; +#if RREX3_DEBUG == 1 + printf("r"); +#endif + if (*rrex3->str && rrex3_move(rrex3, false)) { + right_valid++; + right_str = rrex3->str; + expr = rrex3->expr; + if (!right_valid_once) { + right_expr = rrex3->expr; + right_valid_once = true; + } + } else { + right_valid = 0; + } + if (first_time) { + first_time = false; + valid_from_start = right_valid; + } + + if (right_valid && !valid_from_start && right_valid > 0) { + expr = right_expr - 1; + if (*(right - 1) == ')') { + expr = right - 1; + } + break; + } + + if ((!right_valid && right_valid_once)) { + expr = right_expr; + if (*(right - 1) == ')') { + str = str_prev; + expr = right - 1; + } + break; + } + + str_prev = str; + rrex3->valid = true; + rrex3->str = str; + rrex3->expr = left; +#if RREX3_DEBUG == 1 + printf("l"); +#endif + if (rrex3_move(rrex3, false)) { + left_valid = true; + str = rrex3->str; + } else { + left_valid = false; + } + } + + rrex3->expr = expr; + rrex3->str = str; + rrex3->valid = true; + +#if RREX3_DEBUG == 1 + rprintg("Asterisk end check: %c:%c:%d\n", *rrex3->expr, *rrex3->str, rrex3->valid); +#endif +} + +inline static void rrex3_cmp_asterisk2(rrex3_t *rrex3) { +#if RREX3_DEBUG == 1 + rprintg("Asterisk start check: %c:%c:%d\n", *rrex3->expr, *rrex3->str, rrex3->valid); +#endif + if (!rrex3->valid) { + rrex3->valid = true; + rrex3->expr++; + return; + } + if (*rrex3->previous.expr == '*') { + // Support for ** + rrex3->valid = false; + // rrex3->pattern_error = true; + rrex3->expr++; + return; + } + rrex3->str = rrex3->previous.str; + ; + char *next = rrex3->expr + 1; + char *next_original = NULL; + if (*next == '*') { + next++; + } + if (*next == ')' && *(next + 1)) { + next_original = next; + next++; + } + char *loop_expr = rrex3->previous.expr; + bool success_next = false; + bool success_next_once = false; + bool success_current = false; + char *right_next = NULL; + char *right_str = rrex3->str; + while (*rrex3->str && *rrex3->expr && *rrex3->expr != ')') { + // Remember original_str because it's modified + // by checking right and should be restored + // for checking left so they're matching the + // same value. + char *original_str = rrex3->str; + // Check if right matches. + // if(*next != ')'){ + rrex3->expr = next; + rrex3->valid = true; + if (rrex3_move(rrex3, false)) { + // Match rright. + success_next = true; + if (!next_original) { + if (!success_next_once) { + right_next = rrex3->expr; + } + + } else { + right_next = next_original; + break; + } + right_str = rrex3->str; + success_next_once = true; + } else { + // No match Right. + success_next = false; + } + //} + if (success_next_once && !success_next) { + // Matched previous time but now doesn't. + break; + } + // Check if left matches. + rrex3->str = original_str; + rrex3->expr = loop_expr; + rrex3->valid = true; + if (!rrex3_move(rrex3, false)) { + // No match left. + success_current = false; + } else { + // Match left. + success_current = true; + // NOT SURE< WITHOUT DOET HETZELFDE: + // original_str = rrex3->str; + if (!success_next) { + right_str = rrex3->str; + if (*rrex3->expr != ')') { + right_next = rrex3->expr + 1; // +1 is the * itself + + } else { + + // break; + } + } + } + + if ((success_next && !success_current) || (!success_next && !success_current)) { + break; + } + } + rrex3->expr = right_next; + rrex3->str = right_str; + rrex3->valid = true; +#if RREX3_DEBUG == 1 + rprintg("Asterisk end check: %c:%c:%d\n", *rrex3->expr, *rrex3->str, rrex3->valid); +#endif +} + +inline static void rrex3_cmp_roof(rrex3_t *rrex3) { + rrex3_set_previous(rrex3); +#if RREX3_DEBUG == 1 + printf("expr, *rrex3->str, rrex3->valid); +#endif + rrex3->valid = rrex3->str == rrex3->_str; + rrex3->match_from_start = true; + rrex3->expr++; +} +inline static void rrex3_cmp_dollar(rrex3_t *rrex3) { + rrex3_set_previous(rrex3); + +#if RREX3_DEBUG == 1 + printf("Dollar check: %c:%c:%d\n", *rrex3->expr, *rrex3->str, rrex3->valid); +#endif + if (*rrex3->str || !rrex3->valid) { + rrex3->valid = false; + } + rrex3->expr++; +} + +inline static void rrex3_cmp_w(rrex3_t *rrex3) { + rrex3_set_previous(rrex3); + + rrex3->expr++; +#if RREX3_DEBUG == 1 + printf("Word check: %c:%c:%d\n", *rrex3->expr, *rrex3->str, rrex3->valid); +#endif + if (isalpha(*rrex3->str)) { + rrex3->str++; + } else { + rrex3->valid = false; + } +} +inline static void rrex3_cmp_w_upper(rrex3_t *rrex3) { + rrex3_set_previous(rrex3); + + rrex3->expr++; +#if RREX3_DEBUG == 1 + printf("!Word check: %c:%c:%d\n", *rrex3->expr, *rrex3->str, rrex3->valid); +#endif + if (!isalpha(*rrex3->str)) { + rrex3->str++; + } else { + rrex3->valid = false; + } +} + +inline static void rrex3_cmp_d(rrex3_t *rrex3) { + + rrex3_set_previous(rrex3); + + rrex3->expr++; +#if RREX3_DEBUG == 1 + printf("Digit check: %c:%c:%d\n", *rrex3->expr, *rrex3->str, rrex3->valid); +#endif + if (isdigit(*rrex3->str)) { + rrex3->str++; + } else { + rrex3->valid = false; + } +} +inline static void rrex3_cmp_d_upper(rrex3_t *rrex3) { + rrex3_set_previous(rrex3); + + rrex3->expr++; +#if RREX3_DEBUG == 1 + printf("!Digit check: %c:%c:%d\n", *rrex3->expr, *rrex3->str, rrex3->valid); +#endif + if (!isdigit(*rrex3->str)) { + rrex3->str++; + } else { + rrex3->valid = false; + } +} + +inline static void rrex3_cmp_slash(rrex3_t *rrex3) { + rrex3_set_previous(rrex3); + + rrex3->expr++; + + rrex3->bytecode = *rrex3->expr; + rrex3->function = rrex3->slash_functions[(int)rrex3->bytecode]; + rrex3->function(rrex3); +} + +inline static int collect_digits(rrex3_t *rrex3) { + char output[20]; + unsigned int digit_count = 0; + while (isdigit(*rrex3->expr)) { + + output[digit_count] = *rrex3->expr; + rrex3->expr++; + digit_count++; + } + output[digit_count] = 0; + return atoi(output); +} + +inline static void rrex3_cmp_range(rrex3_t *rrex3) { + char *loop_code = rrex3->previous.expr; + char *expr_original = rrex3->expr; + rrex3->expr++; + int range_start = collect_digits(rrex3) - 1; + int range_end = 0; + if (*rrex3->expr == ',') { + rrex3->expr++; + range_end = collect_digits(rrex3); + } + rrex3->expr++; + int times_valid = 0; + while (*rrex3->str) { + rrex3->expr = loop_code; + rrex3_move(rrex3, false); + if (rrex3->valid == false) { + break; + } else { + times_valid++; + } + if (range_end) { + if (times_valid >= range_start && times_valid == range_end - 1) { + rrex3->valid = true; + } else { + rrex3->valid = false; + } + break; + } else if (range_start) { + if (times_valid == range_start) { + rrex3->valid = true; + break; + } + } + } + rrex3->valid = times_valid >= range_start; + if (rrex3->valid && range_end) { + rrex3->valid = times_valid <= range_end; + } + rrex3->expr = strchr(expr_original, '}') + 1; +} + +inline static void rrex3_cmp_word_start_or_end(rrex3_t *rrex3) { +#if RREX3_DEBUG == 1 + if (*rrex3->expr != 'B') { + printf("Check word start or end: %c:%c:%d\n", *rrex3->expr, *rrex3->str, rrex3->valid); + } + +#endif + rrex3_set_previous(rrex3); + bool valid = false; + if (isalpha(*rrex3->str)) { + if (rrex3->_str != rrex3->str) { + if (!isalpha(*(rrex3->str - 1))) { + valid = true; + } + } else { + valid = true; + } + } else if (isalpha(isalpha(*rrex3->str) && !isalpha(*rrex3->str + 1))) { + valid = true; + } + rrex3->expr++; + rrex3->valid = valid; +} +inline static void rrex3_cmp_word_not_start_or_end(rrex3_t *rrex3) { +#if RREX3_DEBUG == 1 + printf("Check word NOT start or end: %c:%c:%d\n", *rrex3->expr, *rrex3->str, rrex3->valid); + +#endif + rrex3_set_previous(rrex3); + + rrex3_cmp_word_start_or_end(rrex3); + rrex3->valid = !rrex3->valid; +} + +inline static void rrex3_cmp_brackets(rrex3_t *rrex3) { +#if RREX3_DEBUG == 1 + rprintb("\\l Brackets start: %c:%c:%d\n", *rrex3->expr, *rrex3->str, rrex3->valid); +#endif + rrex3_set_previous(rrex3); + char *original_expr = rrex3->expr; + rrex3->expr++; + rrex3->inside_brackets = true; + bool valid_once = false; + bool reversed = false; + if (*rrex3->expr == '^') { + reversed = true; + rrex3->expr++; + } + bool valid = false; + while (*rrex3->expr != ']' && *rrex3->expr != 0) { + rrex3->valid = true; + valid = rrex3_move(rrex3, false); + if (reversed) { + valid = !valid; + } + if (valid) { + valid_once = true; + if (!reversed) { + valid_once = true; + break; + } + } else { + if (reversed) { + valid_once = false; + break; + } + } + } + if (valid_once && reversed) { + rrex3->str++; + } + while (*rrex3->expr != ']' && *rrex3->expr != 0) + rrex3->expr++; + if (*rrex3->expr != 0) + rrex3->expr++; + + rrex3->valid = valid_once; + rrex3->inside_brackets = false; + char *previous_expr = rrex3->expr; + rrex3->expr = original_expr; + rrex3_set_previous(rrex3); + rrex3->expr = previous_expr; +#if RREX3_DEBUG == 1 + rprintb("\\l Brackets end: %c:%c:%d\n", *rrex3->expr, *rrex3->str, rrex3->valid); +#endif +} + +inline static void rrex3_cmp_pipe(rrex3_t *rrex3) { + rrex3_set_previous(rrex3); + +#if RREX3_DEBUG == 1 + printf("Pipe check: %c:%c:%d\n", *rrex3->expr, *rrex3->str, rrex3->valid); +#endif + if (rrex3->valid == true) { + rrex3->exit = true; + } else { + rrex3->valid = true; + } + rrex3->expr++; +} +inline static void rrex3_cmp_parentheses(rrex3_t *rrex3) { +#if RREX3_DEBUG == 1 + rprinty("\\l Parentheses start check: %c:%c:%d\n", *rrex3->expr, *rrex3->str, rrex3->valid); +#endif + + rrex3_set_previous(rrex3); + if (!rrex3->valid) { + rrex3->expr++; + return; + } + if (rrex3->match_count == rrex3->match_capacity) { + + rrex3->match_capacity++; + rrex3->matches = (char **)realloc(rrex3->matches, rrex3->match_capacity * sizeof(char *)); + } + rrex3->matches[rrex3->match_count] = (char *)malloc(strlen(rrex3->str) + 1); + strcpy(rrex3->matches[rrex3->match_count], rrex3->str); + char *original_expr = rrex3->expr; + char *original_str = rrex3->str; + rrex3->expr++; + rrex3->inside_parentheses = true; + while (*rrex3->expr != ')' && !rrex3->exit) { + rrex3_move(rrex3, false); + } + while (*rrex3->expr != ')') { + rrex3->expr++; + } + rrex3->expr++; + rrex3->inside_parentheses = false; + + char *previous_expr = rrex3->expr; + rrex3->expr = original_expr; + rrex3_set_previous(rrex3); + rrex3->expr = previous_expr; + if (rrex3->valid == false) { + rrex3->str = original_str; + free(rrex3->matches[rrex3->match_count]); + } else { + rrex3->matches[rrex3->match_count][strlen(rrex3->matches[rrex3->match_count]) - strlen(rrex3->str)] = 0; + rrex3->match_count++; + } +#if RREX3_DEBUG == 1 + rprinty("\\l Parentheses end: %c:%c:%d\n", *rrex3->expr, *rrex3->str, rrex3->valid); +#endif +} + +inline static void rrex3_reset(rrex3_t *rrex3) { + rrex3_free_matches(rrex3); + rrex3->valid = true; + rrex3->pattern_error = false; + rrex3->inside_brackets = false; + rrex3->inside_parentheses = false; + rrex3->exit = false; + rrex3->previous.expr = NULL; + rrex3->previous.str = NULL; + rrex3->previous.bytecode = 0; + rrex3->failed.expr = NULL; + rrex3->failed.str = NULL; + rrex3->failed.bytecode = 0; + rrex3->match_from_start = false; +} + +void rrex3_init(rrex3_t *rrex3) { + for (__uint8_t i = 0; i < 254; i++) { + rrex3->functions[i] = rrex3_cmp_literal; + rrex3->slash_functions[i] = rrex3_cmp_literal; + } + rrex3->functions['?'] = rrex3_cmp_question_mark; + rrex3->functions['^'] = rrex3_cmp_roof; + rrex3->functions['$'] = rrex3_cmp_dollar; + rrex3->functions['.'] = rrex3_cmp_dot; + rrex3->functions['*'] = rrex3_cmp_asterisk; + rrex3->functions['+'] = rrex3_cmp_plus; + rrex3->functions['|'] = rrex3_cmp_pipe; + rrex3->functions['\\'] = rrex3_cmp_slash; + rrex3->functions['{'] = rrex3_cmp_range; + rrex3->functions['['] = rrex3_cmp_brackets; + rrex3->functions['('] = rrex3_cmp_parentheses; + rrex3->slash_functions['w'] = rrex3_cmp_w; + rrex3->slash_functions['W'] = rrex3_cmp_w_upper; + rrex3->slash_functions['d'] = rrex3_cmp_d; + rrex3->slash_functions['D'] = rrex3_cmp_d_upper; + rrex3->slash_functions['s'] = rrex3_cmp_whitespace; + rrex3->slash_functions['S'] = rrex3_cmp_whitespace_upper; + rrex3->slash_functions['b'] = rrex3_cmp_word_start_or_end; + rrex3->slash_functions['B'] = rrex3_cmp_word_not_start_or_end; + rrex3->match_count = 0; + rrex3->match_capacity = 0; + rrex3->matches = NULL; + rrex3->compiled = NULL; + + rrex3_reset(rrex3); +} + +rrex3_t *rrex3_new() { + rrex3_t *rrex3 = (rrex3_t *)malloc(sizeof(rrex3_t)); + + rrex3_init(rrex3); + + return rrex3; +} + +rrex3_t *rrex3_compile(rrex3_t *rrex, char *expr) { + + rrex3_t *rrex3 = rrex ? rrex : rrex3_new(); + + char *compiled = (char *)malloc(strlen(expr) + 1); + unsigned int count = 0; + while (*expr) { + if (*expr == '[' && *(expr + 2) == ']') { + *compiled = *(expr + 1); + expr++; + expr++; + } else if (*expr == '[' && *(expr + 1) == '0' && *(expr + 2) == '-' && *(expr + 3) == '9' && *(expr + 4) == ']') { + *compiled = '\\'; + compiled++; + *compiled = 'd'; + count++; + expr++; + expr++; + expr++; + expr++; + } else { + *compiled = *expr; + } + if (*compiled == '[') { + // in_brackets = true; + + } else if (*compiled == ']') { + // in_brackets = false; + } + expr++; + compiled++; + count++; + } + *compiled = 0; + compiled -= count; + rrex3->compiled = compiled; + return rrex3; +} + +inline static void rrex3_set_previous(rrex3_t *rrex3) { + rrex3->previous.function = rrex3->function; + rrex3->previous.expr = rrex3->expr; + rrex3->previous.str = rrex3->str; + rrex3->previous.bytecode = *rrex3->expr; +} + +static bool rrex3_move(rrex3_t *rrex3, bool resume_on_fail) { + char *original_expr = rrex3->expr; + char *original_str = rrex3->str; + rrex3->bytecode = *rrex3->expr; + rrex3->function = rrex3->functions[(int)rrex3->bytecode]; + rrex3->function(rrex3); + if (!*rrex3->expr && !*rrex3->str) { + rrex3->exit = true; + return rrex3->valid; + } else if (!*rrex3->expr) { + // rrex3->valid = true; + return rrex3->valid; + } + if (rrex3->pattern_error) { + rrex3->valid = false; + return rrex3->valid; + } + if (resume_on_fail && !rrex3->valid && *rrex3->expr) { + + // rrex3_set_previous(rrex3); + rrex3->failed.bytecode = rrex3->bytecode; + rrex3->failed.function = rrex3->function; + rrex3->failed.expr = original_expr; + rrex3->failed.str = original_str; + rrex3->bytecode = *rrex3->expr; + rrex3->function = rrex3->functions[(int)rrex3->bytecode]; + rrex3->function(rrex3); + + if (!rrex3->valid && !rrex3->pattern_error) { + + if (*rrex3->str) { + char *pipe_position = strstr(rrex3->expr, "|"); + if (pipe_position != NULL) { + rrex3->expr = pipe_position + 1; + rrex3->str = rrex3->_str; + rrex3->valid = true; + return true; + } + } + if (rrex3->match_from_start) { + rrex3->valid = false; + return rrex3->valid; + } + if (!*rrex3->str++) { + rrex3->valid = false; + return rrex3->valid; + } + rrex3->expr = rrex3->_expr; + if (*rrex3->str) + rrex3->valid = true; + } + } else { + } + return rrex3->valid; +} + +rrex3_t *rrex3(rrex3_t *rrex3, char *str, char *expr) { +#if RREX3_DEBUG == 1 + printf("Regex check: %s:%s:%d\n", expr, str, 1); +#endif + bool self_initialized = false; + if (rrex3 == NULL) { + self_initialized = true; + rrex3 = rrex3_new(); + } else { + rrex3_reset(rrex3); + } + + rrex3->_str = str; + rrex3->_expr = rrex3->compiled ? rrex3->compiled : expr; + rrex3->str = rrex3->_str; + rrex3->expr = rrex3->_expr; + while (*rrex3->expr && !rrex3->exit) { + if (!rrex3_move(rrex3, true)) + return NULL; + } + rrex3->expr = rrex3->_expr; + if (rrex3->valid) { + + return rrex3; + } else { + if (self_initialized) { + rrex3_free(rrex3); + } + return NULL; + } +} + +void rrex3_test() { + rrex3_t *rrex = rrex3_new(); + + assert(rrex3(rrex, "\"stdio.h\"\"string.h\"\"sys/time.h\"", "\"(.*)\"\"(.*)\"\"(.*)\"")); + + assert(rrex3(rrex, "aaaaaaa", "a*a$")); + + // assert(rrex3("ababa", "a*b*a*b*a$")); + assert(rrex3(rrex, "#include\"test.h\"a", "#include.*\".*\"a$")); + assert(rrex3(rrex, "#include \"test.h\"a", "#include.*\".*\"a$")); + assert(rrex3(rrex, "aaaaaad", "a*d$")); + assert(rrex3(rrex, "abcdef", "abd?cdef")); + assert(!rrex3(rrex, "abcdef", "abd?def")); + assert(rrex3(rrex, "abcdef", "def")); + assert(!rrex3(rrex, "abcdef", "^def")); + assert(rrex3(rrex, "abcdef", "def$")); + assert(!rrex3(rrex, "abcdef", "^abc$")); + assert(rrex3(rrex, "aB!.#1", "......")); + assert(!rrex3(rrex, "aB!.#\n", " ......")); + assert(!rrex3(rrex, "aaaaaad", "q+d$")); + assert(rrex3(rrex, "aaaaaaa", "a+a$")); + assert(rrex3(rrex, "aaaaaad", "q*d$")); + assert(!rrex3(rrex, "aaaaaad", "^q*d$")); + + // Asterisk function + assert(rrex3(rrex, "123321", "123*321")); + assert(rrex3(rrex, "pony", "p*ony")); + assert(rrex3(rrex, "pppony", "p*ony")); + assert(rrex3(rrex, "ppony", "p*pony")); + assert(rrex3(rrex, "pppony", "pp*pony")); + assert(rrex3(rrex, "pppony", ".*pony")); + assert(rrex3(rrex, "pony", ".*ony")); + assert(rrex3(rrex, "pony", "po*ny")); + // assert(rrex3(rrex,"ppppony", "p*pppony")); + + // Plus function + assert(rrex3(rrex, "pony", "p+ony")); + assert(!rrex3(rrex, "ony", "p+ony")); + assert(rrex3(rrex, "ppony", "p+pony")); + assert(rrex3(rrex, "pppony", "pp+pony")); + assert(rrex3(rrex, "pppony", ".+pony")); + assert(rrex3(rrex, "pony", ".+ony")); + assert(rrex3(rrex, "pony", "po+ny")); + + // Slash functions + assert(rrex3(rrex, "a", "\\w")); + assert(!rrex3(rrex, "1", "\\w")); + assert(rrex3(rrex, "1", "\\W")); + assert(!rrex3(rrex, "a", "\\W")); + assert(rrex3(rrex, "a", "\\S")); + assert(!rrex3(rrex, " ", "\\s")); + assert(!rrex3(rrex, "\t", "\\s")); + assert(!rrex3(rrex, "\n", "\\s")); + assert(rrex3(rrex, "1", "\\d")); + assert(!rrex3(rrex, "a", "\\d")); + assert(rrex3(rrex, "a", "\\D")); + assert(!rrex3(rrex, "1", "\\D")); + assert(rrex3(rrex, "abc", "\\b")); + + assert(rrex3(rrex, "abc", "\\babc")); + assert(!rrex3(rrex, "abc", "a\\b")); + assert(!rrex3(rrex, "abc", "ab\\b")); + assert(!rrex3(rrex, "abc", "abc\\b")); + assert(rrex3(rrex, "abc", "a\\Bbc")); + assert(rrex3(rrex, "abc", "ab\\B")); + assert(!rrex3(rrex, "1ab", "1\\Bab")); + assert(rrex3(rrex, "abc", "a\\Bbc")); + + // Escaping of special chars + assert(rrex3(rrex, "()+*.\\", "\\(\\)\\+\\*\\.\\\\")); + + // Pipe + // assert(rrex3(rrex,"abc","abc|def")); + assert(rrex3(rrex, "abc", "def|jkl|abc")); + assert(rrex3(rrex, "abc", "abc|def")); + + assert(rrex3(rrex, "rhq", "def|rhq|rha")); + assert(rrex3(rrex, "abc", "abc|def")); + + // Repeat + assert(rrex3(rrex, "aaaaa", "a{4}")); + + assert(rrex3(rrex, "aaaa", "a{1,3}a")); + + // Range + assert(rrex3(rrex, "abc", "[abc][abc][abc]$")); + assert(rrex3(rrex, "def", "[^abc][^abc][^abc]$")); + assert(rrex3(rrex, "defabc", "[^abc][^abc][^abc]abc")); + assert(rrex3(rrex, "0-9", "0-9")); + assert(rrex3(rrex, "55-9", "[^6-9]5-9$")); + assert(rrex3(rrex, "a", "[a-z]$")); + assert(rrex3(rrex, "A", "[A-Z]$")); + assert(rrex3(rrex, "5", "[0-9]$")); + assert(!rrex3(rrex, "a", "[^a-z]$")); + assert(!rrex3(rrex, "A", "[^A-Z]$")); + assert(!rrex3(rrex, "5", "[^0-9]$")); + assert(rrex3(rrex, "123abc", "[0-9]*abc$")); + assert(rrex3(rrex, "123123", "[0-9]*$")); + + // Parentheses + + assert(rrex3(rrex, "datadata", "(data)*")); + + assert(rrex3(rrex, "datadatapony", "(data)*pony$")); + + assert(!rrex3(rrex, "datadatapony", "(d*p*ata)*pond$")); + assert(rrex3(rrex, "datadatadato", "(d*p*ata)*dato")); + assert(rrex3(rrex, "datadatadato", "(d*p*ata)*dato$")); + assert(!rrex3(rrex, "datadatadato", "(d*p*a*ta)*gato$")); + + // Matches + assert(rrex3(rrex, "123", "(123)")); + assert(!strcmp(rrex->matches[0], "123")); + + assert(rrex3(rrex, "123321a", "(123)([0-4][2]1)a$")); + assert(!strcmp(rrex->matches[1], "321")); + + assert(rrex3(rrex, "123321a", "(123)([0-4][2]1)a$")); + assert(!strcmp(rrex->matches[1], "321")); + + assert(rrex3(rrex, "aaaabc", "(.*)c")); + + assert(rrex3(rrex, "abcde", ".....$")); + + assert(rrex3(rrex, "abcdefghijklmnopqrstuvwxyz", "..........................$")); + // printf("(%d)\n", rrex->valid); + + assert(rrex3(rrex, "#include ", "#include.*<(.*)>")); + assert(!strcmp(rrex->matches[0], "stdio.h")); + assert(rrex3(rrex, "#include \"stdlib.h\"", "#include.\"(.*)\"")); + assert(!strcmp(rrex->matches[0], "stdlib.h")); + assert(rrex3(rrex, "\"stdio.h\"\"string.h\"\"sys/time.h\"", "\"(.*)\"\"(.*)\"\"(.*)\"")); + assert(!strcmp(rrex->matches[0], "stdio.h")); + assert(!strcmp(rrex->matches[1], "string.h")); + assert(!strcmp(rrex->matches[2], "sys/time.h")); + + assert(rrex3(rrex, " #include ", "#include.+<(.+)>")); + assert(!strcmp(rrex->matches[0], "stdio.h")); + assert(rrex3(rrex, " #include \"stdlib.h\"", "#include.+\"(.+)\"")); + assert(!strcmp(rrex->matches[0], "stdlib.h")); + + assert(rrex3(rrex, " \"stdio.h\"\"string.h\"\"sys/time.h\"", "\"(.+)\"\"(.+)\"\"(.+)\"")); + assert(!strcmp(rrex->matches[0], "stdio.h")); + assert(!strcmp(rrex->matches[1], "string.h")); + assert(!strcmp(rrex->matches[2], "sys/time.h")); + + assert(rrex3(rrex, "int abc ", "int (.*)[; ]?$")); + assert(!strcmp(rrex->matches[0], "abc")); + assert(rrex3(rrex, "int abc;", "int (.*)[; ]?$")); + assert(!strcmp(rrex->matches[0], "abc")); + assert(rrex3(rrex, "int abc", "int (.*)[; ]?$")); + assert(!strcmp(rrex->matches[0], "abc")); + + rrex3_free(rrex); +} +#endif +#ifndef RARENA_H +#define RARENA_H + +#include +#include + +typedef struct arena_t { + unsigned char *memory; + unsigned int pointer; + unsigned int size; +} arena_t; + +arena_t *arena_construct() { + arena_t *arena = (arena_t *)rmalloc(sizeof(arena_t)); + arena->memory = NULL; + arena->pointer = 0; + arena->size = 0; + return arena; +} + +arena_t *arena_new(size_t size) { + arena_t *arena = arena_construct(); + arena->memory = (unsigned char *)rmalloc(size); + arena->size = size; + return arena; +} + +void *arena_alloc(arena_t *arena, size_t size) { + if (arena->pointer + size > arena->size) { + return NULL; + } + void *p = arena->memory + arena->pointer; + arena->pointer += size; + return p; +} + +void arena_free(arena_t *arena) { + // Just constructed and unused arena memory is NULL so no free needed + if (arena->memory) { + rfree(arena->memory); + } + rfree(arena); +} + +void arena_reset(arena_t *arena) { arena->pointer = 0; } +#endif +#ifndef RCASE_H +#define RCASE_H +#include +#include +#include +#include +#include + +#define RCAMEL_CASE 1 +#define RSNAKE_CASE 2 +#define RINVALID_CASE 0 +#define RCONST_TEST_T 4; + +int rdetermine_case(const char *str) { + int length = strlen(str); + + char p = 0; + while (*str) { + if (p == '_' && islower(*str)) + return RSNAKE_CASE; + if (p != '_' && !isupper(p) && isupper(*str)) + return RCAMEL_CASE; + p = *str; + str++; + } + return RINVALID_CASE; + + if (length == 0) { + return RINVALID_CASE; + } + if (strchr(str, '_')) { + if (str[0] == '_' || str[length - 1] == '_' || strstr(str, "__")) { + return RINVALID_CASE; + } + for (int i = 0; i < length; i++) { + if (!islower(str[i]) && str[i] != '_') { + return RINVALID_CASE; + } + } + return RSNAKE_CASE; + } else { + + if (!islower(str[0])) { + return RINVALID_CASE; + } + for (int i = 1; i < length; i++) { + if (str[i] == '_') { + return RINVALID_CASE; + } + if (isupper(str[i]) && isupper(str[i - 1])) { + return RINVALID_CASE; + } + } + return RCAMEL_CASE; + } +} + +char *rsnake_to_camel(const char *snake_case) { + int length = strlen(snake_case); + char *camel_case = (char *)malloc(length + 1); + int j = 0; + int toUpper = 0; + + for (int i = 0; i < length; i++) { + if (i > 0 && snake_case[i] == '_' && snake_case[i + 1] == 'T') { + toUpper = 1; + if (snake_case[i + 1] == 'T' && (snake_case[i + 2] != '\n' || snake_case[i + 2] != '\0' || snake_case[i + 2] != ' ')) { + + toUpper = 0; + } + } + if (snake_case[i] == '_' && snake_case[i + 1] != 't') { + toUpper = 1; + if (snake_case[i + 1] == 't' && (snake_case[i + 2] != '\n' || snake_case[i + 2] != '\0' || snake_case[i + 2] != ' ')) { + toUpper = 0; + } + } else if (snake_case[i] == '_' && snake_case[i + 1] == 't' && !isspace(snake_case[i + 2])) { + toUpper = 1; + } else if (snake_case[i] == '_' && snake_case[i + 1] == 'T' && !isspace(snake_case[i + 2])) { + toUpper = 1; + camel_case[j++] = '_'; + j++; + } else { + if (toUpper) { + camel_case[j++] = toupper(snake_case[i]); + toUpper = 0; + } else { + camel_case[j++] = snake_case[i]; + } + } + } + + camel_case[j] = '\0'; + return camel_case; +} +char *rcamel_to_snake(const char *camelCase) { + int length = strlen(camelCase); + char *snake_case = (char *)malloc(2 * length + 1); + int j = 0; + + for (int i = 0; i < length; i++) { + if (isupper(camelCase[i])) { + if (i != 0) { + snake_case[j++] = '_'; + } + snake_case[j++] = tolower(camelCase[i]); + } else { + snake_case[j++] = camelCase[i]; + } + } + + snake_case[j] = '\0'; + return snake_case; +} + +char *rflip_case(char *content) { + if (rdetermine_case(content) == RSNAKE_CASE) { + return rcamel_to_snake(content); + } else if (rdetermine_case(content) == RCAMEL_CASE) { + return rsnake_to_camel(content); + } else { + rprintr("Could not determine case\n"); + return NULL; + } +} + +char *rflip_case_file(char *filepath) { + size_t file_size = rfile_size(filepath); + if (file_size == 0) { + return NULL; + } + char *content = (char *)malloc(file_size); + char *result = NULL; + if (rfile_readb(filepath, content, file_size)) { + result = rflip_case(content); + if (result) { + free(content); + return result; + } else { + return content; + } + } + return result; +} + +int rcase_main(int argc, char *argv[]) { + if (argc < 2) { + printf("usage: rcase \n"); + return 1; + } + for (int i = 1; i < argc; i++) { + char *result = rflip_case_file(argv[i]); + if (result) { + printf("%s\n", result); + free(result); + } + } + return 0; +} +#endif + +#ifndef RTERM_H +#define RTERM_H +#include +#include +#include +#include +#include +#include +#include +typedef struct winsize winsize_t; + +typedef struct rshell_keypress_t { + bool pressed; + bool ctrl; + bool shift; + bool escape; + char c; + int ms; + int fd; +} rshell_keypress_t; + +typedef struct rterm_t { + bool show_cursor; + bool show_footer; + int ms_tick; + rshell_keypress_t key; + void (*before_cursor_move)(struct rterm_t *); + void (*after_cursor_move)(struct rterm_t *); + void (*after_key_press)(struct rterm_t *); + void (*before_key_press)(struct rterm_t *); + void (*before_draw)(struct rterm_t *); + void (*after_draw)(struct rterm_t *); + void *session; + unsigned long iterations; + void (*tick)(struct rterm_t *); + char *status_text; + char *_status_text_previous; + winsize_t size; + struct { + int x; + int y; + int pos; + int available; + } cursor; +} rterm_t; + +typedef void (*rterm_event)(rterm_t *); + +void rterm_init(rterm_t *rterm) { + memset(rterm, 0, sizeof(rterm_t)); + rterm->show_cursor = true; + rterm->cursor.x = 0; + rterm->cursor.y = 0; + rterm->ms_tick = 100; + rterm->_status_text_previous = NULL; +} + +void rterm_getwinsize(winsize_t *w) { + // Get the terminal size + if (ioctl(STDOUT_FILENO, TIOCGWINSZ, w) == -1) { + perror("ioctl"); + exit(EXIT_FAILURE); + } +} + +void rrawfd(int fd) { + struct termios orig_termios; + tcgetattr(fd, &orig_termios); // Get current terminal attributes + + struct termios raw = orig_termios; + raw.c_lflag &= ~(ICANON | ISIG | ECHO); // ECHO // Disable canonical mode and echoing + raw.c_cc[VMIN] = 1; + raw.c_cc[VTIME] = 240; // Set timeout for read input + + tcsetattr(fd, TCSAFLUSH, &raw); +} + +// Terminal setup functions +void enableRawMode(struct termios *orig_termios) { + + struct termios raw = *orig_termios; + raw.c_lflag &= ~(ICANON | ECHO); // Disable canonical mode and echoing + raw.c_cc[VMIN] = 1; + raw.c_cc[VTIME] = 240; // Set timeout for read input + + tcsetattr(STDIN_FILENO, TCSAFLUSH, &raw); +} + +void disableRawMode(struct termios *orig_termios) { + tcsetattr(STDIN_FILENO, TCSAFLUSH, + orig_termios); // Restore original terminal settings +} + +void rterm_clear_screen() { + printf("\x1b[2J"); // Clear the entire screen + printf("\x1b[H"); // Move cursor to the home position (0,0) +} + +void setBackgroundColor() { + printf("\x1b[34m"); // Set background color to blue +} + +void rterm_move_cursor(int x, int y) { + + printf("\x1b[%d;%dH", y + 1, x + 1); // Move cursor to (x, y) +} + +void cursor_set(rterm_t *rt, int x, int y) { + rt->cursor.x = x; + rt->cursor.y = y; + rt->cursor.pos = y * rt->size.ws_col + x; + rterm_move_cursor(rt->cursor.x, rt->cursor.y); +} +void cursor_restore(rterm_t *rt) { rterm_move_cursor(rt->cursor.x, rt->cursor.y); } + +void rterm_print_status_bar(rterm_t *rt, char c, unsigned long i) { + if (rt->_status_text_previous && !strcmp(rt->_status_text_previous, rt->status_text)) { + return; + } + if (rt->_status_text_previous) { + free(rt->_status_text_previous); + } + rt->_status_text_previous = strdup(rt->status_text); + winsize_t ws = rt->size; + cursor_set(rt, rt->cursor.x, rt->cursor.y); + rterm_move_cursor(0, ws.ws_row - 1); + + char output_str[1024]; + output_str[0] = 0; + + // strcat(output_str, "\x1b[48;5;240m"); + + for (int i = 0; i < ws.ws_col; i++) { + strcat(output_str, " "); + } + char content[500]; + content[0] = 0; + if (!rt->status_text) { + sprintf(content, "\rp:%d:%d | k:%c:%d | i:%ld ", rt->cursor.x + 1, rt->cursor.y + 1, c == 0 ? '0' : c, c, i); + } else { + sprintf(content, "\r%s", rt->status_text); + } + strcat(output_str, content); + // strcat(output_str, "\x1b[0m"); + printf("%s", output_str); + cursor_restore(rt); +} + +void rterm_show_cursor() { + printf("\x1b[?25h"); // Show the cursor +} + +void rterm_hide_cursor() { + printf("\x1b[?25l"); // Hide the cursor +} + +rshell_keypress_t rshell_getkey(rterm_t *rt) { + static rshell_keypress_t press; + press.c = 0; + press.ctrl = false; + press.shift = false; + press.escape = false; + press.pressed = rfd_wait(0, rt->ms_tick); + if (!press.pressed) { + return press; + } + press.c = getchar(); + char ch = press.c; + if (ch == '\x1b') { + // Get detail + ch = getchar(); + + if (ch == '[') { + // non char key: + press.escape = true; + + ch = getchar(); // is a number. 1 if shift + arrow + press.c = ch; + if (ch >= '0' && ch <= '9') + ch = getchar(); + press.c = ch; + if (ch == ';') { + ch = getchar(); + press.c = ch; + if (ch == '5') { + press.ctrl = true; + press.c = getchar(); // De arrow + } + } + } else if (ch == 27) { + press.escape = true; + press.c = ch; + } else { + press.c = ch; + } + } + return press; +} + +// Main function +void rterm_loop(rterm_t *rt) { + struct termios orig_termios; + tcgetattr(STDIN_FILENO, &orig_termios); // Get current terminal attributes + enableRawMode(&orig_termios); + + int x = 0, y = 0; // Initial cursor position + char ch = 0; + + ; + while (1) { + rterm_getwinsize(&rt->size); + rt->cursor.available = rt->size.ws_col * rt->size.ws_row; + if (rt->tick) { + rt->tick(rt); + } + + rterm_hide_cursor(); + setBackgroundColor(); + rterm_clear_screen(); + if (rt->before_draw) { + rt->before_draw(rt); + } + rterm_print_status_bar(rt, ch, rt->iterations); + if (rt->after_draw) { + rt->after_draw(rt); + } + if (!rt->iterations || (x != rt->cursor.x || y != rt->cursor.y)) { + if (rt->cursor.y == rt->size.ws_row) { + rt->cursor.y--; + } + if (rt->cursor.y < 0) { + rt->cursor.y = 0; + } + x = rt->cursor.x; + y = rt->cursor.y; + if (rt->before_cursor_move) + rt->before_cursor_move(rt); + cursor_set(rt, rt->cursor.x, rt->cursor.y); + if (rt->after_cursor_move) + rt->after_cursor_move(rt); + // x = rt->cursor.x; + // y = rt->cursor.y; + } + if (rt->show_cursor) + rterm_show_cursor(); + + fflush(stdout); + + rt->key = rshell_getkey(rt); + if (rt->key.pressed && rt->before_key_press) { + rt->before_key_press(rt); + } + rshell_keypress_t key = rt->key; + ch = key.c; + if (ch == 'q') + break; // Press 'q' to quit + if (key.c == -1) { + nsleep(1000 * 1000); + } + // Escape + if (key.escape) { + switch (key.c) { + case 65: // Move up + if (rt->cursor.y > -1) + rt->cursor.y--; + break; + case 66: // Move down + if (rt->cursor.y < rt->size.ws_row) + rt->cursor.y++; + break; + case 68: // Move left + if (rt->cursor.x > 0) + rt->cursor.x--; + if (key.ctrl) + rt->cursor.x -= 4; + break; + case 67: // Move right + if (rt->cursor.x < rt->size.ws_col) { + rt->cursor.x++; + } + if (key.ctrl) { + rt->cursor.x += 4; + } + break; + } + } + + if (rt->key.pressed && rt->after_key_press) { + rt->after_key_press(rt); + } + rt->iterations++; + + // usleep (1000); + } + + // Cleanup + printf("\x1b[0m"); // Reset colors + rterm_clear_screen(); + disableRawMode(&orig_termios); +} +#endif + +#ifndef RTREE_H +#define RTREE_H +#include +#include +#include + +typedef struct rtree_t { + struct rtree_t *next; + struct rtree_t *children; + char c; + void *data; +} rtree_t; + +rtree_t *rtree_new() { + rtree_t *b = (rtree_t *)rmalloc(sizeof(rtree_t)); + b->next = NULL; + b->children = NULL; + b->c = 0; + b->data = NULL; + return b; +} + +rtree_t *rtree_set(rtree_t *b, char *c, void *data) { + while (b) { + if (b->c == 0) { + b->c = *c; + c++; + if (*c == 0) { + b->data = data; + // printf("SET1 %c\n", b->c); + return b; + } + } else if (b->c == *c) { + c++; + if (*c == 0) { + b->data = data; + return b; + } + if (b->children) { + b = b->children; + } else { + b->children = rtree_new(); + b = b->children; + } + } else if (b->next) { + b = b->next; + } else { + b->next = rtree_new(); + b = b->next; + b->c = *c; + c++; + if (*c == 0) { + b->data = data; + return b; + } else { + b->children = rtree_new(); + b = b->children; + } + } + } + return NULL; +} + +rtree_t *rtree_find(rtree_t *b, char *c) { + while (b) { + if (b->c == *c) { + c++; + if (*c == 0) { + return b; + } + b = b->children; + continue; + } + b = b->next; + } + return NULL; +} + +void rtree_free(rtree_t *b) { + if (!b) + return; + rtree_free(b->children); + rtree_free(b->next); + rfree(b); +} + +void *rtree_get(rtree_t *b, char *c) { + rtree_t *t = rtree_find(b, c); + if (t) { + return t->data; + } + return NULL; +} +#endif +#ifndef RLEXER_H +#define RLEXER_H +#include +#include +#include +#include +#include +#include + +#define RTOKEN_VALUE_SIZE 1024 + +typedef enum rtoken_type_t { + RT_UNKNOWN = 0, + RT_SYMBOL, + RT_NUMBER, + RT_STRING, + RT_PUNCT, + RT_OPERATOR, + RT_EOF = 10, + RT_BRACE_OPEN, + RT_CURLY_BRACE_OPEN, + RT_BRACKET_OPEN, + RT_BRACE_CLOSE, + RT_CURLY_BRACE_CLOSE, + RT_BRACKET_CLOSE +} rtoken_type_t; + +typedef struct rtoken_t { + rtoken_type_t type; + char value[RTOKEN_VALUE_SIZE]; + unsigned int line; + unsigned int col; +} rtoken_t; + +static char *_content; +static unsigned int _content_ptr; +static unsigned int _content_line; +static unsigned int _content_col; + +static int isgroupingchar(char c) { + return (c == '{' || c == '}' || c == '(' || c == ')' || c == '[' || c == ']' || c == '"' || c == '\''); +} + +static int isoperator(char c) { + return (c == '+' || c == '-' || c == '/' || c == '*' || c == '=' || c == '>' || c == '<' || c == '|' || c == '&'); +} + +static rtoken_t rtoken_new() { + rtoken_t token; + memset(&token, 0, sizeof(token)); + token.type = RT_UNKNOWN; + return token; +} + +rtoken_t rlex_number() { + rtoken_t token = rtoken_new(); + token.col = _content_col; + token.line = _content_line; + bool first_char = true; + int dot_count = 0; + char c; + while (isdigit(c = _content[_content_ptr]) || (first_char && _content[_content_ptr] == '-') || + (dot_count == 0 && _content[_content_ptr] == '.')) { + if (c == '.') + dot_count++; + first_char = false; + char chars[] = {c, 0}; + strcat(token.value, chars); + _content_ptr++; + _content_col++; + } + token.type = RT_NUMBER; + return token; +} + +static rtoken_t rlex_symbol() { + rtoken_t token = rtoken_new(); + + token.col = _content_col; + token.line = _content_line; + char c; + while (isalpha(_content[_content_ptr]) || _content[_content_ptr] == '_') { + c = _content[_content_ptr]; + char chars[] = {c, 0}; + strcat(token.value, chars); + _content_ptr++; + _content_col++; + } + token.type = RT_SYMBOL; + return token; +} + +static rtoken_t rlex_operator() { + + rtoken_t token = rtoken_new(); + + token.col = _content_col; + token.line = _content_line; + char c; + bool is_first = true; + while (isoperator(_content[_content_ptr])) { + if (!is_first) { + if (_content[_content_ptr - 1] == '=' && _content[_content_ptr] == '-') { + break; + } + } + c = _content[_content_ptr]; + char chars[] = {c, 0}; + strcat(token.value, chars); + _content_ptr++; + _content_col++; + is_first = false; + } + token.type = RT_OPERATOR; + return token; +} + +static rtoken_t rlex_punct() { + + rtoken_t token = rtoken_new(); + + token.col = _content_col; + token.line = _content_line; + char c; + bool is_first = true; + while (ispunct(_content[_content_ptr])) { + if (!is_first) { + if (_content[_content_ptr] == '"') { + break; + } + if (_content[_content_ptr] == '\'') { + break; + } + if (isgroupingchar(_content[_content_ptr])) { + break; + } + if (isoperator(_content[_content_ptr])) { + break; + } + } + c = _content[_content_ptr]; + char chars[] = {c, 0}; + strcat(token.value, chars); + _content_ptr++; + _content_col++; + is_first = false; + } + token.type = RT_PUNCT; + return token; +} + +static rtoken_t rlex_string() { + rtoken_t token = rtoken_new(); + char c; + token.col = _content_col; + token.line = _content_line; + char str_chr = _content[_content_ptr]; + _content_ptr++; + while (_content[_content_ptr] != str_chr) { + c = _content[_content_ptr]; + if (c == '\\') { + _content_ptr++; + c = _content[_content_ptr]; + if (c == 'n') { + c = '\n'; + } else if (c == 'r') { + c = '\r'; + } else if (c == 't') { + c = '\t'; + } else if (c == str_chr) { + c = str_chr; + } + + _content_col++; + } + char chars[] = {c, 0}; + strcat(token.value, chars); + _content_ptr++; + _content_col++; + } + _content_ptr++; + token.type = RT_STRING; + return token; +} + +void rlex(char *content) { + _content = content; + _content_ptr = 0; + _content_col = 1; + _content_line = 1; +} + +static void rlex_repeat_str(char *dest, char *src, unsigned int times) { + for (size_t i = 0; i < times; i++) { + strcat(dest, src); + } +} + +rtoken_t rtoken_create(rtoken_type_t type, char *value) { + rtoken_t token = rtoken_new(); + token.type = type; + token.col = _content_col; + token.line = _content_line; + strcpy(token.value, value); + return token; +} + +rtoken_t rlex_next() { + while (true) { + + _content_col++; + + if (_content[_content_ptr] == 0) { + return rtoken_create(RT_EOF, "eof"); + } else if (_content[_content_ptr] == '\n') { + _content_line++; + _content_col = 1; + _content_ptr++; + } else if (isspace(_content[_content_ptr])) { + _content_ptr++; + } else if (isdigit(_content[_content_ptr]) || (_content[_content_ptr] == '-' && isdigit(_content[_content_ptr + 1]))) { + return rlex_number(); + } else if (isalpha(_content[_content_ptr]) || _content[_content_ptr] == '_') { + return rlex_symbol(); + } else if (_content[_content_ptr] == '"' || _content[_content_ptr] == '\'') { + return rlex_string(); + } else if (isoperator(_content[_content_ptr])) { + return rlex_operator(); + } else if (ispunct(_content[_content_ptr])) { + if (_content[_content_ptr] == '{') { + + _content_ptr++; + return rtoken_create(RT_CURLY_BRACE_OPEN, "{"); + } + if (_content[_content_ptr] == '}') { + + _content_ptr++; + return rtoken_create(RT_CURLY_BRACE_CLOSE, "}"); + } + if (_content[_content_ptr] == '(') { + + _content_ptr++; + return rtoken_create(RT_BRACE_OPEN, "("); + } + if (_content[_content_ptr] == ')') { + + _content_ptr++; + return rtoken_create(RT_BRACE_CLOSE, ")"); + } + if (_content[_content_ptr] == '[') { + + _content_ptr++; + return rtoken_create(RT_BRACKET_OPEN, "["); + } + if (_content[_content_ptr] == ']') { + + _content_ptr++; + return rtoken_create(RT_BRACKET_CLOSE, "]"); + } + return rlex_punct(); + } + } +} + +char *rlex_format(char *content) { + rlex(content); + char *result = (char *)malloc(strlen(content) + 4096); + result[0] = 0; + unsigned int tab_index = 0; + char *tab_chars = " "; + unsigned int col = 0; + rtoken_t token_previous; + token_previous.value[0] = 0; + token_previous.type = RT_UNKNOWN; + while (true) { + rtoken_t token = rlex_next(); + if (token.type == RT_EOF) { + break; + } + + // col = strlen(token.value); + + if (col == 0) { + rlex_repeat_str(result, tab_chars, tab_index); + // col = strlen(token.value);// strlen(tab_chars) * tab_index; + } + + if (token.type == RT_STRING) { + strcat(result, "\""); + + char string_with_slashes[strlen(token.value) * 2 + 1]; + rstraddslashes(token.value, string_with_slashes); + strcat(result, string_with_slashes); + + strcat(result, "\""); + // col+= strlen(token.value) + 2; + // printf("\n"); + // printf("<<<%s>>>\n",token.value); + + memcpy(&token_previous, &token, sizeof(token)); + continue; + } + if (!(strcmp(token.value, "{"))) { + if (col != 0) { + strcat(result, "\n"); + rlex_repeat_str(result, " ", tab_index); + } + strcat(result, token.value); + + tab_index++; + + strcat(result, "\n"); + + col = 0; + + memcpy(&token_previous, &token, sizeof(token)); + continue; + } else if (!(strcmp(token.value, "}"))) { + unsigned int tab_indexed = 0; + if (tab_index) + tab_index--; + strcat(result, "\n"); + + rlex_repeat_str(result, tab_chars, tab_index); + tab_indexed++; + + strcat(result, token.value); + strcat(result, "\n"); + col = 0; + + memcpy(&token_previous, &token, sizeof(token)); + continue; + } + if ((token_previous.type == RT_SYMBOL && token.type == RT_NUMBER) || + (token_previous.type == RT_NUMBER && token.type == RT_SYMBOL) || (token_previous.type == RT_PUNCT && token.type == RT_SYMBOL) || + (token_previous.type == RT_BRACE_CLOSE && token.type == RT_SYMBOL) || + (token_previous.type == RT_SYMBOL && token.type == RT_SYMBOL)) { + if (token_previous.value[0] != ',' && token_previous.value[0] != '.') { + if (token.type != RT_OPERATOR && token.value[0] != '.') { + strcat(result, "\n"); + rlex_repeat_str(result, tab_chars, tab_index); + } + } + } + + if (token.type == RT_OPERATOR) { + strcat(result, " "); + } + if (token.type == RT_STRING) { + strcat(result, "\""); + } + strcat(result, token.value); + if (token.type == RT_STRING) { + strcat(result, "\""); + } + + if (token.type == RT_OPERATOR) { + strcat(result, " "); + } + if (!strcmp(token.value, ",")) { + strcat(result, " "); + } + col += strlen(token.value); + memcpy(&token_previous, &token, sizeof(token)); + } + return result; +} +#endif + +#ifndef RLIB_MAIN +#define RLIB_MAIN +#ifndef RMERGE_H +#define RMERGE_H +// #include "../mrex/rmatch.h" +#include +#include +#include +#include + +bool has_error = false; + +char *extract_script_src_include(char *line, char *include_path) { + include_path[0] = 0; + rrex3_t *rrex; + rrex = rrex3(NULL, line, ""); + if (rrex) { + strcpy(include_path, rrex->matches[0]); + rrex3_free(rrex); + return include_path; + } + return NULL; +} + +char *extract_c_local_include(char *line, char *include_path) { + // + /* + char res; + res= rmatch_extract(line, "#include.*"\".*\""); + + + printf("%MATCH:%s\n", res); + */ + + include_path[0] = 0; + rrex3_t *rrex; + rrex = rrex3(NULL, line, "[^\\\\*]^#include .*\"(.*)\""); + if (rrex) { + strcpy(include_path, rrex->matches[0]); + rrex3_free(rrex); + return include_path; + } + return NULL; +} + +char *rmerge_readline(FILE *f) { + static char data[4096]; + data[0] = 0; + int index = 0; + char c; + while ((c = fgetc(f)) != EOF) { + if (c != '\0') { + data[index] = c; + index++; + if (c == '\n') + break; + } + } + data[index] = 0; + if (data[0] == 0) + return NULL; + return data; +} +void writestring(FILE *f, char *line) { + char c; + while ((c = *line) != '\0') { + fputc(c, f); + line++; + } +} +char files_history[8096]; +char files_duplicate[8096]; +bool is_merging = false; + +void merge_file(char *source, FILE *d) { + if (is_merging == false) { + is_merging = true; + files_history[0] = 0; + files_duplicate[0] = 0; + } + if (strstr(files_history, source)) { + if (strstr(files_duplicate, source)) { + rprintmf(stderr, "\\l Already included: %s. Already on duplicate list.\n", source); + } else { + rprintcf(stderr, "\\l Already included: %s. Adding to duplicate list.\n", source); + strcat(files_duplicate, source); + strcat(files_duplicate, "\n"); + } + return; + } else { + rprintgf(stderr, "\\l Merging: %s.\n", source); + strcat(files_history, source); + strcat(files_history, "\n"); + } + FILE *fd = fopen(source, "rb"); + if (!fd) { + rprintrf(stderr, "\\l File does not exist: %s\n", source); + has_error = true; + return; + } + + char *line; + char include_path[4096]; + while ((line = rmerge_readline(fd))) { + + include_path[0] = 0; + if (!*line) + break; + + // + char *inc = extract_c_local_include(line, include_path); + if (!inc) + inc = extract_script_src_include(line, include_path); + + /* + if (!strncmp(line, "#include ", 9)) { + int index = 0; + while (line[index] != '"' && line[index] != 0) { + index++; + } + if (line[index] == '"') { + int pindex = 0; + index++; + while (line[index] != '"') { + include_path[pindex] = line[index]; + pindex++; + index++; + } + if (line[index] != '"') { + include_path[0] = 0; + } else { + include_path[pindex] = '\0'; + } + } + }*/ + if (inc) { + merge_file(inc, d); + } else { + writestring(d, line); + } + } + fclose(fd); + writestring(d, "\n"); +} + +int rmerge_main(int argc, char *argv[]) { + char *file_input = NULL; + if (argc != 2) { + printf("Usage: \n"); + } else { + file_input = argv[1]; + // file_output = argv[2]; + } + FILE *f = tmpfile(); + printf("// RETOOR - %s\n", __DATE__); + merge_file(file_input, f); + rewind(f); + char *data; + int line_number = 0; + while ((data = rmerge_readline(f))) { + if (line_number) { + printf("/*%.5d*/ ", line_number); + line_number++; + } + printf("%s", data); + } + printf("\n"); + if (has_error) { + rprintrf(stderr, "\\l Warning: there are errors while merging this file.\n"); + } else { + rprintgf(stderr, "\\l Merge succesful without error(s).%s\n", remo_get("fire")); + } + return 0; +} +#endif + +void forward_argument(int *argcc, char *argv[]) { + int argc = *argcc; + for (int i = 0; i < argc; i++) { + argv[i] = argv[i + 1]; + } + argc--; + *argcc = argc; +} + +int rlib_main(int argc, char *argv[]) { + + if (argc == 1) { + printf("rlib\n\n"); + printf("options:\n"); + printf(" httpd - a http file server. Accepts port as argument.\n"); + printf(" rmerge - a merge tool. Converts c source files to one file \n" + " with local includes by giving main file as argument.\n"); + printf(" rcov - coverage tool theat cleans up after himself. Based on " + "lcov.\n"); + printf(" rcase - tool to swap input file automatically between" + " camel case and snake case.\n"); + return 0; + } + + forward_argument(&argc, argv); + + if (!strcmp(argv[0], "httpd")) { + + return rhttp_main(argc, argv); + } + if (!strcmp(argv[0], "rmerge")) { + return rmerge_main(argc, argv); + } + if (!strcmp(argv[0], "rcov")) { + return rcov_main(argc, argv); + } + if (!strcmp(argv[0], "rcase")) { + return rcase_main(argc, argv); + } + + return 0; +} + +#endif + +// END OF RLIB +#endif diff --git a/sudoku_n/sudoku,h b/sudoku_n/sudoku,h new file mode 100644 index 0000000..8ddd6c4 --- /dev/null +++ b/sudoku_n/sudoku,h @@ -0,0 +1,92 @@ +#ifndef SUDOKU_H +#define SUDOKU_H +typedef struct field_t { + unsigned int value; + unsigned int selected; + unsigned int initial; + unsigned int column; + unsigned int row; + unsigned int index; + unsigned char box; +} field_t; + +field_t * new_field(){ + field_t * field = (field_t *)calloc(1,sizeof(field_t)); + return field; +} + +typedef struct row_t { + unsigned int index; + field_t * columns; + unsigned int column_count; +} row_t; + +row_t * new_row(unsigned int size) { + row_t * row = (row_t *)calloc(1, sizeof(row)); + row->columns = calloc(size,sizeof(field_t)); + row->index = 0; + return row; +} + +typedef struct grid_t { + unsigned int size; + unsigned int row_count; + unsigned int field_count; + row_t * rows; + field_t * fields; + field_t * (*get)(struct grid_t * grid, unsigned int row, unsigned int col); + field_t * (*get_empty_field)(struct grid_t * grid); +} grid_t; + +field_t * grid_get(grid_t * grid, unsigned int row, unsigned int col){ + return &grid->rows[row].columns[col]; +} +field_t * grid_get_empty_field(grid_t * grid){ + for(int i = 0; i < grid->size * grid->size; i++){ + printf("AT:%d\n",i); + printf("V:%d\n",grid->fields[i].value); + printf("V2:%d\n",grid->rows[i].columns[i].value); + printf("V2:%d\n",grid->get(grid,i,i)->value); + if(grid->fields[i].value == 0) + return &grid->fields[i]; + } + return NULL; +} + +char get_box_letter(grid_t * grid, unsigned int row, unsigned int col){ + //char box_letter = 65 + (row)*grid->size / grid->size / 3 + row; // (row*grid->size+col)+(grid->size / 3);// + grid->size % (grid->size / 3)); + char box_letter = 65 + ((row % (grid->size / 3))) + grid->size % (grid->size / 3);// (row-1)*grid->size+(col-1)+(row-1)+(col-1); + //(65 + row * (grid->size / 3) % (grid->size / 3)+col); /// (grid->size / 3)); + return box_letter; +} + + +grid_t * new_grid(unsigned int size){ + grid_t * grid = (grid_t *)calloc(1,sizeof(grid_t)); + grid->get = grid_get; + grid->get_empty_field = grid_get_empty_field; + grid->size = size; + grid->row_count = 0; + grid->rows = (row_t *)calloc(size, sizeof(row_t)); + grid->fields = (field_t *)calloc(size*size, sizeof(field_t)); + for(unsigned int irow = 0; irow < size; irow++){ + row_t * row = new_row(size); + row->index = grid->row_count; + row->column_count = size; + grid->row_count++; + grid->rows[row->index] = *row; + for(unsigned int icol = 0; icol < size; icol++){ + unsigned int field_index = irow * size + icol; + field_t * field = new_field(); + field->column = icol; + field->row = irow; + field->index = field_index; + field->box = get_box_letter(grid, irow, icol); + row->columns[icol] = *field; + grid->fields[field_index] = *field; + grid->field_count++; + } + } + return grid; +} +#endif diff --git a/sudoku_n/sudoku.h b/sudoku_n/sudoku.h new file mode 100644 index 0000000..a6d469d --- /dev/null +++ b/sudoku_n/sudoku.h @@ -0,0 +1,6 @@ +#ifndef SUDOKU_H +#define SUDOKU_H +#include "sudoku_header.h" +#include "sudoku_format.h" +#include "sudoku_generate.h" +#endif diff --git a/sudoku_n/sudoku3 b/sudoku_n/sudoku3 new file mode 100755 index 0000000000000000000000000000000000000000..93e8fec3161de8fbd3033c9ece9648149e344b0a GIT binary patch literal 167304 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 +#include +#include +#include "sudoku.h" + +int main(){ + + grid_t * grid = new_grid(48); + printf("%d \n",grid->rows[3].index); + printf("%d \n",grid->fields[30].index); + printf("%d \n",grid->rows[6].columns[6].index); + field_t * f = grid->get(grid, 0,3); + printf("%d \n", f->index); + //for(int i = 0; i < grid->size*grid->size;i++){ +// printf("%c",grid->fields[i].box); +// } + grid->get(grid,5,5)->value = 3; + grid->get(grid,0,0)->value = 1; + grid->fields[0].value = 4; + printf("**%d**\n",grid->get(grid,5,5)->index); + printf("^^%d^^\n",grid->get(grid,0,0)->index); + printf("!!%d!!\n", grid->get_empty_field(grid)->index); + printf("Computer format:\n%s\n",grid_to_string(grid,row_to_string,field_to_string)); + printf("Human format:\n%s\n",grid_to_string_human(grid)); + printf("C format:\n%s\n",grid_to_string_c(grid)); + grid = generate_sudoku(48); + printf("C format:\n%s\n",grid_to_string_c(grid)); + + return 0; +} diff --git a/sudoku_n/sudoku_algorithm.h b/sudoku_n/sudoku_algorithm.h new file mode 100644 index 0000000..e4244fb --- /dev/null +++ b/sudoku_n/sudoku_algorithm.h @@ -0,0 +1,32 @@ +#ifndef SUDOKU_ALGORITHM_H +#define SUDOKU_ALGORITHM_H +#include "sudoku.h" +#include "rlib.h" +#include +#define uin unsigned int +unsigned int rand_int(int min, int max){ + return rand() % (max - min + 1) + min; +} + + + + +double count_neighbors(grid_t * grid, uint row, uint col) { + double count = 0.0; + for(uint i = 0; i < row; i++){ + for(uint j = 0; j < grid->size; j++){ + if(grid->get(grid,row,j)->value != 0 && j != col) + count += 1; //grid[row][j].initial ? 1.1 : 1.0; + } + for(uint j = 0; j < grid->size; j++){ + if(grid->get(grid,j,col)->value!= 0 && j != row) + count += 1; //grid[j][col].initial ? 1.1 : 1.0; + } + } + return count; +} + + + + +#endif diff --git a/sudoku_n/sudoku_format.h b/sudoku_n/sudoku_format.h new file mode 100644 index 0000000..8761235 --- /dev/null +++ b/sudoku_n/sudoku_format.h @@ -0,0 +1,86 @@ +#ifndef SUDOKU_FORMAT_H +#define SUDOKU_FORMAT_H +#include "sudoku_header.h" +#include +#include "rlib.h" +#define SUDOKU_FORMAT_BUFFER_SIZE 90000 + +char * field_to_string_human(field_t * field){ + static char result[SUDOKU_FORMAT_BUFFER_SIZE] = {0}; + result[0] = 0; + sprintf(result,"%d ",field->value); + return sbuf(result); +} + +char * field_to_string_comma(field_t * field){ + static char result[SUDOKU_FORMAT_BUFFER_SIZE] = {0}; + result[0] = 0; + sprintf(result,"%d, ",field->value); + return sbuf(result); +} + +char * field_to_string(field_t * field){ + static char result[SUDOKU_FORMAT_BUFFER_SIZE] = {0}; + result[0] = 0; + sprintf(result,"%d",field->value); + return sbuf(result); +} +char * row_to_string(row_t * row,char * field_string_fn(field_t * field)){ + static char result[SUDOKU_FORMAT_BUFFER_SIZE] = {0}; + result[0] = 0; + for(uint i = 0; i < row->column_count; i++){ + strcat(result, field_string_fn(&row->columns[i])); + } + return sbuf(result); +} +char * row_to_string_human(row_t * row,char * field_string_fn(field_t * field)){ + static char result[SUDOKU_FORMAT_BUFFER_SIZE] = {0}; + result[0] = 0; + for(uint i = 0; i < row->column_count; i++){ + strcat(result, field_string_fn(&row->columns[i])); + } + result[strlen(result)-2] = 0; + strcat(result, "\n"); + return sbuf(result); +} +char * row_to_string_c(row_t * row){ + static char result[SUDOKU_FORMAT_BUFFER_SIZE] = {0}; + result[0] = 0; + strcat(result,"{"); + for(uint i = 0; i < row->column_count; i++){ + strcat(result, field_to_string_comma(&row->columns[i])); + } + result[strlen(result)-2] = 0; + strcat(result,"},\n"); + return sbuf(result); +} + +char * grid_to_string(grid_t * grid, char * row_to_string_fn(row_t * row,char * (field_t *)), char * field_string_fn(field_t * field)){ + static char result[SUDOKU_FORMAT_BUFFER_SIZE] = {0}; + result[0] = 0; + for(uint irow = 0; irow < grid->size; irow++){ + row_t row = grid->rows[irow]; + row.column_count++; + strcat(result,row_to_string_fn(&row,field_string_fn)); + } + result[strlen(result)-1] = 0; + return sbuf(result); +} +char * grid_to_string_c(grid_t * grid){ + char result[SUDOKU_FORMAT_BUFFER_SIZE] = {0}; + result[0] = 0; + strcat(result,"{\n"); + for(uint i = 0; i < grid->size; i++){ + strcat(result," "); + strcat(result,row_to_string_c(&grid->rows[i])); + + } + result[strlen(result)-2] = 0; + strcat(result,"\n}"); + return sbuf(result); +} +char * grid_to_string_human(grid_t * grid){ + return grid_to_string(grid, row_to_string_human, field_to_string_human); +} + +#endif diff --git a/sudoku_n/sudoku_generate.h b/sudoku_n/sudoku_generate.h new file mode 100644 index 0000000..ea5a2a8 --- /dev/null +++ b/sudoku_n/sudoku_generate.h @@ -0,0 +1,38 @@ +#ifndef SUDOKU_GENERATE_H +#define SUDOKU_GENERATE_H +#include +#include +#include "sudoku_header.h" +#include "sudoku_algorithm.h" + + +field_t * grid_get_random_empty_field(grid_t * grid){ + while(true){ + unsigned int row = rand_int(0,grid->size-1); + unsigned int col = rand_int(0,grid->size-1); + field_t * found = grid_get(grid,row,col); + if(found->value == 0) + return found; + } +} + +void grid_set_random_field(grid_t * grid){ + field_t * field = grid_get_random_empty_field(grid); + field->value = rand_int(1,grid->size); + field->initial = true; +} + + + +grid_t * generate_sudoku(unsigned int size){ + srand(time(NULL)); + grid_t * grid = new_grid(size); + + for(unsigned int i = 0; i < rand_int(17,20); i++){ + grid_set_random_field(grid); + } + return grid; + +} + +#endif diff --git a/sudoku_n/sudoku_header.h b/sudoku_n/sudoku_header.h new file mode 100644 index 0000000..f32384c --- /dev/null +++ b/sudoku_n/sudoku_header.h @@ -0,0 +1,92 @@ +#ifndef SUDOKU_HEADER_H +#define SUDOKU_HEADER_H +#include "rlib.h" +#include +#include +typedef struct field_t { + unsigned int value; + unsigned int selected; + unsigned int initial; + unsigned int column; + unsigned int row; + unsigned int index; + unsigned char box; +} field_t; + +field_t * new_field(){ + field_t * field = (field_t *)calloc(1,sizeof(field_t)); + return field; +} + +typedef struct row_t { + unsigned int index; + field_t * columns; + unsigned int column_count; +} row_t; + +row_t * new_row(unsigned int size) { + row_t * row = (row_t *)calloc(sizeof(row_t),1); + row->columns = calloc(size,sizeof(field_t)); + row->index = 0; + return row; +} + +typedef struct grid_t { + unsigned int size; + unsigned int row_count; + unsigned int field_count; + row_t * rows; + field_t * fields; + field_t * (*get)(struct grid_t * grid, unsigned int row, unsigned int col); + field_t * (*get_empty_field)(struct grid_t * grid); +} grid_t; + +field_t * grid_get(grid_t * grid, unsigned int row, unsigned int col){ + return &grid->rows[row].columns[col]; +} +field_t * grid_get_empty_field(grid_t * grid){ + for(uint i = 0; i < grid->size * grid->size; i++){ + if(grid->fields[i].value == 0) + return &grid->fields[i]; + } + return NULL; +} +/* +char get_box_letter(grid_t * grid, unsigned int row, unsigned int col){ + //char box_letter = 65 + (row)*grid->size / grid->size / 3 + row; // (row*grid->size+col)+(grid->size / 3);// + grid->size % (grid->size / 3)); + char box_letter = 65 + ((row % (grid->size / 3))) + grid->size % (grid->size / 3);// (row-1)*grid->size+(col-1)+(row-1)+(col-1); + //(65 + row * (grid->size / 3) % (grid->size / 3)+col); /// (grid->size / 3)); + return box_letter; +}*/ + + +grid_t * new_grid(unsigned int size){ + grid_t * grid = (grid_t *)calloc(1,sizeof(grid_t)); + grid->get = grid_get; + grid->get_empty_field = grid_get_empty_field; + grid->size = size; + grid->row_count = 0; + grid->rows = (row_t *)calloc(size, sizeof(row_t)); + grid->fields = (field_t *)calloc(size*size, sizeof(field_t)); + unsigned int field_index = 0; + for(unsigned int irow = 0; irow < size; irow++){ + row_t * row = new_row(size); + row->index = grid->row_count; + row->column_count = size; + grid->row_count++; + grid->rows[row->index] = *row; + for(unsigned int icol = 0; icol < size; icol++){ + field_t * field = new_field(); + field->column = icol; + field->row = irow; + field->index = field_index; + //field->box = get_box_letter(grid, irow, icol); + row->columns[icol] = *field; + grid->fields[field_index] = *field; + grid->field_count++; + field_index++; + } + } + return grid; +} +#endif diff --git a/sudoku_n/sudoku_thread_test.c b/sudoku_n/sudoku_thread_test.c new file mode 100644 index 0000000..f6840a7 --- /dev/null +++ b/sudoku_n/sudoku_thread_test.c @@ -0,0 +1,66 @@ +#include "rlib.h" +#include "sudoku.h" + +#include +char * xx = "aa"; + +void * thread_worker(){ + tick(); + + + for(uint i = 0; i< 1000; i++){ + + grid_t * grid = new_grid(18); + grid_to_string_c(grid); +// printf("%d\n",i); + sbuf(xx); + //strcpy(xx,"AAA"); + } + return NULL; +} + +void bench_rtemp_c(){ + grid_t * grid = new_grid(18); + char * to_copy = sbuf(grid_to_string_c(grid)); + + uint times_bench = 10; + uint times_function = 10000000; + printf("Benchmark %d*%d with/without thread lock.\n",times_bench,times_function); + RBENCH(times_bench,{ + printf("with: "); + RBENCH(times_function,{ + sbuf(sbuf(sbuf(to_copy))); + }); + + rtempc_use_mutex = false; + printf("witout: "); + RBENCH(10000000,{ + sbuf(sbuf(sbuf(to_copy))); + }); + }); + +} + +int main(){ + //rtempc_use_mutex = false; + bench_rtemp_c(); + rtempc_use_mutex = true; + uint worker_count = 4; + pthread_t workers[worker_count]; + printf("Threading: \n"); + RBENCH(1,{ + for(uint i = 0; i < worker_count; i++){ + pthread_create(&workers[i],0,thread_worker,NULL); + } + for(uint i = 0; i < worker_count; i++){ + pthread_join(workers[i],NULL); + } + }); + printf("Without threading: \n"); + RBENCH(1,{ + for(uint i = 0; i < worker_count; i++){ + thread_worker(); + } + }); + return 0; +} diff --git a/test.c b/test.c new file mode 100644 index 0000000..26320c0 --- /dev/null +++ b/test.c @@ -0,0 +1,15 @@ +#include "rlib.h" +#include "sudoku.h" +#include +#include +#include +#include +#include "footer.h" + + + + +int main() { + + return 0; +} diff --git a/test.h b/test.h new file mode 100644 index 0000000..1023936 --- /dev/null +++ b/test.h @@ -0,0 +1 @@ +#include "rlib.h" diff --git a/web.c b/web.c new file mode 100644 index 0000000..cb59a49 --- /dev/null +++ b/web.c @@ -0,0 +1,39 @@ +#include +#include + +int request_handler(rhttp_request_t * r) { + rhttp_send_drain(r->c, "HTTP/1.1 200 OK\r\n" + "Content-Length: 1\r\n" + "Connection: close\r\n\r\n" + "A",0); + close(r->c); +} + +void * serve_thread(void * arg){ + int port = *(int*)arg; + printf("Serving on port: %d\n", port); + rhttp_serve("0.0.0.0", port, 1024, 1, 1, request_handler); + return NULL; +} + +pthread_t server_thread; +void serve(int port){ + printf("Serving on port: %d\n", port); + int pport = port; + +} + +int main() { + int port = 8889; + //serve(port);; + + + pthread_create(&server_thread, 0, serve_thread,(void *)&port); + pthread_join(server_thread, NULL); + while(true){ + printf("Loop\n"); + sleep(1); + } + return 0; +} +