From 53e0fb54654a8d53b456200d04c6fbc195b96740 Mon Sep 17 00:00:00 2001 From: Yaodong Zhao Date: Sun, 11 Aug 2024 14:28:42 -0700 Subject: [PATCH] Initial commit --- .github/workflows/deploy.yaml | 29 +++ .gitignore | 10 + Gemfile | 8 + Gemfile.lock | 109 ++++++++++ Procfile.dev | 2 + _assets/stylesheets/application.css | 7 + _config.yml | 18 ++ _layouts/default.html | 12 ++ _layouts/post.html | 18 ++ ...ng-the-self-and-singleton-class-in-ruby.md | 195 ++++++++++++++++++ .../01/ruby-singleton-class-inheritance.png | Bin 0 -> 80150 bytes assets/stylesheets/.keep | 0 bin/dev | 8 + bun.lockb | Bin 0 -> 59236 bytes index.html | 28 +++ package.json | 22 ++ postcss.config.js | 8 + tailwind.config.js | 15 ++ tsconfig.json | 26 +++ 19 files changed, 515 insertions(+) create mode 100644 .github/workflows/deploy.yaml create mode 100644 .gitignore create mode 100644 Gemfile create mode 100644 Gemfile.lock create mode 100644 Procfile.dev create mode 100644 _assets/stylesheets/application.css create mode 100644 _config.yml create mode 100644 _layouts/default.html create mode 100644 _layouts/post.html create mode 100644 _posts/2024-01-28-revisiting-the-self-and-singleton-class-in-ruby.md create mode 100644 assets/images/2024/01/ruby-singleton-class-inheritance.png create mode 100644 assets/stylesheets/.keep create mode 100755 bin/dev create mode 100755 bun.lockb create mode 100644 index.html create mode 100644 package.json create mode 100644 postcss.config.js create mode 100644 tailwind.config.js create mode 100644 tsconfig.json diff --git a/.github/workflows/deploy.yaml b/.github/workflows/deploy.yaml new file mode 100644 index 0000000..f398d77 --- /dev/null +++ b/.github/workflows/deploy.yaml @@ -0,0 +1,29 @@ +name: Deploy to Github Pages + +on: + push: + branches: [ "master" ] + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Setup Pages + uses: actions/configure-pages@v5 + - name: Build + uses: actions/jekyll-build-pages@v1 + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + deploy: + runs-on: ubuntu-latest + needs: build + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..655b566 --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +.jekyll-cache +.DS_Store +.idea + +node_modules + +_site + +assets/stylesheets/* +!assets/stylesheets/.keep diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..af2f836 --- /dev/null +++ b/Gemfile @@ -0,0 +1,8 @@ +source "https://rubygems.org" + +gem "jekyll", "~> 4.3.3" + +group :jekyll_plugins do + gem "jekyll-feed", "~> 0.12" + gem "jekyll-compose", "~> 0.12.0" +end diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..18ea042 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,109 @@ +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + bigdecimal (3.1.8) + colorator (1.1.0) + concurrent-ruby (1.3.4) + em-websocket (0.5.3) + eventmachine (>= 0.12.9) + http_parser.rb (~> 0) + eventmachine (1.2.7) + ffi (1.17.0) + ffi (1.17.0-arm64-darwin) + ffi (1.17.0-x86_64-darwin) + forwardable-extended (2.6.0) + google-protobuf (4.27.3) + bigdecimal + rake (>= 13) + google-protobuf (4.27.3-arm64-darwin) + bigdecimal + rake (>= 13) + google-protobuf (4.27.3-x86_64-darwin) + bigdecimal + rake (>= 13) + http_parser.rb (0.8.0) + i18n (1.14.5) + concurrent-ruby (~> 1.0) + jekyll (4.3.3) + addressable (~> 2.4) + colorator (~> 1.0) + em-websocket (~> 0.5) + i18n (~> 1.0) + jekyll-sass-converter (>= 2.0, < 4.0) + jekyll-watch (~> 2.0) + kramdown (~> 2.3, >= 2.3.1) + kramdown-parser-gfm (~> 1.0) + liquid (~> 4.0) + mercenary (>= 0.3.6, < 0.5) + pathutil (~> 0.9) + rouge (>= 3.0, < 5.0) + safe_yaml (~> 1.0) + terminal-table (>= 1.8, < 4.0) + webrick (~> 1.7) + jekyll-compose (0.12.0) + jekyll (>= 3.7, < 5.0) + jekyll-feed (0.17.0) + jekyll (>= 3.7, < 5.0) + jekyll-sass-converter (3.0.0) + sass-embedded (~> 1.54) + jekyll-watch (2.2.1) + listen (~> 3.0) + kramdown (2.4.0) + rexml + kramdown-parser-gfm (1.1.0) + kramdown (~> 2.0) + liquid (4.0.4) + listen (3.9.0) + rb-fsevent (~> 0.10, >= 0.10.3) + rb-inotify (~> 0.9, >= 0.9.10) + mercenary (0.4.0) + pathutil (0.16.2) + forwardable-extended (~> 2.6) + public_suffix (6.0.1) + rake (13.2.1) + rb-fsevent (0.11.2) + rb-inotify (0.11.1) + ffi (~> 1.0) + rexml (3.3.4) + strscan + rouge (4.3.0) + safe_yaml (1.0.5) + sass-embedded (1.77.8) + google-protobuf (~> 4.26) + rake (>= 13) + sass-embedded (1.77.8-aarch64-mingw-ucrt) + google-protobuf (~> 4.26) + sass-embedded (1.77.8-arm64-darwin) + google-protobuf (~> 4.26) + sass-embedded (1.77.8-x86-cygwin) + google-protobuf (~> 4.26) + sass-embedded (1.77.8-x86-mingw-ucrt) + google-protobuf (~> 4.26) + sass-embedded (1.77.8-x86_64-cygwin) + google-protobuf (~> 4.26) + sass-embedded (1.77.8-x86_64-darwin) + google-protobuf (~> 4.26) + strscan (3.1.0) + terminal-table (3.0.2) + unicode-display_width (>= 1.1.1, < 3) + unicode-display_width (2.5.0) + webrick (1.8.1) + +PLATFORMS + aarch64-mingw-ucrt + arm64-darwin + ruby + x86-cygwin + x86-mingw-ucrt + x86_64-cygwin + x86_64-darwin + +DEPENDENCIES + jekyll (~> 4.3.3) + jekyll-compose (~> 0.12.0) + jekyll-feed (~> 0.12) + +BUNDLED WITH + 2.5.16 diff --git a/Procfile.dev b/Procfile.dev new file mode 100644 index 0000000..89ef906 --- /dev/null +++ b/Procfile.dev @@ -0,0 +1,2 @@ +jekyll: bundle exec jekyll serve +css: bun run build:css --watch diff --git a/_assets/stylesheets/application.css b/_assets/stylesheets/application.css new file mode 100644 index 0000000..d07c81a --- /dev/null +++ b/_assets/stylesheets/application.css @@ -0,0 +1,7 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +.boundary { + @apply max-w-3xl mx-auto py-10 px-5; +} diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..60d78d2 --- /dev/null +++ b/_config.yml @@ -0,0 +1,18 @@ +# the base hostname & protocol for your site, e.g. http://example.com +url: "" + +# the subpath of your site, e.g. /blog +baseurl: "" + +# use /posts/post-name/ as permalink +permalink: /posts/:title/ + +# the name of your site, e.g. ACME Corp. +title: "def app" + +plugins: + - jekyll-feed + +exclude: + - bin + - node_modules \ No newline at end of file diff --git a/_layouts/default.html b/_layouts/default.html new file mode 100644 index 0000000..1c3f1e4 --- /dev/null +++ b/_layouts/default.html @@ -0,0 +1,12 @@ + + + + + + {{ page.title }} - {{ site.title }} + + + + {{ content }} + + diff --git a/_layouts/post.html b/_layouts/post.html new file mode 100644 index 0000000..064adf1 --- /dev/null +++ b/_layouts/post.html @@ -0,0 +1,18 @@ +--- +layout: default +--- + +
+ +
+
+

{{ page.title }}

+ {{ page.date | date: "%-d %B %Y" }} +
+ +
+ {{content}} +
+ +
+
diff --git a/_posts/2024-01-28-revisiting-the-self-and-singleton-class-in-ruby.md b/_posts/2024-01-28-revisiting-the-self-and-singleton-class-in-ruby.md new file mode 100644 index 0000000..e3f244f --- /dev/null +++ b/_posts/2024-01-28-revisiting-the-self-and-singleton-class-in-ruby.md @@ -0,0 +1,195 @@ +--- +layout: post +title: Revisiting the self and singleton class in Ruby +date: 2024-01-28 23:10:18 UTC +--- + +In Ruby, everything is an object, and every object has an anonymous class, which defines the methods the object can respond to. This anonymous class is called the _singleton class_. + +![ruby singleton class inheritance](/assets/images/2024/01/ruby-singleton-class-inheritance.png) + +When calling a method on an object, Ruby will perform the method lookup by first checking on the object’s _singleton class_, before traversing the rest of the method chain. + +## Ruby has no class methods + +The class methods are just instance methods on its _singleton class_. + +```ruby +class Animal + def self.all; end +end + +Animal.singleton_methods +#=> [:all] +Animal.singleton_class.instance_method(:all) +#=> ##all()> +``` + +## The "current class" + +Ruby always holds a reference to the current class, which is called "[default definee](https://blog.yugui.jp/entry/846)" by Yugui of the Ruby core team. Thus, if you define a method without giving an explicit receiver, the _current class_ will have the method as an instance method. + +```ruby +class Animal + def weight; end +end + +Animal.instance_method(:weight) +#=> # +``` + +If you give a receiver to a method definition, the method will be added into the _singleton class_ of the receiver. + +```ruby +word = "hello" +def word.spell; end + +word.singleton_class.instance_method(:spell) +#=> #>#spell()> +``` + +The `class` syntax changes both `self` and the _current class_ to the class which is being defined. However, method definition doesn't. + +```ruby +class Foobar + def foo + def bar; end + def self.baz; end + end +end + +f = Foobar.new +f.foo + +Foobar.instance_method(:foo) +#=> # +Foobar.instance_method(:bar) +#=> # +Foobar.singleton_methods +#=> [] +f.singleton_methods +#=> [:baz] +``` + +## The eval methods + +In Ruby, `instance_eval` and `class_eval` provide that provide the ability to modify a class or an object. The names are very similar, and their behavior is counterintuitive. + +- Use `ClassName#instance_eval` to define a _class method_ (one associated with the class object but not visible to instances). +- Use `ClassName#class_eval` to define an _instance_ method (one that applies to all of the instances of `ClassName`). + +To understand why this is true, let’s see what happens when we call the eval methods. + +The `instance_eval` changes `self` to the receiver, the _current class_ to its _singleton class_. + +```ruby +class Animal + def weight; end +end + +Animal.instance_eval do + def all; end +end + +Animal.instance_method(:all) +#=> NameError (undefined method `all' for class `Animal') + +Animal.singleton_class.instance_method(:all) +#=> ##all()> +``` + +The `class_eval` changes both `self` and the _current class_ to the receiver. + +```ruby +class Animal; end + +Animal.class_eval do + def weight; 1 end +end + +Animal.instance_method(:weight) +#=> # + +Animal.new.weight +#=> 1 + +Animal.weight +#=> NoMethodError (undefined method `weight' for Animal:Class) +``` + +## Open classes + +Ruby supports a concept known as "Open classes", which opens the object's _singleton class_. This is equivalent to giving a receiver a method definition. + +```ruby +class Example + class << self + def foo; end + end + + def self.bar; end +end + +class << Example + def baz; end +end + +Example.singleton_methods +#=> [:foo, :bar, :baz] +``` + +Let's go through some examples: + +```ruby +class Foobar; end + +Foobar.instance_eval do + self #=> Foobar + def method_by_instance_eval; end +end + +Foobar.class_eval do + self #=> Foobar + def method_by_class_eval; end +end + +class << Foobar + self #=> # + def method_by_open_class; end +end + +Foobar.instance_methods +#=> [:method_by_class_eval, ...] + +Foobar.singleton_methods +#=> [:method_by_instance_eval, :method_by_open_class] +``` + +The above context changes can be summarized in the following table: + +| | self | current class | +| ----------------- | :------------------------------ | ------------------------------- | +| class_eval | the receiver | the receiver | +| instance_eval | the receiver | singleton class of the receiver | +| class << receiver | singleton class of the receiver | singleton class of the receiver | + +## Takeaways + +In Ruby, + +1. everything is an object, and every object has a singleton class; +2. there are no class methods; +3. the `instance_eval` changes `self` to the receiver, the _current class_ to its _singleton class_; +4. the `class_eval` changes both `self` and the _current class_ to the receiver; +5. what "open classes" does is opening the singleton class of the receiver object. + +## References + +- [Understanding Ruby Singleton Classes](https://devalot.com/articles/2008/09/ruby-singleton) +- [What is the Singleton Class in Ruby?](https://maximomussini.com/posts/understanding-the-singleton-class/) +- [Self in Ruby: A Comprehensive Overview](https://airbrake.io/blog/ruby/self-ruby-overview) +- [Metaprogramming in Ruby: It's All About the Self](https://yehudakatz.com/2009/11/15/metaprogramming-in-ruby-its-all-about-the-self/) +- [Three implicit contexts in Ruby](https://blog.yugui.jp/entry/846) +- [Understanding class_eval and instance_eval](https://web.stanford.edu/~ouster/cgi-bin/cs142-winter15/classEval.php) +- [class_eval vs instance_eval - Matheus Moreira](https://stackoverflow.com/a/10306049) +- [Diving into Ruby Singleton Classes](https://medium.com/@leo_hetsch/demystifying-singleton-classes-in-ruby-caf3fa4c9d91) diff --git a/assets/images/2024/01/ruby-singleton-class-inheritance.png b/assets/images/2024/01/ruby-singleton-class-inheritance.png new file mode 100644 index 0000000000000000000000000000000000000000..d8d8cafda12044aec9137721681f3b3410a9a1d0 GIT binary patch literal 80150 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

^m0}(N5@0d+S~{nFcRA20k$9mE)6wPx(?a z0^KeM!ARhgxhq8HHZRaRaLUhI)M}jtlVrgvPCmYZ`lqA8wEPU%lYj(3*-Nh??Cmvj zQaKg%ci7&YYd0HQ#ieAwI;iLUFW6@ydtFn{ z;OQ1Br?6~LJr?ljG4jnKPH$m*NN_>QM5@vIz!8jy?ailgJXtY{@vqa=*N&$02E~T191|Ri>rR-JXf-k_->-*iHzmJKf{EoU4$L zNo$vwZ#sFa;1>U#h3TCprK;`7FW2Bv_dg{W9Vt>czs5u3;KCFu^`4Dpc1DNnPzKum z!T|?|JmetW7cCe+7SO~Tp*fVE&VMxt6BO{KzH)5&`B9PX6=g3ba({hSw?6-Y&(eL% ziF@@bBf-LNiSP7xTj-KiWQh)vQFhYMaym4Hg7S+=@eESyK;q)6i3U$sPTlA~5;! z+XTsMzl8H>N_{!)_}4;wWkNRYGlsL>4k|DA+;HA%>cO>CH6&#jMTTR~=!$S3o;o(T zTQ#C*R8MmE?6k-(qcV(-nZA0eh)hQp4;EaL|6uL*=*-UAu8w-+*nyCsy;oPOzO{IT zZ)*IN`z=SgV&u7`QR3ST>*=3Bu1tD%ha0^fobSjMxiBLxr@4?%(1=3e0gX1F!Tv7D zwst0ud?v&Z8;e7Dzzp>_9$F#is`kwyBt7yfH_AsF&w`9hJqc3^Hz0bLsb739Id@bX zLoXGk1sm%%EbUJ41n*B|aZ=S=ecpVW9`^%^DJle#-?=hWUuTR{64mSu^ zF@=)5TFk}vcPgVdP>WY-$Fkhn{>t+wT4d)zDK57}uRAYO2|qRgGD1iT$GFI_$<3Tf zI7+oWws;lUD`4tlwHgM$cSm;_bc@MLRz^ct^lIw9gL+Mqzp3&vkBVP|*#SqvJ++)? zB3w9+D%_AcIsOi%8BkuMTI7S5g~1aCZK3k|sHRD3C>h^o-Mw1uA7?hUADMf9)JF|FX8Rs#?&_1 zLd-Fq-j7Mw3f#``QF{c_T~j2{=7auU9-j9Po2a{9?VIh}BuFcV4v_h(pc zT}aYQ_G@2iuwY{A%fWI_gw`uE-sApPo|EP1wy)EtZwzNfvF+nI3eVx?=@0cH@7jt> z*?!!E>%R1h+}F~`rFj(~Dsilg0B7gzSe=M14_K=P6OWa7YqDg9qVE?m?+Rc34iO`N zJx=se`jL8U+GXkI=nVySdSzZQ+};r9f5DtIE?xDHzc+BJVTNeZPbJfiL&>_kAB;Bp zO}3?T>k!Jgx`=QZc5n*_V*P?W&7*p`#J1zfTX72|YDzhEY+cWhjHBXXmHCpLhL;jK zn8BdwZUzdvw;%5N1GnxqGhw%{=LxHbolSVry~BjUXTA9Tainz<;vzb_i=HL~r~Zmv zOTCUrNoejBD(FU#pTpH@t&=^P@xznS) zcWOB~QgHsOxb*`}%ZaSy(pvQ}dF1qSIA`niNUtMx@MhuUBal`gvgJg5Hkzd^jmb8- zenn)eg0PPHgzmv!m0`=z*+5PGJg`yn0zF;TbW}Vje&p6FIQ;R+62%yPum!+9TdjEaxHq8GE23lZFfEA4q6`wqI?;g&AZbMDjj(owl`=r#!X0@Npj z#kh&Zl5mhltd5Fre&U#io<-kZGje~>#hsYcn|hpZ!dwik@#kDNX5#HChraH}MFQ(o ziOOa7TjNpnU01f@D9SAtA6LZTBj5Z0j+ae_BDQ=MGn@xOX)zRl~=+PtZ39 zB4w4RsR?=O-Z7y@WD$Mzy?j93bpIoWhf|g{0|lHQIV}4gto;0wNHF!~h(R{FoOW4>l~X`|{r+|C z;7(bu*WvGuScb~M44ae=Asj_AKa!l(^2z;`ZYl3`7O@6>td?+w5hsp{Wj>#%9@o{c zI3OQvaMlO)c>36nvEV!zye5``l%-4 z8^fmxk=6|b_0?&s+S)z(OiqPOb?vyJVg|)<)JShf@V-&~`R3x6j2*uW>C66lUJ{P# z+oIIWbPXt7HDXWkX+7Keo9IEbZmZGvXD=#ZR#WGHkK6u|d8}hMwaS;;<+5$eES4+x zo_TzfH#OM*9`)t2-1~ru+H|`RCi5k8iwT+Igl2dckfOOx(oB%HNAPZ;Y$XgdFmxi1 zAb|u8AhuRXuvW zQ+u&+Icju+OI_P#+3h9Ahe0{=mDRMahvzS!NQ*x3*>)&j*1e@KXyE$wj>0nJ%@2jG z>zmwq2EK95d!N;Rd02UCS*c5?)`vcPuvoqveg{hU4H}U2c;8f!JtB6CM+htcaditu zOPpFxjRhSG&AH|@{BWj2vPlU@ABWCerun*kXBw6K8ge55G4%XEs=e%rmV{E_=5-0B z1t5wo*HROANK@0tlgoPKJY6basj63KhM}mWiqvCF;07BW>oar=zhPyDy&c7^OO^~j z2|_*Y#K&;WnEBpUN|&s2p3!M(^xEt`eCsdB2D8oHnxm~tbS?+$3*Q~)IJppy{BUC5 zWoes2m&{Wv%#%DCoO-W=uGo#F&{Bw67G#@C>fWHdG`F=m!C$O_PQQLYaZWH4LX=7i;OjHhPsIjkASq6dDIzWT+*caNeAJf4AEi| zz5O2We8>HdS_V%E{&C1a92T~v0GX#3y*Mx&!pXo5kGB0MqOBZ9%b%7S{ zN3KwwSbZzjjw?ptT|Q{ zV1iq?8^fAasdc7B%+}uwbW7$GmrucN;oO1+;X@gj*yw9%T4*F}I7!!v&`Xw$`*3 zSzK27jy-!Ze}(aiB;g}LV|)%O9!ifmnL-ZEsPMhO5w_+(=twJB#y&$S6<@F(tMK>8 zJkYw$H<_g!)R8uR{Ws8`J6%5In?;Q&NkXb^h@Q|N4r;GO*hcf5u_FbWBddN~G0Ad) zO~a`4d^zgAY(f<+UUv=Okucrd$#|vY;!fEyCaRtY+Pu+B^sWA!pGW=zffmTo4e(H| zAe35OcgWYv_l(+%-Ahj2R=)iy;!8NIrkQAg3o!n@mZ?vs>J^J3*saI?Y@MTouh|{& zec2OkSj@@I>|{Nw+3{#F=E))I@hVO(N5uu2xXYdG4l(y=CBsSXhWl$OQ4Nq(qdkq9 z>2%5$w;pk@d-1X`(7auJ98==L_N2L5?my1mo!%O)&hL=)-Q~*NR$C&ww9ibE(OHY5 zkHL3th08vd+&e^d#U6xKo0PFKf?d{DxU@#l44tuwP(EECEbDo?2}Bi0MhRwFRA+g? zY3FU?hqi39vwulwuxBnn=3sS`YImXPmF zOlm&y-l!Xuzi_<8$6kFbbJduAu)ZbuPo&KL7k6(0*7VUWjN@+I5K(bqQE*p4q=*m} z6%Z8_6&2ZA0cni{At4AMMC$^mfPl&liXb9e0U;)V(7F)z2x1~jh_WO=NFoFX5R!cJ z3rp3veQ)pk@4esi|MIlYVmm`b1_IGyZp27yC@cNfgpQ=`M88z;YI4j$o|QW*S8=3Otn7et*;Sk!`GD7vv2=NVq5GN^!n8(pi{{M=&_w4mO&^Mn2H+V$kbmJq2K{AX*r zgX*pqCW1#FWcXteh)&nLmpC41!aj8s-kS}xBytb3dsnVDYDaF4k9mm*_si{W3oX|a zIja-2@5hmjeMAb87wfT=9|{iG6C+agqvQ>WABYcxXtQ^>OW)czzZ-fGyofbl%($#e zMwa0-TP(oY>59As*AF*5$VGgLd@Wk$8x;Opg-~+(5`STnKa)1z>w@^63sd*sTx$6P zzkJvGFcVw~y=#bJ;=tC~<=A?g70(0|EM!*xTGu5*R`)&%s5Nx@QTxx8PBWl z7V;y{X?!{W@^WhxTm+4VS9b@0VUoZMDN^~X|91%F;&Uus(Cb7vGe z%xJ)tobHZDOcW1Vbc`zp@f~pa2OW7<&0>S^;MD5G{H_tWYqc`#EbFi^PUvIg@YYAU z$KOe9o(jS-c-1jMY*8$;E7qq}6Wg6ya+9bt+$BL|Gy2uWe*7+#1a#`R z-7hg|9}d2V#EJGJU(?66a7r_ZPdlr&*v{@mxH#c^5o+nD5vs4T&v1^rp z-A76nUCw%|W?&%dxm`YLU^K)nbNJ`!XFkK)aE_duxgXGkE4uDSQ1dS79mn4WZf9SL z4#55WUIyg${E90F#{}D1zR-f?K!nHw5dI4EAN1>9l)ko{Y?qM(@;G6eCSl5fbL+$w z3_yZmjo|bGW}BE$4n$EPt0M>f2eI;xU#5r2P5g4D8#vw*koQ6p$^uogPXB_C%+Faz zoCRRZ=7gq&U_*$3ng8{d>2*Lj&ncNk2yE<=>zT$Gm?Jr8Jwy;~n;!OO2u%=1Muf>R zU*IW21#%|8Ap=C$<)6W1a$tc|Q-L*1(%>(fzo7VEOx6oRUovV>LW7njH-+N_p`b~= zYBu-#irZ84gK&eQ5fJa5f=JLGaDWhfIsFv)ZC4HEf3;p7x!p!4LkG<_j95I-kX@EiRFY|fHx zGmyAUk@6ea{6=i1CX?~uFQwpriUcy_^-q&v`$uS}{ZB}cQ~}g{!t(qHyJg1pKd=%I zGJj$`CUDF}{HgKyg56)L>DSiruhk0#U|6L=qc>pNhpIfxOsQ;L@zOa8o+b#d0 z(1y%R{$soR6AJ$4LThgFZ}zbNl(t~E_-oqA{g->#UoaAicK`QHrOca|bdUZ_?Sat# z^@jPM3#~chSSN5yWL{h`%U0^s(OyeWesN7G<=P>2_p+WO=B?j_XDx~e^J^PFDbV|Y zER%3oSkRC@&cB~khzppO<(fx#V`7jKX;Usj$Grnm0UBGP|Ec6XSpG&M%Sn# z;dPgqMq0C&aPr(5C7G$aNO2L5xM(K_^$)>DSf*kUVf8wsO&xt{oCES^bve>BFl%(p zP8Zp(>n*4L_yIfop|RwLy#_93OR?UoN5`ZhQZ4<;=uF5f4CjX239w}xd#j4w`H+Cv zJl4K!V8~MPYbip10z&@k$P?8_%eShyoezu7uODmQHIS)oTpzeNRvQ?%5Z;IIil_TgRFs<1V-#UMCy!MmlQh zNIffF8sa}=0s)c1{NLC+h`0`%SnW$-9dad7FKXM$Q=-7n)$E$u6-o@IzrZTjV-hb{ z%Mxk3K4RfBtjXn`Cj>%!stD$Sp$#pXTu5IC#O^Z9r^EhzwYZ)7wvH$%;5O2DY8kNh z1nD3jKj*y(Q^Jcx(f_VHgPiMNi($L*-o{sW@q-~G7y(9^H_Zal?S znud#&E_)_eIJw*_-DKQ%??>mQawOkO3w4P2G*SGfiSi8fnnwRu^xGK$5IT(?q6{pyVc(cW%H2PyPOgYhA$ zq$<@@$X+k7b*5@^p6sSLglV>bkcCZNrOjRcs(ks{j(9k92OMtDv5k7#k6f&3%iG-K zQY`BAGsS)OuNi-DGOK`JL|2me>n#J4+sqf52ZHCnQ_(h&SVH*GlS@aym2wuIvERAu zO^{Db7kq%EPaf}7ajl_(u%l~#5Nwxe5m#Qt%79mTn-`aIM+2T}N)E62lqVI@S9+36 z<>Sgoy~8(sZ4x?i${%pGSGQ!+JGWLCb$tkCdDrR%9j-T~BzoUxKLe#*Ben~p`?Oo2 zE3zdf5piYB9(#vNhsV?*eZo3OM%1K|;#Df@NBoQiYf=~z2FQkPdjs82_j=;*(!KIi zl#!$H<2)gGNXhSxjw$r|VaHz+uw6Q?cDtC75?tfrZ;a1QXjb;pE53-U{BW#vll4B< zR*K2@5%Ao8n_D~s)}1UPTgGT}fFmKr4cEj2H*Uy3Az&?TOxSV`6|$4jf5U_9FY=>` zKj+-`k_vFyUvW5jY?#T=DIXt)UQ_%v3H2p(sois~#K=uj#UZ#e8d;aK^4&#N<>+2L z{{_3O4Tc~2J0inUPJ#dML+UVRsvS4x(-Y|L0F zy5scA;HpSf_JT6K8NPQ)f)>^f)l+fpOXBvJT5~a(%E?@7Pnd{LWzgWmcT+LN?*k-0 z%1E_av4tk(!T^R(Q+4~bC zh%@96k{e+%mUWZ!qJp7#?sgyU`sWrg@xj*+g#p-1Pj^ z66$b9agtcbMsV~n2kVVnE*Rqs!U^&g7f;|l%7Rr}C~D%o!p?S|qr(w8a2DQVw7*{5 z#n*tPRKMDVTCUYuy8LF}$_eyygcN~i0?1Cv2> z=%6ezOqSMD`ODHMA%lBtM{>S<>e>krs!R}P$-5gW5Hylwsy;PI8jB01l2*^s^YUAX z9u7HdZHkWYQHW;maG&t4tB7G)_Pv#s7Try{s_=X+&ZpJ7f@z61i3xURwOJLfERydx zxC`GczgHRV=wzDwAjE~+-H*=;|3-?b_qM5jWb1DtSi$X-&~@mqa+EYYU- zyW4WEDRUCVmKPZIK6$kagAg9Ft80BGE+SRbkl&?Td<%%oo#U;>KloJW`QMs%-u_Kr zR629!rA0vhi&2hNJXiQIzB3@=IoZtxsWu|pL$SsRKPkQE$~&iQB&8fi@oD?Qeb0mq zj;MKR5$G(Qvbm5jFmSiA%(5Qa^TB6{!y7>916z2iI}JMHjo!@C%{e#hxmqEN-gbOPT{G6AHfCz7BXc1(8-4y{y)5snASoKSY0H;dLz+~vyNiO z5e&z9A^z?{(3K5;x{QK6f_$Ltcwa(CMFT&x zyy~HRik|<)UGlE`Q8Y`Icb{{?jXrWww@L8EC6q#koUZO*%!MFfe8im^v?A`R%{Z%eaEiYaw1 z27b_cFyKant~Y?SdtI;mjA4%5-lwo<*ZHjO%ZKYrms<+hh&!XqM_T+G%Ff|m_u^9y zR*A(Zl~|z`kv&dJYq^tNc1*pRX1JfK@G?S^81da3aei0p;!-U-MU~!}UuksbyLvmd zI7&XIa%F*tmMZ$NrqZD51rfO$l~mIcm`tbTK9-Q5&?*w)LEUYqom*Vl+(a07S_T|U z_UpTeD*gH|-7fdG;Pki5v@E~4LdAM3F{b?|No$yn6xP^PI<%@>b!GRk;vqs=O71K{ z8@PvI#-kGQ2kD30n(QsR4fc#R5AXbAS8wVU>% znf53(2Mq(u)wX_hH*=#6lBj~_X5U68y>U$(vR0l!s)A$sN|KNsvdEoy$JRGB6?a@4 z&K*_vRKUi}54O6|ri?qfEGa4%o{G5reUkY7Z2J7PBD&=;*D4jG#DM<-e@%bn8x_2{ z%DangjA9{FT3Y9sJuzoCpCuYpNtfgd*=KMGDx8RY+?Hj#av#Ch$y*QRUDM-qzU4eY zFY(EHYWy+U_xM_RBE~J3ZXkRazsl4@70z62Tt#Iy_r9Aha$0}sBS>2_>XJ)eSb>o{1ocrIO;E- zL~x+&7XE&BYdwDV14Q^hnHjv4_A>@S8FM`@D!zUP-o2*cm7EV8P%69p=C##my)`jqMi8ae;8N;G(Gd zw;@jn=33e}KIa&YA({vQPelW#gro6khC|8mBLe8{_9XzGd6<_~RugEeBd>11D#< zttRvBiMGv1Rhhh)?oiN+spv{yNAvGy){t8re!sDV`uq(Zu36xC^Su(N(q@a`u( zzpkOAl$bjA>UhV1()X-qU26@iL~eB&GOs^)V=8MIp=9|>d~Y|&o!$G0S8c;!!=ri| zF&Em|v5qE<`Th~9n4@bDk@oO*BVVFdp`tYd6n^leMXX&vibj>I(N8 zwznK0$aHx4ZF!?Ow}dPZG!QP@MO)?Jn;nY+%`E*>YWz1qx+^|-?C}~(zDLkZKwShp{H;CuWwM4y)eOb-xo9&WxZB-UP>#fU`g>kH z>UlAzAb?v6hta$Uhzl(j2+0FGD;iwSswevi1+BMz0-JEvqAFg$=1FWB5-ZgOF=U@J zMFSi=zP!=r-?S0^?2LPDp*-&Y9aMnp@#^FPQlydtGl72Ka>U1kB|YqQMC}!(8R3ub znE)ZvX~F_}6LJjp!<)Xtg!f?<)nlvkk5*E_?Oyd7>QGTvQNCVLeo<9#kuaBgwycYo z>6z6PQ1xn^Rm6{>m)jUrq;^%myHu0EokYPO91_&fwPb z7caxKlxyAOQ{#z-;U~u~M%q){gvOz~u42~w9QVzA1_gW_bD<_>_eN82FRKYRqSGJH z%V~|}v~5}RHd3*x_yOlhan1wIR{3i?jBjpi_xCfUmTsZMi18(PeX30L_d*z5XgW)F z3^84n-nqxt+~oPC7wO$5mglsXuua|vMoKuGI^5?sZ&Zea8;E(_D)QjkS>fx6V48-^ zpd%(~7^(du40w(>`p_~>O5o_xJtTNnYZZp5WwECGP$O@lrV03*T3o7D9t% z$k8^PP~Ddvqhl2*RwGz)2gie8l*Hg9t%XpeQ$#p^I2>uwX|^!f;T8|M zfi+O-y3FG`bzmscGzQ%Ww1`~1UDV*U2zmv&*1;-cOlLH(PYl1o0}o}puBk>!*tvAa zlu>55u`i16rT^Th(T1e`9Q7hEi9-`=J{m`d8_2_)RyKmy>cT?TL&5>%3I@BPO~KcJ zNkT8t7~!2pX~QJc9xcWRbWRF#M=&r{DtLByj^k$6sLu^`A04vUW;S(ZaNEzWZS=aH zpfhcXOSY!abNkJ14T%Y%ZcN;ZAD19iUu0H_#h#}n3SC2Hm!Ld}7@A&Wge_0X(p07D zw6?qAcl$?Nhy<_pi|(oov;}im&Z#0inh`pBZzgv=AajAAIfEw5O?ow-j9I~`4woW{ zR(|)KIBex=@UuOIOK{yzuZ-PL@?3XhC1>>QJ;B@N72~nOA|x^8zVNzP6}t#Ne)k*} zhfr@4sv%-uCC)=!@WJ66CdmA28fKILDD1`$A?EO%V8Qh5%<|_-^`(6yrWquZWm8d5 zUB2>3RGx2ZGOXAq>CT~-Re|ds7rv z`st=YjsM3dn}kAqI&|TZve1eclad8gV>tY2%UD|xa@FsCd8wGDe%vv?p6~*=IMLN0 z4ZP@mVeEIY%W!q{^%(SA<~d`vcpp`J(l2TPGWwXXa3J~8!O;?QnA*u~KK1AZk>u54 zWUSz~qeppsFDoeUUbdWZ5jLZLRY8XipdEwA4rzy{Hy1n}NH!N1bV#FIx0A5c9vb%G zj|RJjL)e2sx$HCPGK{uX4 z#&N|Q(SVnE*THrq$%%gyl~R~vkb1fEogN&qFmC)flvaR>uPbKlw47`D#KDVxV#MGywplJqY2gNVrHT?gYZcyTq~zKm9V$A5 z0XMm6?@+~h!3MiVbZ&GFykN~Aaos-4U9sg>uSBi3bhlMm$&hqs{wV3#SaJBV@ z+C`Yd{)@ZFrSFYm z;yafJ>R?LR^u z4dCtr=PL@92Rr_Xt>!|pjUpOu-fiUeHG;Q5#u3$6Xf70hCx!m(Hl=<{4>3hoJCflr z{9dU(CS2309XK%YZe?eHkjhThYtdT~_f=qryu%z1p-dC+S%J$LU@1?8b5=1Wmuh^Y z=V55`c~*RnI0`NJu3?WcN4E;@C>S*2cVTQ>IIB1Yb1Tj?*NX-E{%uB4Y&!e9W-duV-h0~1B5($l^A1p z+W~vVG4fB-@HL=u@nk^_G}*VC5w-2Eui&FYeL zSFfzks}!QUgY*oEmT9$on$HRgVNnv*7iAjOtvVyH+d1}FuYo+_rl@_8CM-P2fZjdV z%By!>rU!Bk5G&c_wrxVbyC!1D&U-~~S_Mo^f_bVH37{kY6X-6Z66*vt^Q!*bQCb)( znu;ww&0|*ExAqq9X8?nlDr!=++x3h4^*Ws%@9j-uWeZ^qHC_*Y<{n6)BAd@;+IS$K z+eR&d@P5m!OD1~dX0=vye`8^5esH8unX?87xacu`w|3Ui5c4d{@e1$b|r2yg*7mIpq&MA^deJMIOl=rG7S=o;S4L4d2a;rcajTE4b6m2M0qcbb{()PaB!PtGU{(F zh!P=Q3!ASU48BX%y%|4_BO!1-o9dk)_m3GjqWUNw?Ucd!d>YvP!$lw?4bG15HYo`U zp_mJ+HxgsyM>^TYwN^Zm0uwH;uCm{Ry6VCJF627c7g~rtZSrOQnZx`7ugLSj?;*Ei zu9r6#CFQ=dg|@5rJUdig5(ff< z`ei1Q_~__`>L%5O@}!lC$Etdkl-kx~J@I4UjN)MQ!%oWwW!b5iPL_{jhDmV_?dXPq zbf&Yy=y6F-{lAP1?%Kv@7Mb%N%#38(;V1Z=E59s1{D2l z-hkQ-yq2?gYIj=T;|7MOHZVX4C>alb`L`d!ci`+SgcY^GCU5>Xv*?!v_<>6*zsY?M z*SMh$f+_`}@U0oJL1(}bMz3%O(X0Q;@5*+Pf?K@Eglg}ku@A-e`jHheK^Tipfh+jy ztb*eUx(RsY3%H1q;VP$&YJLdMLwcpRdKQq*XI9`Gp#A@uB2ZH81Z0^{QMWa{YCI5_ ztb<&ubZIjN9JJ}zKg}E3nw%UfGN~?|6Tee;T zl0)GXOobMw%gits%1bmoYH}|EZk^i(M=yc#gYUJ-ZzSSA|2|KN5B!Wbx3$T8gnL4G zmTC942?RjIG>WwEgKAg|5YMrB4$%+UCQH3nn+xwA8-~y3IBFAcZbwuw zXZ7Kl82KLM)N4kNsF?d*G~0Tb#m?G7w7lT5O$_1>AQrf3k>$tI zMX4hD6ZlR0sMvMwyFz%M0#20GuE<7~c1j|3eEWW6WZP*dv_~*{$mo*bz5-{HG-Sw< z0drw=uVxUqojB zc?jaNK{5+Ck!5i2*_DK4=bN~qXSaBIp9+1o)Nevsd#J|MsXDl`B|Rw_{?doWIivEc zTF~dQR0P9}!K2VVxC1-E=y#ynaE;t*x%+^ccRcWdKmCr4tn*`S$V(Dwt}fz@X{KVz z@69{Q3RJYRz8*RboZtP%X@XNQc{?O{2Lorn=xSMW;pJ$eAjzN-&JMCV zkV6W(-JPt{HRFK+)BFSpr@+uY&C3*v_`%X++rSRHUIDFfuB`boT8am4?Md!7D?MxM)rZ4l2lFYjCUWE2S(GD~uo zKg2KfqC!*W+kgufp_%#zaMW)0F0OOmI?kGL#UOPo9x-Y)n@fW~ES6-b%Dt#b6~zb7 zy%05S|09%7U7VEZng!B9k!NzV3^=8U)tPl;T}4S)>gb{^6vE)umEf>4r*Gc&Uj`kp zhwNzL;D#K7(kAs_W_$nq{!e5PPgF4%1V2G$4a+d&~^yC*eZWt|k3FTOO!fYsKK$b2$+tC(D!x+TaBn?%=VWMQg>f_`g@okoP{R7}E^*1w!KxOW)DBLC58h1l|0&%h?A6saTnfIyiY*uyA7_w(WkDzAAng{E`OEzf{*?U0L9%QgX=u&U9BJk}IjzEOGV9UR_zh)e zVnG^xo~K9ehYLs@cH(``g}MN3w$HP|Ab(E}Cemb9mA4l5;f)DrChwjNNG_#!HtL-m zBYrc&%LVHHM(t zfmbc}cyK3ql?(bBGXbcq7p0sQ(}?eG#M&~R1C4IfyDQMyBx3O|urFS~0;R!rC-2-y zViPkDeS(vQy+H1`VOm5^SqT|tz1r5F@qGSxTp@wp{MPuXyM#^l=-z`LFP@VMiXMdU zep38q{{J-!oi_IM>YDN1C3f|CBH!$oCzs|FZ9_lU!`32NwvjmkF|Bop??K+}es}#5 z5Pr}bMPIy#J%qh|jM3Ga%^f!OUECRXr;sS!6HspNs%iIXGExnd|S ze@TxkM>~&SXH$OKSzmJ|j&+e&v>PRVAx=u*uQsgHEc3hy$;lj}dhFHgSmxr;`wFYy z&3SRpMj*I%d5r@4R&)NH(x7bkSblnYvm^T4MZ-9cwOwd|KzXaafVnH82+?7~k862v z%r@e4^6rO_dwP{0;WzEn?iq26uF@sf_!Y;DE*wRMZ!V)=c2H}s$bZm6H7P75zeq4; z`xSNk+(dU*Vgv)ITn{n0RmO+I^HP@O6y{_WIg(apwCSR>s^FP0ra?IGY6y?~0p}T{ zML$yx^R0t3&%Mo|Wvr{C7Jv49bkWH#@v0l*wIK90QbFioG5i-<#ehHJko@@?`dz0Y};khT8jQkY+ns}Y^L&sQeb?EOd2)bMYvY=&NSzXW`_QF2i}1&ob*UunVV8uI>Z1Go z$C3oi_*E#5cVB|y1x`U%z;^m+eOt4J06*RZ%H`aYYrVsj@xA?39xbKk4}|b28Jo7V z{LId|o0p?zXmvG?8*NNJa6Ks%y~8z6jT0YqG4sXln50z+$5>4V2#j$f%c|OOe2r^P z%Sa=Jh4uwy;zVQcjj3KlL(A@*?`o_JP3UO@ceDjbTzAQSNn%GOU$>1GyxS+cYq*el zF;APvqK-OoFWV3MHdzQC9b?&v>`cYJ4LKdnoD6f$Mfe3xdhVM{;i9D51NOaje*f*o z$s!lj@PoJYA`7E;!G7G+nAS)Of2F76v#@-2ht0t^W(AnAT;zx{sNT_>b5{L&%)sae zCLUFYxZg+54LkWZ{EqSN-2D75qheG6xi1wYYd;d1FEo(1dflhFDxR7TNBoq{D8AX2 zpr>1GLg8sJFt0ukFFL6ec{#5dTeK=6INxg@C=Yb2)#g?cxTh9j-xZwo$wTimz4_5( z!@hL5XsuU?cYpWe2vAAqodJqVM=3B`LZ6>iG=Oa_RJ>_+^spy)kE5c7erAj16v9IS z;j6k&NZ@$D^|M-(=6^~LG_eOM!v7v=8*tz;+M!SgAkAYT`{LKGf#Y)?3D4Kw$)V

o8?x9_PqBC+O03&J1k6-ou3{(1WXc1X9;7o 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 literal 0 HcmV?d00001 diff --git a/assets/stylesheets/.keep b/assets/stylesheets/.keep new file mode 100644 index 0000000..e69de29 diff --git a/bin/dev b/bin/dev new file mode 100755 index 0000000..74ade16 --- /dev/null +++ b/bin/dev @@ -0,0 +1,8 @@ +#!/usr/bin/env sh + +if ! gem list foreman -i --silent; then + echo "Installing foreman..." + gem install foreman +fi + +exec foreman start -f Procfile.dev "$@" diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..27dcc33732a03392be9d14e947debabdea3bfd8e GIT binary patch literal 59236 zcmeFa2{=|=`#yZjZJuQaDWo#biVz_g$`qNRWS-}cA(fI$4Kz?@DoV-FsFWxol8_;i ziVT$y4Sd(S-TQg=`@Z$0_xF9@?|&Ts*72OrW$(4lb6x9N*IIk;``)rlP&z2UUwVg| zx3rV@PJtak-t+)TPag*lXE#qLNoOB_FZ)2roig+b2m}K4H^uz*8A3e|ea$3VjSuc~ zNHTWh3-Dp`zP0+u@X}?0EpMO^l(acRp#3)+MLxcCiu?n~FcSz-UhoqGSR)Dofg9{C zu;{!)K!8(#1A(9l#|z=u*C!wl&Jmt~J4|qlI;02dZSU>l=13sa!Z95jhuV92B5?`e zvBL2ZvYs)VL%RM>0Y08Poe26=1j14{)&PriM({u6M;2IA-%M^_3l<$$lC77Mzl)O`fq?a!3!S6!I@<>X`av6ir=S4jvJ>N6 z{8m8c@MDxeSQfC!>>VB5{C(Gg6UYzLm<_DGcPQk8 zgKI#LgTH-%6F~?%LviqR^S2L#0eJ0#PN7ghV-$x#S0``O{~)wO$Kznp_}RcBJyMXM z{e5-Nk)FY#x%NxIqWPF4+aah& z@r&V^%hPbMsJ}~4kE}269RChj#QT-bXTCW<{#}O_oI(D61ZUBD2<9gcplOsHSm-iJ ze#zWe*TD*cHHPzO{OiFYze9ll z=|{K$m1tfH!6IG;STtT(g!Z2Hj!q7qZb7J{P+28!FoXb4`v5dA+n^nan-N$PM>Ov{ zV5MN|7R@s{ZV;YpcONVopPP%fk3UT4c{oPn(*Zs@?;IfM6cXrfZ@FTwfA;_%Z?qw8 zf@9?GDsn%{&^Pk$%}R1UfJOC=fEz z+48N18F|yIH|sthBStEoGMcU`yG7iQy4C)1-S9@*J>t)D{GWJS*%}b5J5!n`9KOwH zsj$$!*0_+xZcQ%_+KnlEVXUx7DYjcI&#tt*N%)La;j(v3`*+@w@o7ADggZh}L^iLH zZy@ONx60MikDN>#_g!{s6jL_3p5wkVD0Ie#UspYjE>^#{DeY7pub>S!Z&bZqs`ja} zxQbc9q_p$Mg=d+()aMbxQ*6$sO zvB8W-ZFdv$ zCPN%IGuJSg#cbHZC)b25UC?J|GCJyOb!U|7^otP@3zL>jwqvy~ zD|wew-`uvn_gv_Vk9;QIy7YphLtLEA`^}#Y3-9t_wc;0gxvY{-=(;t<=}w)`8NS~= zDK7g8X?I-kkuCKcbx0p}v^MWnt<*M@zL(8YSH-czPgqTZfko+wWkHkPc*g5r=~&gQ zGJU5%J^b%Ft<1{a?3@OAX`ENz@$SFnG0o=WF{99MD)eJnd#C!X$nAO#3_`Ky9WQ4Z zibNEcPR5>YwIFU`th}?=v7|87z=E+_sLkYriBP|Wc0%*R6xBuJvkgbtK4=}$_T^Ag z<=BR;1LqTZ*ULLn-Xsn66|9aL{o3Dc^1y9`-|muI;j{XMx4G0@njFJp+=ah+R(;=O z6S8g5%4qwROgUriF^aL*w*xCj&d_m)Iwd^5_5C`}m)324uUEY5c%x{yFTX_3A#5zS z0b93;?b~TDef`1mN0_@KuzkmST6t=dyD4AhlN-KIn7tEERoTBkY>`+~M=e@mAhTyYY}lpY zAp4Ne5ozm$6=iD5bUvyz?@Ur}<~%wXn&IB;ma#laLVUl|4hq=c{wD?9MWV77uom`B zO0Yx#?D_L57~dHj*#dmHJtH8W=Ia;6uLFWM@G%~C{#Q<5?H0ig3S|F(#lhEO{EhH~ zA@I@IQNhm79sT_OSi4mCVKwm49X8T{%h|jN#(x1nXaXONA3HZ60j#Y6Oq?p2k9b%d zf2D!(-GPtA59I*OuZZM&jGqpqHPAoe{>~UMemf9lfRB#hmVe#_9ma12K0bebcm5e5aA^EU55-`<1?%4!_$dFdW6b_a2Wxi(_?qPL|2O&f6!`e@ z|EgcC9_yb40*2);S_AVf7+)Ru#^67s!CyHs9}SG31bmdgztcC;$M{cykL~~S=@)B* z@!4SGLwpD$sbJ@^c0aRNJ0sw)B99-no$oj>eiHD}{Gnqs{|NIb82=HOkK&KY@A5g| zf~iUF|G(jH0Y35{>mR0LUIp_%4ftsPMaL+1zw7@q;A8tg>iBo#zYrd-k^ji=|0e#n zz(@HD+YqVzuKxwVN8_Jw+{oShmH+)@|53jvhFDy&c0aRNI{|q3#Nt0+-;pN9wap#$N#s-Rk82(K%R7^C}oW z1o-k~K78Ks+x`~pwMoP@)8U)GxM&V?O?q#roSw=A&aQhyRI()nWYT|6%{PfRFYM zq=)4I*2h0ttbaDRY0)S1=No&Zi}7uMkHru5KVJ=ue*^gF{txk%A>nxzjK2y#6f*%n zqM`mF9p+Uqehl#O*WdZ(0LHHXz63dbzq1Epd`4LGX#YXJ&$n+hK#acy_{e`0KZN<_ z0LG8U^^f@TEf~KJ_?pl^w)g&S|BUdtH_AW6Lz=(4e>nqR7Wi-(BXNIs{dWN0jNJcx z$Bx=z|0^A=T@ZYs^FO(N zzX5#o{DECNusF`QfAl3D;$!pvyL?sPYXBd`9*yaD0^9# z;NzcP=hHWyA4cZ?xA}J!_!{6p%0J{k<`?SYp9U7lC!mtn9=49r@jn%;|D*7| zy(#cfzw_lHU5wukd?Q@{upH-AFuwkhIsehxLq1^VePDx!^qpDKZ~v%y$pL_}XMX7JKace8=w({0-3me4l$TU96ue;9CQKzWdI< z^GyW^gzdn`^sxG0S*-mP;I9WhJVue`|5rS$9^-!ozB=%K=h}@lFuteY+~+Uw7(@E* z2Ro12{8Pc&Jpw*jf9M#^Kf-(p#^)6J*ZU_d4}PVA@oj*=4*EyA```3`8uVFLQ3grG#-}7CESpO@8=f1!FZ^s`9d`0LVK1L!HOqYE4Q-ihZ0KO*h zQ9~?-KPBNRF#h7@bJss?{&7wI@kflm1^6g_h>zkoUmr03A>bPW9~~q9d<(|!06w~Y zW6w{&%jZ}@ASeSL?O&MYd^E7Oj=6)_)i9(f&&$pPTPK zjPdza5(s+0N1F5HqP7@65crzF$DW_z>p0qq0x zDHuN#_#2>qY~DWA)?z>YqYTEc1pYeUqxi$4=)7|n<12~&{rT6tIwpIC@l$}W1^r{k z?EmQX-<4SVcHpD+hx$fq80F!73dR=^`}_VE@v(jER~i_<4EPq%Kh`hGqxlq!&nQkH zXaFC@A8BCcf2D!7+X#F#e#A!w^JDJl=l{p}r-6^IKZuWM{G9c74aV;WKHC3L{1JY) zefRX z@XSLhc#GyA?xje1AU{`)zMCW+LySn}pDf}-E|J==nrn`}n;?w~t}Eb<5DoK%oS zJjfxERV7i|$e7WD^fgmhjHEGl@5=H7&KcFrQc zDFE5c=zI(S6=c!*L+Aj?KUvf+fz)cwB7c*}$Mdmh-5dj;{*%cz1uQy$ z3cv)&2cY@92tehZEb`|vsnw4ysxKkeBa8C%8UV%hHUO3RSfq28)OyaMaaWO#@fP`A zM?U`}i^lmFfb^b_+u<$puN8pw+sXAmvM7Gf$?ZD9qT?}!Aa zH5bSOlwW`LH3$L}wBMoi_-9|6%M1K|hT?;c|IgglW>{v>M)&__0X+)BoGxCP_)L(w zg7-`DO7s4xo=Jh*iiZ3#H173w@*)LSFH?6Eua9AUoOk)5#q_I9Z|GPa82d<=taPH_ z;4FK~tIm2nWA$2`E?Rq7A^OBPRn3}zV4k>eg|b+J^VE5@#_gk28ez0dyYH^FOMW6> z@Nhu)a}<+ef{Kw-ZloHs#MN&{d7hUh(OBqqUC~^E(?vOq6(Z}0=|Y9%Aqf;aOI@Otsvs-Yw=vs#rqStc!hezU`Ze-lDuce+!<4m!Ljo6VI z-SYi`BpygF~PVcV%vZ8(R&y6FsEY74#(MDco$vdC@+I+h#P8VIS|(cBbCgEY!0e_Oha659-Rok7=pHcPQg``)&YPPh zRO%;>T^(i>4UuV>`D7%R=hxNYBb++bYO z6tjlmbkX%5E5uM?xBS&Cf`ujmm1UdrRz}TobJl;8r8=;#Ge}m(c(^qxb)qWrlb`oQ zN)P{)ftA`O5BKUvmGb zc{;Z<3m2T*dv5Kj!mg@bnis@NG8ZpAQRM76a6P9qUow_gIr?MXt&OXE8w}sy1upI-2f#94ifOA5^q7?P*ajKKZDT*VwaMe>2;Oy0^Vdliamg^?Nv$?I;w!_VLE{ z2AnQ4CJL5#Aa!P?;ktHnOJk}BAr~zlCfpd#=w?*fxH)r|zxbOmj+3pc=uUHftk0}t zu9sioVX)*@VIogeV!`>@B(D#~4ETJ2*ZTe{#LT>ORSEaJ7yFZM)>xREJzdgycsif9 zWBCK6`rZ4sK8||3?jF|#ib&tDRv9O6Wb|)iafygC2*^EOGZ?ElRDbXh&R^EQRKefu zZmu(d6_GTKQ87!@Mvp9hu4u`!HuY7<;QgFX{%0R9-Yjfd*IIhNo8N6XY`k%cKSiU& zpw0Uaa&lHPw^}MCpW<}c@VXLm0cs{h*73+kN%Eh471+AvZ10E?79X%q>VJKJe+Ru~ z=lAH#L&BF+-;HjLskv2XHaM|M_C_XsxI5otLBh8ZoGv?Fm#HVt$LG^+BU5q7&5Oi? zDoxkteBvU0;(oiN&VQ^U!LjB>?CFLU?xD@^9Znw_T&}@D?;6H=?vv?KZZUcX$CVp# zx(o5T&Fp3q0!g&Da^HoQ)R-{__ox!S9*%z@v}IPkh7ehv2{-)-yCd9y>NM%Vk)8rg66*c7WWnQv{m z{Agz`{baZO;6UAzau-utCjs&u8Z@R6R)d6O-IRSf==_A_fz8tV1^PO1QRW6}HSXu42Zu*}41?OWOUi;|jF;>k*qf%Q zvuf?m*^_Izb{xF7fkp=Xn-bXl1O9t=;(F2V+?QD5cW)?o?o}-MZo8y~-Tw6PMWb&= z%DR_^`#!l?c22FZD@s|l+q>?PU{S{^?=2A@thiE6UUEKOq_>3%=4OxZf!VGm2>B4N~)$-AFC}( znEl7q{gactmrK^33QBZlbKG;{V|3}+OGJ;CgQog8-Nk>YLVWeEq!FGo4Q+ZBcksUR zjGE+YJ-J9ZJ_f#q(;^r2<=Dk9UhaOoJjO;PvLuo%c94QH_l+)>#z=aR-UgmaCqjm^ zaJu|>-9WkOu_MfF-S)zdoEC3>;!*DzC)*+45HI=3(Ky(w%!Knr`@*xS%f8m7vF9_s zEscwKJSDo~!|V)u$f?x!QuAdv-6eQkjs8o!raX^}^g0mz2Km0$pWVn^Yop^Cd7YxT zbEqny@8I`dmlA2mLock8yegwSuI3dC`2eqD;&Q?w;cg5+V&l9mil=w8;RUlq3 zK~eoV`TD8U4f!=48|?U3ylDD<(ZSDPy`l7uYwe9Ebzf5ZTIjvn%>QavU;0qF)Db2F z-N|(#YZAZXbOkU`u*Bt?MnVD`675%+3GRRVMwKo69@AFhIsVj-Uuo}9A1w{huspKF zyxa8|;ak)4HPa`wZ3E-H#HFMcI2;z(a-M_345urI*R7>)i+cZ9FGZ_8PDsjn;A?Tu zAX7MNYMrhDe`bAM$k+-0?%rGKB9c{y1LJFMq)v0GM>D+_P?`1%Fb)W>^F#k;3$`wV z@VYzho(~I(k+{UOLrT(8Y1K-}7ha1eFYc0I;dvc=pkISu!LM<`g+;^Kw=}M6gz@CX zLtl+6veiVh$HcC#jpi&xzpIPsF2m~%9s3%$_QYF3@n`jm_m0bYU6C2lTOBogJut@0 z_0;?NzJ>3)DpabVGt<8P%9-By6@mp92={cKs}|#Qh4H$tjI$$k*M!|4 zOA)gzTVp4=S*$`p+d^TaH0-|i+Nrj8E-sZ!cQz^X-Zyv^NUy4_KXLccs`LaWXEW+8 zHMa47={Vixc-?(`{*gHX!#l3*r%QX9erUMiV~OgWG{J9Gy&>z>4{zm=xJ7v;AZRQ# zvr08Qh?=suxQXyuNGLM4<5R1oHnFM^r@I2Ld*fN+)sHccU(24pQcQE!@spXW@;j!G z5Wb5cMZAV`5AEDj7S9~qzvX6n^z$zV7F)M9YBQO#-<_?kD;VD}l&#N$(_M+z&59_z zMqzw+_HmK=iuaN2uh051QI<*&!oEvw%wRpUv8lT+eNTxH=apGK&B}#d3I!jsp5)%5 zKE`#XdJj^2D*CXY7=8HhaU%9z0W*7I^w}s}{Ab4~2FC_Z_QKBFmKC z&IZ=7Fc{LsS@5y0R(WLf_=G&IK<}Mblj^5SpByz@gVPno`%CB(&?BVh3t3ivuhj7? z{+i-qI1)n@6X5AE^}6pv>zB{<{O=vFUJ32?WN3Hssyh97yik6bvi7+6Vb3WyX)FAF zsu*53b9>}wp6yl-S&uS`d~hN1(d1{zdUcsHPvm!a@}%-nJd~le*WN7 z&DDs;7l#FdP8hYQn~Gc!KbR!^a+KA_b~DWms;%K3BcEQh?H!mj?yCw(T*v2jb7ol1 zwQTd?++>!xWC|^FQo9gZ|pd0lfwtfcPFb_ZCa9Z z?hb)t)6u3q1~T7oP+S|9G^V^CY)|u9fyaR6tK@f+582&apFRv4UzE*d6wd7on8PYY#P0%u@^72hz9Bb{G5~F;zik{a>(|5txQlXbe z9I2$aU-RZNvQ>`W7Tl#)H;&Vl!RzYi8m&E3Qj}S#!7>@&?((>eWr59?m%;Wz=^gJA zLnu?FmtFQgwn%cg`s?*B!p-pBmerzao5UM~%%81HEtpiA!s*K5bw|u5x~Frpo6qx# zY1%YvYcO13{kWE0dgX~ry}ia7Cu2(&y^522Q=uR;@J;djlf$y~6x-uUGyw3hu3|}OBt~{L;7k5g>uJUr=+}MuX{_Myf4d_sVi9Qc%xtP{Vo1QORiB( z@mrocGxf@5W74TFFE*`eb85&uEq|Q5M+@h#JYF}tzw}eb%8%UM=UZP^FkAIpR$vnu zE?ir1hI?sb6-Q4}C|7^?dC}V=*YrA@eFTOm7}u?IkJMWG-m80!nmNzLdYrBTUf1z1 zoBhz5T-7smFSB<(xVh%;$FeIbRu;+Z@x2?SR4#VQnu?xWW%FFysIL7XkD=m~_uje@ zg9f1%MEMtQQd@Mk;dIgWVpt*44MdK{hn^pOw4(1pR>IO<{DVtgQ!b`qGZ~J1zC~dF z>81Hvx{qdWDL+*32$Ir2An!hX7M3MV;ociN5agi*q z_8e6R7Cm$+t8S-lZiz~|neUSPJ(T=i`CSVKj~j_Uv$#C__<^?P^Jjx+c}#~K4+e5q zteMz=^LI5S3YPdm=NYqj#lfDpY!b4e5?Z1o{5Qg^TO9J1ynUm${G*IoN$1y%&WG#s zCz^O4taX-Ilp5!sf%!cVzFKJl~GTeX#|O)EM#F)Bpibm1MEzY4K9 zdw6MCy8XUB7Hdev`+Ig*zn-do`kN;c93KsK*Bv_}(aIES zNa1TmXsSD<`F1=8{hJ=xbsqbk5{VNV8*~&#-=5h=JW!l9e)US~9;N9+Fo<3UOOttv)O#G6N3PF$kQeIYFf%oi2N+v$-dXCdY-*;k#sNH3}^vl6d zUxUjzYguR{%CxREygN6Pl>BJ+f}+{F2m9Z)zn)Rfa8)0OJ^jQz-^9bi+049euinLT z=B`(b;!;lHbX74?u*CISOa<+9`D|&91)t6CczH){;l$vL0KvOb>t?r8dyAb7-_Jw8 zf91VJF)ZzQi<-1Pp6RMo;7K^XwN;%uclw$g{&NlNdsrk-95Hw!dVY&ex9?uL37z8N zETJv4+B_UFnRzcSIr=yzW=LP;yZ$=xfe+ogLi_V}KHid7rDAxl3gvxQTEghWZ_|$R zcP-xE3nv$9hH{*a@Z@HZGs-jF9A5RJI{#)NPjuW8hiZ!{NAIqg{lhl5g_{O!rkjjM)3y~JS~M{7 zg7EE|rDWNHh});9t!+D}_jC$tr3|YqzirPJvX`YjEqwGtzL8MhgG=I>)fv+E!#aHO zyNB_gr>?{61`^-Xz1cKd&wAPOa+sQPec0yY@8wIYqQk#DlPU3d_4$CuKu+oP*@4H~ zp0uhO=XfwUR2VN`qbElFB3D2CMY9pkUroHOWOwG+jmn2LR9hEmpR51oNO3oAZ^(7Y z9p5B$WRzb$G(Qtq{m8s>@aY*Xr?0oK-bwW-yEM2=EYIx<$H8fntJSx0x>|T$AJtRO z-m6wUEj!q3BNmWX5j|x2;q|MWGEXncZvT~c-g_PX^6^5?G864SF5~{AJC5&-*f_BA zA*F5eHTOi1=5v>Dy4rZ%Sk^}2JQg!8t&t~CAJaM`@ zcwO!AjZzs-r?YDKd3q-(?6sHiZKvVPkF2=jc)yFOO)f=1{asHzBAh1Gw|NaaY-_{2a z(=U3h3oENO?DM|QeUV1yrW0k>DFxcoe*A-_g|_X{k7O?K89slte^Fp*mes}+SC6UJ zE&jG^178bHR}T{fOUzbIU#)-UtK_m0S;?$K)k|703QzdT=+P!GD;i|p_R4D8(R%J{ zg_cE&L=2CTqe{VcVq4XoYCGxztJRV=UndshbPe#j z!cFo{)kE|zR+;S>bx@NJXRHcmsI~Hriip*sV%%qO_+D~C{+r4b;;#;>+*FRGoy9j zvyLDGmoisHdzK|SiyICr!iVG9f^8N*>$2Xmal7KUU3u$9e(%b~9C^K> z>z-TJ-#(R?Ep0<%#2L*YaS@+qMtI#9(dot`3uWzYMt5tRDjOD$Pd#rqk|_AvheONp z-G-*Tim8<+UY2UOMG!Lh0JpYK1*5<+;Wh;?vkD6vn&a9e@4M{wv9|TSvlWWW*!amJh0B7X{);v*XR5Th0}v- z9+~p}#x%J2n&5T6nmZ;mjcc$sW<4ofzM;Uq_?y`RX^q~8KC}^b$EFQLF6=HB(PW?# z`LsT}AWqZfwmHj)xwxS0lDy1MD?b{YS&P#(#p|j(>`KUQbGJz3YifGh%Vz7mZqsz* zO9zcYm2Ban*C!GQX>5n?jO~<9GgQ3B@M|Xtw2o=E>Gasn;Bl$VK=9mU{}F95Bei6TAibMp#?XFrn3SL<+>aj%qqOJ zYc)@!M#`2O!rU#oy=Q&c4mfVR(|m|_xS;Vmd}z7BtRLqudT$CV#DYF!JF{lv9g`Bf zO-**GS}-i?tK&^yBr;H9n)aC3a(U~*N2^sfitZE+s9hTH{kWdoX0AJt@08wr&uey) zT}RJ})7^rJf+bd7IJ}*^AK^SJ?7CtY7ZIdp4DAmB@wzqX&jl3}@RP(&WkQ z8k;E#ODwqFJEq=sKex5kNv1-0=+KG)lwVkU;hoUG3b9c%|LxH2%i`=d0^iTIrYG1| zaZPE8*6Qz+Xm?GKTFkOq`&#E{U=eSyEv?_BW}da8iFak_Jgxe!nGCF9vpb=Q)3y9d z75tSIX>X`bP-0qANio={C7ZX$=N|KwB*{&D;aawv-UXUJ`-Ev)aDr#W=)7M;Q$~&nvBo5j+CbP5Sbgl8a>)95pefagz`;R`U z^!AUa_{H2fo)0I@>{K>;B6?e1J$2;*eysTKhLFg4v-fDq(kGRcW_eg(D^E(ouyt69jK~L{{xh?7I zc5lcqcody=NV#y2-$<+48X~nFK|%wkyA`i{MXJd%vBbFU`d~3T*JNh7XMLc<#T@P@ z(<@8bHj8+DRw?&MIkG|cSZnL^4H*%#DJCVkB|Jx~Gzc9Gs{1N7(cyG$@w$hK(#=iR z^aZkR;u32w)ZXW^^Sa?9cFWBx8E9U{Kjcpntg+-tZTukkm@`vhVY1J|3R7`nR_TD) z^Yk-fcdj}5;dJfrx*5k*-=3)Ral8m8F++cKAo zw>1%|kq*RnmLAMk)3WvB-7`*jy}p&v(w6(-@%bl*-kha<5k0;rw{?hcll5WBIh^ix zOcX3}S>rN z)HCB*%af}YdAz++7{fa%^v)8eYme8J-bU$~#;vEf>TAOJJGF5oCu@yd-MQ9j_oJptzd#pm9E5)4M>9uC|8UAzH9e7>O7vIMywyoQJ zDURvMd$AfT-m@3F&*`iaHdT7vd(5TRi24E7t5UCO?_yfPgx8;@Jnn9!4O!t67cHeM zKP998>;}$X2fVIAU;d{>j`g&kxR+9N%oq{^XKtpNtZPW7yO>hg-Y)%pBF9r`(sLc< zm4{pn!xkx~3`qg+jtEASa7c}3iK*Sd$H5V=yG-tz^Bzh8jx7t7HT@PDx{9B7SQfgc znSPo%!_&funK|ZsWKO=OWX9!cp_B?q#x}mpp2Ew{IU#Z+{#w%3vihd9U!*qU{1oj0<=? zkJ<;f=kNtK?RDI^?Uv;2Fc!+RF6z>prl`DkJM3}sb;0X;v9m`BEmQYWFDpB$=0J=~ zXEhtQTF4{C@?1~)HEp%##k-~&pQy?V%O~O=DQcS!vTwq zOjEb55~u5d*Ht?>#?e=&)pdP1t!Z$+^@&gvnG$oR1TQ#U{B)e@3YS5`%6zQdHnn# zWwUQ#x9`I~847PbL7c8PUN>9M^djHm`)%pUUj7u^A(l-SzNxAC(T<*WHrpe1<5nZ} zSy|7@o?92V{Dqk+;9*NyVa=kgAEPcelx-RLO!-^}r|W~)9pxjq#Ov7EG1|O3#J2q` zckXmzrtc@C`wLr7?6aPHBs!r}t-blKr0CARc&&XN?|Mf?vR+=v7@hXn=*-qD+PDg* z>x+5hI`*^MErMx z^HFZ|p;lD@s!|RT;lr(Uxof0~$kko(SeEWL4T9KTVt#<{7Y(!lB zGbi0!*%wz^v$@>=rgLJn!dK1k=EZw$0cNVAZv^Y!pA(PAKX?1%b;CWim)*I1*~hQw zv%{6^&eC3qvI>3tiwSZ!gxFpQ6h4&CynIKE{;SS?Ej_uGeUr~A($-Ha>K+bWGaIcd zb~Ae#7l#16E{mX1*FyE~Jx?`ylcm2YC?9#!Y^@*S{xQ3a#;PuX?fL8SEMHrTm#iFW zFZ)D#qLyl=DqL_AdRc!k_N(R7b33_kx`BAzGHcJ}-c>tSpI#v7<{1?fwyRi>fjH2? z5|Hs?Q%9#~)U_DRXT`2ASr>c1c*Xb|>)w$4RKgWvmZCA`Bo*NE2>*N$gx6)i93!(L zy{+@f*f@3A8Cjuf*EGq9BIZo4k(o;&{j8&FuJqMg@<>!{J;zJr{34%m;xUhIe_ra$ zf$B?YYaMIwpZD#=>r$;u$PmBq{_wTgPsWo($+piDo5Ih{-cOr8`)I+&%KRtZa&`RU zey)cdyn|AA%tUj(4{l-q;P_8KNo83@*)#2&8?kVaDH=gy3}@ zna^zqoXy=>R7fd6$Q_?yl^%=Y_TSif)G^R>y+|=jd_c4x?_Nh8PnxK(47b784{3=l z_1p8>#CPBJ9}Hf}jGMPmyzbCBeO0lU_ilNS!a2zrL0=Pf69Nk=jAwTfAi zXri{ES+I(VIx~^_Yk$``{q2rhhF7)MZ$8K3f77lBr;C0c0xQJt?}&9K#~(@EVH}88 zKjqBH?aY|_vViU@%Q>Ux&+3Ge#xEo%wh*dUh46%{ew5ZB+_(8q((jc&(D!UFO;YR? z{QEFrm?&7{rzhEO%Cjw*np_S{hI}U8t6%WKr9$}NTEpnf(oJ+$y;n|Oe{{cNcK4Ip z)nC-aU*+^t*k=1IQaIV?8O65oRB9g1-*CJx-(k9`{o}4`{B@MkPX(>Cro1^ev#$!i z5_x7x&*amm$8RZry4P$yZW%q&a#wsy4T=p9#?XdXp9sgXo8?W0R*5}xI%I{0k=hP4Rvt^5w zINV)Iyw952tCl3Fd?-ymE3o_O?VWF|?@1n)X6DfAHt10@UmGeP(tVT5W?N*?UYx&C z|DwC~V&j;&>%(_vX}Wu2mvmM=HGB9x{z$pZ^z_w|=$Ee-7`J^RQs4ARNjB(dx_vvp zvY&mpc1=YmV|t=}SpPTt_d|Q|x>6mCa*H*NAL`=e*}pw0E_#Yj?Qm|?OrggXh9N^@ zh+XpMI)fCZKFdAvL5_RBOysL_?pZ~*k4WpX;J_p8KIeNlfA`{bgG~1%Ok`iaEaX@4 z@cGJ_6}{TulmspI%PUaXeHPJPG5kV%L-2})#}>A6xF)~QEBYE)(`0;c(D$8Q_~VFa z(^L5OOZMS)*KY57F--r)&)aTE8N+$ai!&R1B zzg};kneA_KeDd;u%893x*Ow29OjZ}lEV7^ax`-luU@L9nnb{VxgK}{=-Tipo*X=8V z913Hj^IzAtyB@Q5H*H|dDd1+@NAqQ<#mMTiixBTvQpx?D)qD23J<8}=d+6ETeT~~z zMf7Ai1h0H?Ow1OidjPMy{z~YK@_yf^n!bvmIc>*Iv)6tLlee;EdB3x3%3|t_^w0|R zlWtN6`9u<>*Sk{fpE+S(cp`Moi=}lJcAt$t!(D;Xjlt_Kesgh5+xhIi3Mwxa-Szxbg^zK% z2l2YL3D+N;HofzWn0=wDHmH7K6jh{-ZqxUxjai=E2jxyG*R9YvuqKqDS@1Goj}4{(^JdO*d=u=_LAwi=e;k7qJGbH zx>ojuH-?V*UR-8UZ4_0ICU@f^-d4CK z-{_BjKQ#`oJHB$p?z@9Y(yp%_C-5mt=CS=<6&)MF{R5~y!vf;_= zYwle3ggfr)TuW4_&9|l9(+&L6mZ^jDHy*F+-L-%t#bMb2F2=TwoA>QqdV{nk46-yA z7I{5Mp1IQ6N^Q9>bt-mrhp>*VhDAbcXTGyVIcF$+SmG9GFXD$(eZC-cTU!%aOb< zQ>Y+@W#KZ>BM%*KhgmOuQWO3v-i2}F3YqrreiGelZRKxXS!!;tT`Oi{fI^qes0;rqhgEgpFjC_{~p)ky^p4XAMbdsal}O~JNBE@*86XR zckW0$sZwAaotM{JI#-C?(1aEUKh34KKKCz zSJ*b2-Nvr=e*KgsDdWEGhbm$>C=6X1ep6QCJf6i6g@1lKiq~x_a5x`me!EMgiA1Zu z&vXL{l?T=g>mB4T_Nkt_YlweuB^j^lwl)0m)A#ScCre%yUv%c=E9aV4d)7DhIeDE! zo+s!yH$C-=PYdf`E-58?r6<7R%#}3B>wR(In@LUT6(+T&A9Ovp#$*ViXnV9o?qjcrCH1{sq z_F-&=C;mC>I9}H!DKX!IJ$RC*u-xq{`AYDBU}7 z&COxrD&a1-O8d#eV|s6^qwa+>w5I!r;qvSRUbncm>TQeLcJ-i|5b<>jY7QISFfDFT zUwz2Q)jpmhwJR|9-m0d6-D?X2T?I{Ksws|C1*}av>83!r_Bd6rpS5@@PWL2UcZG4h z%G<0!P5J^8zhl`;w?uJlag`sbR;gEiIk7XaaP_%j!8gV!h7H2f711ZHLaDY&9}K^8 zRPgi5I|iK2?{?+lbWh=RUp#$s^t*Ps#^7U1IdLJ?Tn}nTiX^tY7dJH?Cmnv+dDQyz zmTrm|+wD6mnYcJF9%J*GxZP@Jc{fN)?4Xu#i|i4cZYo|^uA_YN-adj3%gA{L9R{N{ z$?ugXKdg5%9enzvk+yqbZ|Q~uL)$(k*ReH+);y3gZ6IEy6ZjgDzRjO6`FR^n49bTe z74)7EDwv%+n&1ByKr`%b^D)B#J%JE4Kj!>fp+2y`>$jD1?(dcTh>hA|fA0_ekfD^9 zJN_y4M~r_yhxD+&5BLFs!|?yX*#6mrKec}%@PBRu(0+m8|6DKs)iboFvA;FBg?;XC z`u%H*|M?N>gPUV+FBAmJ`e)zxp9l4i!v9(XP(EXSSF~fv|L%1V`GWoJUpH?@rx28DYB&skAsJ^o2QeMnZJ|MS^+s3fdIE%PCm{O0ty25o^CGQKF;u-=3ixIcCMfk=)H0D zy)F$pfPx*P@66Hn#i*cnz~MDa60rAP(fiPdhrUnF0HA{2Wk%vr4bPnDtAfVrYL+7#p=o}Lu6oAfU15p1Oz$g$U2G{^t4^Rc{ z0r&yj0PX+}fG%J!AQs>S@B|zI@B;V&O8^FdQh+)@1Rw-J`Hu1%<#R9~1P}^12#5q6 z0PF*V0m1>Kg#jiIB?**YsqNdchTL7LP6Y<$Q^3IOsSjRTE`4}jXR09FG~j8VR> z0HEAm3ZMm`F`=>X08pMW1JHV71W*AM0Ehre00V#?fOOH0Lb4VIfI&yWsk zuK+-8(U?$fqudYxC<4$q^fSsW2Y?0u&E*;Z%2y?T8elCz1%Pq|9d85}12zHl0h)ky z0F;MX06hSfUpnx!E&y>*z8C_G0Hy#Fz%~F{Kehlfz*fL!fE56pN9WAR))FjQXVw54 zzzzW7Bd#6U+JoH=a0NI6(3)`}TW_!^mlps~tdT|d_qjqj5(C%=*b9gNp!r4lx(k5v z8O?17zz=}5f&nP!g8;~Hv<}ePLu(Kl2O1aB2?HPwmPh2v+AKP^2e1+l1=tNhePHWm zKl~g`#sRSLfH=S*Kr8@hqp=_zbUq1?2uJ`Rzfe8mBm<5CjslJVC;&tNCEz&V6yOBl zB-x(Jf*+vpUYoP@sy1?~Y=e~GioNQu>x}HbUa^^>DXfvGjO9@h;`^O;uu|A5O36q; znl2*O)KQC87|84yr(NJ_ALtYS0TY56@IPvzli)hS+#Rt1O%AD`Y-EI*Ny*Dm#&5cV z7f{&A%19|l$;n{vSZ=j{TsORtb`R7jL4|@WX?KGNM>(I+yI$Ur@&<8aNiLw=1^=RC zd>T(3;f_#5HLIkcj+8~PVx#&sv=f>irl_JCc@hWZ4N}ves`aFLpJN6!^3V@BX77*k z3;e4VYBM=uA_O&Pq_EH&JyAx$HD|A5Nnxsi1yX}<qjCqj9(FGJcU zPJgJ8my(x*ejHqVJlq_?_sT=IeCpCSNHvP6pGxqU4n``gp1VAJ9~ zThq&fc4JT@M+zJ1P65q!G1HR%*o50;R|DhMM|+9)W}IeF8*+S z$ZG$dI~){i)s#R^nGhHt>Fwj_M2NOr<;?c*g&nF;ln%i7wYfDllmdmV7~|TFKa;-dHwG(AoWAy$iW33Wk`B2q(+*#XxNxhbka`M@%njPV<2&0oq%s{&gh~-kT-ZUS-ww{hQvV*{KI~*AGUMk z8~vG=9nmzeSgv8Y4K3B1*KBGi#tO zsD>J}CqhjY)F3r6Y29yAHXLXVSv@zW$*_FU%8GMLF22=K+e7My6t`S*%^iuf4i)o7 z`cQ**7x3)|`vF?O5K%8De-|gP;oNKr-G)V&4-SbEue^$pNqkN&MDN8BKn_kizLTwEleAlIc=89X9E+O4uKkZkN?l; zM3VQn|J-3o{g7f{@95~}?<=(Q1P{NEDeNIoLyC@bfYVMV@4$d-hxc;tA3gYji29L7 zGxx)M10NvB5CAst%`v`wi(6OvD8v8-4*K~|5A4uLq2`Bbq*;K!Yed?W(>Slbm4LR zQ4P$(D#%21%Lt{}v}ONC%OEYNk&}X)N2}f+-T4r9j}C>Z>T_j~`+<=Pfg0NR-kCUr z8OMo4LJh1Qlm~-QgRXOVlOc|qnQNFx{g6gF4mD`io5r>lEwR+6|67d$977zc&yM}? zUd77%%?WgM@CjH6fseRz1Y+ z1p8dvDtVVv-`uvn7i!3vm`Sc#x}eX_WOURQYS2Xn*1~zHLB8#0-RkKXO>vs!8{DVK z5=x;4h7`ra&hBZpjHQLFCIg>CKn)kv6fm~V%xXPTAaO`B*a?disToIl-s&nYxd1if z-DMBC=C-L@)q6 zS~l5^)xJcWxwT*lHzCM_^n#;9T%67Op$6Rq$iY(-)Sy_O3!U+i&*WQ2B;^~rA02`k zln>uMDK7g8X?FmJyi+j4jXdH^eF<~DXPKP0fZ{W>h5w?KKn=Ps@C&_MR!Jv>u9|2T zAUbMLgM4$es=AlXl1a6ILIlphAfpVxlCCmOhlO|fuv(FPLk3i8cbyXa|A+OUPc&z|A3Ti*_4c$RP%_OKHudOLgcj|o3Ksidj zX8nW%;|b@P^I+J~+Pqt}QkNi7CyP%JL^$d-DJI;2Alc}Mc)og2>%KVdZu1{Ni# zL0JWAcc2D&@Wis9NpC#kHSCsX4}n$kgOScXu>5#_NNPXunmh|X7%7SYc<^)14@RmC zi3qv#89rV>b81zy%JiN7^e~KPE=37?{Bv{ra;Bk3M1kof)S&A&^kWA#5TK~gk7ezh z>bK_hH`sd>2*FSTf>G0KP98G~4W~#Pm^&GQJbXlgBD!7Afk7zN9AzTfU0~*Z#!(<# zhg&p3;2hERugInLP^L%OD)`$9m?1j6*pFb4@c-jY`{d(jK9fzn> z!eii&`w4|d-~gye8tN-p9X0wDsm*ot!`UXS?NC`IZ#3)LV-#brZwI2McccclgYa8= zL2gj9Xl1m0OQxJL)Sw*}GTte`!QRu}(dnCK)%Q&{At)13_Cn1M_bSreZ3c`K?Y(L) zO^)F)?!v%<&j=8y5Ngowf61-zS^dJ>T&QNwgBwu81~vWNCJ)?3`0YqF|I`oU^$%7( zc|Z8Uu1ubVpU)|}r$Bj-U!vy_HkR7}9>8ZFXczloL`f_7htIU|T=J7=TGDs|1OA`p z&Nar8stCX={L&C0xJ1DihQxr%_RQ|=g8>02CWHt=6eJK7O;6vRJ3ZU?vE6-lb`~&V z{J{?-_=uoJMbY>mG5W)(kQf9Zq96}rFoA6Rp@{*6zZebrRh@pE?z#7z>pypsz2{YR zs?MoXr%qMfyT@b`PCE5NyYIXEeBBdI{yFA<^A$N*7EXTyHi7x^OAo(# zUcToX?NQm8Dv7!VPXi-z{fWo-{Qd0PFSr&MBuDhyHRqdKX635iy|(=IbHw6eZKP*2 z9}OjdcJ*UF_|wW?j-H^W+_{^85!w0o3s;?d#mD||Cq1R+o88l$2P;5sO>Efeo2jGw zo;m%~cYgR@LjkU&lb*p@Df8_AVs!l1-?$$e=}}sQj~Drr+xf~zK6&r0XI&`1rvu2r zMVwQ5M0#&uUOe~Fx1A!|ML1Md{mARz{{GFsz0JJmbeQ$$KHu|8^VtqH=kefZoGo5)tcbH=m|kCG$*_O< z!oJ3Vz0z`E7h#fa@x}csKmPpruU+`l3q;qv6^ibCbN>g^pIm)rclEmcUC-;65P0GB z#T#z@?u`#Foc&Ge!r>inzu~n1>^^YfN7T=t{`ke8y8Z)4FL|NJBW2@}f9?KW_T_ta z^E*LH(sufZ2QGc>T}K`&@;uJq=$1b&+;QFd)o<(x48G5;9DHimvD4nXsa%DpP+X$#At=62xPP)=@tT#~a(>q!^8} zcs)55XXQ~0xCX0YG8m7tqN)w?^Rw<2rZibwGT&|AD2j1@$_E+;&3=fqHLr-l5rA^qER}^@`|F( zT;BA-ILzRBw6+;XMSury1I<1l1>ty1SFurz7W(7fD!B`zXz9o#i4F&8HmQ2kQP>O2 zUKkbHsf9aqez?4 z0uF3u09Z_cz2JruXa`Kii?vi1hgNGKrlZp0$7W$Lu^%BKA5F3-4hG>k*vuU`TI0af zs3u=NoLGzj9Eu-bfciU4mnAkcFx_9!oqx4`HX3x{b4_K9~wIjN8z4bzF7 zVmW_VEGIOKHe%V6GFIRaj&cOklqC@e?k8ase`tjH7Ys(dNgAscNhirCV^Mi|z7w-9$84G$3VbQZ zws@lS{3oD&Gl8kyFqay(E;?+Afp~5>{R1bDt*(N*brc*p!=?Sz;iMUvT)dU84}GPFf^4w!+){|#VEjzi;sCR zwFiQ&-N3yfPeY?_hm*mY(}qGc%oy<0Wr*_IC5^ENXj4HU;N$cNRekFMT9;KEeX5~0 zT7j&~Yz3ZBnR8Vl^I{;c=ZhrF7Iu9rObB zy4}#6(vo~GlX#e8gSeFcj9oQ#(hf5XgN5_l3taEJWzw<01S?^8*&XW1M7@sJ{l0H zE$tp+*?4lxPbAjOqmS^Ge%N8^)wQ%Xe0Y4@Si|Boyg0rXx(yB4P z-xO^z41BB3a{3LZ9Z~_79c`+PRO$Bcu=T|=)O+-dFlC(EwaM+J|@AHOOXO9D!-!bQO0H~PW0bhPg zqDvImx=nh+t1#l1;w_tx!!49fAHO7~ZQ`QX8U z^r{EM0tqzRVNv#ww?3MOJtK&5`gt#O;Odk?^NqxBhwYAsUdNa3nO~V1S}VByKTXwylP2JTRf1) zr{UnO9s~Zm9Oyao>D?+j1<0zXcD~Onu1{v0(Fa>euh_uHeu-UQHIYTTDZpnb z^)bdko>Ty)wrawSO}7l*A}&ymtt+c0eqYyRq=Scg9Q4=a<|!wn1bMNY#x5icU0`V{ z>ZVY6Q8Yfi&7?z8@);N&0>dnD7 z%|pC5j-_e_)rbT_l&trSSj!-wb(zKRpTn9>m*~|G z`k1g;m?z;-CC-7ZJrHWz4JanR=h6}*LC{D&w}RizGFzx5Zs5CO>vs(^*X6lP-Wd-i z@L10#_}_2tHG6m-7eSb1;kMmKT9t`Q$#cu@Fp(z-SjoYU9Gl^Qf~*c6#M|$aw=uQ| z1YfJJj4ta9Zo^dJkx7=!Nw)>T99B&&Cg0s_&t0#w@LsJrT$e&2W~*cb@ssKf(qshi z@*$w|nsXm7zTCxl{#EtiGorZj8O^_XYxuaUJkw>k9LP>fV7`?mB(CD9E=Hp?hxanp zTrFl9t=>6+7gdz3Cs9&tJCIto8j+Fm)nS!}ZvyHsn)0p)R%B$6y86?!? zOwR^aNU)x)4WJg7R7e3Q=pN%N8AjWIW<&H5zr5&SC6&>gES6XxnGsoB6x+c@RwT|V zO4AXUPCo-Yo);m;Ol0b62lBm^0(&19WEM#7R~8e6B@T&uOj8Y9Te@Q`Q|)MDiT#d% z4iVt#wCG0poQgJEHP?pAz@$2QHmORz0=O#9r9adp2Bo^UZDLa9Gn@t#hq~ zxPjK>9c>DMW)ka3Smh1U6P=K4OmY+6;K<<=9^gj7XqJ4X$&grBCO*wR-_w|#SJWEE zWUV?ko!_{trxaeR=~X^_yKRz30W$?){N6tY?;z4pPqh{tKfgb)R#!mRWqqRisIL;l z0j!Fm7E2otT^Pl@V}kXZCB?$eNu^qMDJFXuIPIz`65r{p5@CU@ikctgL_#Hf@bu|({2IfrE0!$4|Rjn{@mNl07EMqA{Vj-`FjzHx2>P;3Y$gD=t419v zvj=^fWG@nE?5gatxZPPwHJ&mY#{{6G4G9ns^pFR5Mh^)Aq~7$%t_xb=Jy)W_bO0!r z-l2A+?kW)k=t5{50@5N4oUOV!GQJyX8pmLo)(mY2y%zC|1W`~n*`i1dZ%@5T(ov5* z%SDnc3VkD$^&}ssVKOwKiLy;K+vS(3<3jwN{C-qIh{|QpSNC3RqZ+FMVrKLhr;txy z*aU>|CkF5OphzX-qbFTD*gg-0u1C)r;8Rs++(gnA~(VX}(|}*;j>8Czp!m06T=S z9#aDActwE)%fu!2t-LIVusYCLqd=&VZSum6;1KWO>Eb2I9tIk_%4JJ3xz9MQsRnv0 m$Jc}8>i&uzukx=QZ0IUz5;X{#3X}6q16dZ6nf?Fw?|%XG3S#2` literal 0 HcmV?d00001 diff --git a/index.html b/index.html new file mode 100644 index 0000000..0f84c4f --- /dev/null +++ b/index.html @@ -0,0 +1,28 @@ +--- +layout: default +title: Home +--- + +

diff --git a/package.json b/package.json new file mode 100644 index 0000000..bd301fd --- /dev/null +++ b/package.json @@ -0,0 +1,22 @@ +{ + "name": "digital-garden", + "private": true, + "dependencies": { + "@tailwindcss/typography": "^0.5.14", + "autoprefixer": "^10.4.20", + "postcss": "^8.4.41", + "postcss-cli": "^11.0.0", + "postcss-import": "^16.1.0", + "postcss-nesting": "^13.0.0", + "tailwindcss": "^3.4.9" + }, + "devDependencies": { + "@types/bun": "latest" + }, + "peerDependencies": { + "typescript": "^5.0.0" + }, + "scripts": { + "build:css": "postcss _assets/stylesheets/application.css -o ./assets/stylesheets/application.css" + } +} diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..071c57d --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,8 @@ +module.exports = { + plugins: { + "postcss-import": {}, + "tailwindcss/nesting": "postcss-nesting", + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 0000000..b4fc22b --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,15 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + content: [ + './*.html', + './_layouts/*.html', + './_includes/*.html', + ], + theme: { + extend: {}, + }, + plugins: [ + require('@tailwindcss/typography'), + ], +} + diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..861fd76 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + // Enable latest features + "lib": [ + "ESNext" + ], + "target": "ESNext", + "module": "ESNext", + "moduleDetection": "force", + "jsx": "react-jsx", + "allowJs": true, + // Bundler mode + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "noEmit": true, + // Best practices + "strict": true, + "skipLibCheck": true, + "noFallthroughCasesInSwitch": true, + // Some stricter flags (disabled by default) + "noUnusedLocals": false, + "noUnusedParameters": false, + "noPropertyAccessFromIndexSignature": false + } +}