From 0174a3f3f033d8a8aac0d9ff8ff81b09195df136 Mon Sep 17 00:00:00 2001 From: Rokas Puzonas Date: Sat, 13 Dec 2025 17:47:07 +0200 Subject: [PATCH] add imgui and tracy --- build.zig | 70 +- build.zig.zon | 95 +- src/assets/roboto-font/LICENSE.txt | 93 ++ src/assets/roboto-font/Roboto-Bold.ttf | Bin 0 -> 146768 bytes src/assets/roboto-font/Roboto-Italic.ttf | Bin 0 -> 152208 bytes src/assets/roboto-font/Roboto-Regular.ttf | Bin 0 -> 146004 bytes src/graphics.zig | 1375 +++++++++++++++++++++ src/imgui.zig | 502 ++++++++ src/libs/sokol_fontstash_impl.c | 85 ++ src/libs/stb_image.c | 2 + src/main.zig | 326 ++++- src/math.zig | 399 ++++++ src/window.zig | 187 +++ 13 files changed, 3062 insertions(+), 72 deletions(-) create mode 100644 src/assets/roboto-font/LICENSE.txt create mode 100644 src/assets/roboto-font/Roboto-Bold.ttf create mode 100644 src/assets/roboto-font/Roboto-Italic.ttf create mode 100644 src/assets/roboto-font/Roboto-Regular.ttf create mode 100644 src/graphics.zig create mode 100644 src/imgui.zig create mode 100644 src/libs/sokol_fontstash_impl.c create mode 100644 src/libs/stb_image.c create mode 100644 src/math.zig create mode 100644 src/window.zig diff --git a/build.zig b/build.zig index 3337402..e65327c 100644 --- a/build.zig +++ b/build.zig @@ -1,9 +1,13 @@ const std = @import("std"); +const sokol = @import("sokol"); -pub fn build(b: *std.Build) void { +pub fn build(b: *std.Build) !void { const target = b.standardTargetOptions(.{}); const optimize = b.standardOptimizeOption(.{}); + const has_imgui = b.option(bool, "imgui", "ImGui integration") orelse (optimize == .Debug); + const has_tracy = b.option(bool, "tracy", "Tracy integration") orelse (optimize == .Debug); + const exe = b.addExecutable(.{ .name = "game_2025_12_13", .root_module = b.createModule(.{ @@ -12,6 +16,70 @@ pub fn build(b: *std.Build) void { .optimize = optimize, }), }); + const exe_mod = exe.root_module; + + const tracy_dependency = b.dependency("tracy", .{ + .target = target, + .optimize = optimize, + .tracy_enable = has_tracy, + .tracy_only_localhost = true + }); + exe_mod.linkLibrary(tracy_dependency.artifact("tracy")); + exe_mod.addImport("tracy", tracy_dependency.module("tracy")); + + const stb_dependency = b.dependency("stb", .{}); + exe_mod.addIncludePath(stb_dependency.path(".")); + + const sokol_c_dependency = b.dependency("sokol_c", .{}); + exe_mod.addIncludePath(sokol_c_dependency.path("util")); + + const fontstash_dependency = b.dependency("fontstash", .{}); + exe_mod.addIncludePath(fontstash_dependency.path("src")); + + const sokol_dependency = b.dependency("sokol", .{ + .target = target, + .optimize = optimize, + .with_sokol_imgui = has_imgui + }); + + exe_mod.addImport("sokol", sokol_dependency.module("sokol")); + exe_mod.linkLibrary(sokol_dependency.artifact("sokol_clib")); + + var cflags_buffer: [64][]const u8 = undefined; + var cflags = std.ArrayListUnmanaged([]const u8).initBuffer(&cflags_buffer); + switch (sokol.resolveSokolBackend(.auto, target.result)) { + .d3d11 => try cflags.appendBounded("-DSOKOL_D3D11"), + .metal => try cflags.appendBounded("-DSOKOL_METAL"), + .gl => try cflags.appendBounded("-DSOKOL_GLCORE"), + .gles3 => try cflags.appendBounded("-DSOKOL_GLES3"), + .wgpu => try cflags.appendBounded("-DSOKOL_WGPU"), + else => @panic("unknown sokol backend"), + } + exe_mod.addIncludePath(b.path("src/libs")); + exe_mod.addCSourceFile(.{ + .file = b.path("src/libs/sokol_fontstash_impl.c"), + .flags = cflags.items + }); + + exe_mod.addCSourceFile(.{ + .file = b.path("src/libs/stb_image.c"), + .flags = &.{} + }); + + if (has_imgui) { + if (b.lazyDependency("cimgui", .{ + .target = target, + .optimize = optimize, + })) |cimgui_dependency| { + sokol_dependency.artifact("sokol_clib").addIncludePath(cimgui_dependency.path("src")); + exe_mod.addImport("cimgui", cimgui_dependency.module("cimgui")); + } + } + + var options = b.addOptions(); + options.addOption(bool, "has_imgui", has_imgui); + options.addOption(bool, "has_tracy", has_tracy); + exe_mod.addOptions("options", options); b.installArtifact(exe); diff --git a/build.zig.zon b/build.zig.zon index 71b16d9..81b3adb 100644 --- a/build.zig.zon +++ b/build.zig.zon @@ -1,81 +1,38 @@ .{ - // This is the default name used by packages depending on this one. For - // example, when a user runs `zig fetch --save `, this field is used - // as the key in the `dependencies` table. Although the user can choose a - // different name, most users will stick with this provided value. - // - // It is redundant to include "zig" in this name because it is already - // within the Zig package namespace. .name = .game_2025_12_13, - // This is a [Semantic Version](https://semver.org/). - // In a future version of Zig it will be used for package deduplication. .version = "0.0.0", - // Together with name, this represents a globally unique package - // identifier. This field is generated by the Zig toolchain when the - // package is first created, and then *never changes*. This allows - // unambiguous detection of one package being an updated version of - // another. - // - // When forking a Zig project, this id should be regenerated (delete the - // field and run `zig build`) if the upstream project is still maintained. - // Otherwise, the fork is *hostile*, attempting to take control over the - // original project's identity. Thus it is recommended to leave the comment - // on the following line intact, so that it shows up in code reviews that - // modify the field. - .fingerprint = 0x5704f7ae3ffdd7f8, // Changing this has security and trust implications. - // Tracks the earliest Zig version that the package considers to be a - // supported use case. + .fingerprint = 0x5704f7ae3ffdd7f8, .minimum_zig_version = "0.15.2", - // This field is optional. - // Each dependency must either provide a `url` and `hash`, or a `path`. - // `zig build --fetch` can be used to fetch all dependencies of a package, recursively. - // Once all dependencies are fetched, `zig build` no longer requires - // internet connectivity. .dependencies = .{ - // See `zig fetch --save ` for a command-line interface for adding dependencies. - //.example = .{ - // // When updating this field to a new URL, be sure to delete the corresponding - // // `hash`, otherwise you are communicating that you expect to find the old hash at - // // the new URL. If the contents of a URL change this will result in a hash mismatch - // // which will prevent zig from using it. - // .url = "https://example.com/foo.tar.gz", - // - // // This is computed from the file contents of the directory of files that is - // // obtained after fetching `url` and applying the inclusion rules given by - // // `paths`. - // // - // // This field is the source of truth; packages do not come from a `url`; they - // // come from a `hash`. `url` is just one of many possible mirrors for how to - // // obtain a package matching this `hash`. - // // - // // Uses the [multihash](https://multiformats.io/multihash/) format. - // .hash = "...", - // - // // When this is provided, the package is found in a directory relative to the - // // build root. In this case the package's hash is irrelevant and therefore not - // // computed. This field and `url` are mutually exclusive. - // .path = "foo", - // - // // When this is set to `true`, a package is declared to be lazily - // // fetched. This makes the dependency only get fetched if it is - // // actually used. - // .lazy = false, - //}, + .sokol = .{ + .url = "git+https://github.com/floooh/sokol-zig.git#1e233203b41893a8bf9c1c91933eba98204b6ed8", + .hash = "sokol-0.1.0-pb1HK42FNgDb5sqnsadiO2qabkfUX8jXP_DheOZGcD1W", + }, + .cimgui = .{ + .url = "git+https://github.com/floooh/dcimgui.git#33c99ef426b68030412b5a4b11487a23da9d4f13", + .hash = "cimgui-0.1.0-44ClkQRJlABdFMKRqIG8KDD6jy1eQbgPO335NziPYjmL", + .lazy = true, + }, + .tracy = .{ + .url = "git+https://github.com/sagehane/zig-tracy.git#80933723efe9bf840fe749b0bfc0d610f1db1669", + .hash = "zig_tracy-0.0.5-aOIqsX1tAACKaRRB-sraMLuNiMASXi_y-4FtRuw4cTpx", + }, + .stb = .{ + .url = "git+https://github.com/nothings/stb.git#f1c79c02822848a9bed4315b12c8c8f3761e1296", + .hash = "N-V-__8AABQ7TgCnPlp8MP4YA8znrjd6E-ZjpF1rvrS8J_2I", + }, + .sokol_c = .{ + .url = "git+https://github.com/floooh/sokol.git#c66a1f04e6495d635c5e913335ab2308281e0492", + .hash = "N-V-__8AAC3eYABB1DVLb4dkcEzq_xVeEZZugVfQ6DoNQBDN", + }, + .fontstash = .{ + .url = "git+https://github.com/memononen/fontstash.git#b5ddc9741061343740d85d636d782ed3e07cf7be", + .hash = "N-V-__8AAA9xHgAxdLYPmlNTy6qzv9IYqiIePEHQUOPWYQ_6", + }, }, - // Specifies the set of files and directories that are included in this package. - // Only files and directories listed here are included in the `hash` that - // is computed for this package. Only files listed here will remain on disk - // when using the zig package manager. As a rule of thumb, one should list - // files required for compilation plus any license(s). - // Paths are relative to the build root. Use the empty string (`""`) to refer to - // the build root itself. - // A directory listed here means that all files within, recursively, are included. .paths = .{ "build.zig", "build.zig.zon", "src", - // For example... - //"LICENSE", - //"README.md", }, } diff --git a/src/assets/roboto-font/LICENSE.txt b/src/assets/roboto-font/LICENSE.txt new file mode 100644 index 0000000..9c48e05 --- /dev/null +++ b/src/assets/roboto-font/LICENSE.txt @@ -0,0 +1,93 @@ +Copyright 2011 The Roboto Project Authors (https://github.com/googlefonts/roboto-classic) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/src/assets/roboto-font/Roboto-Bold.ttf b/src/assets/roboto-font/Roboto-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..9d7cf220f98402e6908795046cd3c124886fc54a GIT binary patch literal 146768 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]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 pSMMfWC3h031oSW{sOP-O*@UYa+3X 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�egE!tu*v~K}gWeK5h%eT<6pQ9}X zpua7m0meeK63uq{FLRa~t&-p_h{Go@P zuo`|G>e5_>QVto8ewr8Y{jj(7Z5l00KwsIYG2|yf9tZv1F_s*s79QM)pJ#-B6e@*z)tPCI#2a1@)mQbp8OooJ;0vcz7%WZ2aS(u z494OT@-2$>Xh;o)Cc~{|Ir+36f+64KU2K}59e6I(+(_5B9zu8XH*%IjSZKxlMb_ttZ@K9#G@18n@Xq^DjMqqaFs)IM^t)waro)a=VneL0@;18zDan z&}Qp^!}dXZtQ>~EJ)XMCZ>S$+iCJoq7rq5_%UA^^XWDjzEok(hUfQy;-owD(=gR>GX9wnjnNm#WT+o`3O`{j1vI zAAQ)s=(F>|uS2NETKJ#BPlcZW|4Z;QKYL_8g`WufG|wsA#bH~GXXj&dpT}g>Gf9t zx*p{&1tbDK1T6+&mcUq`$Ap74O^pw3(DW%9U#C-zEpAX_Ms`qqaYObxWWz0Lyi#>i zpvEy5=zjCSoM$O$uHlQ#O~!KbsZq%sWArhf^Ht_r9gjJl?jL9;C3}$J!%Ai?ug(3G zjHq@sFwawZL$|TA`<1N^`%K&Tu;caoMfGhpPr}?x={J;hL)rMc&%@U?zUq^hUnm(> zW$HZD+!N!2Dqq?0ne?f2NDul_U!hCc{JscRdI0n(+O&RBeO}q`iVoL&(=|6Nt@MFV zwm$j?`r!hlm-L(yw!TW^mgU!dw`?;tS66d*8|Ly#_rs=BGs&q#{)YKb`^<}DI)4YwZCJjEPJ@xuf28Z{Tu?eUr(boU{*UemTP=6(|3 zel9a_HD6OSxP3JjRl3AIhj9Ct6RCNN;=AI*-+auaz}tRm4yETgn7_O0`)1$#@Xg_G z(C4q!&;6Xce*f&7_hdaY?VsWm@6?zKe;e9*=Ii=1+db@W^WALsP9C{=<(_N*oBz7r zTm(Iexw(6e{!hMJw*KaCh7N~Z>p7>3|EkX@`E}2i)VO3A<^=_a6C&Dt0si^OlIGWL zc~bpCV0}dQ)j9LyhHo$KI|TYjQ3xT(|W&{xzVth$9S-LTAnwr$i8N0 z`NI4|$H9J6`d;f$t>0nO!@gIxex}}5a{#52UGoJ!_5j!8gtGIYztvnog}cWBgxNFm zS9Yu_12(+QSIrsJc=b7amA4v;RQ{NYXxm%Gt1y(IZE|J%E1O@<8`3bxg3YL(N4aV& zaDz_o>RXw81mm768~p-SBqmMXELmVG+qh}#a5gM%{D?tpSlzv4M@wwrSVeMoZc@=whRoj_vTlcDeA5tq_YZnoYdCQqy5h0((O& zIC};gEpUQKPV%Q*6hOHt59LLg{Pk~LvCbJ#}>hW*2 z$e!NgU(!qDt!j?dh0HSka|wZQl}5&~wsCQThq0#dgZlSnVevzT4raCbjEIe66%Y{1 zN^7^McJmDyGI}uc$GJy?n74MNa_OaZ|3u^ndNdRsWeij9t&xM{hSAlLBP&#-OK>aE z1-O;zGq_dg1GrV`UAWcgINa)VXyoW#Bgrvx^steXI7;QPP1nWAg(4a+s@(wX=F+ae zc5`Z1ood6tRpsKFcDPC&nTsd6HC|Y|7VUay*U+w~c9o=Y@*=FqK-QG+#PRJaLWGtv zNEq@A)UFR)buNnHzADR_xA2vTg0>XqqSq7tOtv8Nj^j&6Z?>E!5Wdr4E7(f5imhgA*xGC$gnq{G=c=uytP z6vQ)%cZ&1qdu$oQm-6h2`tBb&)JL7&c{8%GDY#?ki|#OvuUYcQWVwgWmAm9_oYIiQ zC(FIypgPweANZFCeYFTm%!`#94k`+%zKeU%z~gy;;(Rb4OrCrwA4gs|dt}n?uG$(jbR^$fGy%n1ru!2djKRKX-CUQ|tX|E__rrDo2CPv7oen7B!kS(1Sei{j=gX zD4UG-oXh88+}#DLa5j&tmGI>>PVJh_=WulflfXA>t@!k8u|@HvaZeu0V|Xtf$EWbA zd>Wt5XYiSP7E<|A2`WjURGF$$Q+ykR^>BRW7EYbBU0QW z6Enj&dV$3#X4sA5Mz9fLlt7GyU*zBL+dN$i5F;~FA{=>xGr}&4XO(WLMAa;0{BC3z zmyBJ;3S*uTWrQK8Jn|0YY@3`a`^he{kn|My#95IlCW|p*kch&m4MlO1gExPGvd-dk ziGKKUs}3*5{n=0K6PC(mvoUNC&ZUZAZCP=8N?+j2t+()97S19wCWxEZihH8tyJR5$+yXm9MA7hE7W6zr#(Gz2GMCGjMldEnB5T z-SGC$jWx@}nrC87HKyeO>!m0|G|(a0d9er~iC8T|?&3GNyW~8$d-&&YcSADrz^3pN z_jSzADn>liG0t3n0-h+Zs&KS;8JuiqL%+o{@)W|7MFkx{8Ez8)8163EmMZs8;O+)M zQt|dfS1-8B!&?p&7NWw0O{c}V4d@mAI4$7>?vtgG?>z#&5-AGl6soON-`M>c zCC5~Hyz^C*_JfB>lNdFuChY^-6yTDC^rK;#x z9M~m0!rjA9!gX`n(H;VaYrVZlbIMHwo*=D&Jag_h7v% zE8puXM1<*(?6R{EA&GK6+$8Y??k>DBP|qHKn^}9DN}*z|sTlD<$2fU-8F-?+qQY@* zR27VjC8?ORmGRaOw2AUMg&F~pxC8DktS+hiHJ9X%ke0;Ex+_h&N0icacejYD{~i&n zTf_={H#Cu3ijLzx8LPo6MW9ZhMt0q+@GebZuhVo?J%M+;it4^_lXw!`U9vaaJvb%=r#j4{)5=$3R8QI?xQdZV zu3wjU)uzc@_2xvpk5`oLfV)e^!QI1m!gbbD$^ISyDB$ST$W3wi_1u&sBx7!-a_a;) ziEn|s3$t96+g7;lTD+%1@TSQvf2xl6O5A3 zChnMi6i;=KpR$mZUFN>f!*m)of~tH3=tfN_nV3Emkm1e(3fsVKi%at7*dJiv6rNwO zl5khtB`)Kk4^%o;mP*@}KS%ss9qKBd{YZEDJl=-4=B;r4VM7eCCVR8U98=UKpo0 z7UfoM!}*QHaC&2L9?Wy#Ogw*{iwE%ByfZJsOY%~@w2>R9I+n#3*X4OdUYRcztwkHr zR_Wm?ox+8DgfGC1#5` zI7x0UPEwnXv(y%fMMe>^80X3@!?|k9#R{xzCNF->|;$2mMKZ!H#-H&*=rd#JP14WyW!`s6I0ar$tp@RdDiC4OWZQVGUVh z)|9nmZCDgviBq+*o#%zG>yPsj{3JicPxCYUUH%^Iw{uzNdu5&N#lPTR@e8o;zT=np zkNhWomH*6dV0M_!@9+$M54PVU{)GR||HPc}InMsVK~};L9ylA&2j_m}#F<}taMD)+ zQAiYqwP?favbYF=!diP&g~NK z;@r@);+!}y-WNZKE8?oSCVm#z#SL*&+!D9lr)P-_@vFEm9*W1}H|Z^XapqNFX_uvN z9^q=aMsAQ>U?<}=Q{AIIp%b6dQ+!c0kKJW=*e@)d-DbDgO?HD_XFva+`ZVVPrx&14 z^To~{t$H)JID0Yru(S7O?~QpfdofO4{fFNBrXE`XeYO&MZB<^4*WlGfOVR58+<*Uv z-Yeeuf9}8Q-_V0~pH^05+4?XqsC%)Y^q}tPO8@yn1ERk} z3+8&Ye`ogYtiJseW0p6@s_g4=fv`l1U~CJ~bI(#3t3oldl*I^D9wSploK{g8V_j8@ zb=9c`&ibf@F|Upu^VG>6Q!t`Ur+KuH7UNtyoK=Ujkq_Y1<3n_q(g2u}i zTl$W^Cw-C}T_&6xM_1_@{Y=;C2Hm7vbeq!Y7o6=@8E3gw$ElRHaV}*e)`Ydd`M<3( zql#oH>@YjdPT_>z6*x6-P1f0dd=uZyxA3ie8{f`%@SS`Y-<|!ezpQiq_?P@^%oM-n z-}4`Es^=AcjbGm~Z-{rsJ1l5Q9G5?MK!T;jV_zV6LC;M?Bg++J@Z=CCw184f> z#z}tpML`iLiU_L+!pt%l=lPYwd46R@c~MbR7F9)cQB%|wbwzyyG5e&Tt9WHpE}bIv&{YKG(T}jpX2udP8M~Y%ZC$2KNnx%j7^-zCobR= zzE@7*!|8kX!~^k2Jds|~2WQ?DlO<(2oOZWfZpIwBxbF8@_l2I`&S?%8qc~;b6~fcWRY4D~^*9Hw-7Y*BjV-#1N{c-3r<*sa+eAs&x~U ztMZ*%NadjJun?_7j4t^qJP-a6Cp#-!6gmpp-WzTWUDjEOfsb`Sb2-wJIUCSLVXywF zaQ&y&$SmZ8Ia&bDz)oe;*$g(5&BEM#4ohGQ*h2BU_ycFxaip-|Vo2))*B_U%^KyZ% z09+i>oJvxi`G@s2BHT2WE+SGBg18>fS(0<)X%fhWoa#HuEn4wwO$ z1wg$)4+*TsqkKZ?2%y}i4JCn>`CBVqdPS?8a~<+|i|m-)=s$gmx)XKY|EfImqBF=` zW8O4>apDNQ;|jfF{$~D~?MbyB`L{pwhC9f-?#8nDYHb+5JfIx&H{~iH*Aw$Tu!n%p z%-QA^9exaV*mtM@e9g1wZroos-*<)l2hV(Hp7;;Ze~U78?UDO^HwOIHE6LRAz5X*F zC@(9WGxW`_`Ph8)=9vFJ6m=Q*_tZ`*UJZA*jJv(uvF>p9{XhBU-PfOdHKpk~?e*2r z|3B{B<(l`v*^Jk7%;MqSM%@(94Ws&}L*7FpryOb*Mk2 z_#r}mMYzM&cOVd^z&JP8Uqhqdg`?Z*R5NxygByu zP}P%FYrxHtyZ}YN^AB|V%b$4*J^gaz{pr_x>ML=N z%?sv1^DFe08|GKe81q2(mNl&^)chg)Q<>=w{yp?xL(qc%%b)q7J9YM!Hq+gq*?sin zF;3diqxGM89&gDr|6U$PO|p$QW(^gk`UP~un9O7<>~8kE{|!fb=rZ8n&C18!`?B(K z^IP@5fBO4>)5(9YhjTo2_v?SRKirb=y6u3R{|DP4tAAu+|5W2QhI6cfC_7SFX3CCK z>x3M0s47^WtAVvaf2^l8!<*F>xC&u4r8QOvJ79&dFjfe=z|M=p6$Il6oV|G*?Uz$`D6=^GGNtJ0EW=d6QJ7!DOX$NLZHEAbi zO|@wkW=>6LH|F=9u=}Zp=tak|+BSgBV3lnsPBot_rsGue*&=~H!dlr<`V=#udpObj z0oL_D$4uxEeIcH}7XA{p_)EGdYhv~J5`L8+jtSXYj=)c@Opp^;fP7oN&G4n2oW%0r z_Zk+ly!fqxLo86H$uwq@N98dVBu~f_%r4K!_gHaxPM%{WSHW+rN$kyp!)W+0eYSj zz<$7Q^5n#N@UK(=>%#Z&CER^>p8~N`{1Ce!l$007%JE~In*AI54a=8G;ti}Zn*@1> z#9OiM+zPmocppf74E7}8eL7q<56cT#--K!VX1*CANgTTdF#q3=y$T2LMkohX1&?9n z`#AaoM}Ihn-3#Z@D?G3Q_!(B*Kj&ZI9sQU5OXTns{|YI;=6IWe6~PO@FY=4Pzv15i z|CWD?oWE0Vx3HS*=ddxPJAdyC(K zo6ghW-a&8VScABW^cg$@_^B}GZ#s&D7keLJ`A+qre$_QdLD1+wTK z?um8IO2Ab=_r!{472vA3dt&Xg8gSL;J+TT}1Gwt>o>&j91zh$2Tr8^`ymJ)EylrBdc?pA{9=4fs7dK|(>fmnNAkEfJ=$))v6 zF0Eg3LBBi!Rlng~wXdG{`{{YVpLi~wqZM9=7g!H?3GE}HeQJ`BweUVu%G!9tBxD`D z=ajOptP8vzc2`PSU)Bd6Cc}W^_)p*sWkcYNWFz2>Wn`WmDkIWHaE+@wK0n zEo2MeEwQ6q%2u)!@Yb?5@HVmy@V40HEAhKD?SQwJ*nuHCsyDVWT)o4^9)~V)BV+{J zDD3y;GFnE%?ScKjBhNN93qDRAByj{7=8_A81Uh8IPej21n`mAWx(VpISToY#_j_q$Ee*3axC^E zFgZ@`U%;>Ej0X-)jr0>Gc7MpX)LsUqwegz-@8Au-Md@zfljUUKQzhP*$?0-B+?jGF z+}UzA+yt2bcdnd^-2n6CJnXxeFXsbaAQu2%C>H`(d)0mQnoVB0U+%~L$^#Oo>&t`k zAUJkd;@vmKgQK9~m^=o0PGMhxMV`f1PF$W>Z@T3d@(VommHZ0s*Yazm{7!yH{_=bI zJ-$G~sDN*}f0RFh+RO4X6_h{8pHSizymu}ruga^yui@QvE{qx1u`}xi_DST2X3cRjfWdi9pU4ygiLLya8% zdgSo<+sIK=j~ss4Mh<~DKus||HNzEvF{B07-<0LzsYek{J&IWLD3VuOF}d}~;iE^6 zVtVB8ag7|xqRFc*8k-&=g7nznt49T2t?LVE{q6;e<|#D(GuSmnTv}e)HC|fFduzKU zhqh(>wSMPXzvsZJ?{?_o9eBI#)bbu$%lm09FQDa*<98lTK-U{u*L!MR@6_@>TFY~- z<%QPrTx)ruwLI5aUT7_!Lu>f}t>trQEgzt@d=9PU1GJXUp|yMftg36EM`?KjE6dk` zD_w73jrk^UrST1{Hs1!W^uB?0=U;#;?Qg&qdyHB<;ZHDD{RX>?X}gSRyNqeOjA^?J zKgt2U@1gCo0@^OisqM0y+Ahnf?XsM(%dmG#j}4w!x6T1vjS!w#!S)BPewoHoj}R6; zHdyqiV9|D5Zf(cq)^=QOt?T`@uJ_lv-e2o_53S`rw0`%{n%zU|bPuh~J+kR>Kdr}o zv>x~Suk<+H>p+LL7OgS1DQ)hp^|+VT-QGgkfL^cxCu7(56j*}!vuav{wb1&SYke)WzUEqA3$3rY*4IMoYp(UR(E6HdeJ!-U=2~A1*#SEooLbwEov`yk zYTa$f&e#hfwFWn2SJ@S~(&L82kIMm9+T4)cWH;bSryH_6_L@tr*$w>mTujV25YuQ@EdTI^JwT2b)kURu>V0R-{X;_Q0yP+}9;Ct6V{DRuM*oXSQd>^qN z$Pb`HKa?L*0cC^3g$=I0@xbvTlT8=e}`3?4x>*YzvCBUkGzu&QMh+=cU7CTjZfGg}j{E9!nDS_31g`)z1_jFBxdLblT*WG9S@5f~G@VJz&4(GTx% z)VPOHPrZeDgq<2wN7<2<; z&n>kx7GupF{v_M`Oy_Qefb73c=GwL3e4DA>VAjighxw+r?O8ixobS_zX6|uu?rvEM zeXQS2LjUTwZjg)@(6F_kP3uE*HiDLH294MX+OHinT}NoRaA>wJ&}b3RWKqyy(a>By zps`|LiS~g7+7FiJ09c%ZU}+A4g*gnCq~O*X)OOIizOr&?E0*-u?kJ z#>dbUUqCB-4V~~Uw7_N9U{_#!U4z9X*nRUi_Q1R+)?!tO0mGg&xQE$qSOHb{4{`M9 zujWmp!+s|7F24W$Mf5dqily+^nh(V~;Onsps8Zc?<@OM%9wF5|q3}Z21Xi@WnOA5Hxck8T6gH&=>yJKwD6FS; zHy^X<<|8%(FbgmnFvonvKQ|xqFU-fH9^f~??`VfV08h49HUkf1I_|aXY3>ak08(f;6@&5fcZr;te7_kv;edMbOywNQ_JA5Hq-I8+aDbB z$J=gyyzTbK+iri9(ovgq)CTr8;0_=I za1ZbR@W@OTzhhnF55QB{1s%k>h27c+nQn z4$vOZ0nic93D6JFA20v_85NLG0T~4qmqEp4P;nVlTm}^vLB$PFaYJ51+3Gu%9H`w! z@TZ%(4O%4}9D4}vKLmds>$W(9yIZ(Rr=956`OvTPQ80F&lzaIn=F`~qYyJf3y$k8R z3+es;*n97QD6ahvbk5A|E_JC3f&v1{Djk+ymkt6-u?q+&U;)9kw}`z)jlH+Dt0@{g zdSgk9i5fLAxkil|6HB}j6H_#ava|1V&h8=_bFcUJ{(KKTJF~Mhr+m-1f4}EUGqATA z^xX^$ZU!80bNw(+z#y&^WjU^`L0N}uy9~X-A6&p6T)-b(z#m+Anc*m(kFwU#n_q{r z9%Tc{MwCq`n^E=}u3^>fHGV(J0hA_`gD8hk{t2vkALTI05tO4SCr~~{`2^)8$|;o7 z*a_rQlrt!2QOi|O^h}47UOV?$1wrNL>!ZFOvX`*V+xL` zIHuv4j$;OnnK)+Qn2lo&j@@v~#W4@Zd>p&u*aOD`9E%Li;0n#)3eDgO&EN{n;0n#) z3eDgO&EVC|;ML9G)y?45&EVC|;ML9G)y?1-&EOc#;26!|+s)t_&EiXjyJ92Cbd;GW zvr*=v%tu)WZn6kv3CbR{k2wdIX$HS<7LVZf<2YhoVZ}H@Zry?0x8y*`-hyNC%HxJ4wkWiGh;TQd2ZehdhsMSk31q8k8Rsid|Ul&eSh=aj^?eHqseXWX`2bq_PY5T z9O$V(6V%5)b4HRdp3VF9;Jy=r6JvrYe+)QmV#b0 zXbd`hrkn3GBpJ^PM^PX0V9XI~%<4tdhYW+Ze=L@cD7!IkjyOC0L#!P!c;qF}@1|e; zke{*v87%JstLzOsaDAEK0CHN8(Sq|Gn5*~b8T~`N{2rqyj?O*4-vTBW$3efdYxH{C zzyE{>ZSOOlKMR$=-tjlB+<4BNt(kSt`|ZW9{TKS6kx6PDuWZfxeIHr=A3w2kVcjAN z{HeUx|CaT72)Xaakn_%LMe!C^JKRNv^snL{;3J48;opDG)^tMt@or$y9{iJI{lOt{ zocHn120c55zS4JKi`;4alf6)0Cyh2bU=(uB7WwQ7c%zM(o?C=1h*iCg-NY2g=6wSm z#BBoBD`7qP+t4F-3A=E8udo-__X+zDFFPO{z1%r!%`xyUJ%w>6gM8=xxQD{X2pt83ixq>51%rqcaN!oBEOh)bHhxPsav5;rSNQb)0EW<&6tTkjbPsc5{204E@2UN)QLgeU4cc^lk+6Y-I(Kk2#`F?(G@Nqvh^(=1IJErXUQx; zkLG%B16J&4lihs)7{IWcj)*%2nLP_SwFP$o*?5N`y*~h-ISy;?l;Jw}Dfs3YaJRFN z?zT)jH*4hwp!pw0{?QS`OWcQs8t#N)4)?L43QujsQ^WAoC_GgLE#NTd_&D^`k5Lbg zRzAW#bj{lVA0 zIqdhqAxE1-OWy<2=SjGTOh7TCbqiA6P$5pm(3(+DVjC&{IxBdjM9T zh0AE+GFrHd7A~WO%jnyEwDJ>Lxq?=HLMuO^mCI=5GFrI|uM@?zc4*@Y+W6Kqr?=p6^!X6;_z~JUfiZr9drqR9g64DDa20Ky#r%GW`TZL0ToDezoAN#^vm=HJXzyFJ zcNLJofHslwfT!+(&r-~zGx;&bfLX-#xeM@~cS;J^)H+GJK9-D3yHz8rh5A_G9G7(Nk#3z=LP+vEl0U zN4Uw-6#P-h`laIIBB$4#ee6qu$vOqz%v6jCL=FQvCojn`m@J8TSr^cRy}Os}fx@AQvm&l>I< zvrr{iGx)|V92^06^Pk}p!#n14dPHXB`&5TE{z-K>IvVETIx@lW`8vuWdWYc^b_c^K zc9qT}FpFLN+Yf3X{q2wR`5R2H1pfT>?@31KUw@-l3=_az{)1*~xb!#A-D6MRZvC~@ z`ZQkwzrr6lz;pfpQ&Z+YZJVw}fp^S=&w#xn)~!G?(6uSgvjz?08Ld2H@fe$VetS=M z0UQZ4hQe$dhU2C=Hs1%^7Pc<_J=F$g@VPKHKlP%==VhNi|5?~h8z>i|s{jnU4St3u zaQb%0`ag~D%#t#^ggYivXhB}W-eM~OuwKAiAH|IS%OCQ@skLXM056IKPjbTH&BPz& zLFSxhXT18jcA3Cz|#wc-qvdt(h3Y<{{DW3$Poe5$iX z?0sHFyU`AO>gH#@{J(kDSQWGo{5?&36nFm5f42YUC;#R_M)xLp^S{&4-&ESVGVRIl zG_(EhN8Tzg|HADJcb??)8*4L31UpJ~)Tdy&$~+#_g8F@lKU6;6?d7t!dA>ayN8E@z3C1eg zP^_bkXkAI0hL!O>NpGy8Eg_|(>?s@F&A2myKv$fe7CsfuJhR@^xZ3ox@U?ISYfb4& z^rzRM-!nya4I&X`q8w{bZLkVeDcXtlqJ!utI*HDrN^}w3u%A)~(L?kUy+l7zEe41| zSf?5yhKgZgxTq1AiYvucSh2nyD_1vR?W!P?VRbWIlero2kV7}3S#Tod9I%#X{_G4*bbh)E0Rgln=+QXACzk#r%7S5Yj)1=mS1gDH zV#&4yS>D8zxZ=DWX~#KXR@|^>v^#N!-=RHekLw=91D~G66E%1dFPwW5Z+!X?A6y9_ z$O6X~Vlyys#=d78%kB$SNl!i6r4Og&M`@DMJnAqylwT zlWIIQj0{67!^v=5sVDWg(m)ze4_zB;%`*B#mhEl9^7=%U?QOxby)Bqm!411{C}FeN z@yJoejvUzi3j27taCX?2Lyb>=y#K@oJ97l!*FZjy?t_b6Ti51bGL)*V7VCOJk=hyhWB3wbX*j3>wd=b}#Yn%$$ik*G1cfxge7`_$0 zMb`3n!gn~oA>6?An*wt4u%E&$_-k$p$i~LL3g6?`JHj1gmmz-z=l6trCSQ!mGRH(r zICe-8@ef%>GEv640_)}QODIGIu3O+e1_G$S8lN^IRy2beY>}s=6qUHgUc{!$(tjGt2sBrEgy5QVhbjMSm6?}T)Z547*j2G_r#V)0IE2xOw96&*Ss9!Cr z;r-|$cENd95$jGwe-S&kfwls0Js3OQD?wo)Xg5?0#d(+*hVyVS9OoKQgYyV60$Hb# zVkCU|(PA`ej)Av>2Q@B*M`^jZ9KWs*SK!xG;wt>QMcjh1(ACY>pidd+4jQ$=9^!T~ z%q(^xu;*;B6M+MEj&_zgbfQjyW54LBaP-YFg0at8df!E_+P3I1n=PfB}sjOy$e)wwXLdF3I@Rd z44`-{XBh0lFqmgp>%_2D#jw_uVJ*+FR$y2wGOV>@SnJ5J){bGVBlx=;>ZG_UXSge8 zxGON+6&b!dFnqOV*l7>$9|Z3V#ZfDUqddb=D~6*y!%-`SqefhGhICkod_IbW){qiw zvDf%|aXoyW8^jH`z6ozzkTL9Zh2#)81;b7^hMn#VFWZB^Ia3Rpo26Q=ny#9x8mk(j zN>$l7ZFHRLkZM2LzQ`^{*-hEbcBOrheUWV*{j@K#skFXnUu1pII>G9M)oYfIEZ18u zwfN2AM~mYY-4rnjANfsre*p2C!bdh&RwlC%FUYQ;XA_a1RB3Ts;UiqMT&iqm@gw!3 z3R~@q=sB%dSZ=x=E?i{a@vCi~xE?DkjNg|d7t4a5sBFjg<-3a$6+Wo%N4~q|Qn3=> zQ9FJO6f4a&itG8lwD8^OKi1-Mnx(1mL9LbM!cV0A;eD(R0@JpF(-LkLU}D21oAcBl zMXA*R! zzUd3_O<#a-`U3pW7vP7!06+8vL>y=g{729X^|{eri=Y*E!*3)4Jxxa`#P>2B8{oIS ziDwxk#c;mKpBowhieU3b@mM+7&lOELr!9MU}%?ApR|F5wGlg@c%UFE zg}J`gtj&dWe&<*lzE7;(wL4CxnOpP>p0@*j}n0MK>QYr z^9aK|;Tmw^8)Tb(3v9Z9<4weTZsT|l$A|Fs|BmtqF&=`fGuYAKLOa2Qc0&8M7M(Fp z7Zi7V?||ZgqBdLrN7@OFbOD;OH8f;vXvWsyPCI4jkIcq!PloiZb=eT?`%MtmP5y^oPJV+76Uc{6%_AH8lyukWMB_tC@q=-qwv zj`rw2dUPK>x{n?;qeu7Aqh|EtK6=oM9yFtMx;vj7bZZTIoQX0EWe&<*lzGT6hC~9D zJph%_EN04w)X<f>g|k4!Cv?dK{8qfl(*X&mTEgjLVqM`w+Bjq~ZtQ36vL6E=kAxm;7GP<^#|s9ru&G zUcd)*`T%tL0Cf5Qbou~!`#*r=P~4_m=RVGVM)?(m?m6@T##4heA2n_c)>-B9CI` zV7@r-j1rBq3hi2O=P}C{fKjn18Ne3g-HEoyPhN`S7Vt|C-0>avC3J@iI9`Hp>N3ue z*~ndkSN|T4zu-v`MFUwG3#v@RF$2c}91C&16vt|mdK6@-37;W{{R*OMG&|BB#Si+HTrb73 z8l{%CdJC=IHMM#Jt=_`;Xv??I@~vlDzJW2{1lHe1wCW+UU@2zA8O}m7eh;bm4W!}c zkcK~?=FNcj=QO4a53Dr`auqq`8a?%-8`C7tk}N#^H#Gpys0MfxbafPTbrf`U6n$+5 zjvWPU9R+P26=jA`(9dQ-s2LDy79;T1&*f+<4mPbFAaxr$v=WfIjUDftVB0F;eNw`@ zwMLI_p-0&54p@E<-lku0|3f_aCnDW+Y$EhDYQegJLu)uCpm`hP{T`kjB_MhmJ--F& zyMx}}0tMay3~s`&qXaj%gYQNOc-#g&Zo_M%1WaxNCf~zfqXd_?gWYKjkBJ@T`Zhcy zN{r$*Ab%Sk2_-xccJM&h!P}sOMP@C+LWY;X8Y8;}s=WgoxQ!9s0_EPpjNC@gFChbg z9-E=J-9v=wCrEZZW`savQ$U~VfLRKLYz+nG#o)UZr5m)md}y!(4evvD`Ubj_1J{vj z56V9eUiBp?^#YEU0h_BhM^-*y^)q1c8!+oPz~X0M)^C8r&%mq)z^dOc-d`}@Uw~Z? zFy3E)(+@CPzhaC(1G9d^7=ObU?*qGj19ts}S^E{U_A6$MQq<2F%Y8`eOBe?-1Thm| z0oq@opI-p77tmL#aehxKA)f{_$$Wun(D9gOd-VA__XXzdOPpW8In}DJ;{03CBs5yg zuM?BRe`4fR`dVPVm}d}2H(YCvqX&u?iZ@CuuBG6Zfn%28Tg>xy%=5SC&2{wTTgu)jF*8!hzxJ-u86q_$&rmlfgev464ET*#MN6gss zWy@zwwwUD##cs1qaRW@LT+yJ%5tvOXUyPW3wpGTY;kR`BX2g1m@pt|rZ%T1b8Sbe> zeS;y7j2I6O3v%ljmP0O><^KZ~on-KOKCHg^ zTUc3QT<(x49l^QHvN+ao7w?*2`OZPg8)68$!9r^ zN)+?hLvS93qCqi^`!JK&g{|E6JmSq4P%eXh+HzVWMx6W`j5znVqokbKh!OXJ5hslp zAyMhy79*&2aFS%;dRq?u?5Im2d&_X&GqT}tIr|mq0eHpzRtViPoNR?qTdq$v8Or%> z4etPJ?gML10&A!xa3b8_yu)R16nc!?nILH7c2DFLh2rz^8Gy&&HC{)IzD8bOEL-2bj zj$t^45cY;bCKX!bWzkTU@bi-Tpw!E)kY zIdQO@@B`}Rpc`o&+SB^_jc}Hp- zd>y<|oN!KvFL6LvN3hh7Z6C!Sk8;(I<>%{n#PNmfL$)(2>QRAgCo8j~qGTnH7Rp8& z3oOwspyNL%ouH(opn#+#)HhFb;yZynWazQYZtM<^*G6d0grg#r;Oh|S%|3~X zXFXZxSuf}2O6y3;EA(^Fe0XTbftJ2#Gh$z@12#dnRVq0vOH1qmrQ;lF&m3YyG_-^} zXhOp(FnDhi;vI<%og%#vf^NS=x{0WChs8Lod<-=>_c3fw6ATK3Sqt>@=L4!E456Z< zd_9A2A{V9YAS&YGECTF(Mdy&nNO_2@j__Vy&hGAlvkc9i(S$f?9AjhIiKA;QJ;%7{ zJfM&WKRuJT{&|FDUF&u z^ z;YXPv`v`W2FV-()ak(5In-iWZi%;(w?yBr4lj*{3DP+Tshua?y*Erx`XjrjvFfJ}C zWAFX^qUmU8?;|5ITsl1R0{1u(H5r;cyQFMZcGj%Y(mB}+e6ypXGJSlrq9U_=`M4)P z&CX#zW#Ol2{B%YiJB0sO%*`*JTU0c+IKPk{Hs%KxX*5N_`60y`O>s*>_ab_=$avV? zJs4MuLb`|0dxZSQi&8}$xG_i975^$b&ZTmlw9dYcoShGmyN8AbI5@;R=@jk)1|J>} z9ugiN;^0bWH5y}#U?XG`2qH7jEx>`fRLGQ=QwoeEI;Xh6{)0mNC`8EG%gGrfJ>v?x z1a=SS-@B$iojW#dz-uFhuj?7!FJAg4JJl&^YI)C1FXg`B*CWx=$};!s5wCoq>#;!S zvM!)cUVKGVzsR8SA#p7y_}BU_o8L{hp{Un_;>`Mzz^@|9ySZeI&B|Z=@q|G;S0!1t zvn(tec5r;j!ijX8Lqs1=V)SS6o&efAfoTNIIYmmUX++MAkd}~vQ*qyH$)8^-9}bRU z@t)j?3jwKPx*Z*(qFt3dj|q1K+A93~cz$-}>VIUZ<0n)lB~?v`S7-fWbtRu^b(vHU zs~zfzK^t#NpB+{nmd@RIHMBv!gIL0BMEz>iA8o4NNzUp|Q91LxT%k_l9f3YP$R*mv z#nF+EHa0N6Iw^JNxJY9I1y)~68>QcOs2hT|z@>u*i01B=z>(@5(nDzz>hHi;3cY3T z!N1_FwX!7&QB>NWxD zA1BWJSJsoh($@Ml1EilzNk<7v9gnwuEJc36KE@U7_bTwT9Iu!=p|L+f*&*e)pms5$ z#hou`5^Udnmu!1{MeIb!>>*u6L>;*pfT_rFA!kCvs(>qW#F2=#mlO}}80dOs#emc4 zIe`NzqE^#q{P6x3CBGl7VZP7~$d0zbE2Vb){?)5-#}aVpv4~Gvb5^?rOEBjEaMN*Z zSn`tin3#B4Dnn9ILV~qgTCbB~h5(L-dM$S$w8e!aqhesO;Go~Ki7%J!{PPQW5Jo!+ zbYTs;aK#=U;Qs+~FGrb9ZsY}&2Vl~a;A6o8rYs4J%To{>B7y~9AE3X3v!_7uU$oYa z-!`o0qLBsuDdV>d?X|d}hyOv>z_dP5snr>sT!T~lM5b3~_y~E|c0XL1=3lzcMzudrcnPm*p`uB^-Sj;P1(h1^@1j7zcu(3NcVV*edtL-`Xr z1nA2mJM)*Cqy@Z#?7*XJ@$B$9xo-aPp#iyrVx)|D(BV3 zW{=6to!w{BrxPl6jM2`R{!*gUkK)ZhtiFDP);nNjslV2xeFsl3Ac2R6qb4MztF6w~ z))J6KPr^eepP}LlG6dsc?DTov@%2?jGErij0m^1f%$MFx=FF^^njF*6yZgAbriRnA zXPy|L8NPko#*GX14GqYc@{d6S-)zioN}JNF*QB((1!aOJWn@-QU0h;AUj4q>(*1Lz zr_^S2sZSj-Bc*!dh?uCFRTX)<va_Tb+zI)@gzZ>Qp;)zFEI3u*;-^s?8%4 zVs-C~>APW4zST~f>@nR_t1~U$Q7d6BN z_nw%SF}815IK`b==$VIX7xrmrueDVMw)61`6gW{AXrctFa8PQ{s2Jv}m=JI63MFw+ z0+sTNSU~O(j!~V2WPAH%Cq`?63#y{EgEKmHOdXV-KdYC#Qkg$$aY5b2>ae&`|EM3k zb97wN8e%WowPE0<6V(?gR#ZoX^_!TJGGSnJ?u0DTu&FAfXx>}>Yxc~|tJr#?y3bnD z<^Cet=kAyzKR{DXDVN|4DWXnbRKoP46cxzbJ5u!1zy2ZLzvTzn&LNKu$l8JHh}=kw z)(*I84?komr{%o0_O^+Mor6>=F)~P|^APEIs1$sCNtn~-Pinga^%xwZtzuJ|mQ>eEBlb-hy}qP&V^vt3Zd?77o%InOg=>G` z>$I-_>LXR(3|c!RN>eg9CuL$~Y*??__~I=yd-PoRPQM}h7IYu{kMs3uBme#7n-zHf z$Sm;qTI>qs$2lTErQjS54~0><-W3w1C$6h;<(e=GGi`4}sWTh<0Z$aM_a)-LE?OHR zD3B>?A;SyAAVNYIUnwRk64{w3BFV@6?v}GcxW0R%5YBIw?i?qRMtv#WRE{Rl7_g@; z-VJgYIa<`pQ0|p090lHIlt2`1I*>vli3;guDk5~(#|ph$w(}=n#>aS~IwH*;bBVN9jh1H79^}G1Fb?z8 z5qmmf#t7-u$=_P%;9%>*)H2F29W+$<`X=$wPk6TiUyZDrsa|cZ6yEC~@y<&Q&JPV6 zm>D-jOPct)gQKSIF3Ztrqy0XJiHwSgiHeLNYs)89r-T$&q-P9{^6!&5a%=CBx5o5e zH8VleC`~XMHRxfT6fZv~TZPPqA)H$4=qQtA6*=iD1`oC_E%oq7=o$*aO*uq}1|MMY zj8_0{pzudKX#}|mx1yNf#AH#q2~Epr67bPcj!{vaDF1MjnQwJ9J)IFq5oV~U54O{$$7)61hw z8(p3sL4Gf3T3Z@cGQEKJ*I&pf33E)YU)FQQqYq|h<}W#=U%K+~NAt4$JL!S~i#OdM zK5xH9e13SVr02$)(se`Th&;7N(%{VOqRBl2l1FbDG<4U(N=!JYXPt zf^$*qvE{mIokfMh%GMTvYa1KhLf|10EQ}n8%E{PRK-CCSuryeDYM8rJNjffhe#8e% zC9g;x!c;!!o0hY(kVl_0J1=C~qXNGD#*Gxewt?l%MQd*0b!f}2s~@jc6F)ztjUBJ+ z(7wHrwM8e6wuZKhhMl+Cn_4=Q(RoAZ@MioSs3v$vKlvfr+hpAFJEg@u=}|m6BXLT( zbn_Uw+OTtyw&c~i?owVI$tsza9yhsCy2q38U575sA9s=8wk~F9PC-@3qaS5Eg9a|G z?*B@Ot-i|!?U;hXvD$SpmR0M^<{qk`e4g$nbP@ES2BlfKsq6(^Cr)Mw_UL$>mywvrd4NVyRX03F9WG@EVl)Uq+wCUJ} z8TU5zoATkD%#8zg>o@kLw^+W{X~ZOo-MG;{VhuHf-1+bD|oFe$j>vybeeru=+z<>&NI|&+%5)*1$!E zifnYi4nP~Dpmnk`?3m!IAI<-yH+dKIBR6j37o$ePO~kBS#jFKTSOxg|%ZxL}CN3QF z2HDDLqjLv4i>VAu75&TXMLS>wSKE(0_v)-~UhS8^^76}Xemm9im~H-|hN|V|A@L*D zl-4w6J4rkEf9adM49Y3pO~|VwUnSh`(ov_T^_bqH+x+8`M!j@mLAGz03&~theU*SG z-lk@TCwhoo90h8g@j3=f=3_C^9L7pvNohbVZ~4LVm^kpLkVGM8_A6nu`+=zAS$#Hp z;XWb^BTT>=f6O$ExR352_9^ajqB@Jcjg7)mN8LKWo)GFJ0s@&83A45<*c=^uZuacY z#vV(b&^>QLCfOz`9{;)IL`}&*7nh8UNttFEjf}NU`AG+@yEy}f;iTqRfjso%L&Kj!uJM`hycN8xuX6&T)nx@Rrfzi18tx zUTdkAcW@ANa>{Th6`&3n@>Fy^g|&`Ct14yIrDRq`YrmQ`?W+yFd#(R!+N`hE6(5PL zURK)wm718Cp|A8WTUr$%$V*<6TK1Kf?<3-CC9e@-e|h6Y|6wfw#YxobONo3Z@g()cuM@s)V#=E_K zbL`lgeEf#&#-iMrg_H&BPEK2Rq6RZH!eAwnWAp;#MF_PdJF2J}5+GOsRXOM)fB`kZ ztMDF9@`8{MmJ{7{X*v1#QvkWRmI7pHS-)3?03b{IQGmQDeLbFd^IyL(SWI|%3UFx$ zx$3KRZ0~L<*w|QGa~<5;S?I6~fua|>O&N|+HS}f%FGQK*X&L7YicoDM-@SHYT;Zyr zQBpildJmbOnfh|Q^vyA$SlW1!)W~)Y{&3OY*GF|wZOECN+w-N2M?dn*iGCdPQocXDdxjC~ES-5P&1b5UK*>=bqJwEmO#jET*jeP~qGhnof-jjNiL zS+y{SG-!Hg<2*a|sGixY*OK80Q%>rNrsgCKOApS~M!EU+9zLg6za`btP)F)=hi7`n z3;`Tr2#Tu!M=E1L-&k2g*`bk@nRGhJJirh64-fN8AFnfV3dZdhV&vQLtcuxU4svVo zQARP)Trk=vY>jd_lNm4EJ-YPgmzV#v;7HF^gR55c1U0K)yIfay`8DBEi(0olJ9{~N zmps*$L_O-J+7d9IlUoo=NIi?TbX~=G266Qz{8aMJ=lWYKq%CAyyoDNb1K0SmRj8$1k*FybkU_NJ-XBs_ZasVDc&vU-&_M zskSk(#ZNfcGJ2e_V0=+a3B-Un=h2lVvW^T>mPw!R*78PbZS8?;5tdts$+@5cUsicL z@YY9;NOR?ltN$FoT5$kl>Iz?8tg$b)N?l>9FKV!K9_hJE3u4Qmx9t%szb03e2{ivL}>S*I9+LU!IlYtz?+;C0Lu3PaNTWYVVV0>1mC=M; zc+h^kup*{*eO1l6VaYZ&$-~xGS8p61bI>!jwnt`7c96Aw&ZGgk!_zv-xku;E^M0za zCzlsx%|1M?Wc=YdSv{7XennNdxGp)guqOKF%xOi5wak-L3aH-$)YVkp!6)ae(22ka z=4>|lD}mz>tkM6`(%_R)8?t3PW#f*Hnz(mdeEhh*6Q>@o!-bUkZoNjOd2~n{H8W~p zV)^S;y;pu%=U?~X%HB2aHKf(1q>Y3rnKi#5jp7IOqyF3mVz%C*=wc0+DRhJZj0q9+ z2lVHQ@Dnw8ATv}ZgV}8IL`O1Xn-`)FZr8U<9J!&Qdd=`88|&oZYikB>7@2s`JF_;o zWL&nhO;A=%W**$m=Vif&X`|NJ@CaRq7pBFpjKCCcCV({dF@-?RkJjI&Cvvy~Ga0lt}Vt-{yA==C=G z6(Dq7(Jiv2sn_Na9aFrlRFUrSy#jCR_la+h*-~s_u}UU}^iS0-T7=oDka`KfVBAjd z;U+M>f%#FeTy?k6lqhZl?h4GM=vmu zJohqC?mFX3?o?tp@Ge#goxtgM1}>An3u)nG_VD7I@fw)3nN2U}6Yc0Nl?9ChLJx+Q zXJ(8n3fc|OA5gYpxIUi$xK~X`T=fhp%PF}HW!j}3XTM)zE67bvouwc{ z;6Z zS(b9Z%!&amJRrH%(6Z#!(MCHf>!8p>>LUGN_dY3zm0l_*Ek-~|agsv%@uTm^;KwI; z@pU~`Wpgl4NpIGQ&ED3jFhU0qF+NB8umGCO1mL0wX%P+|wnJA(KG?^{)fzwrC7Pzt zfqHcCVXQzS{BM7 z4LulJla*Me^%e%TY!Krl8{>qREUDIq@SpUmrW5Yr*YCB)+~9%BtM#$`$pKYe{d4e! zAtTP2`t7E*b>#ojV`gQcH_z)W&~As%U-3>TZh7ZPH~xZmbf4--v`K9``~4jptaWNR zlcY@eJYi2J0fa!mQQ&}c8M#$SdgH#4y8YAA)2Hp#>Gn-aZ}Q6@ou4-o~{SQnircd9eYxs*$l=PXCa?xSh&w*08aR2Fk8s(6v)S;`bvOC2gTJs{TEy{j- zOMP6!rt0c-by^#1ZQX{N!JF#i(a*Zvl1bg1twXvE&CDB-C%pGO76yP8 z%z!K!QXHnOhpx)-iC@k7=>qv}E4Q?iL4db%7L$(3pxN2vNmeL~dJ>Rn5B5TE?dqO|7)MKCmBKb^DiZvV=>%w8rSCTb_kp!Y9OSxof&k49);2YC zO&W?*w27o5spUs87UT9k_?~-y(BQ43d(0@)GYuuK54pXEPqVl@~(uv7m5PPq&($#iHg^BOAj6=hd_u*rPFopGE#W`WY z4yr@>V@#*fkEg6aIjlhQpjdp|39X?ym?4B%-MfED+DPgyJbLsMsg*W?;f*Ep^>_7G z$VzD#-wB&*09GziuCNpJI>93XdT@17!3Jz6*V$P>MPbmQ6;q3u83SsyQ9X&qkl@mJ zp9Gzdy4!{24e#cXt|S(|isZhDE=!18=qyRsAe?&a)ups&q>Z?e2;TW=;`){YAEx6) zbHFpC0SLR%u2DL6(AqMaQBG|}ITrRMQ$h4xgHhPsa*uzgj~K~+Jhn*hv3m7t!K)=_ zuCQwjOe$Du(o%ktJP~rfGsa`(VQFR6p@X9nfh8D@=m@+z%%g&E65Q-?%teON{H&-b zCk4|y;aG{J4j-DX#E(~x>tDEI(a1q5>vpK;u1g6l&0VykP(47NsOx-W(z(H}mQQS~ zJ2!Oyfx^#zQ9Z6B5&*X1I;vii*GuIU}F$yRR(={+v1@4TGo;;@MP0Kt;v&#j5iOb>|&>z~YbpFKFb zTS|CXR5@U=Kw3qr={pJGnXuVS6xd%XB;@K@nxUj|LeLz>D29s|-v(uyyh>@6sCwKi z%MVOS3Jip@Cm@5*8rdb-{RDo45U#V#G-z~R|2M->sFngBX z9XSSanT&Y3$aFTgwmi=gdRWZJ?7gj^*_*UDxzLOXJ`(DxF*(QV9TbN={#~?`mg&n8 z$UfjgVq)I)?dsq%`sCCZ2P%)I)h4A5Pu@VzZykLa$LOBb z!6{Rqnh!PHk_`}l26n2U3x!~<&Cm|uhGng*9OkIxqaZk?Kfx5y7^Xl`CB*nm(R{S`}o7NbI(ZI@gW4BoqHBs z+YWH;#Apy}qnVu-q;;_dN-G>yDhnm`P&qi;=qw#tGj%9h0Mut`W~Wi|(dboYDlZ6u z-+}tWghMUw3u!IylOd%3Us8`r(tR@0W1^JL*Bs@)oiatbI(hOH!KLMGp=ZmDXrZUR zcgrKZ6`ALjgCpdddSknX&=3-reDxZ2??8QXpu8c!si{f&1@GE>LvO`D#4`gV2XO-O zQA4m#fTz}}I2ns>14<*qLhZb5dZc?eJ1`-tVQd=Q3_;lc>MbT<7=Q5|N1Ft0o9FpM z#iNsai{@9?y)`Zg89@zeu8eKUnmcId>=duOc|#lC9iN;$=5^^_aczWG_XWf2-yVy* zcGs65T-C2BVbHkv@;O;P1#_$F-W{(^XxLagHlidhBr87J%QIu(tkU8+6KYJv$W6LvarCxZ%p8O)M-6p$`e8| zVxv4gv&!d`b{p3-7%-|5f98LZoq%+7rJh1dOFI=<7WgN4N1N=w&TY=C%r+d^VKy6O z15D;ySF;%>aCnD$ZlmWGsc#Y z2M%Ino_bR*aOb}e3sRpn;i8Kp4UUMuKArq{;q21gYlf}s)ob0bHG7s0EJ^Jj9Na&( zq)bm3eSGz5Ny)2UF?ty_;y5A8mJ#ydh!G!ROOR!f;rIx?_l6CX?~WQZ>fOrq8wT}G z9g{mcZ%k_M?`Pe9yS)7E+p}ihd~4vqw{FhfMC?zG9C=#0ziE?n|BOy|hS*d2xs2Z< z*aO>K@orG}yT^F(ii_>KM0%j_E;@YP!`#A>*ftTPaityF@>-^iMtZBU_3! zIeLs?Dj6>v7Q7k%cie|01f=6pH!Dq6Fy*DnC=nlSIVL1G3Eo?`=1NHWd zW41j(ZE5gpM{3)9wQtu^1P3N|U2Sb6Ba3b9>~e~objdkv@@Z-xn|ms%r;Hb`NuJ-QbE)h8y z-ChJ?2)9_~Dg?`Dp2|}>xk9kMLiRemU_3WNILc1}M%h94x7+JvbJR^_sPrkceh{Zo zXqf`p(F}0_6cEjf%+VPcy7Y8iM#kvO$@x)HIXO{L`QkC;bJPE0GBU9>=PK@qOn z_}r|G*|W>~H>QX5j^81)Z>%MD{;82Jp-FkM*<-WfhUP?;lteBCbdvcc{5rJe2L2ML zwdv4~Z~xaxcjAaR&L`V<6Nwrbb_O<1J%oEsGJcdoYd-QlXB^&7L4)C zB%Vh0g~+Bi9lbNU_MTmqH?CKQ&ZB)23xfNN(z@$24jiEVzDIgqcXUyAb+2^dT{At? zJ$mq5e)%Im+Rt=!A_Y>{hEwjNp)=#c81xm+T?QhGh2BES!9JU=j2wAo6LH`zCVV+( z_Ls={!`tlnS~5Y%fouVWTY`-|EmM}q88gb`_)9FMJQ?zt8!hFN?TGL=aSr>ets0$p z4kk@_IK!Y(8ig^1+E>k_HM{_;XW7IJROgM%RRre-`DDdJTIKZ#$&dCN?i}dr?dOE> z6gP=qM}EQ>x65FOo_G51aXZvD5IzY}~zDP=n^^8W#I~bkT~S zQ_^@m6;dyW85HJb(u*i?f<|Nff} z6egC(#FQr%CeQ=6PU32~HNpg8FSznDDDVoh3_C;8>(~WEwp8|xs3zA9m-*G4nk>i8 zmljCrh~qD?I|^{eNp{C_tb?||9oG&2!kr58jo``dXuusm$_}B9<>LmY1@#=9kuz8mI3Q!> z>wWugA3tE-tT^BNzGQ^iG{O2+?60Eei+L2$dmGLk`vJ7$!nEx;S62&#vy%e8)-EBgakGyUA|qeccleCJH|K z`TWQFPO|ooZUINickGbnu3jx`N5jnerK?x-BM@{1jYs;DDAspXS%X;a^FT9KkRNBKR0?h)1QX2_pk1cfjkJJVzrH#@tl3Y70F>zL{bcZDgEf{fh(!`@9R`r;ip7~M%D40e!hshn0?*TuH zZ~G_<_}ndsu03^vp*^Gi2mxgd%EA>!!C_ub)*6=ptf&i`F?6W$B>h0_kR^TVwpFUb z)tN(vW)6C{A!_^}cYohmncXV_=@tJd|M1??8I=)Y-^c$D5uvS*$zCzKV0dA7O?01v z{%%p^rur z?wXn5+?f-)x@Nd$*m=RbnU|Dg4meZS4Xh}ZUEPYaPvXvM^AH`7naV5?N{7f-HtLJU zym?{{1-i17NE!+>#gd>sG1nlA1>OrQ&*(NH;Xu;J4dr9s8?-=r+-Gb;(16USkptsN zdHXT@r|LEp#g6>P2>$w{e>SGl#U8b^XrU^JVWd@;&Q4kV*d zXioODOJ^1*jjM=DtXtN5@J?cJc#?;-bTFyI>}PRrV<*moIHMYz(|$K6 zta}xxkM8P;aQhQxov4jzg@`GfG(cPkS23u?oy;-INb^y!KX8D=g=)2-!O6)jQtMhQ zYHv-zin1m~m&S}TB#t4Hz;TE*LJu;gMHzWXYlO5FaDNTO2w&-kPU2VTIb%qsF+IKU zZ$dI+)1#v@t-kMz1ZD(o1>!PYnC?R}-w@jku$C8EHWd~NQC$fdTNXyX~6C5j9CJj z@HTk@Gzvu0=h#sL2dl}92pMNT%4acJX;ZsZjSd?Qkgt!$vf z*;<*>pD2@lqM1VkQZJr2ifrDa6=DK%aF2=ukBN&HFP3&ZlZQ)Vr@fdD8nIJzY#FFU zC#+YKF^J6cS9C|)>Z?XSY!nJ>q&!>VA#)s;B~!QZaBl(=&=}0^*(6NU|NEy7`^Z9f zsc;s!=xI;#Wvzivw!9Tb$BLn{kum|n)VCCsjEQY;U5OYKNbldyH-p^1VU z4an1Hwo19;&nDI8QEN+g_bI!3I zORK%2Je3Zqc7cfg-5#|&Fj-gE9iP5vuYUXh+k`%GnEqPJIK zpIBszbTWm4<@~5)i@JwaZLV+8H>@vESZ$EY{fiR?F1IGJLtOQ2coMNLTww{F+PBpg zs?oZK1PA+tchT^=u4+FEoyyVC#my4yGXy{o`o05J1_37kD;mmR+C&OgsHk9y(G>@# z5LdK{CI}<^Kt(?#EIPAhg^pjIzcMX#MUP(dDl`$5^Llk(k&?DNfAX2-1qI7K6@PA< zsxSM<)?%ZLT`bZxrL%Q!jEuFj*{D$V+4S{H5<2tiO?@6+G-F4bT>c7-ii2$T=d^eu zy;|#p)wx*-NYF_ravBh|2+s*S_-J_QlwBi7?U|C2GG(_;w|h$J!A?01 z`S}ewojP?JnV;8?+ma+FYfU>%4q?JlhkUwNh!NVDUf9 zJ4IdN2UsK0E}tQB2j57I$=lfq7ZqQAI)6!(R|M9)WGDj?z2ADPaP`nmS)E**G#>HY z{SYO7{Fss1a?pL>L{YX#hwLdE%cU||$beKGs0Vux$TrAhkUQfIjTsucOfK)*mBY^d zx=4EpJ|?dmV$EJx7RifxG3!En_-4;-Q+t$l6`r;)_ARcCG};$5%N+K_q%3M*$YZAM z8#qThQSbXdSQu23`9VA=zK0QbAqxOeZ$GH|*Z{}ARgVEY;V(A!{6%ybvGaqPDWn~(Mu9vYbyOlK9ZYu^Uez|<%G?QG`t zek@jRGNffwHx}<-RXs9L8vb;;ww!)`B+>_=;4Kbq1( zOfGe1=fDC`Gs}mu1EXC8OWDK@uoVi&_~rCB7{3(U^qZq}eG{s>byer-a_d%x=Y%(j z1&kYxJpt2%al_Sa*)MfZ81`~OV8P476B#!|pSFv)1f(#-58=EYd*O>jXtba%yl@)* z!c;q{eANoyNGIOzkF_gTtbTyBUj4Z}5M}40zgcACWgI=q7O?&Q9-)wtL_uhSB#DC-=Fp8C*%r#056^8 zF2Ry6%Ed&ru|pQM26_6ndSiHQg1DDg%L|d8hc^@KaTOaKtc^{xhfP)tHDlU3rYFQ! zBo3I&J_e;|G%2*mrp1-TOza(38acXeU{*$ONLCgdS-8}lECc^ip>_+qMwW%Zl+`Mj zy2dDpDVv6}P!iECpnJG)fOmwQ(k(x}us%{38{07>KhV32lf^_kkBYLWVU?&Aepew` zb_aciyhby`%28|Qp6w`Ww8i#6t`vII&xLS3c(>8v<;uXwu*ej$VJ0;H!IZd)L``Z$ ztiONkl-SCIfRwnTF8*<{JJvZP5~2 zk8Nztl_&ZUc-Od{>AqH9bqac|AMwOlZ7{UV$9>&pcSHsEdJAI59MPAeg=O;5@P63u zb>_K7*xBM*-bLT^=W1UM<*pxvM;!EQYy< zXZYu3SO6X^YVoE)F8k30ONG!#H$egQuv%Gel13uiq;uaAY30Ln;!R>DJtW}CL?0t< zm7EM?+WMn2+CWerW5)D{<|roN4v0UI_3~u2X0?k08k#-z!hxuFN8`5wiF(3x;?Kei z`8=FaOCQ-YPHt|t6j;c_peW^j#^j~KM9bPV**2_7-V6QbU@6wz2R_OiW|d7N7SbPn z&qP?k4NU%ZaD(xT8|;E56bj2j2EL1zrszcGk2AU%pcrEbVk*}3ZKUha(9@2v5=Z0A zxH=kk6MdmH%tIR+8Be1>M&*U=y#endvZJCkL`@x~y#D41zIp=LA@TBweERCg7i3)? zU1X+7Xyc;-EJQ)=HIU(SpAw^A6SarXm5fh$HcdKQ3hI=-kZ)5ss&5gJUP$v00#>c+ z{NhRnTa|@(o3yTeLdpRJM(YA`_~d}Jt#IH^Nzvzcrl z9pF(_>HBl;y)%>Ed+(Fpd+&`@QV1cW0U?znLqg~T2uSac01^oTBB(S46A+0A>RPs` zt7}Q<#?&oOUt5%82&gQvUSBv)p$RSNQ#~w~ygp7pvvLzM=&dMM+`S zs4!VQD~TIyEwkFmbxpWb18c#y81u-+JTkTOFq0uS#)L-OP>*gz(>G8UifyKpDSd?x z1A8IaPqfU4L`4Xh6NUWxiF$60=CvO3x#-$6JUlG77#`L{+iAjgax=J`ofrogA&i!! zY!{4UWo?a$B0aUMi;IDwFSUB#X7t3qVjO0*MIwSP;h87|Zz(7Th5+rIWmpir7a#uQ zx_1xG+(XFI&#d{?!SY?=gn0JE`qSm1bvx^xTXVW1q<#;v9zR#S`;BGC{aJH{%XH&G$Kppnrq}7-u-4$5nRGY9;Dvh1=)XoG2SCri0xt6pf zDCz>HLG4N@nUc+o&PS+!<%syVv(9Ti7_PdW(7I=q^NP`h;$^J5=DW*xH_X`c-e%53 z^WD5dtZXOXFZlP8o=B{ZKw?oDCx{-e_=y@$-XyNu6lc4 zY2Lua*7S}dfAK@|#hvryuiX1Ry%&}xB`v$q+tYt*dztZe<25(GU8COd)zdXKPk*&T zz53gmYfQGAlx@GIc^XHVp5^&K;a&>Qf(@*(G}O`=2P+~I5}Yjz)xNsyZp;|vVu+71 zvz5QEP6iHYZJi7Pk~$Z(&UBw2+cw-(w5mSSU*9mXY2Up0N7`e@+%no`C7- zwdNJHWx8>ZM~rNp%?!+ywyue8A^DMxcMn$t&t7w^p={~Pn{o@cz5JMU;l`%8 z#DxPn>3Lf^(=wMFCLd0G6CCeuEO1+Fj67#7tKfX8R2>ofg(B>T6Dq)5Qca>{J}Q-y zQ>Zg(K2_l~o zwF)krPimfCQoK5Y1n-?0R~~E?UY)b^>Rfm!n75*4u!^M34NdmSgOj2&&(puCExkaU z?=5^kXG5-|^AqO&?n!=D!J%PxVMl)Rm`(Ti&Jxrrb=&m4vd&uWP|~cKZBw|ZB{8vO zQ=v`j%GNyNq}I)NCt%t0e?^w0D>^d47b$a3PUd-=r~swf2&G@rTR|vEyq;n(NsNeX z>{P%Wxx~G+9vWTNAbZ6K&iLcE%evz|v*x9gF3otcXx&IzXf&+8SUPMNuDX8PSLZ%s@9hI29_@?$ZW~=&i0?t7*p6= z>=#(RBp;!akQx4-2?2I^mkzO?e-*sU7dvE~s&CB&BJ)9VFH+YCBU@`iRb_067CeMy zJ0cXMV#)J}*b;CLzN=guDQt_e@JaGtm*1O_Q0mp_8er>|5nVm2FW)_O#eDG)?>zB^ z{M=HpvgX*SrqJvN4}-=OdyDh0f7(ahMK%caM>c5v zkxqzf8rji$83gX&k~Bv=oyP4TQ9+qgy^%OIRMVFHkCsL8olnfC{>M@3b1d%4ai8XM z^sPP8d*_TWGk<=9LqhXo)c3jqR7<@^(C>k<jza9RBrVqmR8i+#C_nJp3+x{Pp1lVS~v_pX-i^sotk9 z^u067zohp-wMtceptr=I+B!Gx{*x=v+RF+$$*J}-<2I9p12@K|77b(~-~G2Sv6lM$ z0i{U{3I;ft4{(bUpdAayigrl_286&1oSR&xHbq)C%XnwOGnVrXb;g!J{kA2{q|ptc zB0Sv$_|U+?9K{dbCMVX3qp>p+d`-w16DJQleQTw{Fu*oxR=T_R&Jt7i02e(MePWu( zt0q1aij2rJcEPE>cTT&j%n2D1^qgnS;_Zm5PoO0sJLF1A8%^R8{xtT<1sV!sd#>iD zrta<$az`cxY1)x=29a4lc?juwghbZH_juj$1b!r?Ze%4egF;8#$sE7k!FxubZ_CCM z@1m8nw(nj%wlO!e|3YU-ZN*!=x34@~Q_`Q;IdgF`NhtMfa|v~F&4`Vkcf2pH{NOL; zNA?+*8AMfthn2>=_C!=K%|^XSuz`iCg`y5Kb`8tOPBBe^OrzA_zdrz$u{022I@o{Zr|UGvE%fIDMmq?mI7% zd1GAu{TqJpAmh{1wjDII2T?UQ$mkGy)?EA)s6(N$Sqi5?qX4g#;^R};v&w}Fo5Gfv zXPw`Zy>etu&$GSp(XEH)H>1?a5Uj;22c=EzS?(_Btp(ZhlAQ_ilD=4bV<4mA@Voui z>X)|_WUjrmn0R}ktSN56#zN~^hnHk#b*)dDaK+pfh+FvIV{SpnfOgcEGw01)j73rD zDe+Hw@~{N=?Io)$NancYW!E~+MR%0aBFy69CB>`qNPMYhqpQD-TV~9W54uv8ofC>` z&aTSnNM%*N)jONrtb;0MMyeZ}%RQrGRW3dbMxL90v5l1j(;cGnZ6$WdP8KW+r+T%& zA{<^^E3F)$>&0koxlRCX11<$5t0)}8CcH)?L7 zcCCASR|)SOWD>CT`8J#RFYYRzUcWYDQ)^;k>n8G=RFeUu3;wr^j%bywf!x5H(hv4l zn;N2}pa-aj|LsH{sTp++g-T=Y7hDxm&=D`hA2=}aZgjl0nZbH@%fx|p?949oUimkk z??P9=Olc3!W6vHgQH)kugV+X^6{@KwqwKpzU1IVB@;hhvaM=+zTq51#mRwjqXYaxo zAzsr}(w*%#WA(wpO+>yT`SF*!7XSLmx~PuRy%?`b^pI0d$Kulga=AU~WjstVBF(U3 z7AKVnELJdOH2h987L=0a7|m2ks90P_O81O;XEzpPAN>C8nZNDJj8~V>PssP=gPWdS z@$~DniSLX>d2SvUGAesPY{~AMJ)LhpQB!yP*NeNZABh`??B9|Jy{ur>wZ^hHI32 z#=d`^+x~}Rm7Fk&z^G`q=6pwZLI2^Rjf7jCbofeV@4F}Jau0kxLjLsQHyD38GDaNO z_$lBUM#R>@z%SZWp^nyW3$+fgMpHLKYot)^%7^ogfElmN1!Crl30NrP8`eDpB^0$3viw@5WtKT|X)41=gmei%ET1X)$p0C}Qle(da8;&iFviB~_ zvS>KDz)Z&9MGB_SDSrvv!UlEduoBGl^<8~N>dt<;s&nI`ICEAS)^xztGD24X6@r&k?D{iH}Q1QRCC<#HQ)Y<<4(GGn#hGgQ)8D>%y0(i#u0SG z1I<5+TKYb6-pMosF~~$y$}>z^4r82T=u^#$N*;-dr~(AVJVL9Z^Y>E`{mVTnQaIiY z6_RgwCHdG#RxBy5+*m_NsU*}lF~HGSD4j^VkvNk#b__`L4K2~qQc+)dl)X=i5I;0T zsj23fy^E44IsJHt5>sGFdw=!=)O6>^>9oYl0`C4xegPV#~Vhm&0v_jNEpTGU|CQK1q~8I@r~k=q6gN6ANz7u%E~J%xymIu zZuz_0Q&umtxz4?L=K#0mDQgd_wzu~-pIDqU=wH;HR<|zG!kuR}J=`)lt5n;h*lRp= za712sj?;Ixx8l`)fuPZ>Sa&sWF;gqB+Cee#La{*Uzo}6~)l|aMOt| z`c21yq1Qz*^qk|XmlZAFGlLI4azq@_0_p8KczY5^Z}YXDJ(Y*o)kPNWp)xKUA&La7 z7{zD^W)W(4cl}@+8^GM_so|mV)TSd)|Btk4lK+D@f%_vWCRqSZ6Xq>t@PPu{!D;RR zUy;7+?n?K>`mGI-zOkioUe*fkZ<;P%k8D5skvett<)xa>#z|euGYs*1`K&UH#aP< z!Wxb*8%s+aE{?=MSRMtXW)}N@#9W0r6F<6+3+@k}8y^Q(TOZ5ne4_2@%DIm(PQ`?N z$X}L~wImPoNrvC(U96)u^BiHP?TMYj+}zH|nNtJ%ipgT;%mgQ+s25U_0`=?_ST?xFE5+y(J>Ne&Ler!=EgfxG~QC^3EW6y?afhfrY)<6Q=eS2D5J-=f9-0 zk*MsPcu+3G=+u*l{7`)b;napass^Y?vcQRkOj=BL2LHS<)VWuzFD2Zf7^z*$AXu&OF8N;V|}qS7H1C&(daZKCt(KJ6y?o zv6>%ar(e8(rsZz4yqEh3qZk$c>^;QBI=4{|Rb z*R12cu4}5tT@*gCxie=6RV6!QWJKu0p{3Dqyha4fwB_(H+w)5Uzk6|aONPl2r`D(c zbrS322)}(aTPcb^LHl7~hBoHxqTym*VViIcM_j%lr+^58{{$8c3|S7pqrrj@&`sR&Q@leYL3}gO3Y;OAGlZ*-!U5 zr6klMNwI>zb&7_iLqTLNM^A3yvnLmAO3vKTRlccYylB(K`MuXRd%Sd4{i1`V0c9&nPjXjQBrnR%TAY>AnLBrXOKep0p{5xF^W!SQ>$lIL z*xz9bk9L6uvX&KO%uA(K0bYsGHLEn2%M=_Cv;^sFQ@UpUcI>t}q3{f9(Db+_;`((` zBw%eMAVJD2LP6F4*3uKTw2a`3*HhCH7Ceq_5X->O$~$@xBkplGp;Xhvr;ck94_ z6J4~p!Y(+g6q=J11%;HeT ztLx_-RVR1cT;GUqWWkRgD40+6tT-YcV&{f>BZ0b!0E!?0@{<)^NLztZjMM8GCD(E+ z`H;o4J0})Uo^?!fm((3QrsG?5wc$t--oO(n=LPSxrCb+6OJcfId!%-n*7|{ynV~bG z8i6X}gX8HN=QCy-*08WQ=g=oh`0jBy>czP3e(+ic(_vEw@Y-9)$!iGNfF93*Jt2w( zu7tVE^-=j|h@n`FL`or)#$rN{PX630*2CP`0F@d_rS2+-|1nbd!&v3xOuBb8kbPhU(8y!*L2F z)!D~KDA1e{k6bsKv1diYj+!91)VfuLUE61vUN`Ok;>2Sg94sw8@XP+QU$5c4hlj<} z3-=V3?zq~vXYLbgszXcmHtqUoW&MTQ2X`I(@qGOnYL>_@BkSlRHa{hzSrL#2mLbS` zHSw}X*b?P0_9$DDG-9nvOsy=s@>CJgMqB?EvMO0R&Y6lQ<(<>;L>~sQiW7hx(kvJn zGX2SrqAVUKEWpOvpt=qIc%UH2Wco%%_7JZ$P)a=l0N$g{K)S2IOkma_llrJ2qz*H8 zIYcf0OL1Y{@aa{59wxsU7yo{ABxhSQ`WRjohusgYwIB+Y7fcQW|WMPsq0^9f|!;ktGhv+6Hoc;q%(vC zIg&ZXW3@Jv6zAYGh7uR9&8pnn5@tA*v+iPhQCGr8ttWeubWS1*M?>$mFBCVePo3f| zQkXX`PIfc3DBSkhiJF>GVs)*{+SD^qbj=^Q*m5t{VILaqRDGy!u=a4ZO@S2bD6q*~ zUJL&tCxdw+_`w>aHASe}=ZIr~pPw(mf2PJ}3bl)~vnlfhGmTHGkAlQy+P@B~6*599 z!IebGL-EMb!)LR2gd-l6i{stX8`8cRB_|i2=uP%5Qs?K2)ior)uqh&=aCt%N>Eu&)CloNM=c1e$_!9wzB!=Ei-^cm?TbbFM|wd|p$g~yFa%#N z-b2c0P%t<{o#Pb5%;$8;9tq8nIgWrGoeQAS)KLMfz|AFkFK}1YbCADes?}<&nBX%D+z98QEnw%xaNBK~(N&J)Z zhs4f7yxB*dBfsJ1iK$OoiZ)yq&6I~v?#Pqmx-Mm&lU2d1_$=aJ&gdaS^+;EaOGvN^ z4@N1HsUa|(aPoBQ?GbvU)=7hdF-4EW`Mjq`!Upo>++TaKu-Ye}wm7vpX|(&LuG;<0 zF_Dd1#oxcyuy1}uQrF?ymRtR!$(?yc%~7HA3SZ>pYE^cK|BR5J!q9m;i~Ndv3u78* z_-A|PwqzD8D-X;a>T2&kOHD&Nx}K_M(ppT;Ne(;zFzKgY&IV^q(0 z^VZld>xsYMqu>MdDgW0R1$SMILggsGMsruxIK4~S97J^=hxxD-pIW3q{R1+@VW@XT ziU&|F)j-lx83Ft^EtRj=e9t{Ms`+%xN$DC@yeK!`Hz3L1(G>J0#R4=xEE^ptQ$5M^ z9vQ8B8t6OW{L9NQ9%^2Z8;JZ9@KpuHTr%XfkW18Vp?q}#jSB-%mWl=t9(RXyT@YRR zMYjvlqx_w*ANWlAI`{tRR*Y!hhGnXdM;0Hl^Ump#ULQ^+X#p#uk~Au=CmXe~IGHb84hM?QZwY(C_5EAm{- z&1Xg=8>%Ce>MEIfmbN}gO4HEJO7f0zDsu+#rz^^Y5}<{S^F|~At^kA*%vrP%imKL? z9b*nQOT(R5dU;Fuygl{BOUuIa^~1`R6c??kOK}?oBIK;t#Nt2$qu`>1?0G59cb=!Z zLs8-4l28Nv(30Mw`aSa^#vBvsvlEMgjSPZ{lCm2U90``$fCgp?17?jVl_<{kSl{WMTKHS!SY$blUWolp$=SwW0(t)DDK=< z9{o=}l`KcZmxXm$UnMMKnlnatB#g-nXpS!`yuq8bd$kyEM3veYrtKdYCEtzpTb$UA zfMqRz?9QzrQAN^*@VsX1*Gobo_MYLbn_B7X6L{Mt98s-?pN2iRM2OGR11tv5)MjAt zFO4pbUA!j0|7z1{bn}edHNDb?il#%>?v}G(*g_J;SF5|CEZrntA*Z<#Q?+{>2Z>z4 za4C7fl9<%PG2?AxWb5edm!v66)21u1M|@e)fhWn~SDV!C4XAdHX;Uw&6v%j}cCYBb z8r*4_e73X<{4x6Udn34jTU=)}tkdqD1VQrRviWN3Nhm>sm>=n%`%&~JXz0BD`MHs> z?_XCU0^$w&{kAzzESRyr5iy&I+W4CAu-X*79pxNrF!mJv-cE*wDU)mU z)AW1qd*eoqV%&Ov|9U!Z^(c4ifnhl#c6hN%7@Zf{=uE$V$jEr-N7)sR81o?m;ysbm z#D9*MBt>V!E~0Y=_1yxzPo_Uj0Af69JA3Nl5;}ceE9&4?ralv@RdaetojK>1UT;^Q zTb7)%>}>b4mpjg)2MH35`AgAt$qkdh#DkU1=Q|Oy%n1Seu=LgXB%RIhx=6lwt_1YY2AmHAcJ6bX|#s zg{390FHm?org2K1W~R|o!Nc?|=A59~JZhSy5I<>tU3~3z@-BIGRQ$epez1Ra4k;6# zox5v(WK7FJPS8xyqs||XDh~=QjT{P}y(}kZX>}Oz!T*dZxX-}Hsn0tQ-XY|GgogM6 zz|2~vwlV-lu>{TsM#bVzU?w!q#F|7h-w2_+=0WgQy1~597%f(ab}=>0HVsH}6Wtz$ z%uDh$>&Y$6=TpiU6tf=**2}$ul1+|g%OVa-cRYY{RRLAPoUyx|Qq59UBuBSS0un?D z{s%(#WzGBKD#cklEAN}cSzAU?vd;n~dj>_xcFtJLHG>H_{SSaO9w$Vm*oYmKq6o-c zvXlxvkzu63WPLwf(hoMLpS zM5Z%lZOtMFJPRaDY8G_1Oy7n8khm#3LyzDvS`8+QWIu$bj&UPUYglr|!=}UoUr9EJ z0Zp-7j9r|yDA49oVvdd`A5DP|$ATvHn)Uw$51M;TLa8_+KF+jd9x@QVG?_vH=|@i{ zYd1pACA2}PS2}ML`5yZ6DJr-p4iAZfd{`@>IN9TfH7;R3pioe&NuaB~+6ol-) z0VPO4mfeEWMWr^*G?m)aMS{FZJbyB_d+#dm^LS$Wo>{Z@btJvw8dn&c)0x8U9A9*8 z82}gKANNQq4@+N&Sk|3STZWq>Bb$d?1dltPrZ=X$#rIUvAGckpx$i2K)oX!D^&FEY zVbV+uF;hb}Q;BN-uQLU|=f)01HLNcxTHg>o<`9zNlUN(WC5$$nY0qC(6LG*PGTYxT zJJK1n>RY?LHaHkxxDPbGvE?yNVe@9tA6K6&n|jqLraTsNz55a9V?tpAJ;;&TuEqvH zHZgE;bTlv|YJ*9&no=y|1QLycc`=nmmwW2YPMaq?KQ+$}u;Zf>zNAN!$$edavaRLJ z0)@@(bt&^>q84UxYd{{n?8Up^C`M4DOKp`{5XP|QyPOwLCx-Z7Sx=*ybzti?mRutr-32ud_;pV7S}A=BVn3(`zrUY_E?@JK z#6t5c)vVEg=F;d-;iCK{rr-$FIuQUR0~t^K0_K=C0Cv!f4u_GJ8<@&baKO?ESm1(j zC#*F!&{+8e4SG@hHSU6#c#AV$K{~|@`EpLUt4StTUy@thM*B@HkJCN`jjEq~GD7nq zr@~ki$JvY$xX8Yvnu0 z)sHpLl65a~8Vzh(0IF+95}XU;Lqk5|0s@zfLiRI!`2p{VC?$JO>c5XnbWiKtMtI^rmhyDZGwihdiD754oMNWq=*3aJF!NJSX)z#C}(idqAmc+>m^*SmQ z(a{W@8l9Q$zsbsL#w;)`8kz=fj5XsD%<|Xaa+31#o)3q}?+9TEaqbZI-Lk_vqxcBH2$8Q2Zod;Qm) z5x$-1v>)ewf&CdIUmW~!@pZaC&U>cpkGSmK{*3d1gM-`vrSjV)KYg#1v>$>p0eeN? zm1fxZvTBv&R2Od#PtTwrrEg%MW0>|`sawT5G*n+-A@Pp;-&NW`?fGRY)lc3<;dc`* zRioVTpSqV^4Q!N8>8ZJM>nH9jFDntV`P0gcpvzQQo-82M%Ffs*HB}Z6sGpUQk)E5@ zpJNN{Atn4%ZBcIuGqV`pkkp_PYR#13I_fv?MO;~A!WOB^4B(SRg=kW{r=_m6cYuU9 zpY6{kI*xLfUd7mN-_I;WxU*?l)ZftLqmL?0z$ji=5@6WXZ^OjyaJe+oAhCskBmOb#& zc%lE>ORptCwNLb>rS_d{+P%HLFWLo7EyQ1M+ueO`SxVZHqqSkBnUimQpvf;`ZkmTr zetXV#)bXJV`i>CqU$QtizA@i#v2SjuTa2HbIO3JvlwPnDtzW0TwtY~Nw|}y~l~8y3 zv>^(oEzx0ZvKrAAR870aSs3}XhP$e!9_7?lfbW=gzfK0EB6UiKUwspj$S_TN6${alz)Y$}RH}^az>whH%6n zwdpbWt6I1<+Lv$&^4jru^-~>Yo)+dFW{aL$9Dk=Xq32Aep|zozi%Hw@t~k64MMsE) z-eV2BhV})rFm!KKIku`)hBBL0dW`QohUp) zX6uX~J+4+6T+o)D)m9Ls&>U3+6|@UQQ=4v}`v$N;h9au_GBf+CBPQO7oVy~2+F?}h zM*IVraW~+5wxpJhiG`lr63GC(+Jc3rSv;L8HptMkRkC;~WIXNq#yv(j_mZ~!U}EGE z;b$eT+%LXDY8v;83bKUvYhIf`PCF*Y+*t}s;5CtA95IiBV1)Isz-dM&B3m>TurW{@ z$+Zvx6ztKGWdiD|lvslSI+oE9r^316&QbQ(a$8d?KMzCk{pG*5Yoe3j`?3-2x#ZY!d+d@=?)oEgWdRJ;SPRw^SR6fEreHW>cOkN`XS zeHAUn0gGpR@TV2J+5pO$J2H)+7>PX$V6mTv<`48b)(+%kjq&HbP^-X??qv;p`-^HH)4Y_ei+(o)3(#74Rli2?x zPm{o`&`#w{b`H{H3uF0LM zM_>P0n>uQPB9i;pEJ|!`TO|$^xO)zVW{b}z)x~IS+)1Oi^)l}Q<2Ny}W8bXGJ?)8) zd!^5g3NDOubBilfyt~FH%qJ?w!fR2xPq>d*72}(us%!EoN>vZ1t)H*CHKQ}%3wAJh zMl7f1acuW#H5Whh#)9GDIQ*!&r9RyqORZyi1GSmGkh#yr(@%j4R>MXl>o>yTuj+`J{$8 zIE19i7q7wkMaAkCvN*;!*M}`+*C5px;ZR6*qxSgMUsKyXV&UP1#AD0l>cPQ?rbEr* zr}#aBn(kkJP0e|?)W&q;K|g{M#C#%3wAlq$j)g{H9jVes`8aUzl|k-$dH{rRGSw!C z(WG%{5hWT#BBQOlwWo3lb=~ueJi=QNCcef85b=dmhLaTZXt#-CsJ(qv+yBLN!b_eL z`FZv}ank!3PJJH*-iM}1z$ftk`##jCGEU!z7cZVt{uJkmJgdEZ&9?uOgN2hV5eLw- z^QO!lb_k*iHWtRb+FK^`B6M3Qmt$Sd7g%en0cj#XaM_{gK=LEm1MsTUt~)mG%;tv3 zlKpS5JpT6qa-Eb6byjSu4R=ebQeVEl=}2PNp=<58AN%6zxl2AefZpc0Yfd#x6m9FR z2+>S%fPX`raUF|0Pz@Wiur@bRs)5AdLFi&mn+1(5Fu66YL<&wcI*lZ%H=*jO8--D4 z(>k+gVU&C3q6?$zhbjlBbUoD8L*;Dk%0MSgLUX8kAe(o~lOdV)&YL33mhyC7uJq>ofXl)UfHiF=m#$)!`Di@(bx-fxSaW)sh=C;mjd^Y{R9-!m&ui!YNMXI7jc z9cNaZAv465Gb`}?i6-IXU6p(Slw*Bafh-6D2zcc3G6-HOKr-B|RWa@=+YdE=JV`hw zazgI4ntatx=QhzLx4kTAN0_B4^<+~w0DwzV6?FQq3FS(iV*i4D~KmA$UnZB*0T*};cW-;RdPvwmc~J0 z*T$ggq6}E-oibS(f<<(iQU?Pv?KjJ5zwy(4n||l?-=^O={VAHI-Q5k1-CaS^QGr~E z8b7PM17jis$E3^nG3e&KA2ru?cSimZ$DLL-=P|OG}w=Qj&N>`-A3l z-4DOi{pqUq2jM&2pB}ge>lGl*BW?0qkT?{pissKcqs9u+g{%l$(4MCXkTOv*a%*pE zrFRtiop{@#QIcGR4k&yKiLtd*YEEo6TwcF#lhN{e@_{iayzO8tUX;&j;7D5Lo%RM! zyq-noHk$8C<8L;Y?@v!O5ua7?CS>M>&sL+Ajf3XMQkCFlppScGjJW zd7OA9hoUQ8K&JikN_)Xa_A&5ORI(8gM$(B=W+tq;dlkAR2o6{?LzTpo5K>zy3y2Je zq@Oz?9uzLiU%}_Tl|CmMx%(ITIey*b=ZNletF)h+^!Tcww>rukQjHu89ige%+8P@h zNVP@KQQo0+|NrUgRp0iJT)q5UDH4GG?E=korPwUU{~?@Q#w*Y@$HELsx}>4sgDj*I zAn0%mDK+V21_#p3iEk!di^Sb=Q#zkNbse40zgW`y2mW2Lt%>Xt-+8bBI;ep5=ksL# zTRr$zB4ysGRx&=6aG~A~kSuU8pxvipGTlOg#*pSh-G34P8yJ@RkmPrWFNh!guf~0o z0I_6)xMd+(!WI0427Z$`v7GD}*3%1h&9oyIY6f99^2lFgjkB?VjCEng03F9y!E5ZY zCVgBf19a$@q85w?a$yfXo+0m>_6&uZHC}t*8GOdrB_zJd`$T{8zIa1Qf5S5_h@T28 zv9EHREXWohy;xdI!2x1Tys(079+tqXkTUzE+9<$?Gkl;Y-rxSo;gZC@^SxYYXQm5@ zY&wKy?5v_=;@gp;{qJvD_vW^|y>Tsjs}~$@jixgf|G>Wt%g72@oHWyj5JOuB)RDpl zqmW=UB?N8+I1xZV@Zllj4wc#}>c@i@5-W0<=S&`keEtjj5-W6xgQ9P(zCqIWXhjdt?rZ zdNOUqgNh^}9(Vmsx=Zf#kh?C32joD>5m3yEzv5Yf=Ut8VT(4!H2KGE1gRf_w=FK6| zq%lCp$Fci&wLU`X(+^3t1tz+ok$}EzhJd>@1Ru~->q((8Dg4c3VF+?tDQzI@gvQ*c z&mFm!${6B#9Ayr^`}cERUm)es#+h8y?JG9-_q5^%+~ys zJA7S8*E}Ykb|%mOf;6ABb5F|84GmEbCf<}=ODkZWo;ZtF1#X8-zG}+*P8}7&{VCP; z4sK$Jt4tcAU<2@S0S;l{gPnp_Y=oh`O?Jq0c z_p@dH+<*64YwI=5-e)%c@l5^k?A1@tdrtkzuF{!%Zm9oLxou%gT=UkMU#|Ye{!-Wn zi;x$81c;mW-UyyF`bNy$V~!KN7IFn(DNTDJs7I4m{>%FaD8ai>7dUfCUfz^lX3bk&ud>%!HcZC21*L2ddf=TZ)5J=qB4%d!##=N`QEr%m1*`o2WgP zzhUQ+P)Nf`IpL4H6zufYNOy66y#Fpp=16fwv5%czeehcBx4yBl9x%q`W=50jj^_XA zcpaHm>BN6Ck)x>BRy)0e@=UO}@9ryk;$^Pl%W_*5g+Z@W${)ZRj1A;a1(ZrNfu&F} zqSBr+kTK02y_adpeW6Jt7GvbQ(X}Wf5)#1DZr+!4iB%Z{PlH&8T>M-% zPg#{_tV*4bh`WB&u3fTpmm?rcwepXjtkGiqK&U>+^9BaiKt;9|fUf2!Fgd`g(Mi z(0Dg^BcTOrwkQs?Wo~a>?#9DvgrU(2SH{yfNcF)eSwnsB$4e%5j*pYq)U-JGUcs6e zhY=8+y8D&<8Y+PFfpmoYCb=^q&dv%aCj&2(f`%CAoJ}-@11>0O8g$8N7u1Kf2)XC! zpm{nJa3f_Xa#7{_i`D$;{eK!RE#H4rz46V>SrgH`zW2KpLbtgpIx-^^qk&P9g!2i;W~Mjgod1y)&lS?a>aq)eD%0Q~|yVGnP17uU- zgxcEZOXXLzCY<4PB0 zI+KW|!TBt!h=R^M%7 ztxxmk4WNJ$`)1-dn@PtI zGW*a1st+O{Le(VAzLCb)4n%ESH_vj9ZG}3cX>~m1x}lRg( zA)R&}2>yZ&WZ*B~Nq6zj!7JWwzqt8{n8Jp^XfksH zQ#A^dB?dwl@xP9^XO#S73>_0(qMS`lvy9QTK{TbvF9E1|m zDcL#hwiM3PouGlF1P4O(lj%bV8TQ($PR;^+$tGknCWugaga5^hH3#CLp zA+%>QW5_h9uALQiG*1>2-ao4aoanHUEY<)ZW%tM*m*uU$*jD+}W2K`x{S^(5&S{#wlbdS*NOD>MV?uX0oNS?EvnI{y^A?vH08$q~9mtsTn1c%p&0{L)wv$r?{%$WX^XU=1L`lAMYf4OZL|qk8>t)DeD=gA6jy>@JY2LU zFKF(e2Ag`6?b zNYjXLp)KvWT(VtU+%}MuG|)!suWLS&ur0WMY~P+gFOnmArnaVI7OrUb(EHNECN{DC zaY8bdm8!}r%T$q_-O)R))qxw&zx$PQ>;V4*)_EAOH*q|=eQ{m(DNDS4QzFaG#pqz!-3_{g-jQAHuWw+(4 z5M_6H-qD}q3OAgtYkRy(hoxGz`e=Pk-?hhbq$;2d^J0tpXZ#~(VQFakl7r%ZgqQE6 zrPfE2*ycTR=D#_=;mw6xf4(V`%YPEP5)FNXqNKP1(+?8SSEWMq%OpHQUmb63!jwR~ zBui;z5>b~v0}cWCE!l{?5~Tnzh%Lc6;2&bp;H=K~{`V!X+}Newn(C3axKuny7A_rK zmF5y((S^pYh+EiwmDF8qvEoFdzh_2pVr?oS{T?n?90E8lZ{^Y13-*_B%ZB6B6>&8g zp2Jbi2N%RPmZgQ685P?`+QE(sxt(3%mOV z;VZ}pXH<$o^GZ%ia>T0|`}=!D7^3UAR#1e8u$PtOKbjg%dQVl7@01o5)07f}-W(R*Rw3S25Tng6&-c!4%i`p6-ouR45Z{>CiUc=osN3@nfjCON z`(|b|Wqb3XwOO89kED^Y1HSoT5hWq}3wA9CpP3qJj=&1Qt-mI!aN<|co>_RJu<%$( z*Qw4J;t)SKtspeht1Y8v257fTe4nRToUZWBQp8k~__&lnBOGXVH#b6H?c?33fs5b{ z)p2w?N;C9y7Pqvccu&T98N#16Vrp!E;lWifgFK3C`}kPjj@0Ch9pX2{@`>MeJI7UY zX7YMU-of77#QfydB4Zc(Yc7t8)FqsKO<9Xupe?s-D6yxkq$hQ#_Qg%H4Kvfj%!~{P zJg-7W-Kq9Xensi__D(f(90rQ}(#4wnbKcC%3!KvsJw$b-W#TPZ3KZil0@yythK+S| zb;S-Q2N-B~kD>qK-KdcON5SOQ#pn{Duy1tt9`aTwuGhWQTjCGzRswvqwNm^7$}L4f z!Omq1`htz6v9I@*BWVT>wl6!{$U|$%=X1(h@mgdQyA>W;5_Etnrx7#LLd}SZgKf&S z<*qJmuuF(Cx3tL4GOLR&^#9lNx5`34qHgRKtWZMQ zANo@F*Jn`WNfO#q7z;HNw%m`6!u?LOj+;Gh8w?S12PX8aPweajg2GI8Q)n zt+;b0q$t)UcHyq-dyFIh7;^IvJ>Nck#dEso&#ki>uMt&T3(`YaA~DmJl*>O(4PhWVeyu3Ps?vFR%REvo?Cs6m4b`v-c$%uJP|K0I$t(ih%wR@Q zHzRc?P*RYlrd>}(Fvri;-1HseE{@p-rl?|P(e?Ad`hnwQ_8urNSyL0i&4;V-eP$YH z7cJJ6giT*H;#;*HTEY@&Z^z&@3!w253qu6ry`5QWCoB?`gsiWVwx6ezwuKnHG%d(% zt>ojl(Y5a#Dl0qm-rB{_r6;8Bo;7FZ{K&}pJLlA{%j7s`+bfnTj@$IH_1vdE-#`=_ zK7VR%V8B*)&)n4~YsLT6J+&qmOv#;01BTwa};y!32${r14X;APnb z?OAS~dA;k2|BT4k6>;%>2^~ALXARzH_iw*(V3vpLE=QNl?k!pV*;~3ZA#J=MS95W$ zX~zcC?O0hEIn&G%t$$rhR@l7h8+T7P5RTvJCm)U5;J{|Jbi@Lh*M;5C)f_zny&KZ?KJ@MzFOODlnHw6>xN}bXvFhu!Puy%; z{j0+j`8$42GGAWy>h^-7J#Vev{oU^Ca}L$5I$EGAAE+7S&6c^Q&dZ2v$n^!lRoBSE zu(*yVn&xb;53h)uKQN=|P)k(f3#)QFQ-F>YJv-eKT6L&6L;ft&s$m~f?O8xP1=je9GTHud+rMFemBO;wxfBac*-^e9%se6Yc!IiFOfnKkTUuLKs=9umWm<-g!AdVQE)%2Co8qP;2W3zoM9y;BX;qS<;3T zL3!z0OIKnhp@I#`giC^vmuX)8WcjFA>FY#C0eAy3}m$l63 zqM01cyh6fhZ<{Hz11$OE>uD!SK9?r^!&9l-)`sTg?5jL|?RqZj6zg-$@3KQ@KiHOduEpic%BG2#{g5%aQHh}B1GKW#{L3q$$@!W&pXoG{-~ z07L50`MT(H*t3R5x#9^={*wt$`MLj`Q0YU>tt)YUHHKK85Z>ZnZY*`yJ zeEd=^>nbb5n+ppw{rnQbjcrZPCSHyrD(J!N3%*MTGmLndeNVT{6ABfov8mgek|s5A zVDF$}o5HDp7d`qO`A@iqpto@*dVB%QHfO`!xf}Dgdgew)=XiML#6;zIa?SWt)vAn) zm9y^u6PcO0y0UgdE@?>kfIQJ&#M3OH@@)Bj&wmysk2>nkaOo>KzvVM zW`VqUIT9%J(ANmrX%bSsDvIz(5s%{B#XIMSs*lKbh#&GVh>M6Z84&x#4zj@*&#A_9 zOtsGe&(YJPOhgKm^buQYf+{U*Wi6WbNj}F*9LAMs?l5;%eomp}04>9= z)Zm^|>`H?6N+qs5BOk*(@TjnR67Z>$?4Bg;m15lU1bs4xhzq+XpWDanXIH={fL{eP zNNy+hrM!gkSDI1iCEJEg(Zb?fN!`Dom6f<52pA|9^5vnlsZ!(%D;ruTAHnp6CX>(+gPkKn20WG5L> z6iU3yTtP8BrPL3QIE^SU|2%4A`0~1emd&7b=Ian~O2RaXZr zTOU`Kx-7D79DIY$6wf^J;4`&6Uh8F4#kla~2z{tuk@Qf%hN@Wp2lJx9`e! z%Xx=;%AI;_=O1_j3n*L8ZRLKHkAdRs(V5!@DHDdAIW=ihq*w{%h7p!hpIjVG{H8mu zUZ>Yu1pDMIOfBwBJ?)him{ja7mua^0ZsJx_zM~~RWmCH-kdN~!ywes@2~a9-;D!lk zf>MdN3s+Vk&;9S@B(8jhE4y(8neW^gavoQHr@fLQZsZQrD_orRN;K}dN^2IIOes%@4#jccyPjg?A zR?O#dnQX!VGc39L7I#WkgeylTuOKf&_A;&v(<^lMHGd`}ToYpRklto2v$Ri=-fZWQ zPCI4iBa406#=Dpgf3?@S$D{Y`O3Q)gI(<5AYIj_tv{a(`iX72C%}mNu)yhD&=jik> zb_7WoOjxJ=Qhbu3(qvK>jr|ygZ8R?j!R^HS=)yhJov7 zYav(bLpB&mRj`tWmeP3xycopN28sj*9V6@JYat(1k1n~EY?g`o**GK|el1hs)Nogs^e#aYBnonbJQ6k>P6p%}or0w{o{M8H2|BRqufOi;^Y`!T86PFfPrOxI z`xYOodGY4xWCxS5Om!v~HB`Paf5u}Kx4)F1gO9iWXFZ%8yjgkY&6rpVeST1B9F4{% zpunf^{#DPM>CDlP=StZup#t9(bk*cMu%a&bcMwHKctGN2Yz-~Zn~x`!C=9|E1nTe;&&%JsT_%6_b{W~4aejTq^Wv|s zM6D3tiesVr_<8vweyMu$`$-zO*M)CpwfvB4BL*i1P2yF`mn4j>!rh3#w zfauMCMBW4ELGrNt3FhzcfWN>LuoUK2dRBVo1_1DsEUFX4AL=JH_jG4& zbE-a2Gu?#S#)Xvh&j}rKiYbW_Um4?H)ck6cBSP+$wf?av$2L7VWyZG^IDmDy%EMWbK^Lu$r}MjWPF6jqxT6v!f@qGKy=1ATar{d1amC~t@L#E;l05r--totTo-IZrMQM@oKe9Q|9HgLBYgacnASR&GvIB?z1T%9%EohGq z=EWp3r8lM@E8SzDt4(n#N&z4&EwQ%5ANe1HC+dSanda~0U#(lS)3>X||Ac(_+!tMQ z-+P|?^`&5qRj^P1qy2fVb!E=-f{L|y!!57xSU$c;^QsX84HsnYcfS!F+5DtDDRhVu z1m2Vw8uLh^!zsWK0O?~j2n-m+?x32gVra+?1&hE3B~j$P>s-#uWrsf45HdIPYW?2% zk=tl90!^u87ih|=o)jl8*Bk2X&f4_G0Jrplcya^8G9qi({NXz*}qcsqO6$6S|L+F~WERK`22iyq?CE z`>JDGM#@&Tc=9^uaN_s9y}v)N@#GSYWcSa?SyxV5D|WxOcH3($n<+lKfGz-kk*|l1 z;12I)7OII65lB~s=H$eM8mnF9CV6=_COA#hOM+Gx+HY8U*1sAC0qg*+`Y+WBOm?^U zDRzM+)Kbo6Yx;^=vsPz8i=VYJV{2wkNQ$dlYDi8xF{9=HQ|#~8`QMUMS(mJyteKli zsdk^;lO0tSQ5HgV`&k;_pQ5)D8inQC6qe{NV0GEv&W?B)L2y%@kFr=@irCb?L%e6y zy}&TGp8E8-x0;6Lhx;NFkuTw!ax}IHFW)?z+V@lw_tore zjgbLmJ^6kMKm6H9-MQY;UsMP9CHh!8#?Fk@*k-jC`eHwhK{(u!UkAUS9ooaNALap} z!TucYXyFB9ywpifGo5Vgt^njz2fgDtHG%Vy&1 zq4FnHrAdj!D&OLy#1fTw^)1cWvA4J~E&$T(xAPVruB<$~aNfd0m6eBnHZQ3rBBCZ~ zUSdsTWDPNbWL|V<5B#}1g>I^wHX|Mz3pzG}CIy5LeE|s^21w>c4_)|_0a+^rUYIbG z(8kSq2Iw6D!37(h%4W|f{?o0I+p4>E?d;NA*f(b{KS;KsMs$ma5Q?ZKJ2Zdh>`TR1 z@_H#o9D*F!3%{o`G$Y$o0}oqU!No-B2(z3nly)<9%%4>y(cEz>76DTF=5TT$tMUI9K9 z%JL@`-2GlrCVyT~K~whO_R)LE33?CieV%y+=Hre$`ElHlAk*V^vOA~~h~9CUJq@K< z+NV`xWDUDF3Am`zy>8ljYp0HkRcnP;G6IO~e(*{n+sj`jvxstqkKF?OK3QQLI|OO) z4hJLEle%n@kr&~@(R>LhNP)wj4B%j`VI<{D1oK={&B=JZ(409faZ$B%Ld?7?)g_D0 z4O9jC&s;K8qrSK*EoIrW{e|6mUS7G~1x4NYUUHx84qhzGsM^FR)0Hj$Q+S5S804AI=-`yzvIf9Tr_cd3Iw(oK zEUk7xtZ6C+vY>=#?tH=jV#0(IHA#(Jz2<1+lEFcR&*0$1Y5R!_JGi&GU+=`sPH|iL zzdYz?SZJ67hpDcDtB2)qMGH-t-_mUIO~g|3�PJ}HG?Q&#wR5zLv9qnRi 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 c.FONS_ALIGN_LEFT, + .center => c.FONS_ALIGN_CENTER, + .right => c.FONS_ALIGN_RIGHT, + }; + } + }; + + pub const AlignY = enum { + top, + middle, + bottom, + baseline, + + fn toFONSAlignment(self: AlignY) c_int { + return switch (self) { + .top => c.FONS_ALIGN_TOP, + .middle => c.FONS_ALIGN_MIDDLE, + .bottom => c.FONS_ALIGN_BOTTOM, + .baseline => c.FONS_ALIGN_BASELINE, + }; + } + }; + + pub const QuadIterator = struct { + x: f32, + y: f32, + next_x: f32, + next_y: f32, + spacing: f32, + scale: f32, + isize: c_short, + iblur: c_short, + prev_glyph_index: c_int, + font: *FONSfont, + + pub fn init(font: Font) QuadIterator { + const stash = g_fons_context; + font.setAsCurrent(); + + const x: f32 = 0; + var y: f32 = 0; + + const state = zig_fons__getState(stash).?; + const fons_font = zig_getFont(stash, state.font) orelse @panic("Invalid font"); + + const font_isize: c_short = @intFromFloat(@trunc(state.size * 10.0)); + const font_iblur: c_short = @intFromFloat(@trunc(state.blur)); + const scale = zig_fons__tt_getPixelHeightScale(fons_font, @as(f32, @floatFromInt(font_isize)) / 10.0); + + assert(state.@"align" & c.FONS_ALIGN_LEFT != 0); + assert(state.@"align" & c.FONS_ALIGN_RIGHT == 0); + assert(state.@"align" & c.FONS_ALIGN_CENTER == 0); + + // Align vertically. + y += zig_fons__getVertAlign(stash, fons_font, @truncate(state.@"align"), font_isize); + + return QuadIterator{ + .x = x, + .y = y, + .next_x = x, + .next_y = y, + .isize = font_isize, + .iblur = font_iblur, + .scale = scale, + .spacing = state.spacing, + .font = fons_font, + .prev_glyph_index = -1 + }; + } + + pub fn next(self: *QuadIterator, codepoint: u21) ?Rect { + const stash = g_fons_context; + + self.x = self.next_x; + self.y = self.next_y; + + const glyph = zig_fons__getGlyph(stash, self.font, codepoint, self.isize, self.iblur); + if (glyph != null) { + var q: c.FONSquad = .{}; + zig_fons__getQuad(stash, self.font, self.prev_glyph_index, glyph, self.scale, self.spacing, &self.x, &self.y, &q); + self.prev_glyph_index = zig_getGlyphIndex(glyph); + return Rect.init(q.x0, q.y0, q.x1 - q.x0, q.y1 - q.y0); + } else { + self.prev_glyph_index = -1; + return null; + } + } + + pub const Ascii = struct { + iter: QuadIterator, + text: []const u8, + index: usize, + + pub fn init(font: Font, text: []const u8) Ascii { + return Ascii{ + .iter = .init(font), + .text = text, + .index = 0 + }; + } + + pub fn next(self: *Ascii) ?Rect { + while (self.index < self.text.len) { + const codepoint_len = std.unicode.utf8ByteSequenceLength(self.text[self.index]) catch { + self.index += 1; + continue; + }; + + if (self.index + codepoint_len > self.text.len) { + self.index = self.text.len; + return null; + } + + const codepoint = std.unicode.utf8Decode(self.text[self.index..][0..codepoint_len]) catch { + self.index += 1; + continue; + }; + self.index += codepoint_len; + + if (self.iter.next(codepoint)) |rect| { + return rect; + } + } + + return null; + } + + pub fn last(self: *Ascii) ?Rect { + var last_rect: ?Rect = null; + while (self.next()) |rect| { + last_rect = rect; + } + return last_rect; + } + }; + + pub const Unicode = struct { + iter: QuadIterator, + text: []const u21, + index: usize, + + pub fn init(font: Font, text: []const u21) Unicode { + return Unicode{ + .iter = .init(font), + .text = text, + .index = 0 + }; + } + + pub fn next(self: *Unicode) ?Rect { + while (self.index < self.text.len) { + const next_rect = self.iter.next(self.text[self.index]); + self.index += 1; + + if (next_rect) |rect| { + return rect; + } + } + + return null; + } + + pub fn last(self: *Unicode) ?Rect { + var last_rect: ?Rect = null; + while (self.next()) |rect| { + last_rect = rect; + } + return last_rect; + } + }; + }; + + // TODO: Maybe this should also have a `color: Vec4` field? + variant: FontVariant, + size: f32, + spacing: f32 = 0, + line_spacing: f32 = 1, + + pub const default = Font{ + .variant = .regular, + .size = 16, + }; + + pub fn setAsCurrent(self: Font) void { + const fs = g_fons_context; + + c.fonsSetFont(fs, font_id_map.get(self.variant)); + c.fonsSetSize(fs, self.size * dpi_scale); + c.fonsSetAlign(fs, Font.AlignX.left.toFONSAlignment() | Font.AlignY.top.toFONSAlignment()); + c.fonsSetSpacing(fs, self.spacing); + } + + pub fn drawText(self: Font, pos: Vec2, color: Vec4, text: []const u8) void { + const fs = g_fons_context; + + // TODO: Test if calling `.setAsCurrent()` isn't expensive + self.setAsCurrent(); + + const fons_color = c.sfons_rgba( + @intFromFloat(color.x * 255), + @intFromFloat(color.y * 255), + @intFromFloat(color.z * 255), + @intFromFloat(color.w * 255) + ); + c.fonsSetColor(fs, fons_color); + + _ = c.fonsDrawText( + fs, + pos.x, + pos.y, + text.ptr, + text.ptr + text.len + ); + } + + pub fn getBounds(self: Font, text: []const u8) Rect { + const fs = g_fons_context; + self.setAsCurrent(); + + var line_bounds: [4]f32 = undefined; + _ = c.fonsTextBounds(fs, 0, 0, text.ptr, text.ptr + text.len, &line_bounds); + + const min_x = line_bounds[0]; + const min_y = line_bounds[1]; + const max_x = line_bounds[2]; + const max_y = line_bounds[3]; + + const width = max_x - min_x; + const height = max_y - min_y; + + return Rect.init(min_x, min_y, width, height); + } + + // A reimplementation of `fonsTextBounds` which uses an array of already decoded codepoints + fn fonsTextBoundsUtf8(stash: ?*c.struct_FONScontext, initial_x: f32, initial_y: f32, str: []const u21, bounds: [*c]f32) f32 { + if (stash == null) { + return 0; + } + + var x = initial_x; + var y = initial_y; + + const state = zig_fons__getState(stash).?; + const font = zig_getFont(stash, state.font) orelse return 0; + + const font_isize: i16 = @intFromFloat(@trunc(state.size * 10.0)); + const font_iblur: i16 = @intFromFloat(@trunc(state.blur)); + + const scale = zig_fons__tt_getPixelHeightScale(font, @as(f32, @floatFromInt(font_isize)) / 10.0); + + // Align vertically. + y += zig_fons__getVertAlign(stash, font, @truncate(state.@"align"), font_isize); + + var minx = x; + var maxx = x; + var miny = y; + var maxy = y; + const startx = x; + + var prevGlyphIndex: c_int = -1; + for (str) |codepoint| { + const glyph = zig_fons__getGlyph(stash, font, codepoint, font_isize, font_iblur); + if (glyph != null) { + var q: c.FONSquad = .{}; + zig_fons__getQuad(stash, font, prevGlyphIndex, glyph, scale, state.spacing, &x, &y, &q); + if (q.x0 < minx) minx = q.x0; + if (q.x1 > maxx) maxx = q.x1; + if (zig_isTopLeft(stash)) { + if (q.y0 < miny) miny = q.y0; + if (q.y1 > maxy) maxy = q.y1; + } else { + if (q.y1 < miny) miny = q.y1; + if (q.y0 > maxy) maxy = q.y0; + } + + prevGlyphIndex = zig_getGlyphIndex(glyph); + } else { + prevGlyphIndex = -1; + } + } + + const advance = x - startx; + + // Align horizontally + if ((state.@"align" & c.FONS_ALIGN_LEFT) != 0) { + // empty + } else if ((state.@"align" & c.FONS_ALIGN_RIGHT) != 0) { + minx -= advance; + maxx -= advance; + } else if ((state.@"align" & c.FONS_ALIGN_CENTER) != 0) { + minx -= advance * 0.5; + maxx -= advance * 0.5; + } + + if (bounds != null) { + bounds[0] = minx; + bounds[1] = miny; + bounds[2] = maxx; + bounds[3] = maxy; + } + + return advance; + } + + pub fn getBoundsUtf8(self: Font, text: []const u21) Rect { + const fs = g_fons_context; + self.setAsCurrent(); + + var line_bounds: [4]f32 = undefined; + _ = fonsTextBoundsUtf8(fs, 0, 0, text, &line_bounds); + + const min_x = line_bounds[0]; + const min_y = line_bounds[1]; + const max_x = line_bounds[2]; + const max_y = line_bounds[3]; + + const width = max_x - min_x; + const height = max_y - min_y; + + return Rect.init(min_x, min_y, width, height); + } + + pub fn measure(self: Font, text: []const u8) Vec2 { + const bounds = self.getBounds(text); + return bounds.size; + } + + pub fn quadIter(self: Font, text: []const u8) QuadIterator.Ascii { + return QuadIterator.Ascii.init(self, text); + } + + pub fn quadUnicodeIter(self: Font, text: []const u21) QuadIterator.Unicode { + return QuadIterator.Unicode.init(self, text); + } +}; + +pub const ImageId = enum { + // package, + // trash +}; + +pub const Borders = struct { + size: f32 = 0, + left: Vec4 = rgba(0, 0, 0, 0), + right: Vec4 = rgba(0, 0, 0, 0), + top: Vec4 = rgba(0, 0, 0, 0), + bottom: Vec4 = rgba(0, 0, 0, 0), + + pub fn initAll(size: f32, color: Vec4) Borders { + return Borders{ + .size = size, + .left = color, + .right = color, + .top = color, + .bottom = color, + }; + } +}; + +pub const Corners = struct { + top_left: f32 = 0, + top_right: f32 = 0, + bottom_left: f32 = 0, + bottom_right: f32 = 0, + + pub fn initAll(size: f32) Corners { + return Corners{ + .top_left = size, + .top_right = size, + .bottom_left = size, + .bottom_right = size, + }; + } +}; + +pub const DrawTextContext = struct { + pub const Line = struct { + // Assumes that the text won't be invalidted between `queue*` and `draw` functions + text: []const u8, + pos: Vec2, + bounds: Rect, + }; + + // TODO: Add support for multiple font in a single context. + // I.e. each command should be able to have a separate font + font: Font, + + line_height: f32 = 0, + pos: Vec2 = Vec2.zero, + lines: std.ArrayListUnmanaged(Line) = .empty, + bounds: Rect = Rect.zero, + + pub fn init(font: Font) DrawTextContext { + var self = DrawTextContext{ + .font = font + }; + + const fs = g_fons_context; + self.font.setAsCurrent(); + c.fonsVertMetrics(fs, null, null, &self.line_height); + + return self; + } + + pub fn deinit(self: *DrawTextContext, allocator: Allocator) void { + self.lines.deinit(allocator); + } + + pub fn queueText(self: *DrawTextContext, allocator: Allocator, text: []const u8) !void { + var line_iter = std.mem.splitScalar(u8, text, '\n'); + while (line_iter.next()) |line| { + try self.queueLine(allocator, line); + } + } + + pub fn measureText(self: *const DrawTextContext, text: []const u8) Rect { + const fs = g_fons_context; + self.font.setAsCurrent(); + + var min_x: f32 = 0; + var max_x: f32 = 0; + var min_y: f32 = 0; + var max_y: f32 = 0; + + var pos = Vec2.zero; + var line_iter = std.mem.splitScalar(u8, text, '\n'); + while (line_iter.next()) |line| { + var line_bounds: [4]f32 = undefined; + _ = c.fonsTextBounds(fs, pos.x, pos.y, line.ptr, line.ptr + line.len, &line_bounds); + min_x = @min(min_x, line_bounds[0]); + min_y = @min(min_y, line_bounds[1]); + max_x = @max(max_x, line_bounds[2]); + max_y = @max(max_y, line_bounds[3]); + + pos.y += self.line_height * self.font.line_spacing; + } + + return Rect.init(min_x, min_y, max_x - min_x, max_y - min_y); + } + + pub fn queueLine(self: *DrawTextContext, allocator: Allocator, line: []const u8) !void { + const fs = g_fons_context; + + self.font.setAsCurrent(); + + var line_bounds: [4]f32 = undefined; + _ = c.fonsTextBounds(fs, self.pos.x, self.pos.y, line.ptr, line.ptr + line.len, &line_bounds); + + try self.lines.append(allocator, .{ + .bounds = Rect.init( + line_bounds[0], + line_bounds[1], + line_bounds[2] - line_bounds[0], + line_bounds[3] - line_bounds[1], + ), + .pos = self.pos, + .text = line + }); + self.pos.y += self.line_height * self.font.line_spacing; + + var min_x = self.bounds.pos.x; + var max_x = self.bounds.pos.x + self.bounds.size.x; + var min_y = self.bounds.pos.y; + var max_y = self.bounds.pos.y + self.bounds.size.y; + + min_x = @min(min_x, line_bounds[0]); + min_y = @min(min_y, line_bounds[1]); + max_x = @max(max_x, line_bounds[2]); + max_y = @max(max_y, line_bounds[3]); + + self.bounds = Rect.init(min_x, min_y, max_x - min_x, max_y - min_y); + } + + pub fn draw(self: *DrawTextContext, pos: Vec2, color: Vec4) void { + for (self.lines.items) |cmd| { + self.font.drawText(pos.add(cmd.pos), color, cmd.text); + } + } + + pub fn isEmpty(self: *DrawTextContext) bool { + return self.lines.items.len == 0; + } + + // pub fn drawLine(self: *DrawTextContext, line: []const u8) void { + // const fs = fons_context; + // + // _ = c.fonsDrawText(fs, self.pos.x, self.pos.y, line.ptr, line.ptr + line.len); + // self.pos.y += self.line_height * self.font.line_spacing; + // } + // + // pub fn drawLines(self: *DrawTextContext, lines: []const []const u8) void { + // for (lines) |line| { + // self.drawLine(line); + // } + // } + // + // pub fn drawText(self: *DrawTextContext, text: []const u8) void { + // var line_iter = std.mem.splitScalar(u8, text, '\n'); + // while (line_iter.next()) |line| { + // self.drawLine(line); + // } + // } + // + // pub fn measureLine(self: *DrawTextContext, line: []const u8) void { + // const fs = fons_context; + // + // var min_x: f32 = 0; + // var min_y: f32 = 0; + // var max_x: f32 = 0; + // var max_y: f32 = 0; + // + // var line_iter = std.mem.splitScalar(u8, text, '\n'); + // var y: f32 = 0; + // while (line_iter.next()) |line| { + // var line_bounds: [4]f32 = undefined; + // + // _ = c.fonsTextBounds(fs, 0, y, line.ptr, line.ptr + line.len, &line_bounds); + // y += line_height * font.line_spacing; + // + // min_x = @min(min_x, line_bounds[0]); + // min_y = @min(min_y, line_bounds[1]); + // max_x = @max(max_x, line_bounds[2]); + // max_y = @max(max_y, line_bounds[3]); + // } + // + // return Rect.init(min_x, min_y, max_x - min_x, max_y - min_y); + // } + + pub fn end(self: *DrawTextContext) void { + _ = self; + } +}; + +// The lower the better. Best quality with 1 +pub var circle_quality: f32 = 6; + +pub var draw_frame: DrawFrame = undefined; +var dpi_scale: f32 = 1; +var g_fons_context: ?*c.struct_FONScontext = null; +var main_pipeline: sgl.Pipeline = .{}; + +var font_id_map: std.EnumArray(FontVariant, c_int) = .initFill(c.FONS_INVALID); + +var image_map: std.EnumArray(ImageId, sg.Image) = .initFill(.{}); +var image_view_map: std.EnumArray(ImageId, sg.View) = .initFill(.{}); +var linear_sampler: sg.Sampler = .{}; + +const Options = struct { + allocator: std.mem.Allocator, + logger: sg.Logger = .{}, +}; + +inline fn structCast(T: type, value: anytype) T { + return @as(*T, @ptrFromInt(@intFromPtr(&value))).*; +} + +fn loadEmbededFont(fs: ?*c.FONScontext, name: [*c]const u8, comptime path: []const u8) c_int { + const data = @embedFile(path); + + const font_id = c.fonsAddFontMem(fs, name, @constCast(data.ptr), data.len, 0); + assert(font_id != c.FONS_INVALID); + + return font_id; +} + +fn makeImageFromMemory(image_datas: []const []const u8) !sg.Image { + var stbi_images_buffer: [16][*c]u8 = undefined; + var stbi_images: std.ArrayListUnmanaged([*c]u8) = .initBuffer(&stbi_images_buffer); + defer { + for (stbi_images.items) |stbi_image| { + c.stbi_image_free(stbi_image); + } + } + + var mip_levels_buffer = [_]sg.Range{.{}} ** 16; + var mip_levels: std.ArrayListUnmanaged(sg.Range) = .initBuffer(&mip_levels_buffer); + + var image_width: c_int = -1; + var image_height: c_int = -1; + + for (image_datas) |image_data| { + var width: c_int = undefined; + var height: c_int = undefined; + const pixels = c.stbi_load_from_memory(image_data.ptr, @intCast(image_data.len), &width, &height, null, 4); + if (pixels == null) { + return error.InvalidPng; + } + + if (image_height == -1) { + image_width = width; + image_height = height; + } + + try stbi_images.appendBounded(pixels); + try mip_levels.appendBounded(.{ + .ptr = pixels, + .size = @intCast(width * height * 4) + }); + } + + assert(image_width > 0); + assert(image_height > 0); + + // TODO: Should error be checked? + const image = sg.makeImage(.{ + .width = image_width, + .height = image_height, + .pixel_format = .RGBA8, + .usage = .{ + .immutable = true + }, + .num_mipmaps = @intCast(mip_levels.items.len), + .data = sg.ImageData{ .mip_levels = mip_levels_buffer }, + }); + if (image.id == sg.invalid_id) { + return error.InvalidImage; + } + + return image; +} + +pub fn init(options: Options) !void { + dpi_scale = sapp.dpiScale(); + + draw_frame.init(); + + sg.setup(.{ + .logger = options.logger, + .environment = sglue.environment(), + }); + + sgl.setup(.{ + .logger = structCast(sgl.Logger, options.logger), + }); + + main_pipeline = sgl.makePipeline(.{ + .colors = init: { + var colors: [8]sg.ColorTargetState = @splat(.{}); + colors[0] = .{ + .blend = .{ + .enabled = true, + .src_factor_rgb = .SRC_ALPHA, + .dst_factor_rgb = .ONE_MINUS_SRC_ALPHA, + .op_rgb = .ADD, + .src_factor_alpha = .ONE, + .dst_factor_alpha = .ONE_MINUS_SRC_ALPHA, + .op_alpha = .ADD, + }, + }; + break :init colors; + }, + }); + + imgui.setup(options.allocator, .{ + .logger = structCast(simgui.Logger, options.logger), + + // TODO: Figure out a way to make imgui play nicely with UI + // Ideally when mouse is inside a Imgui window, then the imgui cursor should be used. + // Otherwise our own cursor should be used. + .disable_set_mouse_cursor = true + }); + + imgui.addFont(@embedFile("./assets/roboto-font/Roboto-Regular.ttf"), 16); + + // make sure the fontstash atlas width/height is pow-2 + const atlas_dim = std.math.ceilPowerOfTwoAssert(u32, @intFromFloat(512 * dpi_scale)); + g_fons_context = c.sfons_create(&c.sfons_desc_t{ + .width = @intCast(atlas_dim), + .height = @intCast(atlas_dim), + }); + assert(g_fons_context != null); + + font_id_map = .init(.{ + .regular = loadEmbededFont(g_fons_context, "regular", "./assets/roboto-font/Roboto-Regular.ttf"), + .italic = loadEmbededFont(g_fons_context, "italic", "./assets/roboto-font/Roboto-Italic.ttf"), + .bold = loadEmbededFont(g_fons_context, "bold", "./assets/roboto-font/Roboto-Bold.ttf"), + }); + + // TODO: Generate mipmap from SVG. + // image_map = .init(.{ + // .package = try makeImageFromMemory(&.{ + // // https://www.iconfinder.com/icons/9026684/package_thin_icon + // @embedFile("../assets/icons/package-512x512.png"), + // @embedFile("../assets/icons/package-256x256.png"), + // @embedFile("../assets/icons/package-128x128.png"), + // @embedFile("../assets/icons/package-64x64.png"), + // @embedFile("../assets/icons/package-32x32.png"), + // }), + // .trash = try makeImageFromMemory(&.{ + // // TODO: Provide attribution for image + // // https://www.iconfinder.com/icons/9027022/trash_thin_icon + // @embedFile("../assets/icons/trash-32x32.png"), + // }) + // }); + + // var image_iter = image_map.iterator(); + // while (image_iter.next()) |entry| { + // const image_view = sg.makeView(.{ + // .texture = .{ .image = entry.value.* } + // }); + // assert(image_view.id != sg.invalid_id); + // + // image_view_map.set(entry.key, image_view); + // } + + linear_sampler = sg.makeSampler(.{ + .min_filter = .LINEAR, + .mag_filter = .LINEAR, + .mipmap_filter = .LINEAR, + .label = "linear-sampler", + }); +} + +pub fn deinit() void { + imgui.shutdown(); + c.sfons_destroy(g_fons_context); + sgl.shutdown(); + sg.shutdown(); +} + +inline fn v2fColor(x: f32, y: f32, color: Vec4) void { + sgl.v2fC4f(x, y, color.x, color.y, color.z, color.w); +} + +inline fn v2fT2Color(x: f32, y: f32, u: f32, v: f32, color: Vec4) void { + sgl.v2fT2fC4f(x, y, u, v, color.x, color.y, color.z, color.w); +} + +inline fn vertexesQuad(top_left: Vec2, top_right: Vec2, bottom_right: Vec2, bottom_left: Vec2, color: Vec4) void { + v2fColor(top_left.x, top_left.y, color); + v2fColor(top_right.x, top_right.y, color); + v2fColor(bottom_right.x, bottom_right.y, color); + v2fColor(bottom_left.x, bottom_left.y, color); +} + +pub fn drawQuad(quad: [4]Vec2, color: Vec4) void { + sgl.beginQuads(); + defer sgl.end(); + + for (quad) |position| { + v2fColor(position.x, position.y, color); + } +} + +pub fn drawTriangle(tri: [3]Vec2, color: Vec4) void { + sgl.beginTriangles(); + defer sgl.end(); + + for (tri) |position| { + v2fColor(position.x, position.y, color); + } +} + +pub fn drawRectangle(pos: Vec2, size: Vec2, color: Vec4) void { + drawQuad( + .{ + // Top left + pos, + // Top right + pos.add(.{ .x = size.x, .y = 0 }), + // Bottom right + pos.add(size), + // Bottom left + pos.add(.{ .x = 0, .y = size.y }), + }, + color + ); +} + +pub fn drawImage(image_id: ImageId, pos: Vec2, size: Vec2, tint: Vec4) void { + sgl.enableTexture(); + defer sgl.disableTexture(); + + + sgl.texture( + image_view_map.get(image_id), + linear_sampler + ); + + const top_left = pos; + const top_right = pos.add(.{ .x = size.x, .y = 0 }); + const bottom_right = pos.add(size); + const bottom_left = pos.add(.{ .x = 0, .y = size.y }); + + sgl.beginQuads(); + defer sgl.end(); + + v2fT2Color(top_left.x, top_left.y, 0, 0, tint); + v2fT2Color(top_right.x, top_right.y, 1, 0, tint); + v2fT2Color(bottom_right.x, bottom_right.y, 1, 1, tint); + v2fT2Color(bottom_left.x, bottom_left.y, 0, 1, tint); +} + +fn getCircleSegmentCount(radius: f32, from_angle: f32, to_angle: f32) usize { + const pi2 = 2 * std.math.pi; + + const C = pi2 * radius; + const C_segment = C * (@abs(to_angle - from_angle) / pi2); + + return @intFromFloat(C_segment / circle_quality); +} + +fn drawCorner(pos: Vec2, radius: f32, color: Vec4, from_angle: f32, to_angle: f32) void { + sgl.beginTriangles(); + defer sgl.end(); + + const detail = getCircleSegmentCount(radius, from_angle, to_angle); + + // TODO: Use precomputed angles + for (0..detail) |i| { + const angle = std.math.lerp(from_angle, to_angle, @as(f32, @floatFromInt(i)) / @as(f32, @floatFromInt(detail))); + const angle1 = std.math.lerp(from_angle, to_angle, @as(f32, @floatFromInt(i + 1)) / @as(f32, @floatFromInt(detail))); + const x = @cos(angle); + const y = @sin(angle); + const x1 = @cos(angle1); + const y1 = @sin(angle1); + + v2fColor(pos.x , pos.y , color); + v2fColor(pos.x + x * radius, pos.y + y * radius, color); + v2fColor(pos.x + x1 * radius, pos.y + y1 * radius, color); + } +} + +fn drawOutlineCornerSegment( + pos: Vec2, + color: Vec4, + outer_radius: f32, inner_radius: f32, + from_angle: f32, to_angle: f32 +) void { + const zone = tracy.initZone(@src(), .{ }); + defer zone.deinit(); + + var detail = getCircleSegmentCount(outer_radius, from_angle, to_angle); + detail = @max(detail, 1); + + // TODO: Use precomputed angles + for (0..detail) |i| { + const angle = std.math.lerp(from_angle, to_angle, @as(f32, @floatFromInt(i)) / @as(f32, @floatFromInt(detail))); + const angle1 = std.math.lerp(from_angle, to_angle, @as(f32, @floatFromInt(i + 1)) / @as(f32, @floatFromInt(detail))); + + const circle_point0 = Vec2.init(@cos(angle), @sin(angle)); + const circle_point1 = Vec2.init(@cos(angle1), @sin(angle1)); + + drawQuad( + .{ + pos.add(circle_point1.multiplyScalar(outer_radius)), + pos.add(circle_point0.multiplyScalar(outer_radius)), + pos.add(circle_point0.multiplyScalar(@max(0, inner_radius))), + pos.add(circle_point1.multiplyScalar(@max(0, inner_radius))), + }, + color + ); + } +} + +pub fn drawRoundedRectangle(pos: Vec2, size: Vec2, color: Vec4, corners: Corners) void { + const zone = tracy.initZone(@src(), .{ }); + defer zone.deinit(); + + const left = pos.x; + const right = pos.x + size.x; + const top = pos.y; + const bottom = pos.y + size.y; + + const tr = corners.top_right; + const tl = corners.top_left; + const bl = corners.bottom_left; + const br = corners.bottom_right; + + { + sgl.beginQuads(); + defer sgl.end(); + + vertexesQuad( + Vec2.init(left + tl, top), + Vec2.init(right - tr, top), + Vec2.init(right - tr, top + tr), + Vec2.init(left + tl, top + tl), + color + ); + + vertexesQuad( + Vec2.init(right - tr, top + tr), + Vec2.init(right, top + tr), + Vec2.init(right, bottom - br), + Vec2.init(right - br, bottom - br), + color + ); + + vertexesQuad( + Vec2.init(left + bl, bottom - bl), + Vec2.init(right - br, bottom - br), + Vec2.init(right - br, bottom), + Vec2.init(left + bl, bottom), + color + ); + + vertexesQuad( + Vec2.init(left, top + tl), + Vec2.init(left + tl, top + tl), + Vec2.init(left + bl, bottom - bl), + Vec2.init(left, bottom - bl), + color + ); + + vertexesQuad( + Vec2.init(left + tl, top + tl), + Vec2.init(right - tr, top + tr), + Vec2.init(right - br, bottom - br), + Vec2.init(left + bl, bottom - bl), + color + ); + } + + drawCorner( + Vec2.init(right - tr, top + tr), + tr, + color, + std.math.pi * (3.0 / 2.0), + std.math.pi * 2.0, + ); + + drawCorner( + Vec2.init(left + tl, top + tl), + tl, + color, + std.math.pi, + std.math.pi * (3.0 / 2.0) + ); + + drawCorner( + Vec2.init(left + bl, bottom - bl), + bl, + color, + std.math.pi, + std.math.pi * (1.0 / 2.0), + ); + + drawCorner( + Vec2.init(right - br, bottom - br), + br, + color, + 0, + std.math.pi * (1.0 / 2.0) + ); +} + +const OutlineCorner = struct { + point: Vec2, + corner_radius: f32, + dir_to_center: Vec2, + + pub fn getCircleCenter(self: OutlineCorner) Vec2 { + return self.point.add(self.dir_to_center.multiplyScalar(self.corner_radius)); + } + + pub fn getEdge(self: OutlineCorner, segment: OutlineSegment, border: f32) [2]Vec2 { + const inward_sign = switch (segment.axis) { + .X => self.dir_to_center.x, + .Y => self.dir_to_center.y, + }; + + var bottom_left = self.point; + if (segment.axis == .X) { + bottom_left.x += self.corner_radius * inward_sign; + } else { + bottom_left.y += self.corner_radius * inward_sign; + } + + var top_left = bottom_left.add(segment.inward_direction.multiplyScalar(border)); + if (segment.axis == .X) { + top_left.x += @max(border - self.corner_radius, 0) * inward_sign; + } else { + top_left.y += @max(border - self.corner_radius, 0) * inward_sign; + } + + return .{ bottom_left, top_left }; + } + + fn draw(self: OutlineCorner, segment: OutlineSegment, border_size: f32, corner_angle_sign: f32, edge: [2]Vec2,) void { + if (self.corner_radius > 0) { + const center = self.getCircleCenter(); + + const inner_radius = self.corner_radius - border_size; + if (inner_radius < 0) { + drawTriangle( + .{ + edge[0], + edge[1], + center + }, + segment.color + ); + } + + drawOutlineCornerSegment( + center, + segment.color, + self.corner_radius, + inner_radius, + segment.outward_angle, + segment.outward_angle + corner_angle_sign * std.math.pi / 4.0, + ); + } + } +}; + +const OutlineSegment = struct { + // TODO: Figure out a way to remove `lower_side_angle_dir` and `upper_side_angle_dir`? + + lower_side: OutlineCorner, + lower_side_angle_dir: f32, + upper_side: OutlineCorner, + upper_side_angle_dir: f32, + + outward_angle: f32, + color: Vec4, + axis: enum { X, Y }, + inward_direction: Vec2, + + pub fn getLowerEdge(self: OutlineSegment, border: f32) [2]Vec2 { + return self.lower_side.getEdge(self, border); + } + + pub fn getUpperEdge(self: OutlineSegment, border: f32) [2]Vec2 { + return self.upper_side.getEdge(self, border); + } + + fn draw(self: OutlineSegment, border: f32) void { + if (self.color.w != 0) { + const lower_edge = self.getLowerEdge(border); + const upper_edge = self.getUpperEdge(border); + + drawQuad( + .{ + lower_edge[0], + lower_edge[1], + + upper_edge[1], + upper_edge[0], + }, + self.color + ); + + self.lower_side.draw(self, border, self.lower_side_angle_dir, lower_edge); + self.upper_side.draw(self, border, self.upper_side_angle_dir, upper_edge); + } + } +}; + +pub fn drawRectangleOutlineRounded(pos: Vec2, size: Vec2, corners: Corners, borders: Borders) void { + const zone = tracy.initZone(@src(), .{ }); + defer zone.deinit(); + + if (borders.size == 0) { + return; + } + + const left = pos.x; + const right = pos.x+size.x; + const top = pos.y; + const bottom = pos.y+size.y; + + const bottom_left_corner = OutlineCorner{ + .point = Vec2.init(left, bottom), + .corner_radius = corners.bottom_left, + .dir_to_center = Vec2.init(1, -1), + }; + + const bottom_right_corner = OutlineCorner{ + .point = Vec2.init(right, bottom), + .corner_radius = corners.bottom_right, + .dir_to_center = Vec2.init(-1, -1), + }; + + const top_right_corner = OutlineCorner{ + .point = Vec2.init(right, top), + .corner_radius = corners.top_right, + .dir_to_center = Vec2.init(-1, 1), + }; + + const top_left_corner = OutlineCorner{ + .point = Vec2.init(left, top), + .corner_radius = corners.top_left, + .dir_to_center = Vec2.init(1, 1), + }; + + const segments = .{ + OutlineSegment{ + .lower_side = bottom_left_corner, + .lower_side_angle_dir = 1, + .upper_side = bottom_right_corner, + .upper_side_angle_dir = -1, + .outward_angle = std.math.pi * 1.0 / 2.0, + .color = borders.bottom, + .axis = .X, + .inward_direction = Vec2.init(0, -1) + }, + OutlineSegment{ + .lower_side = top_left_corner, + .lower_side_angle_dir = -1, + .upper_side = top_right_corner, + .upper_side_angle_dir = 1, + .outward_angle = std.math.pi * 3.0 / 2.0, + .color = borders.top, + .axis = .X, + .inward_direction = Vec2.init(0, 1) + }, + OutlineSegment{ + .lower_side = top_left_corner, + .lower_side_angle_dir = 1, + .upper_side = bottom_left_corner, + .upper_side_angle_dir = -1, + .outward_angle = std.math.pi, + .color = borders.left, + .axis = .Y, + .inward_direction = Vec2.init(1, 0) + }, + OutlineSegment{ + .lower_side = top_right_corner, + .lower_side_angle_dir = -1, + .upper_side = bottom_right_corner, + .upper_side_angle_dir = 1, + .outward_angle = 0, + .color = borders.right, + .axis = .Y, + .inward_direction = Vec2.init(-1, 0) + } + }; + + inline for (segments) |segment| { + segment.draw(borders.size); + } +} + +pub fn drawRectanglOutline(pos: Vec2, size: Vec2, color: Vec4, width: f32) void { + // TODO: Don't use line segments + drawLine(pos, pos.add(.{ .x = size.x, .y = 0 }), color, width); + drawLine(pos, pos.add(.{ .x = 0, .y = size.y }), color, width); + drawLine(pos.add(.{ .x = 0, .y = size.y }), pos.add(size), color, width); + drawLine(pos.add(.{ .x = size.x, .y = 0 }), pos.add(size), color, width); +} + +pub fn drawLine(from: Vec2, to: Vec2, color: Vec4, width: f32) void { + const step = to.sub(from).normalized().multiplyScalar(width/2); + + const top_left = from.add(step.rotateLeft90()); + const bottom_left = from.add(step.rotateRight90()); + const top_right = to.add(step.rotateLeft90()); + const bottom_right = to.add(step.rotateRight90()); + + drawQuad( + .{ top_right, top_left, bottom_left, bottom_right }, + color + ); +} + +pub fn drawText(allocator: Allocator, pos: Vec2, font: Font, color: Vec4, text: []const u8) !void { + var ctx = DrawTextContext.init(font); + defer ctx.deinit(allocator); + + try ctx.queueText(allocator, text); + ctx.draw(pos, color); +} + +pub fn measureText(font: Font, text: []const u8) Rect { + var ctx = DrawTextContext.init(font); + return ctx.measureText(text); +} + +pub fn pushScissor(rect: Rect) void { + draw_frame.scissor_stack.appendAssumeCapacity(rect); + + sgl.scissorRectf(rect.pos.x, rect.pos.y, rect.size.x, rect.size.y, true); +} + +pub fn popScissor() void { + _ = draw_frame.scissor_stack.pop().?; + const rect = draw_frame.scissor_stack.getLast(); + + sgl.scissorRectf(rect.pos.x, rect.pos.y, rect.size.x, rect.size.y, true); +} + +pub fn event(ev: [*c]const sapp.Event) bool { + return imgui.handleEvent(ev.*); +} + +fn createProjectionMatrix() Mat4 { + const screen_size = Vec2.init(sapp.widthf(), sapp.heightf()); + + return Mat4.initIdentity() + .multiply(Mat4.initTranslate(.{ .x = -1, .y = -1, .z = 0 })) + .multiply(Mat4.initScale(.{ .x = 2, .y = 2, .z = 0 })) + + .multiply(Mat4.initTranslate(.{ .x = 0, .y = 1, .z = 0 })) + .multiply(Mat4.initScale(.{ .x = 1, .y = -1, .z = 0 })) + + .multiply(Mat4.initScale(.{ + .x = 1/screen_size.x, + .y = 1/screen_size.y, + .z = 0 + })); +} + +pub fn beginFrame() void { + const zone = tracy.initZone(@src(), .{ }); + defer zone.deinit(); + + draw_frame.init(); + draw_frame.screen_size = Vec2.init(sapp.widthf(), sapp.heightf()); + draw_frame.scissor_stack.appendAssumeCapacity(Rect.init(0, 0, sapp.widthf(), sapp.heightf())); + + imgui.newFrame(.{ + .width = @intFromFloat(draw_frame.screen_size.x), + .height = @intFromFloat(draw_frame.screen_size.y), + .delta_time = sapp.frameDuration(), + .dpi_scale = sapp.dpiScale() + }); + + c.fonsClearState(g_fons_context); + sgl.defaults(); + sgl.matrixModeProjection(); + sgl.ortho(0, draw_frame.screen_size.x, draw_frame.screen_size.y, 0, -1, 1); + sgl.loadPipeline(main_pipeline); +} + +pub fn endFrame() void { + const zone = tracy.initZone(@src(), .{ }); + defer zone.deinit(); + + assert(draw_frame.scissor_stack.items.len == 1); + + var pass_action: sg.PassAction = .{}; + + pass_action.colors[0] = sg.ColorAttachmentAction{ + .load_action = .CLEAR, + .clear_value = .{ + .r = draw_frame.bg_color.x, + .g = draw_frame.bg_color.y, + .b = draw_frame.bg_color.z, + .a = draw_frame.bg_color.w + } + }; + + c.sfons_flush(g_fons_context); + + { + sg.beginPass(.{ + .action = pass_action, + .swapchain = sglue.swapchain() + }); + defer sg.endPass(); + + sgl.draw(); + + imgui.render(); + } + sg.commit(); +} diff --git a/src/imgui.zig b/src/imgui.zig new file mode 100644 index 0000000..02fe58f --- /dev/null +++ b/src/imgui.zig @@ -0,0 +1,502 @@ +const std = @import("std"); +const Math = @import("./math.zig"); +const options = @import("options"); +pub const ig = @import("cimgui"); +const Vec2 = Math.Vec2; +const Vec3 = Math.Vec3; +const Vec4 = Math.Vec4; + +const sokol = @import("sokol"); +const sapp = sokol.app; +const simgui = sokol.imgui; + +const enabled = options.has_imgui; + +var global_allocator: ?std.mem.Allocator = null; + +pub const WindowOptions = struct { + name: [*c]const u8, + pos: ?Vec2 = null, + size: ?Vec2 = null, + collapsed: ?bool = null, + open: ?*bool = null +}; + +pub const SliderOptions = struct { + label: [*c]const u8, + value: *f32, + min: f32, + max: f32, +}; + +fn toImVec2(vec2: Vec2) ig.ImVec2 { + return ig.ImVec2{ + .x = vec2.x, + .y = vec2.y, + }; +} + +inline fn structCast(T: type, value: anytype) T { + return @as(*T, @ptrFromInt(@intFromPtr(&value))).*; +} + +pub fn setup(gpa: std.mem.Allocator, desc: simgui.Desc) void { + if (!enabled) { + return; + } + + global_allocator = gpa; + simgui.setup(desc); +} + +pub fn addFont(ttf_data: []const u8, font_size: f32) void { + if (!enabled) { + return; + } + + var font_config: ig.ImFontConfig = .{}; + font_config.FontDataOwnedByAtlas = false; + font_config.OversampleH = 2; + font_config.OversampleV = 2; + font_config.GlyphMaxAdvanceX = std.math.floatMax(f32); + font_config.RasterizerMultiply = 1.0; + font_config.RasterizerDensity = 1.0; + font_config.EllipsisChar = 0; + + const io = ig.igGetIO(); + _ = ig.ImFontAtlas_AddFontFromMemoryTTF( + io.*.Fonts, + @constCast(@ptrCast(ttf_data.ptr)), + @intCast(ttf_data.len), + font_size, + &font_config, + null + ); +} + +pub fn shutdown() void { + if (!enabled) { + return; + } + + simgui.shutdown(); +} + +pub fn handleEvent(ev: sapp.Event) bool { + if (enabled) { + return simgui.handleEvent(ev); + } else { + return false; + } +} + +pub fn newFrame(desc: simgui.FrameDesc) void { + if (!enabled) { + return; + } + + simgui.newFrame(desc); +} + +pub fn render() void { + if (!enabled) { + return; + } + + simgui.render(); +} + +pub fn beginWindow(opts: WindowOptions) bool { + if (!enabled) { + return false; + } + + if (opts.pos) |pos| { + ig.igSetNextWindowPos(toImVec2(pos), ig.ImGuiCond_Once); + } + if (opts.size) |size| { + ig.igSetNextWindowSize(toImVec2(size), ig.ImGuiCond_Once); + } + if (opts.collapsed) |collapsed| { + ig.igSetNextWindowCollapsed(collapsed, ig.ImGuiCond_Once); + } + + ig.igSetNextWindowBgAlpha(1); + + var open = ig.igBegin(opts.name, opts.open, ig.ImGuiWindowFlags_None); + if (opts.open) |opts_open| { + if (opts_open.* == false) { + open = false; + } + } + if (!open) { + endWindow(); + } + + return open; +} + +pub fn endWindow() void { + if (!enabled) { + return; + } + + ig.igEnd(); +} + +pub fn textFmt(comptime fmt: []const u8, args: anytype) void { + if (!enabled) { + return; + } + + const formatted = std.fmt.allocPrintSentinel(global_allocator, fmt, args, 0) catch return; + defer global_allocator.free(formatted); + + text(formatted); +} + +pub fn text(text_z: [*c]const u8) void { + if (!enabled) { + return; + } + + ig.igText("%s", text_z); +} + +pub fn beginDisabled(disabled: bool) void { + if (!enabled) { + return; + } + + ig.igBeginDisabled(disabled); +} + +pub fn endDisabled() void { + if (!enabled) { + return; + } + + ig.igEndDisabled(); +} + +pub fn button(label: [*c]const u8) bool { + if (!enabled) { + return false; + } + + return ig.igButton(label); +} + +pub fn slider(opts: SliderOptions) bool { + if (!enabled) { + return false; + } + + return ig.igSliderFloat(opts.label, opts.value, opts.min, opts.max); +} + +pub fn checkbox(label: [*c]const u8, value: *bool) bool { + if (!enabled) { + return false; + } + + return ig.igCheckbox(label, value); +} + +pub fn beginTabBar(id: [*c]const u8) bool { + if (!enabled) { + return false; + } + + return ig.igBeginTabBar(id, ig.ImGuiTabBarFlags_None); +} + +pub fn endTabBar() void { + if (!enabled) { + return; + } + + ig.igEndTabBar(); +} + +pub fn beginTabItem(label: [*c]const u8) bool { + if (!enabled) { + return false; + } + + return ig.igBeginTabItem(label, null, ig.ImGuiTabItemFlags_None); +} + +pub fn endTabItem() void { + if (!enabled) { + return; + } + + return ig.igEndTabItem(); +} + +pub fn beginGroup() void { + if (!enabled) { + return; + } + + ig.igBeginGroup(); +} + +pub fn endGroup() void { + if (!enabled) { + return; + } + + ig.igEndGroup(); +} + +pub fn sameLine() void { + if (!enabled) { + return; + } + + ig.igSameLine(); +} + +pub fn beginTable(id: [*c]const u8, columns: u32, flags: ig.ImGuiTableFlags) bool { + if (!enabled) { + return false; + } + + return ig.igBeginTable(id, @intCast(columns), flags); +} + +pub fn endTable() void { + if (!enabled) { + return; + } + + ig.igEndTable(); +} + +pub fn tableNextColumn() void { + if (!enabled) { + return; + } + + _ = ig.igTableNextColumn(); +} + +pub fn tableNextRow() void { + if (!enabled) { + return; + } + + _ = ig.igTableNextRow(); +} + +pub fn tableSetColumnIndex(index: usize) void { + if (!enabled) { + return; + } + + _ = ig.igTableSetColumnIndex(@intCast(index)); +} + +pub fn tableSetupColumn(label: [*c]const u8, flags: ig.ImGuiTableColumnFlags) void { + if (!enabled) { + return; + } + + ig.igTableSetupColumn(label, flags); +} + +pub fn tableHeadersRow() void { + if (!enabled) { + return; + } + + ig.igTableHeadersRow(); +} + +pub const ID = union(enum) { + string: []const u8, + int: i32 +}; + +pub fn pushID(id: ID) void { + if (!enabled) { + return; + } + + switch (id) { + .string => |str| ig.igPushIDStr(str.ptr, str.ptr + str.len), + .int => |int| ig.igPushIDInt(int) + } +} + +pub fn popID() void { + if (!enabled) { + return; + } + + ig.igPopID(); +} + +pub const TreeNodeFlags = packed struct { + selected: bool = false, + framed: bool = false, + allow_overlap: bool = false, + no_tree_pushOnOpen: bool = false, + no_auto_open_on_log: bool = false, + default_open: bool = false, + open_on_double_click: bool = false, + open_on_arrow: bool = false, + leaf: bool = false, + bullet: bool = false, + frame_padding: bool = false, + span_avail_width: bool = false, + span_full_width: bool = false, + span_label_width: bool = false, + span_all_columns: bool = false, + label_span_all_columns: bool = false, + nav_left_jumps_back_here: bool = false, + collapsing_header: bool = false, + + fn toInt(self: TreeNodeFlags) u32 { + // TODO: Try using comptime to reduce this duplication. + // Would be great if `toInt()` could be replaced with just a @bitCast + // + // If the underlying C enum is exhaustive, maybe a bitcast could be performed? + // If the order of enums is correct + const flags = .{ + .{ self.selected, ig.ImGuiTreeNodeFlags_Selected }, + .{ self.framed, ig.ImGuiTreeNodeFlags_Framed }, + .{ self.allow_overlap, ig.ImGuiTreeNodeFlags_AllowOverlap }, + .{ self.no_tree_pushOnOpen, ig.ImGuiTreeNodeFlags_NoTreePushOnOpen }, + .{ self.no_auto_open_on_log, ig.ImGuiTreeNodeFlags_NoAutoOpenOnLog }, + .{ self.default_open, ig.ImGuiTreeNodeFlags_DefaultOpen }, + .{ self.open_on_double_click, ig.ImGuiTreeNodeFlags_OpenOnDoubleClick }, + .{ self.open_on_arrow, ig.ImGuiTreeNodeFlags_OpenOnArrow }, + .{ self.leaf, ig.ImGuiTreeNodeFlags_Leaf }, + .{ self.bullet, ig.ImGuiTreeNodeFlags_Bullet }, + .{ self.frame_padding, ig.ImGuiTreeNodeFlags_FramePadding }, + .{ self.span_avail_width, ig.ImGuiTreeNodeFlags_SpanAvailWidth }, + .{ self.span_full_width, ig.ImGuiTreeNodeFlags_SpanFullWidth }, + .{ self.span_label_width, ig.ImGuiTreeNodeFlags_SpanLabelWidth }, + .{ self.span_all_columns, ig.ImGuiTreeNodeFlags_SpanAllColumns }, + .{ self.label_span_all_columns, ig.ImGuiTreeNodeFlags_LabelSpanAllColumns }, + .{ self.nav_left_jumps_back_here, ig.ImGuiTreeNodeFlags_NavLeftJumpsBackHere }, + .{ self.collapsing_header, ig.ImGuiTreeNodeFlags_CollapsingHeader }, + }; + + var sum: u32 = 0; + inline for (flags) |flag_pair| { + if (flag_pair[0]) { + sum += flag_pair[1]; + } + } + return sum; + } +}; + +pub fn treeNode(label: [*c]const u8, flags: TreeNodeFlags) bool { + if (!enabled) { + return false; + } + + return ig.igTreeNodeEx(label, @intCast(flags.toInt())); +} + +pub fn treePop() void { + if (!enabled) { + return; + } + + ig.igTreePop(); +} + +pub fn isItemClicked() bool { + if (!enabled) { + return false; + } + + return ig.igIsItemClicked(); +} + +pub fn isItemToggledOpen() bool { + if (!enabled) { + return false; + } + + return ig.igIsItemToggledOpen(); +} + +pub fn colorPicker4(label: [*c]const u8, color: *Vec4) bool { + if (!enabled) { + return false; + } + + return ig.igColorPicker4(label, color.asArray().ptr, 0, null); +} + +pub fn colorEdit4(label: [*c]const u8, color: *Vec4) bool { + if (!enabled) { + return false; + } + + return ig.igColorEdit4(label, color.asArray().ptr, 0); +} + +pub fn beginCombo(label: [*c]const u8, preview_value: [*c]const u8) bool { + if (!enabled) { + return false; + } + + return ig.igBeginCombo(label, preview_value, 0); +} + +pub fn endCombo() void { + if (!enabled) { + return; + } + + ig.igEndCombo(); +} + +pub fn selectable(label: [*c]const u8, selected: bool) bool { + if (!enabled) { + return false; + } + + return ig.igSelectableEx(label, selected, 0, .{ }); +} + +pub fn setItemDefaultFocus() void { + if (!enabled) { + return; + } + + ig.igSetItemDefaultFocus(); +} + +pub fn combo(label: [*c]const u8, items: []const [*c]const u8, selected: *usize) void { + if (beginCombo(label, items[selected.*])) { + defer endCombo(); + + for (0.., items) |i, item| { + const is_selected = selected.* == i; + if (selectable(item, is_selected)) { + selected.* = i; + } + + if (is_selected) { + setItemDefaultFocus(); + } + } + } +} + +pub fn separator() void { + if (!enabled) { + return; + } + + ig.igSeparator(); +} diff --git a/src/libs/sokol_fontstash_impl.c b/src/libs/sokol_fontstash_impl.c new file mode 100644 index 0000000..6c3ba3d --- /dev/null +++ b/src/libs/sokol_fontstash_impl.c @@ -0,0 +1,85 @@ +#include "stdlib.h" +#include "stdio.h" +#include "stdbool.h" +#include +#define FONTSTASH_IMPLEMENTATION +#include "fontstash.h" + +#include "sokol/sokol_gfx.h" +#include "sokol/sokol_gl.h" +#define SOKOL_FONTSTASH_IMPL +#include "sokol_fontstash.h" + +typedef struct FONSstate FONSstate; + +// Expose private functions so that `getTextBoundsUtf8` could be implemented in zig +FONSstate* zig_fons__getState(FONScontext* stash) +{ + return fons__getState(stash); +} + +FONSfont* zig_getFont(FONScontext* stash, int index) +{ + if (index < 0 || index >= stash->nfonts) { + return NULL; + } + FONSfont *font = stash->fonts[index]; + if (font->data == NULL) { + return NULL; + } + + return font; +} + +bool zig_isTopLeft(FONScontext* stash) +{ + return stash->params.flags & FONS_ZERO_TOPLEFT; +} + +int zig_getGlyphIndex(FONSglyph* glyph) +{ + return glyph->index; +} + +float zig_fons__tt_getPixelHeightScale(FONSfont *font, float size) +{ + return fons__tt_getPixelHeightScale(&font->font, size); +} + +float zig_fons__getVertAlign(FONScontext* stash, FONSfont* font, int align, short isize) +{ + return fons__getVertAlign(stash, font, align, isize); +} + +FONSglyph* zig_fons__getGlyph( + FONScontext* stash, + FONSfont* font, + unsigned int codepoint, + short isize, + short iblur +) +{ + return fons__getGlyph(stash, font, codepoint, isize, iblur); +} + +void zig_fons__getQuad( + FONScontext* stash, + FONSfont* font, + int prevGlyphIndex, FONSglyph* glyph, + float scale, + float spacing, + float* x, float* y, + FONSquad* q +) +{ + fons__getQuad( + stash, + font, + prevGlyphIndex, + glyph, + scale, + spacing, + x, y, + q + ); +} diff --git a/src/libs/stb_image.c b/src/libs/stb_image.c new file mode 100644 index 0000000..8ddfd1f --- /dev/null +++ b/src/libs/stb_image.c @@ -0,0 +1,2 @@ +#define STB_IMAGE_IMPLEMENTATION +#include "stb_image.h" diff --git a/src/main.zig b/src/main.zig index 6339766..fa13212 100644 --- a/src/main.zig +++ b/src/main.zig @@ -1,6 +1,328 @@ const std = @import("std"); +const tracy = @import("tracy"); +const Gfx = @import("./graphics.zig"); +const builtin = @import("builtin"); + +const Window = @import("./window.zig"); +const Event = Window.Event; +const MouseButton = Window.MouseButton; + +const Math = @import("./math.zig"); +const Vec2 = Math.Vec2; + +const sokol = @import("sokol"); +const slog = sokol.log; +const sg = sokol.gfx; +const sapp = sokol.app; +const sglue = sokol.glue; + +const log = std.log.scoped(.ui); + +var window: Window = undefined; +var event_queue: std.ArrayListUnmanaged(Event) = .empty; +var mouse_inside_window: bool = false; +var event_queue_full_shown = false; +var sokol_logger: sapp.Logger = .{ .func = sokolLogCallback }; + +fn signalHandler(sig: i32) callconv(.c) void { + _ = sig; + sapp.requestQuit(); +} + +fn initErrorable() !void { + // const allocator = window.app.allocator; + + try Gfx.init(.{ + .allocator = window.gpa, + .logger = @as(*sokol.gfx.Logger, @ptrFromInt(@intFromPtr(&sokol_logger))).*, + }); +} + +export fn init() void { + var zone = tracy.initZone(@src(), .{ }); + defer zone.deinit(); + + initErrorable() catch |e| { + log.err("init() failed: {}", .{e}); + sapp.requestQuit(); + }; +} + +fn cStrToZig(c_str: [*c]const u8) [:0]const u8 { + return @import("std").mem.span(c_str); +} + +fn sokolLogFmt(log_level: u32, comptime format: []const u8, args: anytype) void { + const log_sokol = std.log.scoped(.sokol); + + if (log_level == 0) { + log_sokol.err(format, args); + } else if (log_level == 1) { + log_sokol.err(format, args); + } else if (log_level == 2) { + log_sokol.warn(format, args); + } else { + log_sokol.info(format, args); + } +} + +fn sokolLogCallback(tag: [*c]const u8, log_level: u32, log_item: u32, message: [*c]const u8, line_nr: u32, filename: [*c]const u8, user_data: ?*anyopaque) callconv(.c) void { + _ = user_data; + + if (filename != null) { + const format = "[{s}][id:{}] {s}:{}: {s}"; + const args = .{ + cStrToZig(tag orelse "-"), + log_item, + std.fs.path.basename(cStrToZig(filename orelse "-")), + line_nr, + cStrToZig(message orelse "") + }; + + sokolLogFmt(log_level, format, args); + } else { + const format = "[{s}][id:{}] {s}"; + const args = .{ + cStrToZig(tag orelse "-"), + log_item, + cStrToZig(message orelse "") + }; + + sokolLogFmt(log_level, format, args); + } +} + +fn frameErrorable() !void { + Gfx.beginFrame(); + defer Gfx.endFrame(); + + // try window.frame(event_queue.items); + event_queue.clearRetainingCapacity(); +} + +export fn frame() void { + tracy.frameMark(); + + const zone = tracy.initZone(@src(), .{ }); + defer zone.deinit(); + + frameErrorable() catch |e| { + log.err("frame() failed: {}", .{e}); + if (@errorReturnTrace()) |trace| { + std.debug.dumpStackTrace(trace.*); + } + sapp.requestQuit(); + }; +} + +export fn cleanup() void { + const zone = tracy.initZone(@src(), .{ }); + defer zone.deinit(); + + // window.beforeExit() catch |e| { + // log.err("window.beforeExit() failed: {}", .{e}); + // if (@errorReturnTrace()) |trace| { + // std.debug.dumpStackTrace(trace.*); + // } + // }; + + // const allocator = window.app.allocator; + + window.deinit(); + Gfx.deinit(); + // event_queue.deinit(allocator); +} + +fn appendToEventQueue(e_ptr: [*c]const sapp.Event) !bool { + const e = e_ptr.*; + blk: switch (e.type) { + .MOUSE_DOWN => { + const mouse_button = Window.MouseButton.fromSokol(e.mouse_button) orelse break :blk; + + try appendEvent(Event{ + .mouse_pressed = .{ + .button = mouse_button, + .position = Vec2.init(e.mouse_x, e.mouse_y) + } + }); + + return true; + }, + .MOUSE_UP => { + const mouse_button = MouseButton.fromSokol(e.mouse_button) orelse break :blk; + + try appendEvent(Event{ + .mouse_released = .{ + .button = mouse_button, + .position = Vec2.init(e.mouse_x, e.mouse_y) + } + }); + + return true; + }, + .MOUSE_MOVE => { + if (!mouse_inside_window) { + try appendEvent(Event{ + .mouse_enter = Vec2.init(e.mouse_x, e.mouse_y) + }); + } + + try appendEvent(Event{ + .mouse_move = Vec2.init(e.mouse_x, e.mouse_y) + }); + + mouse_inside_window = true; + return true; + }, + .MOUSE_ENTER => { + if (!mouse_inside_window) { + try appendEvent(Event{ + .mouse_enter = Vec2.init(e.mouse_x, e.mouse_y) + }); + } + + mouse_inside_window = true; + return true; + }, + .RESIZED => { + if (mouse_inside_window) { + try appendEvent(Event{ + .mouse_leave = {} + }); + } + + try appendEvent(Event{ + .window_resize = {} + }); + + mouse_inside_window = false; + return true; + }, + .MOUSE_LEAVE => { + if (mouse_inside_window) { + try appendEvent(Event{ + .mouse_leave = {} + }); + } + + mouse_inside_window = false; + return true; + }, + .MOUSE_SCROLL => { + try appendEvent(Event{ + .mouse_scroll = Vec2.init(e.scroll_x, e.scroll_y) + }); + + return true; + }, + .KEY_DOWN => { + try appendEvent(Event{ + .key_pressed = .{ + .code = @enumFromInt(@intFromEnum(e.key_code)), + .repeat = e.key_repeat + } + }); + + return true; + }, + .KEY_UP => { + try appendEvent(Event{ + .key_released = @enumFromInt(@intFromEnum(e.key_code)) + }); + + return true; + }, + .CHAR => { + try appendEvent(Event{ + .char = @intCast(e.char_code) + }); + + return true; + }, + .QUIT_REQUESTED => { + // TODO: handle quit request. Maybe show confirmation window in certain cases. + }, + else => {} + } + + return false; +} + +fn appendEvent(e: Event) !void { + event_queue.appendBounded(e) catch return error.EventQueueFull; +} + +export fn event(e_ptr: [*c]const sapp.Event) void { + const zone = tracy.initZone(@src(), .{ }); + defer zone.deinit(); + + if (Gfx.event(e_ptr)) { + appendEvent(Event{ + .mouse_leave = {} + }) catch {}; + mouse_inside_window = false; + return; + } + + const consumed_event = appendToEventQueue(e_ptr) catch |e| switch (e) { + error.EventQueueFull => blk: { + if (!event_queue_full_shown) { + log.warn("Event queue is full! Frame is taking too long to process", .{}); + event_queue_full_shown = true; + } + break :blk false; + }, + // else => blk: { + // log.err("Failed to append event to queue: {}", .{e}); + // if (@errorReturnTrace()) |trace| { + // std.debug.dumpStackTrace(trace.*); + // } + // break :blk false; + // } + }; + + if (consumed_event) { + event_queue_full_shown = false; + sapp.consumeEvent(); + } +} pub fn main() !void { - // Prints to stderr, ignoring potential errors. - std.debug.print("All your {s} are belong to us.\n", .{"codebase"}); + var debug_allocator: std.heap.DebugAllocator(.{}) = .init; + defer _ = debug_allocator.deinit(); + + var gpa: std.mem.Allocator = undefined; + if (builtin.mode == .ReleaseFast) { + gpa = std.heap.smp_allocator; + } else { + gpa = debug_allocator.allocator(); + } + + // TODO: Use tracy TracingAllocator + + tracy.setThreadName("Main"); + + try Window.init(&window, gpa); + + var sa: std.posix.Sigaction = .{ + .handler = .{ .handler = signalHandler }, + .mask = std.posix.sigemptyset(), + .flags = std.posix.SA.RESTART, + }; + std.posix.sigaction(std.posix.SIG.INT, &sa, null); + + sapp.run(.{ + .init_cb = init, + .frame_cb = frame, + .cleanup_cb = cleanup, + .event_cb = event, + .width = 640, + .height = 480, + .icon = .{ .sokol_default = true }, + .high_dpi = true, + .sample_count = 4, + .window_title = "Game", + .logger = sokol_logger, + }); } + diff --git a/src/math.zig b/src/math.zig new file mode 100644 index 0000000..0f35670 --- /dev/null +++ b/src/math.zig @@ -0,0 +1,399 @@ +const std = @import("std"); +const assert = std.debug.assert; + +pub const bytes_per_kib = 1024; +pub const bytes_per_mib = bytes_per_kib * 1024; +pub const bytes_per_gib = bytes_per_mib * 1024; + +pub const bytes_per_kb = 1000; +pub const bytes_per_mb = bytes_per_kb * 1000; +pub const bytes_per_gb = bytes_per_mb * 1000; + +pub const Vec2 = extern struct { + x: f32, + y: f32, + + pub const zero = init(0, 0); + + pub fn init(x: f32, y: f32) Vec2 { + return Vec2{ + .x = x, + .y = y, + }; + } + + pub fn initAngle(angle: f32) Vec2 { + return Vec2{ + .x = @cos(angle), + .y = @sin(angle), + }; + } + + pub fn rotateLeft90(self: Vec2) Vec2 { + return Vec2.init(self.y, -self.x); + } + + pub fn rotateRight90(self: Vec2) Vec2 { + return Vec2.init(-self.y, self.x); + } + + pub fn flip(self: Vec2) Vec2 { + return Vec2.init(-self.x, -self.y); + } + + pub fn add(self: Vec2, other: Vec2) Vec2 { + return Vec2.init( + self.x + other.x, + self.y + other.y, + ); + } + + pub fn sub(self: Vec2, other: Vec2) Vec2 { + return Vec2.init( + self.x - other.x, + self.y - other.y, + ); + } + + pub fn multiplyScalar(self: Vec2, value: f32) Vec2 { + return Vec2.init( + self.x * value, + self.y * value, + ); + } + + pub fn multiply(self: Vec2, other: Vec2) Vec2 { + return Vec2.init( + self.x * other.x, + self.y * other.y, + ); + } + + pub fn divide(self: Vec2, other: Vec2) Vec2 { + return Vec2.init( + self.x / other.x, + self.y / other.y, + ); + } + + pub fn divideScalar(self: Vec2, value: f32) Vec2 { + return Vec2.init( + self.x / value, + self.y / value, + ); + } + + pub fn length(self: Vec2) f32 { + return @sqrt(self.x*self.x + self.y*self.y); + } + + pub fn distance(self: Vec2, other: Vec2) f32 { + return self.sub(other).length(); + } + + pub fn limitLength(self: Vec2, max_length: f32) Vec2 { + const self_length = self.length(); + if (self_length > max_length) { + return Vec2.init(self.x / self_length * max_length, self.y / self_length * max_length); + } else { + return self; + } + } + + pub fn normalized(self: Vec2) Vec2 { + const self_length = self.length(); + if (self_length == 0) { + return Vec2.init(0, 0); + } + return Vec2.init(self.x / self_length, self.y / self_length); + } + + pub fn initScalar(value: f32) Vec2 { + return Vec2.init(value, value); + } + + pub fn eql(self: Vec2, other: Vec2) bool { + return self.x == other.x and self.y == other.y; + } + + pub fn format(self: Vec2, writer: *std.io.Writer) std.io.Writer.Error!void { + try writer.print("Vec2{{ {d}, {d} }}", .{ self.x, self.y }); + } +}; + +pub const Vec3 = extern struct { + x: f32, y: f32, z: f32, + + pub const zero = init(0, 0, 0); + + pub fn init(x: f32, y: f32, z: f32) Vec3 { + return Vec3{ + .x = x, + .y = y, + .z = z, + }; + } + + pub fn initScalar(value: f32) Vec3 { + return Vec3.init(value, value, value); + } + + pub fn asArray(self: *Vec3) []f32 { + const ptr: [*]f32 = @alignCast(@ptrCast(@as(*anyopaque, @ptrCast(self)))); + return ptr[0..3]; + } + + pub fn lerp(a: Vec3, b: Vec3, t: f32) Vec3 { + return Vec3.init( + std.math.lerp(a.x, b.x, t), + std.math.lerp(a.y, b.y, t), + std.math.lerp(a.z, b.z, t), + ); + } + + pub fn clamp(self: Vec3, min_value: f32, max_value: f32) Vec3 { + return Vec3.init( + std.math.clamp(self.x, min_value, max_value), + std.math.clamp(self.y, min_value, max_value), + std.math.clamp(self.z, min_value, max_value), + ); + } +}; + +pub const Vec4 = extern struct { + x: f32, y: f32, z: f32, w: f32, + + pub const zero = init(0, 0, 0, 0); + + pub fn init(x: f32, y: f32, z: f32, w: f32) Vec4 { + return Vec4{ + .x = x, + .y = y, + .z = z, + .w = w + }; + } + + pub fn initVec3XYZ(vec3: Vec3, w: f32) Vec4 { + return init(vec3.x, vec3.y, vec3.z, w); + } + + pub fn initScalar(value: f32) Vec4 { + return Vec4.init(value, value, value, value); + } + + pub fn multiplyMat4(left: Vec4, right: Mat4) Vec4 { + var result: Vec4 = undefined; + + // TODO: SIMD + + result.x = left.x * right.columns[0][0]; + result.y = left.x * right.columns[0][1]; + result.z = left.x * right.columns[0][2]; + result.w = left.x * right.columns[0][3]; + + result.x += left.y * right.columns[1][0]; + result.y += left.y * right.columns[1][1]; + result.z += left.y * right.columns[1][2]; + result.w += left.y * right.columns[1][3]; + + result.x += left.z * right.columns[2][0]; + result.y += left.z * right.columns[2][1]; + result.z += left.z * right.columns[2][2]; + result.w += left.z * right.columns[2][3]; + + result.x += left.w * right.columns[3][0]; + result.y += left.w * right.columns[3][1]; + result.z += left.w * right.columns[3][2]; + result.w += left.w * right.columns[3][3]; + + return result; + } + + pub fn multiply(left: Vec4, right: Vec4) Vec4 { + return init( + left.x * right.x, + left.y * right.y, + left.z * right.z, + left.w * right.w + ); + } + + pub fn asArray(self: *Vec4) []f32 { + const ptr: [*]f32 = @alignCast(@ptrCast(@as(*anyopaque, @ptrCast(self)))); + return ptr[0..4]; + } + + pub fn initArray(array: []const f32) Vec4 { + return Vec4.init(array[0], array[1], array[2], array[3]); + } + + pub fn lerp(a: Vec4, b: Vec4, t: f32) Vec4 { + return Vec4.init( + std.math.lerp(a.x, b.x, t), + std.math.lerp(a.y, b.y, t), + std.math.lerp(a.z, b.z, t), + std.math.lerp(a.w, b.w, t), + ); + } + + pub fn clamp(self: Vec4, min_value: f32, max_value: f32) Vec4 { + return Vec4.init( + std.math.clamp(self.x, min_value, max_value), + std.math.clamp(self.y, min_value, max_value), + std.math.clamp(self.z, min_value, max_value), + std.math.clamp(self.w, min_value, max_value), + ); + } + + pub fn toVec3XYZ(self: Vec4) Vec3 { + return Vec3.init(self.x, self.y, self.z); + } +}; + +pub const Mat4 = extern struct { + columns: [4][4]f32, + + pub fn initZero() Mat4 { + var self: Mat4 = undefined; + @memset(self.asArray(), 0); + return self; + } + + pub fn initIdentity() Mat4 { + return Mat4.initDiagonal(1); + } + + pub fn initDiagonal(value: f32) Mat4 { + var self = Mat4.initZero(); + self.columns[0][0] = value; + self.columns[1][1] = value; + self.columns[2][2] = value; + self.columns[3][3] = value; + return self; + } + + pub fn multiply(left: Mat4, right: Mat4) Mat4 { + var self: Mat4 = undefined; + + inline for (.{ 0, 1, 2, 3 }) |i| { + var column = Vec4.initArray(&right.columns[i]).multiplyMat4(left); + @memcpy(&self.columns[i], column.asArray()); + } + + return self; + } + + pub fn initScale(scale: Vec3) Mat4 { + var self = Mat4.initIdentity(); + self.columns[0][0] = scale.x; + self.columns[1][1] = scale.y; + self.columns[2][2] = scale.z; + return self; + } + + pub fn initTranslate(offset: Vec3) Mat4 { + var self = Mat4.initIdentity(); + self.columns[3][0] = offset.x; + self.columns[3][1] = offset.y; + self.columns[3][2] = offset.z; + return self; + } + + pub fn asArray(self: *Mat4) []f32 { + const ptr: [*]f32 = @alignCast(@ptrCast(@as(*anyopaque, @ptrCast(&self.columns)))); + return ptr[0..16]; + } +}; + +pub const Rect = struct { + pos: Vec2, + size: Vec2, + + pub const zero = Rect{ + .pos = Vec2.zero, + .size = Vec2.zero + }; + + pub fn init(x: f32, y: f32, width: f32, height: f32) Rect { + return Rect{ + .pos = Vec2.init(x, y), + .size = Vec2.init(width, height) + }; + } + + pub fn clip(self: Rect, other: Rect) Rect { + const left_edge = @max(self.left(), other.left()); + const right_edge = @min(self.right(), other.right()); + const top_edge = @max(self.top(), other.top()); + const bottom_edge = @min(self.bottom(), other.bottom()); + return Rect.init( + left_edge, + top_edge, + right_edge - left_edge, + bottom_edge - top_edge + ); + } + + pub fn left(self: Rect) f32 { + return self.pos.x; + } + + pub fn right(self: Rect) f32 { + return self.pos.x + self.size.x; + } + + pub fn top(self: Rect) f32 { + return self.pos.y; + } + + pub fn bottom(self: Rect) f32 { + return self.pos.y + self.size.y; + } + + pub fn isInside(self: Rect, pos: Vec2) bool { + const x_overlap = self.pos.x <= pos.x and pos.x < self.pos.x + self.size.x; + const y_overlap = self.pos.y <= pos.y and pos.y < self.pos.y + self.size.y; + return x_overlap and y_overlap; + } +}; + +pub const Line = struct { + p0: Vec2, + p1: Vec2 +}; + +pub fn isInsideRect(rect_pos: Vec2, rect_size: Vec2, pos: Vec2) bool { + const rect = Rect{ + .pos = rect_pos, + .size = rect_size + }; + return rect.isInside(pos); +} + +pub fn rgba(r: u8, g: u8, b: u8, a: f32) Vec4 { + assert(0 <= a and a <= 1); + return Vec4.init( + @as(f32, @floatFromInt(r)) / 255, + @as(f32, @floatFromInt(g)) / 255, + @as(f32, @floatFromInt(b)) / 255, + a, + ); +} + +pub fn rgb(r: u8, g: u8, b: u8) Vec4 { + return rgba(r, g, b, 1); +} + +pub fn rgb_hex(text: []const u8) ?Vec4 { + if (text.len != 7) { + return null; + } + if (text[0] != '#') { + return null; + } + const r = std.fmt.parseInt(u8, text[1..3], 16) catch return null; + const g = std.fmt.parseInt(u8, text[3..5], 16) catch return null; + const b = std.fmt.parseInt(u8, text[5..7], 16) catch return null; + return rgb(r, g, b); +} diff --git a/src/window.zig b/src/window.zig new file mode 100644 index 0000000..79685e3 --- /dev/null +++ b/src/window.zig @@ -0,0 +1,187 @@ +const std = @import("std"); +const Allocator = std.mem.Allocator; + +const sokol = @import("sokol"); + +const Math = @import("./math.zig"); +const Vec2 = Math.Vec2; + +const Window = @This(); + +pub const MouseButton = enum { + left, + right, + middle, + + pub fn fromSokol(mouse_button: sokol.app.Mousebutton) ?MouseButton { + return switch(mouse_button) { + .LEFT => MouseButton.left, + .RIGHT => MouseButton.right, + .MIDDLE => MouseButton.middle, + else => null + }; + } +}; + +pub const KeyCode = enum(std.math.IntFittingRange(0, sokol.app.max_keycodes-1)) { + SPACE = 32, + APOSTROPHE = 39, + COMMA = 44, + MINUS = 45, + PERIOD = 46, + SLASH = 47, + _0 = 48, + _1 = 49, + _2 = 50, + _3 = 51, + _4 = 52, + _5 = 53, + _6 = 54, + _7 = 55, + _8 = 56, + _9 = 57, + SEMICOLON = 59, + EQUAL = 61, + A = 65, + B = 66, + C = 67, + D = 68, + E = 69, + F = 70, + G = 71, + H = 72, + I = 73, + J = 74, + K = 75, + L = 76, + M = 77, + N = 78, + O = 79, + P = 80, + Q = 81, + R = 82, + S = 83, + T = 84, + U = 85, + V = 86, + W = 87, + X = 88, + Y = 89, + Z = 90, + LEFT_BRACKET = 91, + BACKSLASH = 92, + RIGHT_BRACKET = 93, + GRAVE_ACCENT = 96, + WORLD_1 = 161, + WORLD_2 = 162, + ESCAPE = 256, + ENTER = 257, + TAB = 258, + BACKSPACE = 259, + INSERT = 260, + DELETE = 261, + RIGHT = 262, + LEFT = 263, + DOWN = 264, + UP = 265, + PAGE_UP = 266, + PAGE_DOWN = 267, + HOME = 268, + END = 269, + CAPS_LOCK = 280, + SCROLL_LOCK = 281, + NUM_LOCK = 282, + PRINT_SCREEN = 283, + PAUSE = 284, + F1 = 290, + F2 = 291, + F3 = 292, + F4 = 293, + F5 = 294, + F6 = 295, + F7 = 296, + F8 = 297, + F9 = 298, + F10 = 299, + F11 = 300, + F12 = 301, + F13 = 302, + F14 = 303, + F15 = 304, + F16 = 305, + F17 = 306, + F18 = 307, + F19 = 308, + F20 = 309, + F21 = 310, + F22 = 311, + F23 = 312, + F24 = 313, + F25 = 314, + KP_0 = 320, + KP_1 = 321, + KP_2 = 322, + KP_3 = 323, + KP_4 = 324, + KP_5 = 325, + KP_6 = 326, + KP_7 = 327, + KP_8 = 328, + KP_9 = 329, + KP_DECIMAL = 330, + KP_DIVIDE = 331, + KP_MULTIPLY = 332, + KP_SUBTRACT = 333, + KP_ADD = 334, + KP_ENTER = 335, + KP_EQUAL = 336, + LEFT_SHIFT = 340, + LEFT_CONTROL = 341, + LEFT_ALT = 342, + LEFT_SUPER = 343, + RIGHT_SHIFT = 344, + RIGHT_CONTROL = 345, + RIGHT_ALT = 346, + RIGHT_SUPER = 347, + MENU = 348, +}; + +pub const Event = union(enum) { + mouse_pressed: struct { + button: MouseButton, + position: Vec2, + }, + mouse_released: struct { + button: MouseButton, + position: Vec2, + }, + mouse_move: Vec2, + mouse_enter: Vec2, + mouse_leave, + mouse_scroll: Vec2, + key_pressed: struct { + code: KeyCode, + repeat: bool + }, + key_released: KeyCode, + window_resize, + char: u21, +}; + +gpa: Allocator, +events: std.ArrayList(Event), + +pub fn init(self: *Window, gpa: Allocator) !void { + self.* = Window{ + .gpa = gpa, + .events = .empty + // .last_frame_at_ns = std.time.nanoTimestamp(), + // .frame_arena = ArenaAllocator.init(gpa), + }; +} + +pub fn deinit(self: *Window) void { + const gpa = self.gpa; + _ = gpa; // autofix + +}